@pitcher/js-api 1.27.3 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"js-api.umd.min.js","sources":["../../../../../node_modules/post-robot/dist/post-robot.js","../../../../../node_modules/post-robot/index.js","../../../../../node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/lodash-es/_root.js","../../../../../node_modules/lodash-es/_Symbol.js","../../../../../node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/lodash-es/_objectToString.js","../../../../../node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/lodash-es/isSymbol.js","../../../../../node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/lodash-es/isArray.js","../../../../../node_modules/lodash-es/_baseToString.js","../../../../../node_modules/lodash-es/isObject.js","../../../../../node_modules/lodash-es/identity.js","../../../../../node_modules/lodash-es/isFunction.js","../../../../../node_modules/lodash-es/_coreJsData.js","../../../../../node_modules/lodash-es/_isMasked.js","../../../../../node_modules/lodash-es/_toSource.js","../../../../../node_modules/lodash-es/_baseIsNative.js","../../../../../node_modules/lodash-es/_getValue.js","../../../../../node_modules/lodash-es/_getNative.js","../../../../../node_modules/lodash-es/_WeakMap.js","../../../../../node_modules/lodash-es/_baseCreate.js","../../../../../node_modules/lodash-es/_apply.js","../../../../../node_modules/lodash-es/_copyArray.js","../../../../../node_modules/lodash-es/_shortOut.js","../../../../../node_modules/lodash-es/constant.js","../../../../../node_modules/lodash-es/_defineProperty.js","../../../../../node_modules/lodash-es/_baseSetToString.js","../../../../../node_modules/lodash-es/_setToString.js","../../../../../node_modules/lodash-es/_arrayEach.js","../../../../../node_modules/lodash-es/_isIndex.js","../../../../../node_modules/lodash-es/_baseAssignValue.js","../../../../../node_modules/lodash-es/eq.js","../../../../../node_modules/lodash-es/_assignValue.js","../../../../../node_modules/lodash-es/_copyObject.js","../../../../../node_modules/lodash-es/_overRest.js","../../../../../node_modules/lodash-es/_baseRest.js","../../../../../node_modules/lodash-es/isLength.js","../../../../../node_modules/lodash-es/isArrayLike.js","../../../../../node_modules/lodash-es/_isIterateeCall.js","../../../../../node_modules/lodash-es/_createAssigner.js","../../../../../node_modules/lodash-es/_isPrototype.js","../../../../../node_modules/lodash-es/_baseTimes.js","../../../../../node_modules/lodash-es/_baseIsArguments.js","../../../../../node_modules/lodash-es/isArguments.js","../../../../../node_modules/lodash-es/stubFalse.js","../../../../../node_modules/lodash-es/isBuffer.js","../../../../../node_modules/lodash-es/_baseIsTypedArray.js","../../../../../node_modules/lodash-es/_baseUnary.js","../../../../../node_modules/lodash-es/_nodeUtil.js","../../../../../node_modules/lodash-es/isTypedArray.js","../../../../../node_modules/lodash-es/_arrayLikeKeys.js","../../../../../node_modules/lodash-es/_overArg.js","../../../../../node_modules/lodash-es/_nativeKeys.js","../../../../../node_modules/lodash-es/_baseKeys.js","../../../../../node_modules/lodash-es/keys.js","../../../../../node_modules/lodash-es/_nativeKeysIn.js","../../../../../node_modules/lodash-es/_baseKeysIn.js","../../../../../node_modules/lodash-es/keysIn.js","../../../../../node_modules/lodash-es/_isKey.js","../../../../../node_modules/lodash-es/_nativeCreate.js","../../../../../node_modules/lodash-es/_hashClear.js","../../../../../node_modules/lodash-es/_hashDelete.js","../../../../../node_modules/lodash-es/_hashGet.js","../../../../../node_modules/lodash-es/_hashHas.js","../../../../../node_modules/lodash-es/_hashSet.js","../../../../../node_modules/lodash-es/_Hash.js","../../../../../node_modules/lodash-es/_listCacheClear.js","../../../../../node_modules/lodash-es/_assocIndexOf.js","../../../../../node_modules/lodash-es/_listCacheDelete.js","../../../../../node_modules/lodash-es/_listCacheGet.js","../../../../../node_modules/lodash-es/_listCacheHas.js","../../../../../node_modules/lodash-es/_listCacheSet.js","../../../../../node_modules/lodash-es/_ListCache.js","../../../../../node_modules/lodash-es/_Map.js","../../../../../node_modules/lodash-es/_mapCacheClear.js","../../../../../node_modules/lodash-es/_isKeyable.js","../../../../../node_modules/lodash-es/_getMapData.js","../../../../../node_modules/lodash-es/_mapCacheDelete.js","../../../../../node_modules/lodash-es/_mapCacheGet.js","../../../../../node_modules/lodash-es/_mapCacheHas.js","../../../../../node_modules/lodash-es/_mapCacheSet.js","../../../../../node_modules/lodash-es/_MapCache.js","../../../../../node_modules/lodash-es/memoize.js","../../../../../node_modules/lodash-es/_memoizeCapped.js","../../../../../node_modules/lodash-es/_stringToPath.js","../../../../../node_modules/lodash-es/toString.js","../../../../../node_modules/lodash-es/_castPath.js","../../../../../node_modules/lodash-es/_toKey.js","../../../../../node_modules/lodash-es/_baseGet.js","../../../../../node_modules/lodash-es/get.js","../../../../../node_modules/lodash-es/_arrayPush.js","../../../../../node_modules/lodash-es/_isFlattenable.js","../../../../../node_modules/lodash-es/_baseFlatten.js","../../../../../node_modules/lodash-es/flatten.js","../../../../../node_modules/lodash-es/_flatRest.js","../../../../../node_modules/lodash-es/_getPrototype.js","../../../../../node_modules/lodash-es/isPlainObject.js","../../../../../node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/lodash-es/_castSlice.js","../../../../../node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/lodash-es/upperFirst.js","../../../../../node_modules/lodash-es/capitalize.js","../../../../../node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/lodash-es/deburr.js","../../../../../node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/lodash-es/words.js","../../../../../node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/lodash-es/camelCase.js","../../../../../node_modules/lodash-es/_stackClear.js","../../../../../node_modules/lodash-es/_stackDelete.js","../../../../../node_modules/lodash-es/_stackGet.js","../../../../../node_modules/lodash-es/_stackHas.js","../../../../../node_modules/lodash-es/_stackSet.js","../../../../../node_modules/lodash-es/_Stack.js","../../../../../node_modules/lodash-es/_baseAssign.js","../../../../../node_modules/lodash-es/_baseAssignIn.js","../../../../../node_modules/lodash-es/_cloneBuffer.js","../../../../../node_modules/lodash-es/_arrayFilter.js","../../../../../node_modules/lodash-es/stubArray.js","../../../../../node_modules/lodash-es/_getSymbols.js","../../../../../node_modules/lodash-es/_copySymbols.js","../../../../../node_modules/lodash-es/_getSymbolsIn.js","../../../../../node_modules/lodash-es/_copySymbolsIn.js","../../../../../node_modules/lodash-es/_baseGetAllKeys.js","../../../../../node_modules/lodash-es/_getAllKeys.js","../../../../../node_modules/lodash-es/_getAllKeysIn.js","../../../../../node_modules/lodash-es/_DataView.js","../../../../../node_modules/lodash-es/_Promise.js","../../../../../node_modules/lodash-es/_Set.js","../../../../../node_modules/lodash-es/_getTag.js","../../../../../node_modules/lodash-es/_initCloneArray.js","../../../../../node_modules/lodash-es/_Uint8Array.js","../../../../../node_modules/lodash-es/_cloneArrayBuffer.js","../../../../../node_modules/lodash-es/_cloneDataView.js","../../../../../node_modules/lodash-es/_cloneRegExp.js","../../../../../node_modules/lodash-es/_cloneSymbol.js","../../../../../node_modules/lodash-es/_cloneTypedArray.js","../../../../../node_modules/lodash-es/_initCloneByTag.js","../../../../../node_modules/lodash-es/_initCloneObject.js","../../../../../node_modules/lodash-es/_baseIsMap.js","../../../../../node_modules/lodash-es/isMap.js","../../../../../node_modules/lodash-es/_baseIsSet.js","../../../../../node_modules/lodash-es/isSet.js","../../../../../node_modules/lodash-es/_baseClone.js","../../../../../node_modules/lodash-es/cloneDeep.js","../../../../../node_modules/lodash-es/_setCacheAdd.js","../../../../../node_modules/lodash-es/_setCacheHas.js","../../../../../node_modules/lodash-es/_SetCache.js","../../../../../node_modules/lodash-es/_arraySome.js","../../../../../node_modules/lodash-es/_cacheHas.js","../../../../../node_modules/lodash-es/_equalArrays.js","../../../../../node_modules/lodash-es/_mapToArray.js","../../../../../node_modules/lodash-es/_setToArray.js","../../../../../node_modules/lodash-es/_equalByTag.js","../../../../../node_modules/lodash-es/_equalObjects.js","../../../../../node_modules/lodash-es/_baseIsEqualDeep.js","../../../../../node_modules/lodash-es/_baseIsEqual.js","../../../../../node_modules/lodash-es/_baseIsMatch.js","../../../../../node_modules/lodash-es/_isStrictComparable.js","../../../../../node_modules/lodash-es/_getMatchData.js","../../../../../node_modules/lodash-es/_matchesStrictComparable.js","../../../../../node_modules/lodash-es/_baseMatches.js","../../../../../node_modules/lodash-es/_baseHasIn.js","../../../../../node_modules/lodash-es/_hasPath.js","../../../../../node_modules/lodash-es/hasIn.js","../../../../../node_modules/lodash-es/_baseMatchesProperty.js","../../../../../node_modules/lodash-es/_baseProperty.js","../../../../../node_modules/lodash-es/_basePropertyDeep.js","../../../../../node_modules/lodash-es/property.js","../../../../../node_modules/lodash-es/_baseIteratee.js","../../../../../node_modules/lodash-es/_createBaseFor.js","../../../../../node_modules/lodash-es/_baseFor.js","../../../../../node_modules/lodash-es/_assignMergeValue.js","../../../../../node_modules/lodash-es/isArrayLikeObject.js","../../../../../node_modules/lodash-es/_safeGet.js","../../../../../node_modules/lodash-es/toPlainObject.js","../../../../../node_modules/lodash-es/_baseMergeDeep.js","../../../../../node_modules/lodash-es/_baseMerge.js","../../../../../node_modules/lodash-es/last.js","../../../../../node_modules/lodash-es/_parent.js","../../../../../node_modules/lodash-es/isEqual.js","../../../../../node_modules/lodash-es/merge.js","../../../../../node_modules/lodash-es/_baseUnset.js","../../../../../node_modules/lodash-es/_customOmitClone.js","../../../../../node_modules/lodash-es/omit.js","../../../../../node_modules/lodash-es/_baseSet.js","../../../../../node_modules/lodash-es/_basePickBy.js","../../../../../node_modules/lodash-es/pickBy.js","../../../../../node_modules/lodash-es/snakeCase.js","../../src/lib/types/launchDarkly.types.ts","../../src/lib/sdk/api/modules/ai.ts","../../src/lib/sdk/api/modules/open.ts","../../src/lib/sdk/api/modules/env.ts","../../src/lib/sdk/api/modules/languages.ts","../../src/lib/sdk/api/modules/canvas.ts","../../src/lib/sdk/api/modules/files.ts","../../src/lib/sdk/api/modules/filesRevisions.ts","../../src/lib/sdk/api/modules/search.ts","../../src/lib/sdk/api/modules/users.ts","../../src/lib/sdk/api/modules/pspdfkit.ts","../../src/lib/sdk/api/modules/toast.ts","../../src/lib/util/smart-store.util.ts","../../src/lib/sdk/api/modules/query.ts","../../src/lib/sdk/api/modules/folders.ts","../../src/lib/sdk/api/modules/folders.core.ts","../../src/lib/sdk/api/modules/notifications.ts","../../src/lib/sdk/api/modules/track.ts","../../src/lib/sdk/api/modules/metadataTemplates.ts","../../src/lib/sdk/api/modules/sync.ts","../../src/lib/sdk/api/modules/feedback.ts","../../src/lib/sdk/api/modules/webView.ts","../../src/lib/sdk/api/modules/share.ts","../../src/lib/sdk/api/modules/theme.ts","../../src/lib/sdk/utils/eventEmitter.ts","../../../../../node_modules/uuid/dist/stringify.js","../../../../../node_modules/uuid/dist/rng.js","../../../../../node_modules/uuid/dist/v4.js","../../src/lib/sdk/interfaces.ts","../../src/lib/sdk/utils/assert.ts","../../src/lib/util/casing.ts","../../src/lib/sdk/utils/object.ts","../../src/lib/util/message-event.ts","../../src/lib/sdk/utils/httpFetch.ts","../../src/lib/components/filters/filter.util.ts","../../src/lib/sdk/api/onlineRestApiHandlers.ts","../../src/lib/sdk/utils/window.ts","../../src/lib/sdk/api/LowLevelApi.ts","../../src/lib/sdk/api/HighLevelApi.ts","../../src/lib/sdk/utils/postrobot.ts","../../src/lib/sdk/api/modules/ui/types.ui.ts","../../src/lib/sdk/api/modules/ui/content.ui.ts","../../src/lib/sdk/api/modules/ui/loading.ui.ts","../../src/lib/sdk/api/modules/ui/location.ui.ts","../../src/lib/sdk/api/modules/ui/app-errors.ui.ts","../../src/lib/sdk/api/modules/ui/canvas.ui.ts","../../src/lib/sdk/api/modules/ui/post-call.ui.ts","../../src/lib/sdk/api/modules/ui/pia.ui.ts","../../src/lib/sdk/api/modules/ui/sharing.ui.ts","../../src/lib/sdk/api/modules/ui/index.ts","../../src/lib/sdk/api/modules/admin/types.admin.ts","../../src/lib/sdk/api/modules/admin/app-errors.admin.ts","../../src/lib/sdk/api/modules/admin/env.admin.ts","../../src/lib/sdk/api/modules/admin/canvas.admin.ts","../../src/lib/sdk/api/modules/admin/metadataTemplates.admin.ts","../../src/lib/sdk/api/modules/admin/files.admin.ts","../../src/lib/sdk/api/modules/admin/content.admin.ts","../../src/lib/sdk/api/modules/admin/users.admin.ts","../../src/lib/sdk/api/modules/admin/index.ts","../../src/lib/sdk/api/modules/dsr/types.dsr.ts","../../src/lib/sdk/api/modules/dsr/env.dsr.ts","../../src/lib/sdk/api/modules/dsr/loading.dsr.ts","../../src/lib/sdk/api/modules/dsr/files.dsr.ts","../../src/lib/sdk/api/modules/dsr/index.ts","../../src/lib/sdk/peer-connectivity/peerConnectivity.constants.ts","../../src/lib/sdk/peer-connectivity/peerConnectivity.ts","../../src/lib/sdk/main.ts","../../src/lib/sdk/main.umd-esm.ts"],"sourcesContent":["!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, (function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.r = function(exports) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {\n value: \"Module\"\n });\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n };\n __webpack_require__.t = function(value, mode) {\n 1 & mode && (value = __webpack_require__(value));\n if (8 & mode) return value;\n if (4 & mode && \"object\" == typeof value && value && value.__esModule) return value;\n var ns = Object.create(null);\n __webpack_require__.r(ns);\n Object.defineProperty(ns, \"default\", {\n enumerable: !0,\n value: value\n });\n if (2 & mode && \"string\" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {\n return value[key];\n }.bind(null, key));\n return ns;\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return {}.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = 0);\n }([ function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n __webpack_require__.r(__webpack_exports__);\n __webpack_require__.d(__webpack_exports__, \"Promise\", (function() {\n return promise_ZalgoPromise;\n }));\n __webpack_require__.d(__webpack_exports__, \"TYPES\", (function() {\n return src_types_TYPES_0;\n }));\n __webpack_require__.d(__webpack_exports__, \"ProxyWindow\", (function() {\n return window_ProxyWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"setup\", (function() {\n return setup;\n }));\n __webpack_require__.d(__webpack_exports__, \"destroy\", (function() {\n return destroy;\n }));\n __webpack_require__.d(__webpack_exports__, \"serializeMessage\", (function() {\n return setup_serializeMessage;\n }));\n __webpack_require__.d(__webpack_exports__, \"deserializeMessage\", (function() {\n return setup_deserializeMessage;\n }));\n __webpack_require__.d(__webpack_exports__, \"createProxyWindow\", (function() {\n return createProxyWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"toProxyWindow\", (function() {\n return setup_toProxyWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"on\", (function() {\n return on_on;\n }));\n __webpack_require__.d(__webpack_exports__, \"once\", (function() {\n return on_once;\n }));\n __webpack_require__.d(__webpack_exports__, \"send\", (function() {\n return send_send;\n }));\n __webpack_require__.d(__webpack_exports__, \"markWindowKnown\", (function() {\n return markWindowKnown;\n }));\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", (function() {\n return cleanUpWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"bridge\", (function() {}));\n function isRegex(item) {\n return \"[object RegExp]\" === {}.toString.call(item);\n }\n var IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function getActualProtocol(win) {\n void 0 === win && (win = window);\n return win.location.protocol;\n }\n function getProtocol(win) {\n void 0 === win && (win = window);\n if (win.mockDomain) {\n var protocol = win.mockDomain.split(\"//\")[0];\n if (protocol) return protocol;\n }\n return getActualProtocol(win);\n }\n function isAboutProtocol(win) {\n void 0 === win && (win = window);\n return \"about:\" === getProtocol(win);\n }\n function getParent(win) {\n void 0 === win && (win = window);\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener(win) {\n void 0 === win && (win = window);\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain(win) {\n void 0 === win && (win = window);\n var location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = getActualProtocol(win);\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (\"file:\" === protocol) return \"file://\";\n if (\"about:\" === protocol) {\n var parent = getParent(win);\n return parent && canReadFromWindow() ? getActualDomain(parent) : \"about://\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function getDomain(win) {\n void 0 === win && (win = window);\n var domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(\"mock:\") ? win.mockDomain : domain;\n }\n function isSameDomain(win) {\n if (!function(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n } catch (err) {}\n try {\n if (function(win) {\n void 0 === win && (win = window);\n return \"mock:\" === getProtocol(win);\n }(win) && canReadFromWindow()) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n if (getDomain(window) === getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }\n function assertSameDomain(win) {\n if (!isSameDomain(win)) throw new Error(\"Expected window to be same domain\");\n return win;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [];\n var frames;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [];\n var iframeFrames = [];\n function isWindowClosed(win, allowMock) {\n void 0 === allowMock && (allowMock = !0);\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && isSameDomain(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n var parent = frame;\n for (;parent.parentNode && parent.parentNode !== parent; ) parent = parent.parentNode;\n if (!parent.host || !doc.documentElement.contains(parent.host)) return !0;\n }\n return !1;\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor(win) {\n void 0 === win && (win = window);\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return \"*\" === pattern || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some((function(subpattern) {\n return matchDomain(subpattern, origin);\n })));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === {}.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (\"postMessage\" in obj && \"self\" in obj && \"location\" in obj) return !0;\n } catch (err) {}\n return !1;\n }\n function getFrameForWindow(win) {\n if (isSameDomain(win)) return assertSameDomain(win).frameElement;\n for (var _i21 = 0, _document$querySelect2 = document.querySelectorAll(\"iframe\"); _i21 < _document$querySelect2.length; _i21++) {\n var frame = _document$querySelect2[_i21];\n if (frame && frame.contentWindow && frame.contentWindow === win) return frame;\n }\n }\n function closeWindow(win) {\n if (function(win) {\n void 0 === win && (win = window);\n return Boolean(getParent(win));\n }(win)) {\n var frame = getFrameForWindow(win);\n if (frame && frame.parentElement) {\n frame.parentElement.removeChild(frame);\n return;\n }\n }\n try {\n win.close();\n } catch (err) {}\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [];\n var possiblyUnhandledPromiseHandlers = [];\n var activeCount = 0;\n var flushPromise;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n this.resolved = void 0;\n this.rejected = void 0;\n this.errorHandled = void 0;\n this.value = void 0;\n this.error = void 0;\n this.handlers = void 0;\n this.dispatching = void 0;\n this.stack = void 0;\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result;\n var _error;\n var resolved = !1;\n var rejected = !1;\n var isAsync = !1;\n startActive();\n try {\n handler((function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }), (function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n }));\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n var _proto = ZalgoPromise.prototype;\n _proto.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n _proto.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : {}.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout((function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout((function() {\n throw err;\n }), 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }), 1);\n this.dispatch();\n return this;\n };\n _proto.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n _proto.dispatch = function() {\n var resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!this.dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n var chain = function(firstPromise, secondPromise) {\n return firstPromise.then((function(res) {\n secondPromise.resolve(res);\n }), (function(err) {\n secondPromise.reject(err);\n }));\n };\n for (var i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise;\n var _result2 = void 0;\n if (resolved) try {\n _result2 = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n } else if (rejected) {\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n try {\n _result2 = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n var promiseResult = _result2;\n promiseResult.resolved ? promise.resolve(promiseResult.value) : promise.reject(promiseResult.error);\n promiseResult.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? promise.resolve(_result2.value) : promise.reject(_result2.error) : chain(_result2, promise) : promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n _proto.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise;\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n _proto.catch = function(onError) {\n return this.then(void 0, onError);\n };\n _proto.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then((function(result) {\n return ZalgoPromise.try(onFinally).then((function() {\n return result;\n }));\n }), (function(err) {\n return ZalgoPromise.try(onFinally).then((function() {\n throw err;\n }));\n }));\n };\n _proto.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout((function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }), time);\n return this.then((function(result) {\n clearTimeout(timeout);\n return result;\n }));\n };\n _proto.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n _proto.lazy = function() {\n this.errorHandled = !0;\n return this;\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise((function(resolve, reject) {\n return value.then(resolve, reject);\n })) : (new ZalgoPromise).resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return (new ZalgoPromise).reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return (new ZalgoPromise).asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise;\n var count = promises.length;\n var results = [].slice();\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then((function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }), (function(err) {\n secondPromise.reject(err);\n }));\n };\n for (var i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n var awaitPromises = [];\n var _loop = function(key) {\n if (promises.hasOwnProperty(key)) {\n var value = promises[key];\n utils_isPromise(value) ? awaitPromises.push(value.then((function(res) {\n result[key] = res;\n }))) : result[key] = value;\n }\n };\n for (var key in promises) _loop(key);\n return ZalgoPromise.all(awaitPromises).then((function() {\n return result;\n }));\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise((function(resolve) {\n setTimeout(resolve, _delay);\n }));\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new Zalgo;\n flushActive();\n return promise;\n }(ZalgoPromise);\n };\n return ZalgoPromise;\n }();\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n this.name = void 0;\n this.weakmap = void 0;\n this.keys = void 0;\n this.values = void 0;\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap;\n var testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap;\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n var _proto = CrossDomainSafeWeakMap.prototype;\n _proto._cleanupClosedWindows = function() {\n var weakmap = this.weakmap;\n var keys = this.keys;\n for (var i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n _proto.isSafeToReadWrite = function(key) {\n return !isWindow(key);\n };\n _proto.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name;\n var entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys;\n var values = this.values;\n var index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n _proto.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n _proto.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys;\n var index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n _proto.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n _proto.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }();\n function getFunctionName(fn) {\n return fn.name || fn.__name__ || fn.displayName || \"anonymous\";\n }\n function setFunctionName(fn, name) {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {}\n fn.__name__ = fn.displayName = name;\n return fn;\n }\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"uid_\" + \"xxxxxxxxxx\".replace(/./g, (function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n })) + \"_\" + function(str) {\n if (\"function\" == typeof btoa) return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (function(m, p1) {\n return String.fromCharCode(parseInt(p1, 16));\n }))).replace(/[=]/g, \"\");\n if (\"undefined\" != typeof Buffer) return Buffer.from(str, \"utf8\").toString(\"base64\").replace(/[=]/g, \"\");\n throw new Error(\"Can not find window.btoa or Buffer\");\n }((new Date).toISOString().slice(11, 19).replace(\"T\", \".\")).replace(/[^a-zA-Z0-9]/g, \"\").toLowerCase();\n }\n var objectIDs;\n function serializeArgs(args) {\n try {\n return JSON.stringify([].slice.call(args), (function(subkey, val) {\n return \"function\" == typeof val ? \"memoize[\" + function(obj) {\n objectIDs = objectIDs || new weakmap_CrossDomainSafeWeakMap;\n if (null == obj || \"object\" != typeof obj && \"function\" != typeof obj) throw new Error(\"Invalid object\");\n var uid = objectIDs.get(obj);\n if (!uid) {\n uid = typeof obj + \":\" + uniqueID();\n objectIDs.set(obj, uid);\n }\n return uid;\n }(val) + \"]\" : \"undefined\" != typeof window && val instanceof window.Element || null !== val && \"object\" == typeof val && 1 === val.nodeType && \"object\" == typeof val.style && \"object\" == typeof val.ownerDocument ? {} : val;\n }));\n } catch (err) {\n throw new Error(\"Arguments not serializable -- can not be used to memoize\");\n }\n }\n function getEmptyObject() {\n return {};\n }\n var memoizeGlobalIndex = 0;\n var memoizeGlobalIndexValidFrom = 0;\n function memoize(method, options) {\n void 0 === options && (options = {});\n var _options$thisNamespac = options.thisNamespace, thisNamespace = void 0 !== _options$thisNamespac && _options$thisNamespac, cacheTime = options.time;\n var simpleCache;\n var thisCache;\n var memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n var memoizedFunction = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n if (memoizeIndex < memoizeGlobalIndexValidFrom) {\n simpleCache = null;\n thisCache = null;\n memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n }\n var cache;\n cache = thisNamespace ? (thisCache = thisCache || new weakmap_CrossDomainSafeWeakMap).getOrSet(this, getEmptyObject) : simpleCache = simpleCache || {};\n var cacheKey;\n try {\n cacheKey = serializeArgs(args);\n } catch (_unused) {\n return method.apply(this, arguments);\n }\n var cacheResult = cache[cacheKey];\n if (cacheResult && cacheTime && Date.now() - cacheResult.time < cacheTime) {\n delete cache[cacheKey];\n cacheResult = null;\n }\n if (cacheResult) return cacheResult.value;\n var time = Date.now();\n var value = method.apply(this, arguments);\n cache[cacheKey] = {\n time: time,\n value: value\n };\n return value;\n };\n memoizedFunction.reset = function() {\n simpleCache = null;\n thisCache = null;\n };\n return setFunctionName(memoizedFunction, (options.name || getFunctionName(method)) + \"::memoized\");\n }\n memoize.clear = function() {\n memoizeGlobalIndexValidFrom = memoizeGlobalIndex;\n };\n function memoizePromise(method) {\n var cache = {};\n function memoizedPromiseFunction() {\n var _arguments = arguments, _this = this;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];\n var key = serializeArgs(args);\n if (cache.hasOwnProperty(key)) return cache[key];\n cache[key] = promise_ZalgoPromise.try((function() {\n return method.apply(_this, _arguments);\n })).finally((function() {\n delete cache[key];\n }));\n return cache[key];\n }\n memoizedPromiseFunction.reset = function() {\n cache = {};\n };\n return setFunctionName(memoizedPromiseFunction, getFunctionName(method) + \"::promiseMemoized\");\n }\n function src_util_noop() {}\n function stringifyError(err, level) {\n void 0 === level && (level = 1);\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"<unknown error: \" + {}.toString.call(err) + \">\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack;\n var message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return err && err.toString && \"function\" == typeof err.toString ? err.toString() : {}.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n function stringify(item) {\n return \"string\" == typeof item ? item : item && item.toString && \"function\" == typeof item.toString ? item.toString() : {}.toString.call(item);\n }\n memoize((function(obj) {\n if (Object.values) return Object.values(obj);\n var result = [];\n for (var key in obj) obj.hasOwnProperty(key) && result.push(obj[key]);\n return result;\n }));\n function util_isRegex(item) {\n return \"[object RegExp]\" === {}.toString.call(item);\n }\n function util_getOrSet(obj, key, getter) {\n if (obj.hasOwnProperty(key)) return obj[key];\n var val = getter();\n obj[key] = val;\n return val;\n }\n Error;\n function getBody() {\n var body = document.body;\n if (!body) throw new Error(\"Body element not found\");\n return body;\n }\n function isDocumentReady() {\n return Boolean(document.body) && \"complete\" === document.readyState;\n }\n function isDocumentInteractive() {\n return Boolean(document.body) && \"interactive\" === document.readyState;\n }\n memoize((function() {\n return new promise_ZalgoPromise((function(resolve) {\n if (isDocumentReady() || isDocumentInteractive()) return resolve();\n var interval = setInterval((function() {\n if (isDocumentReady() || isDocumentInteractive()) {\n clearInterval(interval);\n return resolve();\n }\n }), 10);\n }));\n }));\n var currentScript = \"undefined\" != typeof document ? document.currentScript : null;\n var getCurrentScript = memoize((function() {\n if (currentScript) return currentScript;\n if (currentScript = function() {\n try {\n var stack = function() {\n try {\n throw new Error(\"_\");\n } catch (err) {\n return err.stack || \"\";\n }\n }();\n var stackDetails = /.*at [^(]*\\((.*):(.+):(.+)\\)$/gi.exec(stack);\n var scriptLocation = stackDetails && stackDetails[1];\n if (!scriptLocation) return;\n for (var _i22 = 0, _Array$prototype$slic2 = [].slice.call(document.getElementsByTagName(\"script\")).reverse(); _i22 < _Array$prototype$slic2.length; _i22++) {\n var script = _Array$prototype$slic2[_i22];\n if (script.src && script.src === scriptLocation) return script;\n }\n } catch (err) {}\n }()) return currentScript;\n throw new Error(\"Can not determine current script\");\n }));\n var currentUID = uniqueID();\n memoize((function() {\n var script;\n try {\n script = getCurrentScript();\n } catch (err) {\n return currentUID;\n }\n var uid = script.getAttribute(\"data-uid\");\n if (uid && \"string\" == typeof uid) return uid;\n if ((uid = script.getAttribute(\"data-uid-auto\")) && \"string\" == typeof uid) return uid;\n if (script.src) {\n var hashedString = function(str) {\n var hash = \"\";\n for (var i = 0; i < str.length; i++) {\n var total = str[i].charCodeAt(0) * i;\n str[i + 1] && (total += str[i + 1].charCodeAt(0) * (i - 1));\n hash += String.fromCharCode(97 + Math.abs(total) % 26);\n }\n return hash;\n }(JSON.stringify({\n src: script.src,\n dataset: script.dataset\n }));\n uid = \"uid_\" + hashedString.slice(hashedString.length - 30);\n } else uid = uniqueID();\n script.setAttribute(\"data-uid-auto\", uid);\n return uid;\n }));\n function global_getGlobal(win) {\n void 0 === win && (win = window);\n var globalKey = \"__post_robot_10_0_46__\";\n return win !== window ? win[globalKey] : win[globalKey] = win[globalKey] || {};\n }\n var getObj = function() {\n return {};\n };\n function globalStore(key, defStore) {\n void 0 === key && (key = \"store\");\n void 0 === defStore && (defStore = getObj);\n return util_getOrSet(global_getGlobal(), key, (function() {\n var store = defStore();\n return {\n has: function(storeKey) {\n return store.hasOwnProperty(storeKey);\n },\n get: function(storeKey, defVal) {\n return store.hasOwnProperty(storeKey) ? store[storeKey] : defVal;\n },\n set: function(storeKey, val) {\n store[storeKey] = val;\n return val;\n },\n del: function(storeKey) {\n delete store[storeKey];\n },\n getOrSet: function(storeKey, getter) {\n return util_getOrSet(store, storeKey, getter);\n },\n reset: function() {\n store = defStore();\n },\n keys: function() {\n return Object.keys(store);\n }\n };\n }));\n }\n var WildCard = function() {};\n function getWildcard() {\n var global = global_getGlobal();\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new WildCard;\n return global.WINDOW_WILDCARD;\n }\n function windowStore(key, defStore) {\n void 0 === key && (key = \"store\");\n void 0 === defStore && (defStore = getObj);\n return globalStore(\"windowStore\").getOrSet(key, (function() {\n var winStore = new weakmap_CrossDomainSafeWeakMap;\n var getStore = function(win) {\n return winStore.getOrSet(win, defStore);\n };\n return {\n has: function(win) {\n return getStore(win).hasOwnProperty(key);\n },\n get: function(win, defVal) {\n var store = getStore(win);\n return store.hasOwnProperty(key) ? store[key] : defVal;\n },\n set: function(win, val) {\n getStore(win)[key] = val;\n return val;\n },\n del: function(win) {\n delete getStore(win)[key];\n },\n getOrSet: function(win, getter) {\n return util_getOrSet(getStore(win), key, getter);\n }\n };\n }));\n }\n function getInstanceID() {\n return globalStore(\"instance\").getOrSet(\"instanceID\", uniqueID);\n }\n function resolveHelloPromise(win, _ref) {\n var domain = _ref.domain;\n var helloPromises = windowStore(\"helloPromises\");\n var existingPromise = helloPromises.get(win);\n existingPromise && existingPromise.resolve({\n domain: domain\n });\n var newPromise = promise_ZalgoPromise.resolve({\n domain: domain\n });\n helloPromises.set(win, newPromise);\n return newPromise;\n }\n function sayHello(win, _ref4) {\n return (0, _ref4.send)(win, \"postrobot_hello\", {\n instanceID: getInstanceID()\n }, {\n domain: \"*\",\n timeout: -1\n }).then((function(_ref5) {\n var origin = _ref5.origin, instanceID = _ref5.data.instanceID;\n resolveHelloPromise(win, {\n domain: origin\n });\n return {\n win: win,\n domain: origin,\n instanceID: instanceID\n };\n }));\n }\n function getWindowInstanceID(win, _ref6) {\n var send = _ref6.send;\n return windowStore(\"windowInstanceIDPromises\").getOrSet(win, (function() {\n return sayHello(win, {\n send: send\n }).then((function(_ref7) {\n return _ref7.instanceID;\n }));\n }));\n }\n function markWindowKnown(win) {\n windowStore(\"knownWindows\").set(win, !0);\n }\n function isSerializedType(item) {\n return \"object\" == typeof item && null !== item && \"string\" == typeof item.__type__;\n }\n function determineType(val) {\n return void 0 === val ? \"undefined\" : null === val ? \"null\" : Array.isArray(val) ? \"array\" : \"function\" == typeof val ? \"function\" : \"object\" == typeof val ? val instanceof Error ? \"error\" : \"function\" == typeof val.then ? \"promise\" : \"[object RegExp]\" === {}.toString.call(val) ? \"regex\" : \"[object Date]\" === {}.toString.call(val) ? \"date\" : \"object\" : \"string\" == typeof val ? \"string\" : \"number\" == typeof val ? \"number\" : \"boolean\" == typeof val ? \"boolean\" : void 0;\n }\n function serializeType(type, val) {\n return {\n __type__: type,\n __val__: val\n };\n }\n var _SERIALIZER;\n var SERIALIZER = ((_SERIALIZER = {}).function = function() {}, _SERIALIZER.error = function(_ref) {\n return serializeType(\"error\", {\n message: _ref.message,\n stack: _ref.stack,\n code: _ref.code,\n data: _ref.data\n });\n }, _SERIALIZER.promise = function() {}, _SERIALIZER.regex = function(val) {\n return serializeType(\"regex\", val.source);\n }, _SERIALIZER.date = function(val) {\n return serializeType(\"date\", val.toJSON());\n }, _SERIALIZER.array = function(val) {\n return val;\n }, _SERIALIZER.object = function(val) {\n return val;\n }, _SERIALIZER.string = function(val) {\n return val;\n }, _SERIALIZER.number = function(val) {\n return val;\n }, _SERIALIZER.boolean = function(val) {\n return val;\n }, _SERIALIZER.null = function(val) {\n return val;\n }, _SERIALIZER[void 0] = function(val) {\n return serializeType(\"undefined\", val);\n }, _SERIALIZER);\n var defaultSerializers = {};\n var _DESERIALIZER;\n var DESERIALIZER = ((_DESERIALIZER = {}).function = function() {\n throw new Error(\"Function serialization is not implemented; nothing to deserialize\");\n }, _DESERIALIZER.error = function(_ref2) {\n var stack = _ref2.stack, code = _ref2.code, data = _ref2.data;\n var error = new Error(_ref2.message);\n error.code = code;\n data && (error.data = data);\n error.stack = stack + \"\\n\\n\" + error.stack;\n return error;\n }, _DESERIALIZER.promise = function() {\n throw new Error(\"Promise serialization is not implemented; nothing to deserialize\");\n }, _DESERIALIZER.regex = function(val) {\n return new RegExp(val);\n }, _DESERIALIZER.date = function(val) {\n return new Date(val);\n }, _DESERIALIZER.array = function(val) {\n return val;\n }, _DESERIALIZER.object = function(val) {\n return val;\n }, _DESERIALIZER.string = function(val) {\n return val;\n }, _DESERIALIZER.number = function(val) {\n return val;\n }, _DESERIALIZER.boolean = function(val) {\n return val;\n }, _DESERIALIZER.null = function(val) {\n return val;\n }, _DESERIALIZER[void 0] = function() {}, _DESERIALIZER);\n var defaultDeserializers = {};\n new promise_ZalgoPromise((function(resolve) {\n if (window.document && window.document.body) return resolve(window.document.body);\n var interval = setInterval((function() {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }), 10);\n }));\n function cleanupProxyWindows() {\n var idToProxyWindow = globalStore(\"idToProxyWindow\");\n for (var _i2 = 0, _idToProxyWindow$keys2 = idToProxyWindow.keys(); _i2 < _idToProxyWindow$keys2.length; _i2++) {\n var id = _idToProxyWindow$keys2[_i2];\n idToProxyWindow.get(id).shouldClean() && idToProxyWindow.del(id);\n }\n }\n function getSerializedWindow(winPromise, _ref) {\n var send = _ref.send, _ref$id = _ref.id, id = void 0 === _ref$id ? uniqueID() : _ref$id;\n var windowNamePromise = winPromise.then((function(win) {\n if (isSameDomain(win)) return assertSameDomain(win).name;\n }));\n var windowTypePromise = winPromise.then((function(window) {\n if (isWindowClosed(window)) throw new Error(\"Window is closed, can not determine type\");\n return getOpener(window) ? \"popup\" : \"iframe\";\n }));\n windowNamePromise.catch(src_util_noop);\n windowTypePromise.catch(src_util_noop);\n var getName = function() {\n return winPromise.then((function(win) {\n if (!isWindowClosed(win)) return isSameDomain(win) ? assertSameDomain(win).name : windowNamePromise;\n }));\n };\n return {\n id: id,\n getType: function() {\n return windowTypePromise;\n },\n getInstanceID: memoizePromise((function() {\n return winPromise.then((function(win) {\n return getWindowInstanceID(win, {\n send: send\n });\n }));\n })),\n close: function() {\n return winPromise.then(closeWindow);\n },\n getName: getName,\n focus: function() {\n return winPromise.then((function(win) {\n win.focus();\n }));\n },\n isClosed: function() {\n return winPromise.then((function(win) {\n return isWindowClosed(win);\n }));\n },\n setLocation: function(href, opts) {\n void 0 === opts && (opts = {});\n return winPromise.then((function(win) {\n var domain = window.location.protocol + \"//\" + window.location.host;\n var _opts$method = opts.method, method = void 0 === _opts$method ? \"get\" : _opts$method, body = opts.body;\n if (0 === href.indexOf(\"/\")) href = \"\" + domain + href; else if (!href.match(/^https?:\\/\\//) && 0 !== href.indexOf(domain)) throw new Error(\"Expected url to be http or https url, or absolute path, got \" + JSON.stringify(href));\n if (\"post\" === method) return getName().then((function(name) {\n if (!name) throw new Error(\"Can not post to window without target name\");\n !function(_ref3) {\n var url = _ref3.url, target = _ref3.target, body = _ref3.body, _ref3$method = _ref3.method, method = void 0 === _ref3$method ? \"post\" : _ref3$method;\n var form = document.createElement(\"form\");\n form.setAttribute(\"target\", target);\n form.setAttribute(\"method\", method);\n form.setAttribute(\"action\", url);\n form.style.display = \"none\";\n if (body) for (var _i24 = 0, _Object$keys4 = Object.keys(body); _i24 < _Object$keys4.length; _i24++) {\n var _body$key;\n var key = _Object$keys4[_i24];\n var input = document.createElement(\"input\");\n input.setAttribute(\"name\", key);\n input.setAttribute(\"value\", null == (_body$key = body[key]) ? void 0 : _body$key.toString());\n form.appendChild(input);\n }\n getBody().appendChild(form);\n form.submit();\n getBody().removeChild(form);\n }({\n url: href,\n target: name,\n method: method,\n body: body\n });\n }));\n if (\"get\" !== method) throw new Error(\"Unsupported method: \" + method);\n if (isSameDomain(win)) try {\n if (win.location && \"function\" == typeof win.location.replace) {\n win.location.replace(href);\n return;\n }\n } catch (err) {}\n win.location = href;\n }));\n },\n setName: function(name) {\n return winPromise.then((function(win) {\n var sameDomain = isSameDomain(win);\n var frame = getFrameForWindow(win);\n if (!sameDomain) throw new Error(\"Can not set name for cross-domain window: \" + name);\n assertSameDomain(win).name = name;\n frame && frame.setAttribute(\"name\", name);\n windowNamePromise = promise_ZalgoPromise.resolve(name);\n }));\n }\n };\n }\n var window_ProxyWindow = function() {\n function ProxyWindow(_ref2) {\n var send = _ref2.send, win = _ref2.win, serializedWindow = _ref2.serializedWindow;\n this.id = void 0;\n this.isProxyWindow = !0;\n this.serializedWindow = void 0;\n this.actualWindow = void 0;\n this.actualWindowPromise = void 0;\n this.send = void 0;\n this.name = void 0;\n this.actualWindowPromise = new promise_ZalgoPromise;\n this.serializedWindow = serializedWindow || getSerializedWindow(this.actualWindowPromise, {\n send: send\n });\n globalStore(\"idToProxyWindow\").set(this.getID(), this);\n win && this.setWindow(win, {\n send: send\n });\n }\n var _proto = ProxyWindow.prototype;\n _proto.getID = function() {\n return this.serializedWindow.id;\n };\n _proto.getType = function() {\n return this.serializedWindow.getType();\n };\n _proto.isPopup = function() {\n return this.getType().then((function(type) {\n return \"popup\" === type;\n }));\n };\n _proto.setLocation = function(href, opts) {\n var _this = this;\n return this.serializedWindow.setLocation(href, opts).then((function() {\n return _this;\n }));\n };\n _proto.getName = function() {\n return this.serializedWindow.getName();\n };\n _proto.setName = function(name) {\n var _this2 = this;\n return this.serializedWindow.setName(name).then((function() {\n return _this2;\n }));\n };\n _proto.close = function() {\n var _this3 = this;\n return this.serializedWindow.close().then((function() {\n return _this3;\n }));\n };\n _proto.focus = function() {\n var _this4 = this;\n var isPopupPromise = this.isPopup();\n var getNamePromise = this.getName();\n var reopenPromise = promise_ZalgoPromise.hash({\n isPopup: isPopupPromise,\n name: getNamePromise\n }).then((function(_ref3) {\n var name = _ref3.name;\n _ref3.isPopup && name && window.open(\"\", name, \"noopener\");\n }));\n var focusPromise = this.serializedWindow.focus();\n return promise_ZalgoPromise.all([ reopenPromise, focusPromise ]).then((function() {\n return _this4;\n }));\n };\n _proto.isClosed = function() {\n return this.serializedWindow.isClosed();\n };\n _proto.getWindow = function() {\n return this.actualWindow;\n };\n _proto.setWindow = function(win, _ref4) {\n var send = _ref4.send;\n this.actualWindow = win;\n this.actualWindowPromise.resolve(this.actualWindow);\n this.serializedWindow = getSerializedWindow(this.actualWindowPromise, {\n send: send,\n id: this.getID()\n });\n windowStore(\"winToProxyWindow\").set(win, this);\n };\n _proto.awaitWindow = function() {\n return this.actualWindowPromise;\n };\n _proto.matchWindow = function(win, _ref5) {\n var _this5 = this;\n var send = _ref5.send;\n return promise_ZalgoPromise.try((function() {\n return _this5.actualWindow ? win === _this5.actualWindow : promise_ZalgoPromise.hash({\n proxyInstanceID: _this5.getInstanceID(),\n knownWindowInstanceID: getWindowInstanceID(win, {\n send: send\n })\n }).then((function(_ref6) {\n var match = _ref6.proxyInstanceID === _ref6.knownWindowInstanceID;\n match && _this5.setWindow(win, {\n send: send\n });\n return match;\n }));\n }));\n };\n _proto.unwrap = function() {\n return this.actualWindow || this;\n };\n _proto.getInstanceID = function() {\n return this.serializedWindow.getInstanceID();\n };\n _proto.shouldClean = function() {\n return Boolean(this.actualWindow && isWindowClosed(this.actualWindow));\n };\n _proto.serialize = function() {\n return this.serializedWindow;\n };\n ProxyWindow.unwrap = function(win) {\n return ProxyWindow.isProxyWindow(win) ? win.unwrap() : win;\n };\n ProxyWindow.serialize = function(win, _ref7) {\n var send = _ref7.send;\n cleanupProxyWindows();\n return ProxyWindow.toProxyWindow(win, {\n send: send\n }).serialize();\n };\n ProxyWindow.deserialize = function(serializedWindow, _ref8) {\n var send = _ref8.send;\n cleanupProxyWindows();\n return globalStore(\"idToProxyWindow\").get(serializedWindow.id) || new ProxyWindow({\n serializedWindow: serializedWindow,\n send: send\n });\n };\n ProxyWindow.isProxyWindow = function(obj) {\n return Boolean(obj && !isWindow(obj) && obj.isProxyWindow);\n };\n ProxyWindow.toProxyWindow = function(win, _ref9) {\n var send = _ref9.send;\n cleanupProxyWindows();\n if (ProxyWindow.isProxyWindow(win)) return win;\n var actualWindow = win;\n return windowStore(\"winToProxyWindow\").get(actualWindow) || new ProxyWindow({\n win: actualWindow,\n send: send\n });\n };\n return ProxyWindow;\n }();\n function addMethod(id, val, name, source, domain) {\n var methodStore = windowStore(\"methodStore\");\n var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n if (window_ProxyWindow.isProxyWindow(source)) proxyWindowMethods.set(id, {\n val: val,\n name: name,\n domain: domain,\n source: source\n }); else {\n proxyWindowMethods.del(id);\n methodStore.getOrSet(source, (function() {\n return {};\n }))[id] = {\n domain: domain,\n name: name,\n val: val,\n source: source\n };\n }\n }\n function lookupMethod(source, id) {\n var methodStore = windowStore(\"methodStore\");\n var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n return methodStore.getOrSet(source, (function() {\n return {};\n }))[id] || proxyWindowMethods.get(id);\n }\n function function_serializeFunction(destination, domain, val, key, _ref3) {\n on = (_ref = {\n on: _ref3.on,\n send: _ref3.send\n }).on, send = _ref.send, globalStore(\"builtinListeners\").getOrSet(\"functionCalls\", (function() {\n return on(\"postrobot_method\", {\n domain: \"*\"\n }, (function(_ref2) {\n var source = _ref2.source, origin = _ref2.origin, data = _ref2.data;\n var id = data.id, name = data.name;\n var meth = lookupMethod(source, id);\n if (!meth) throw new Error(\"Could not find method '\" + name + \"' with id: \" + data.id + \" in \" + getDomain(window));\n var methodSource = meth.source, domain = meth.domain, val = meth.val;\n return promise_ZalgoPromise.try((function() {\n if (!matchDomain(domain, origin)) throw new Error(\"Method '\" + data.name + \"' domain \" + JSON.stringify(util_isRegex(meth.domain) ? meth.domain.source : meth.domain) + \" does not match origin \" + origin + \" in \" + getDomain(window));\n if (window_ProxyWindow.isProxyWindow(methodSource)) return methodSource.matchWindow(source, {\n send: send\n }).then((function(match) {\n if (!match) throw new Error(\"Method call '\" + data.name + \"' failed - proxy window does not match source in \" + getDomain(window));\n }));\n })).then((function() {\n return val.apply({\n source: source,\n origin: origin\n }, data.args);\n }), (function(err) {\n return promise_ZalgoPromise.try((function() {\n if (val.onError) return val.onError(err);\n })).then((function() {\n err.stack && (err.stack = \"Remote call to \" + name + \"(\" + function(args) {\n void 0 === args && (args = []);\n return (item = args, [].slice.call(item)).map((function(arg) {\n return \"string\" == typeof arg ? \"'\" + arg + \"'\" : void 0 === arg ? \"undefined\" : null === arg ? \"null\" : \"boolean\" == typeof arg ? arg.toString() : Array.isArray(arg) ? \"[ ... ]\" : \"object\" == typeof arg ? \"{ ... }\" : \"function\" == typeof arg ? \"() => { ... }\" : \"<\" + typeof arg + \">\";\n })).join(\", \");\n var item;\n }(data.args) + \") failed\\n\\n\" + err.stack);\n throw err;\n }));\n })).then((function(result) {\n return {\n result: result,\n id: id,\n name: name\n };\n }));\n }));\n }));\n var _ref, on, send;\n var id = val.__id__ || uniqueID();\n destination = window_ProxyWindow.unwrap(destination);\n var name = val.__name__ || val.name || key;\n \"string\" == typeof name && \"function\" == typeof name.indexOf && 0 === name.indexOf(\"anonymous::\") && (name = name.replace(\"anonymous::\", key + \"::\"));\n if (window_ProxyWindow.isProxyWindow(destination)) {\n addMethod(id, val, name, destination, domain);\n destination.awaitWindow().then((function(win) {\n addMethod(id, val, name, win, domain);\n }));\n } else addMethod(id, val, name, destination, domain);\n return serializeType(\"cross_domain_function\", {\n id: id,\n name: name\n });\n }\n function serializeMessage(destination, domain, obj, _ref) {\n var _serialize;\n var on = _ref.on, send = _ref.send;\n return function(obj, serializers) {\n void 0 === serializers && (serializers = defaultSerializers);\n var result = JSON.stringify(obj, (function(key) {\n var val = this[key];\n if (isSerializedType(this)) return val;\n var type = determineType(val);\n if (!type) return val;\n var serializer = serializers[type] || SERIALIZER[type];\n return serializer ? serializer(val, key) : val;\n }));\n return void 0 === result ? \"undefined\" : result;\n }(obj, ((_serialize = {}).promise = function(val, key) {\n return function(destination, domain, val, key, _ref) {\n return serializeType(\"cross_domain_zalgo_promise\", {\n then: function_serializeFunction(destination, domain, (function(resolve, reject) {\n return val.then(resolve, reject);\n }), key, {\n on: _ref.on,\n send: _ref.send\n })\n });\n }(destination, domain, val, key, {\n on: on,\n send: send\n });\n }, _serialize.function = function(val, key) {\n return function_serializeFunction(destination, domain, val, key, {\n on: on,\n send: send\n });\n }, _serialize.object = function(val) {\n return isWindow(val) || window_ProxyWindow.isProxyWindow(val) ? serializeType(\"cross_domain_window\", window_ProxyWindow.serialize(val, {\n send: send\n })) : val;\n }, _serialize));\n }\n function deserializeMessage(source, origin, message, _ref2) {\n var _deserialize;\n var send = _ref2.send;\n return function(str, deserializers) {\n void 0 === deserializers && (deserializers = defaultDeserializers);\n if (\"undefined\" !== str) return JSON.parse(str, (function(key, val) {\n if (isSerializedType(this)) return val;\n var type;\n var value;\n if (isSerializedType(val)) {\n type = val.__type__;\n value = val.__val__;\n } else {\n type = determineType(val);\n value = val;\n }\n if (!type) return value;\n var deserializer = deserializers[type] || DESERIALIZER[type];\n return deserializer ? deserializer(value, key) : value;\n }));\n }(message, ((_deserialize = {}).cross_domain_zalgo_promise = function(serializedPromise) {\n return function(source, origin, _ref2) {\n return new promise_ZalgoPromise(_ref2.then);\n }(0, 0, serializedPromise);\n }, _deserialize.cross_domain_function = function(serializedFunction) {\n return function(source, origin, _ref4, _ref5) {\n var id = _ref4.id, name = _ref4.name;\n var send = _ref5.send;\n var getDeserializedFunction = function(opts) {\n void 0 === opts && (opts = {});\n function crossDomainFunctionWrapper() {\n var _arguments = arguments;\n return window_ProxyWindow.toProxyWindow(source, {\n send: send\n }).awaitWindow().then((function(win) {\n var meth = lookupMethod(win, id);\n if (meth && meth.val !== crossDomainFunctionWrapper) return meth.val.apply({\n source: window,\n origin: getDomain()\n }, _arguments);\n var _args = [].slice.call(_arguments);\n return opts.fireAndForget ? send(win, \"postrobot_method\", {\n id: id,\n name: name,\n args: _args\n }, {\n domain: origin,\n fireAndForget: !0\n }) : send(win, \"postrobot_method\", {\n id: id,\n name: name,\n args: _args\n }, {\n domain: origin,\n fireAndForget: !1\n }).then((function(res) {\n return res.data.result;\n }));\n })).catch((function(err) {\n throw err;\n }));\n }\n crossDomainFunctionWrapper.__name__ = name;\n crossDomainFunctionWrapper.__origin__ = origin;\n crossDomainFunctionWrapper.__source__ = source;\n crossDomainFunctionWrapper.__id__ = id;\n crossDomainFunctionWrapper.origin = origin;\n return crossDomainFunctionWrapper;\n };\n var crossDomainFunctionWrapper = getDeserializedFunction();\n crossDomainFunctionWrapper.fireAndForget = getDeserializedFunction({\n fireAndForget: !0\n });\n return crossDomainFunctionWrapper;\n }(source, origin, serializedFunction, {\n send: send\n });\n }, _deserialize.cross_domain_window = function(serializedWindow) {\n return window_ProxyWindow.deserialize(serializedWindow, {\n send: send\n });\n }, _deserialize));\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES.postrobot_post_message = function(win, serializedMessage, domain) {\n 0 === domain.indexOf(\"file:\") && (domain = \"*\");\n win.postMessage(serializedMessage, domain);\n };\n function send_sendMessage(win, domain, message, _ref2) {\n var on = _ref2.on, send = _ref2.send;\n return promise_ZalgoPromise.try((function() {\n var domainBuffer = windowStore().getOrSet(win, (function() {\n return {};\n }));\n domainBuffer.buffer = domainBuffer.buffer || [];\n domainBuffer.buffer.push(message);\n domainBuffer.flush = domainBuffer.flush || promise_ZalgoPromise.flush().then((function() {\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var serializedMessage = serializeMessage(win, domain, ((_ref = {}).__post_robot_10_0_46__ = domainBuffer.buffer || [], \n _ref), {\n on: on,\n send: send\n });\n var _ref;\n delete domainBuffer.buffer;\n var strategies = Object.keys(SEND_MESSAGE_STRATEGIES);\n var errors = [];\n for (var _i2 = 0; _i2 < strategies.length; _i2++) {\n var strategyName = strategies[_i2];\n try {\n SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n } catch (err) {\n errors.push(err);\n }\n }\n if (errors.length === strategies.length) throw new Error(\"All post-robot messaging strategies failed:\\n\\n\" + errors.map((function(err, i) {\n return i + \". \" + stringifyError(err);\n })).join(\"\\n\\n\"));\n }));\n return domainBuffer.flush.then((function() {\n delete domainBuffer.flush;\n }));\n })).then(src_util_noop);\n }\n function getResponseListener(hash) {\n return globalStore(\"responseListeners\").get(hash);\n }\n function deleteResponseListener(hash) {\n globalStore(\"responseListeners\").del(hash);\n }\n function isResponseListenerErrored(hash) {\n return globalStore(\"erroredResponseListeners\").has(hash);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n var requestListeners = windowStore(\"requestListeners\");\n \"*\" === win && (win = null);\n \"*\" === domain && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n for (var _i4 = 0, _ref3 = [ win, getWildcard() ]; _i4 < _ref3.length; _i4++) {\n var winQualifier = _ref3[_i4];\n if (winQualifier) {\n var nameListeners = requestListeners.get(winQualifier);\n if (nameListeners) {\n var domainListeners = nameListeners[name];\n if (domainListeners) {\n if (domain && \"string\" == typeof domain) {\n if (domainListeners[domain]) return domainListeners[domain];\n if (domainListeners.__domain_regex__) for (var _i6 = 0, _domainListeners$__DO2 = domainListeners.__domain_regex__; _i6 < _domainListeners$__DO2.length; _i6++) {\n var _domainListeners$__DO3 = _domainListeners$__DO2[_i6], listener = _domainListeners$__DO3.listener;\n if (matchDomain(_domainListeners$__DO3.regex, domain)) return listener;\n }\n }\n if (domainListeners[\"*\"]) return domainListeners[\"*\"];\n }\n }\n }\n }\n }\n function handleRequest(source, origin, message, _ref) {\n var on = _ref.on, send = _ref.send;\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n var logName = \"postrobot_method\" === message.name && message.data && \"string\" == typeof message.data.name ? message.data.name + \"()\" : message.name;\n function sendResponse(ack, data, error) {\n return promise_ZalgoPromise.flush().then((function() {\n if (!message.fireAndForget && !isWindowClosed(source)) try {\n return send_sendMessage(source, origin, {\n id: uniqueID(),\n origin: getDomain(window),\n type: \"postrobot_message_response\",\n hash: message.hash,\n name: message.name,\n ack: ack,\n data: data,\n error: error\n }, {\n on: on,\n send: send\n });\n } catch (err) {\n throw new Error(\"Send response message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n }\n }));\n }\n return promise_ZalgoPromise.all([ promise_ZalgoPromise.flush().then((function() {\n if (!message.fireAndForget && !isWindowClosed(source)) try {\n return send_sendMessage(source, origin, {\n id: uniqueID(),\n origin: getDomain(window),\n type: \"postrobot_message_ack\",\n hash: message.hash,\n name: message.name\n }, {\n on: on,\n send: send\n });\n } catch (err) {\n throw new Error(\"Send ack message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n }\n })), promise_ZalgoPromise.try((function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n return options.handler({\n source: source,\n origin: origin,\n data: message.data\n });\n })).then((function(data) {\n return sendResponse(\"success\", data);\n }), (function(error) {\n return sendResponse(\"error\", null, error);\n })) ]).then(src_util_noop).catch((function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n }));\n }\n function handleAck(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) 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 try {\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n if (source !== options.win) throw new Error(\"Ack source does not match registered window\");\n } catch (err) {\n options.promise.reject(err);\n }\n options.ack = !0;\n }\n }\n function handleResponse(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) 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 if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() + \")\" : pattern.toString()));\n var pattern;\n if (source !== options.win) throw new Error(\"Response source does not match registered window\");\n deleteResponseListener(message.hash);\n \"error\" === message.ack ? options.promise.reject(message.error) : \"success\" === message.ack && options.promise.resolve({\n source: source,\n origin: origin,\n data: message.data\n });\n }\n }\n function receive_receiveMessage(event, _ref2) {\n var on = _ref2.on, send = _ref2.send;\n var receivedMessages = globalStore(\"receivedMessages\");\n try {\n if (!window || window.closed || !event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin;\n var messages = function(message, source, origin, _ref) {\n var on = _ref.on, send = _ref.send;\n var parsedMessage;\n try {\n parsedMessage = deserializeMessage(source, origin, message, {\n on: on,\n send: send\n });\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" == typeof parsedMessage && null !== parsedMessage) {\n var parseMessages = parsedMessage.__post_robot_10_0_46__;\n if (Array.isArray(parseMessages)) return parseMessages;\n }\n }(event.data, source, origin, {\n on: on,\n send: send\n });\n if (messages) {\n markWindowKnown(source);\n for (var _i2 = 0; _i2 < messages.length; _i2++) {\n var message = messages[_i2];\n if (receivedMessages.has(message.id)) return;\n receivedMessages.set(message.id, !0);\n if (isWindowClosed(source) && !message.fireAndForget) return;\n 0 === message.origin.indexOf(\"file:\") && (origin = \"file://\");\n try {\n \"postrobot_message_request\" === message.type ? handleRequest(source, origin, message, {\n on: on,\n send: send\n }) : \"postrobot_message_response\" === message.type ? handleResponse(source, origin, message) : \"postrobot_message_ack\" === message.type && handleAck(source, origin, message);\n } catch (err) {\n setTimeout((function() {\n throw err;\n }), 0);\n }\n }\n }\n }\n function on_on(name, options, handler) {\n if (!name) throw new Error(\"Expected name\");\n if (\"function\" == typeof (options = options || {})) {\n handler = options;\n options = {};\n }\n if (!handler) throw new Error(\"Expected handler\");\n var requestListener = function addRequestListener(_ref4, listener) {\n var name = _ref4.name, winCandidate = _ref4.win, domain = _ref4.domain;\n var requestListeners = windowStore(\"requestListeners\");\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (winCandidate && \"*\" !== winCandidate && window_ProxyWindow.isProxyWindow(winCandidate)) {\n var requestListenerPromise = winCandidate.awaitWindow().then((function(actualWin) {\n return addRequestListener({\n name: name,\n win: actualWin,\n domain: domain\n }, listener);\n }));\n return {\n cancel: function() {\n requestListenerPromise.then((function(requestListener) {\n return requestListener.cancel();\n }), src_util_noop);\n }\n };\n }\n var win = winCandidate;\n if (Array.isArray(win)) {\n var listenersCollection = [];\n for (var _i8 = 0, _win2 = win; _i8 < _win2.length; _i8++) listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: _win2[_i8]\n }, listener));\n return {\n cancel: function() {\n for (var _i10 = 0; _i10 < listenersCollection.length; _i10++) listenersCollection[_i10].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n var _listenersCollection = [];\n for (var _i12 = 0, _domain2 = domain; _i12 < _domain2.length; _i12++) _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _domain2[_i12]\n }, listener));\n return {\n cancel: function() {\n for (var _i14 = 0; _i14 < _listenersCollection.length; _i14++) _listenersCollection[_i14].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && \"*\" !== win || (win = getWildcard());\n var strDomain = (domain = domain || \"*\").toString();\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var winNameListeners = requestListeners.getOrSet(win, (function() {\n return {};\n }));\n var winNameDomainListeners = util_getOrSet(winNameListeners, name, (function() {\n return {};\n }));\n var winNameDomainRegexListeners;\n var winNameDomainRegexListener;\n util_isRegex(domain) ? (winNameDomainRegexListeners = util_getOrSet(winNameDomainListeners, \"__domain_regex__\", (function() {\n return [];\n }))).push(winNameDomainRegexListener = {\n regex: domain,\n listener: listener\n }) : winNameDomainListeners[strDomain] = listener;\n return {\n cancel: function() {\n delete winNameDomainListeners[strDomain];\n if (winNameDomainRegexListener) {\n winNameDomainRegexListeners.splice(winNameDomainRegexListeners.indexOf(winNameDomainRegexListener, 1));\n winNameDomainRegexListeners.length || delete winNameDomainListeners.__domain_regex__;\n }\n Object.keys(winNameDomainListeners).length || delete winNameListeners[name];\n win && !Object.keys(winNameListeners).length && requestListeners.del(win);\n }\n };\n }({\n name: name,\n win: options.window,\n domain: options.domain || \"*\"\n }, {\n handler: handler || options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n }\n });\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function on_once(name, options, handler) {\n if (\"function\" == typeof (options = options || {})) {\n handler = options;\n options = {};\n }\n var promise = new promise_ZalgoPromise;\n var listener;\n options.errorHandler = function(err) {\n listener.cancel();\n promise.reject(err);\n };\n listener = on_on(name, options, (function(event) {\n listener.cancel();\n promise.resolve(event);\n if (handler) return handler(event);\n }));\n promise.cancel = listener.cancel;\n return promise;\n }\n var send_send = function send(winOrProxyWin, name, data, options) {\n var domainMatcher = (options = options || {}).domain || \"*\";\n var responseTimeout = options.timeout || -1;\n var childTimeout = options.timeout || 5e3;\n var fireAndForget = options.fireAndForget || !1;\n return window_ProxyWindow.toProxyWindow(winOrProxyWin, {\n send: send\n }).awaitWindow().then((function(win) {\n return promise_ZalgoPromise.try((function() {\n !function(name, win, domain) {\n if (!name) throw new Error(\"Expected name\");\n if (domain && \"string\" != typeof domain && !Array.isArray(domain) && !util_isRegex(domain)) throw new TypeError(\"Can not send \" + name + \". Expected domain \" + JSON.stringify(domain) + \" to be a string, array, or regex\");\n if (isWindowClosed(win)) throw new Error(\"Can not send \" + name + \". Target window is closed\");\n }(name, win, domainMatcher);\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function(win) {\n void 0 === win && (win = window);\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n var result = [];\n for (var _i3 = 0, _getFrames2 = getFrames(win); _i3 < _getFrames2.length; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame); _i5 < _getAllChildFrames2.length; _i5++) result.push(_getAllChildFrames2[_i5]);\n }\n return result;\n }(win); _i7 < _getAllChildFrames4.length; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent); _i15 < _getFrames8.length; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win, timeout, name) {\n void 0 === timeout && (timeout = 5e3);\n void 0 === name && (name = \"Window\");\n var promise = function(win) {\n return windowStore(\"helloPromises\").getOrSet(win, (function() {\n return new promise_ZalgoPromise;\n }));\n }(win);\n -1 !== timeout && (promise = promise.timeout(timeout, new Error(name + \" did not load after \" + timeout + \"ms\")));\n return promise;\n }(win, childTimeout);\n })).then((function(_temp) {\n return function(win, targetDomain, actualDomain, _ref) {\n var send = _ref.send;\n return promise_ZalgoPromise.try((function() {\n return \"string\" == typeof targetDomain ? targetDomain : promise_ZalgoPromise.try((function() {\n return actualDomain || sayHello(win, {\n send: send\n }).then((function(_ref2) {\n return _ref2.domain;\n }));\n })).then((function(normalizedDomain) {\n if (!matchDomain(targetDomain, targetDomain)) throw new Error(\"Domain \" + stringify(targetDomain) + \" does not match \" + stringify(targetDomain));\n return normalizedDomain;\n }));\n }));\n }(win, domainMatcher, (void 0 === _temp ? {} : _temp).domain, {\n send: send\n });\n })).then((function(targetDomain) {\n var domain = targetDomain;\n var logName = \"postrobot_method\" === name && data && \"string\" == typeof data.name ? data.name + \"()\" : name;\n var promise = new promise_ZalgoPromise;\n var hash = name + \"_\" + uniqueID();\n if (!fireAndForget) {\n var responseListener = {\n name: name,\n win: win,\n domain: domain,\n promise: promise\n };\n !function(hash, listener) {\n globalStore(\"responseListeners\").set(hash, listener);\n }(hash, responseListener);\n var reqPromises = windowStore(\"requestPromises\").getOrSet(win, (function() {\n return [];\n }));\n reqPromises.push(promise);\n promise.catch((function() {\n !function(hash) {\n globalStore(\"erroredResponseListeners\").set(hash, !0);\n }(hash);\n deleteResponseListener(hash);\n }));\n var totalAckTimeout = function(win) {\n return windowStore(\"knownWindows\").get(win, !1);\n }(win) ? 1e4 : 2e3;\n var totalResTimeout = responseTimeout;\n var ackTimeout = totalAckTimeout;\n var resTimeout = totalResTimeout;\n var interval = function(method, time) {\n var timeout;\n !function loop() {\n timeout = setTimeout((function() {\n !function() {\n if (isWindowClosed(win)) return promise.reject(new Error(\"Window closed for \" + name + \" before \" + (responseListener.ack ? \"response\" : \"ack\")));\n if (responseListener.cancelled) return promise.reject(new Error(\"Response listener was cancelled for \" + name));\n ackTimeout = Math.max(ackTimeout - 500, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - 500, 0));\n responseListener.ack || 0 !== ackTimeout ? 0 === resTimeout && promise.reject(new Error(\"No response for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalResTimeout + \"ms\")) : promise.reject(new Error(\"No ack for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalAckTimeout + \"ms\"));\n }();\n loop();\n }), 500);\n }();\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n promise.finally((function() {\n interval.cancel();\n reqPromises.splice(reqPromises.indexOf(promise, 1));\n })).catch(src_util_noop);\n }\n return send_sendMessage(win, domain, {\n id: uniqueID(),\n origin: getDomain(window),\n type: \"postrobot_message_request\",\n hash: hash,\n name: name,\n data: data,\n fireAndForget: fireAndForget\n }, {\n on: on_on,\n send: send\n }).then((function() {\n return fireAndForget ? promise.resolve() : promise;\n }), (function(err) {\n throw new Error(\"Send request message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n }));\n }));\n }));\n };\n function setup_serializeMessage(destination, domain, obj) {\n return serializeMessage(destination, domain, obj, {\n on: on_on,\n send: send_send\n });\n }\n function setup_deserializeMessage(source, origin, message) {\n return deserializeMessage(source, origin, message, {\n on: on_on,\n send: send_send\n });\n }\n function createProxyWindow(win) {\n return new window_ProxyWindow({\n send: send_send,\n win: win\n });\n }\n function setup_toProxyWindow(win) {\n return window_ProxyWindow.toProxyWindow(win, {\n send: send_send\n });\n }\n function setup() {\n if (!global_getGlobal().initialized) {\n global_getGlobal().initialized = !0;\n on = (_ref3 = {\n on: on_on,\n send: send_send\n }).on, send = _ref3.send, (global = global_getGlobal()).receiveMessage = global.receiveMessage || function(message) {\n return receive_receiveMessage(message, {\n on: on,\n send: send\n });\n };\n !function(_ref5) {\n var on = _ref5.on, send = _ref5.send;\n globalStore().getOrSet(\"postMessageListener\", (function() {\n return function(obj, event, handler) {\n obj.addEventListener(\"message\", handler);\n return {\n cancel: function() {\n obj.removeEventListener(\"message\", handler);\n }\n };\n }(window, 0, (function(event) {\n !function(event, _ref4) {\n var on = _ref4.on, send = _ref4.send;\n promise_ZalgoPromise.try((function() {\n var source = event.source || event.sourceElement;\n var origin = event.origin || event.originalEvent && event.originalEvent.origin;\n var data = event.data;\n \"null\" === origin && (origin = \"file://\");\n if (source) {\n if (!origin) throw new Error(\"Post message did not have origin domain\");\n receive_receiveMessage({\n source: source,\n origin: origin,\n data: data\n }, {\n on: on,\n send: send\n });\n }\n }));\n }(event, {\n on: on,\n send: send\n });\n }));\n }));\n }({\n on: on_on,\n send: send_send\n });\n !function(_ref8) {\n var on = _ref8.on, send = _ref8.send;\n globalStore(\"builtinListeners\").getOrSet(\"helloListener\", (function() {\n var listener = on(\"postrobot_hello\", {\n domain: \"*\"\n }, (function(_ref3) {\n resolveHelloPromise(_ref3.source, {\n domain: _ref3.origin\n });\n return {\n instanceID: getInstanceID()\n };\n }));\n var parent = getAncestor();\n parent && sayHello(parent, {\n send: send\n }).catch((function(err) {}));\n return listener;\n }));\n }({\n on: on_on,\n send: send_send\n });\n }\n var _ref3, on, send, global;\n }\n function destroy() {\n !function() {\n var responseListeners = globalStore(\"responseListeners\");\n for (var _i2 = 0, _responseListeners$ke2 = responseListeners.keys(); _i2 < _responseListeners$ke2.length; _i2++) {\n var hash = _responseListeners$ke2[_i2];\n var listener = responseListeners.get(hash);\n listener && (listener.cancelled = !0);\n responseListeners.del(hash);\n }\n }();\n (listener = globalStore().get(\"postMessageListener\")) && listener.cancel();\n var listener;\n delete window.__post_robot_10_0_46__;\n }\n var src_types_TYPES_0 = !0;\n function cleanUpWindow(win) {\n for (var _i2 = 0, _requestPromises$get2 = windowStore(\"requestPromises\").get(win, []); _i2 < _requestPromises$get2.length; _i2++) _requestPromises$get2[_i2].reject(new Error(\"Window \" + (isWindowClosed(win) ? \"closed\" : \"cleaned up\") + \" before response\")).catch(src_util_noop);\n }\n setup();\n } ]);\n}));","/* @flow */\n\n// $FlowFixMe\nmodule.exports = require('./dist/post-robot'); // eslint-disable-line import/no-commonjs\n\n// $FlowFixMe\nmodule.exports.default = module.exports; // eslint-disable-line import/no-commonjs\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n\n // Prevent prototype pollution:\n // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n var index = -1,\n length = path.length;\n\n if (!length) {\n return true;\n }\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n // Always block \"__proto__\" anywhere in the path if it's not expected\n if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n return false;\n }\n\n // Block constructor/prototype as non-terminal traversal keys to prevent\n // escaping the object graph into built-in constructors and prototypes.\n if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n return false;\n }\n }\n\n var obj = parent(object, path);\n return obj == null || delete obj[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nexport default omit;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nexport default pickBy;\n","import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n","export type LaunchDarklyBooleanFlagKey =\n | 'ai_image_generation_model'\n | 'ai_video_generation_model'\n | 'allow_ai_prompts_in_canvas_text'\n | 'allow_bulk_actions_canvases_files'\n | 'allow_content_grid_autofill'\n | 'allow_canvas_duplication'\n | 'allow_canvases_tables_columns_settings'\n | 'allow_table_column_resizing'\n | 'allow_creating_canvas_with_no_template'\n | 'allow_dynamic_data_table_for_scribble_component'\n | 'allow_html_for_scribble_component'\n | 'allow_embeddable_for_scribble_component'\n | 'allow_embeddable_hiding'\n | 'allow_multimedia_for_scribble_component'\n | 'allow_note_taking'\n | 'allow_rep_canvas_metadata_edit'\n | 'allow_rep_file_distributions'\n | 'allow_rep_file_rating'\n | 'allow_rep_file_upload'\n | 'allow_saving_annotations_in_personal_layer'\n | 'allow_user_to_edit_font_size_and_color_in_canvas_tokens'\n | 'are_sections_system_controlled'\n | 'enable_canvas_core_distributions'\n | 'copy_context_to_canvas'\n | 'copy_template_metadata_to_canvas'\n | 'disable_canvas_edit_for_reps'\n | 'disable_custom_tooltips'\n | 'disable_file_edit_content'\n | 'enable_inline_wopi_edit_button'\n | 'disable_fullscreen_canvas_builder'\n | 'disable_impact_web_browser_fullscreen'\n | 'disable_user_invitations'\n | 'display_section_list_name'\n | 'disable_download_canvas'\n | 'enable_ai_generated_thumbnails'\n | 'enable_analytics'\n | 'enable_app_developer_role'\n | 'enable_algolia_search'\n | 'enable_background_image_theme_options'\n | 'enable_better_canvas_builder_control_bars_on_zoom'\n | 'enable_bulk_update_file_attributes'\n | 'enable_canvas_as_home'\n | 'enable_canvas_blocks'\n | 'enable_canvas_node_debugging'\n | 'enable_canvas_freeze'\n | 'enable_canvas_locks'\n | 'enable_canvas_template_edit_in_impact'\n | 'enable_canvas_tokens'\n | 'enable_collaborations'\n | 'enable_collection_player_data_accessor'\n | 'enable_content_grid_data_accessor'\n | 'enable_content_type_change_in_content_selector'\n | 'enable_cross_tab_instance_reload_for_ld_sync'\n | 'enable_create_section_from_section_template'\n | 'enable_custom_display_overrides'\n | 'enable_default_crm_shape'\n | 'enable_detailed_date_format'\n | 'enable_dsr_readonly_annotations'\n | 'enable_dnd_html_editor'\n | 'enable_dynamic_content_component'\n | 'enable_dynamic_data_table_component'\n | 'enable_custom_data_tables'\n | 'enable_embedded_video_autoplay'\n | 'enable_embedded_video'\n | 'enable_enhanced_canvas_drawer_app'\n | 'enable_enhanced_indicators'\n | 'enable_enhanced_section_execution_states'\n | 'enable_experimental_canvas_builder_dnd'\n | 'enable_extra_file_data'\n | 'enable_file_copy'\n | 'enable_file_pages_metadata'\n | 'enable_file_revisions'\n | 'enable_file_divisible_permission'\n | 'enable_folder_details_edit'\n | 'enable_folder_distributions'\n | 'enable_handlebar_template_support'\n | 'enable_height_in_component_theming'\n | 'enable_home_customization'\n | 'enable_hotspot_visibility'\n | 'enable_improved_canvas_node_updating'\n | 'enable_individual_users_in_file_distribution'\n | 'enable_inline_filter_options'\n | 'enable_insearch_in_section_selector'\n | 'enable_instance_cloner'\n | 'enable_advanced_cloner'\n | 'enable_content_promotion'\n | 'enable_instance_editor_role'\n | 'enable_instance_navigation_from_management'\n | 'enable_knock_notifications'\n | 'enable_maintain_section_theme_control'\n | 'enable_metadata_in_file_uploads_with_default_values'\n | 'enable_more_intuitive_component_spacing'\n | 'enable_multi_destination_upload'\n | 'enable_multimedia_component_ai_images'\n | 'enable_new_meeting_bar'\n | 'enable_provider_agnostic_meeting_bar'\n | 'enable_original_pdf_link'\n | 'enable_scale_content'\n | 'enable_sorting_in_tiptap_table'\n | 'enable_theme_assets'\n | 'enable_toc_enhancements_to_support_same_section_in_section_list'\n | 'enable_pia_assistant'\n | 'enable_pipe_character_multi_search'\n | 'enable_popup_apps'\n | 'enable_pre_send_validation'\n | 'enable_reorder_search'\n | 'enable_reorder_scribble_isolation'\n | 'enable_reorder_component_options_menu'\n | 'enable_resizable_multimedia_component'\n | 'enable_responsive_scribble_component'\n | 'enable_saved_canvases_filters'\n | 'enable_short_tag_column_in_tables'\n | 'enable_scribble_component'\n | 'enable_scribble_content_as_background'\n | 'enable_search_and_filters_in_multimedia_component'\n | 'enable_section_context_in_dsr'\n | 'enable_selectors_dnd'\n | 'enable_section_selector_edit_section'\n | 'enable_smart_folders'\n | 'enable_smart_folders_for_sections'\n | 'enable_smart_folders_in_section_selector'\n | 'enable_smart_folders_in_files'\n | 'enable_sorting_in_sections'\n | 'enable_suggested_tags'\n | 'enable_template_component_permissions'\n | 'enable_template_folders'\n | 'enable_theme_options_border_radius'\n | 'enable_themes'\n | 'hide_asset_uploader'\n | 'hide_user_feedback_widget'\n | 'include_files_content_in_print'\n | 'interpolate_rep_canvases_on_edit_mode'\n | 'is_timeline_component_allowed'\n | 'launch_in_full_screen_on_present_mode'\n | 'prefer_online_handlers'\n | 'restrict_owned_files_from_admins'\n | 'show_asset_manager_for_multimedia'\n | 'show_clear_all_annotations_button'\n | 'show_content_selector_list_view'\n | 'show_metadata_filters_in_all_canvas_things'\n | 'show_only_preview_mode_for_html_component'\n | 'show_popularity_icons'\n | 'use_core_endpoint_for_analytics'\n | 'convert_pptx_to_section_with_scribble_pdfjs'\n | 'use_short_url_for_shared_link'\n | 'use_zoho_instead_of_ms_wopi'\n | 'enable_new_section_list'\n | 'enable_sharebox_apps'\n | 'enable_sharebox_bulk_filtering'\n | 'enable_back_to_previous_location_in_canvas'\n | 'enable_crm_shape_for_external_links'\n | 'enable_adaptive_popup_apps'\n | 'enable_file_version_polling'\n | 'skip_pspdfkit_wait_for_high_res_thumbs'\n | 'enable_reactive_scribble_component_toolbar'\n | 'enable_embeddable_full_screen_mode'\n | 'enable_enhanced_user_management'\n | 'enable_impersonation'\n | 'enable_instance_admin_user_assignment'\n | 'keep_static_pptx_editable'\n | 'enable_canvas_pdf_dimensions'\n | 'enable_editable_pptx_of_canvas'\n | 'enable_editable_pptx_of_canvas_with_fonts'\n | 'enable_aspose_pptx_of_canvas'\n | 'enable_canvas_control_bars_collapse'\n | 'enable_rep_app_visibility_order'\n | 'enable_file_sharing_print_permissions'\n | 'enable_section_sharing_print_permissions'\n | 'enable_marketplace_tab'\n | 'enable_sfdc_account_visibility_for_canvases'\n | 'sfdc_offline_enabled'\n | 'enable_granular_permissions'\n | 'enable_hub_collections'\n | 'enable_hub_recommended_smart_folder'\n | 'enable_custom_user_properties'\n\nexport type LaunchDarklyNumberFlagKey =\n | 'canvas_section_selector_page_size'\n | 'canvas_section_selector_selected_items_with_thumbnail_size'\n\n/** How PIA Search serves inference (PIT-6863). */\nexport type PiaSearchMode = 'off' | 'on_device' | 'online'\n\n/**\n * `pia_search_config` LD flag value — selects how PIA Search serves inference.\n * Object-valued (not a bare boolean) so the mode can grow sibling config later\n * without a second flag; `mode` is the only field today.\n */\nexport type PiaSearchConfig = {\n mode?: PiaSearchMode\n}\n\n/**\n * Resolve the PIA Search mode from the `pia_search_config` flag: a valid `mode`\n * wins; anything missing or invalid resolves to `'off'` (fail-closed).\n */\nexport function resolvePiaSearchMode(config: PiaSearchConfig | null | undefined): PiaSearchMode {\n if (config?.mode === 'off' || config?.mode === 'on_device' || config?.mode === 'online') return config.mode\n return 'off'\n}\n\ntype LaunchDarklyObjectFlags = {\n canvas_manager_table_columns: CanvasManagerTableColumns\n context_crm_shape: Record<string, any>\n pia_search_config: PiaSearchConfig\n}\n\nexport type LaunchDarklyObjectFlagKey = keyof LaunchDarklyObjectFlags\nexport type LaunchDarklyStringFlagKey = keyof typeof _LaunchDarklyStringFlags\nconst _LaunchDarklyStringFlags = {\n canvas_component_grouping: ['page', 'page_break', 'none'],\n batch_open_content_grid_ar_files: ['off', 'simultaneous', 'swap'],\n selectors_dnd_batch_add_style: ['button', 'buttons', 'dropdown'],\n pspdfkit_client_version: ['', 'pspdfkit-web/2024.6.0/pspdfkit.js', 'pspdfkit-web/1.14.0/nutrient-viewer.js'], // path suffix appended to file.pspdfkit_server_url; empty → legacy 2024.6.0/pspdfkit.js\n slotty_ui_remote_script_url: ['https://anyvalidurl.xyz', ''], // empty string means no remote script\n dsr_remote_script_url: ['https://anyvalidurl.xyz', ''], // empty string means no remote script\n ai_image_generation_model: ['minimax/image-01', ''], // empty string means minimax/image-01\n ai_video_generation_model: ['minimax/video-01', ''], // empty string means minimax/video-01\n sharebox_format: ['content-grid', 'content-grid-default', 'collection-player-default'],\n} as const\n\ntype LaunchDarklyStringFlagValue<K extends LaunchDarklyStringFlagKey = LaunchDarklyStringFlagKey> =\n K extends LaunchDarklyStringFlagKey ? (typeof _LaunchDarklyStringFlags)[K][number] : never\n\ntype CanvasManagerVisibility = {\n hide: string[]\n order: string[]\n}\n\nexport type CanvasTablePagination = {\n sizes: number[]\n default: number\n}\n\nexport type CanvasManagerTableColumns = {\n canvas_templates: CanvasManagerVisibility\n canvases: CanvasManagerVisibility\n section_templates: CanvasManagerVisibility\n sections: CanvasManagerVisibility\n}\n\nexport type LaunchDarklyEnv = {\n [K in LaunchDarklyBooleanFlagKey]?: boolean\n} & {\n [K in LaunchDarklyStringFlagKey]?: LaunchDarklyStringFlagValue<K>\n} & {\n [K in LaunchDarklyNumberFlagKey]?: number\n} & {\n [K in keyof LaunchDarklyObjectFlags]?: LaunchDarklyObjectFlags[K]\n} & {\n [key: string]: any\n}\n","import { highLevelApi } from '@sdk/main'\nimport type { PitcherEnv } from '@sdk/interfaces'\nimport type {\n AICompletePayload,\n AICompleteResult,\n AIRuntimeCapabilities,\n PiaSearchAnswerPayload,\n PiaSearchAnswerResult,\n} from '@sdk/payload.types'\nimport { resolvePiaSearchMode } from '@lib/types/launchDarkly.types'\n\n/**\n * AI surface of the JS API (PIT-6863): Impact owns AI inference on every\n * platform behind ONE surface.\n *\n * - iOS: `ai.get_capabilities` / `ai.complete` are answered by the native\n * on-device (Gemma) bridge over the standard PITCHER_REQUEST postMessage.\n * - Web: there is no local model — capabilities resolve statically to the\n * online (Bedrock) runtime and `piaSearchAnswer` calls the next-core\n * `pia-prepare/pia-search` route directly with the env's access token.\n *\n * Casing note: `ai.complete`'s payload keys (`prompt`/`max_tokens`/`stream`)\n * are already snake_case, so LowLevelApi's `snakeCaseKeys` transform is a\n * no-op — no RAW_PAYLOAD_METHODS entry is needed (verified against the iOS\n * wire contract).\n */\n\nconst PIA_SEARCH_ROUTE = '/core/api/protected/pia-prepare/pia-search'\n/** `ai.get_capabilities` bound so an older iOS build that never answers the\n * postMessage can't hang `piaSearchAnswer` forever (LowLevelApi has no\n * timeouts) — on timeout the caller falls through to the online path. */\nconst CAPABILITIES_TIMEOUT_MS = 3_000\nconst ON_DEVICE_MAX_TOKENS = 512\n/** Online answer request bound so a hung/slow backend can't leave\n * `piaSearchAnswer` pending forever (the on-device path is already bounded by\n * `CAPABILITIES_TIMEOUT_MS`). This is the terminal path — on timeout the call\n * rejects and callers (e.g. the Hub) degrade to lexical search. */\nconst ONLINE_TIMEOUT_MS = 30_000\n\nconst WEB_CAPABILITIES: AIRuntimeCapabilities = {\n available: true,\n offline: false,\n runtime: 'bedrock-online',\n}\n\nfunction withTimeout<T>(promise: Promise<T>, ms: number, label: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms)\n promise.then(\n (value) => {\n clearTimeout(timer)\n resolve(value)\n },\n (error) => {\n clearTimeout(timer)\n reject(error)\n },\n )\n })\n}\n\nfunction normalizeOrigin(domain: string): string {\n return domain.startsWith('http') ? domain : `https://${domain}`\n}\n\n/** Customer API origin, from the token claims (canonical) with the org\n * metadata custom_domain as fallback — the slotty `pia.ui.ts` pattern. */\nfunction apiOriginFromEnv(env: PitcherEnv): string {\n const claimDomain = env?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain\n if (typeof claimDomain === 'string' && claimDomain.length > 0) return normalizeOrigin(claimDomain)\n const orgDomain = env?.pitcher?.organization?.metadata?.custom_domain\n if (typeof orgDomain === 'string' && orgDomain.length > 0) return normalizeOrigin(orgDomain)\n throw new Error('piaSearchAnswer: no customer domain found in env (token_claims / organization metadata)')\n}\n\nfunction buildOnDevicePrompt(query: string, contextText?: string): string {\n const context =\n typeof contextText === 'string' && contextText.trim().length > 0\n ? contextText.trim()\n : 'No content context was provided.'\n return `You are PIA, a sales content assistant. Answer the rep's question using ONLY the CONTEXT below — do not invent content that is not in it.\n\nCONTEXT:\n${context}\n\nQUESTION: ${query}\n\nAnswer concisely in plain text. If the context does not contain the answer, say you could not find it in the available content.`\n}\n\n/**\n * Capabilities of the AI completion runtime on the current platform.\n *\n * On iOS this asks the native on-device bridge (`ai.get_capabilities`); on web\n * it resolves statically to the online (Bedrock) runtime — no postMessage\n * round-trip.\n *\n * @returns {Promise<AIRuntimeCapabilities>} - Promise resolving with the runtime capabilities.\n *\n * @example\n * const capabilities = await api.aiGetCapabilities()\n * if (capabilities.available) { ... }\n */\nexport async function aiGetCapabilities(): Promise<AIRuntimeCapabilities> {\n const env: PitcherEnv = await highLevelApi.API.request('get_env')\n if (env?.mode === 'IOS') {\n return highLevelApi.API.request('ai.get_capabilities')\n }\n return { ...WEB_CAPABILITIES }\n}\n\n/**\n * Run an AI completion on the on-device model (iOS only). On web the host\n * rejects with a clear error — use `piaSearchAnswer` (or the next-core AI\n * routes) for online inference instead.\n *\n * The payload is the EXACT iOS wire contract: `{ prompt, max_tokens?, stream? }`\n * → `{ text, tokens_generated, elapsed_seconds, time_to_first_token_seconds }`.\n *\n * @param {AICompletePayload} payload - The completion payload.\n * @returns {Promise<AICompleteResult>} - Promise resolving with the completion.\n *\n * @example\n * const completion = await api.aiComplete({ prompt: 'Summarize ...', max_tokens: 256 })\n * console.log(completion.text)\n */\nexport function aiComplete(payload: AICompletePayload): Promise<AICompleteResult> {\n if (!payload || typeof payload.prompt !== 'string' || payload.prompt.trim() === '') {\n return Promise.reject(new Error('prompt is required and must be a non-empty string'))\n }\n return highLevelApi.API.request('ai.complete', payload)\n}\n\n/**\n * Answer a rep's natural-language question over the instance's content — the\n * ONE high-level PIA Search call (PIT-6863). Routing follows the\n * `pia_search_config` flag mode (see `resolvePiaSearchMode`):\n *\n * - `on_device` on iOS with an available local model → `aiComplete` over the\n * caller-assembled `context_text` (the Hub has the file metadata\n * client-side). Unavailable/downloading models fall through to online.\n * - `online` (or any on-device fallback) → POST to the next-core\n * `pia-prepare/pia-search` Bedrock route, which assembles its own candidate\n * context server-side.\n * - `off` → rejects.\n *\n * @param {PiaSearchAnswerPayload} payload - The question + optional context/narrowing.\n * @returns {Promise<PiaSearchAnswerResult>} - Unified answer with the serving `source`.\n *\n * @example\n * const result = await api.piaSearchAnswer({ query: 'What is our pricing for oncology?' })\n * console.log(result.answer, result.cited_file_ids, result.source)\n */\nexport async function piaSearchAnswer(payload: PiaSearchAnswerPayload): Promise<PiaSearchAnswerResult> {\n if (!payload || typeof payload.query !== 'string' || payload.query.trim() === '') {\n return Promise.reject(new Error('query is required and must be a non-empty string'))\n }\n\n const env: PitcherEnv = await highLevelApi.API.request('get_env')\n const mode = resolvePiaSearchMode(env?.launch_darkly?.pia_search_config)\n if (mode === 'off') {\n throw new Error('pia_search_disabled: pia_search_config resolves to mode \"off\"')\n }\n\n // On-device path — iOS only (web never has a local model). Any failure\n // (bridge timeout, model unavailable, completion error) falls through to the\n // online route.\n if (mode === 'on_device' && env?.mode === 'IOS') {\n try {\n const capabilities = await withTimeout(\n highLevelApi.API.request('ai.get_capabilities') as Promise<AIRuntimeCapabilities>,\n CAPABILITIES_TIMEOUT_MS,\n 'ai.get_capabilities',\n )\n if (capabilities?.available) {\n const completion = await aiComplete({\n prompt: buildOnDevicePrompt(payload.query, payload.context_text),\n max_tokens: payload.max_tokens ?? ON_DEVICE_MAX_TOKENS,\n })\n return { answer: completion.text, source: 'on_device' }\n }\n } catch (error) {\n console.warn('[piaSearchAnswer] on-device path unavailable, falling back to online:', error)\n }\n }\n\n const instanceId = payload.instance_id || env?.pitcher?.instance?.id\n if (!instanceId) {\n throw new Error('piaSearchAnswer: instance_id could not be resolved from the payload or env')\n }\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), ONLINE_TIMEOUT_MS)\n try {\n const response = await fetch(`${apiOriginFromEnv(env)}${PIA_SEARCH_ROUTE}`, {\n method: 'POST',\n signal: controller.signal,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${env.pitcher.access_token}`,\n },\n body: JSON.stringify({\n query: payload.query,\n instance_id: instanceId,\n ...(Array.isArray(payload.file_ids) && payload.file_ids.length > 0 && { file_ids: payload.file_ids }),\n }),\n })\n if (!response.ok) {\n throw new Error(`pia_search ${response.status}`)\n }\n // Consume the body INSIDE the timed window: fetch() resolves on headers\n // alone, so a response that stalls mid-body would otherwise hang unbounded.\n // The abort signal cancels the body read too, so clearTimeout must wait\n // until json() settles (finally).\n const data = (await response.json()) as {\n pia_search?: { answer?: string; cited_file_ids?: string[]; confidence?: 'high' | 'medium' | 'low' }\n }\n const output = data?.pia_search ?? {}\n return {\n answer: typeof output.answer === 'string' ? output.answer : '',\n cited_file_ids: Array.isArray(output.cited_file_ids) ? output.cited_file_ids : [],\n ...(output.confidence && { confidence: output.confidence }),\n source: 'online',\n }\n } catch (error) {\n // AbortError name check is the cross-runtime signal (WKWebView included).\n if ((error as { name?: string })?.name === 'AbortError') {\n throw new Error(`pia_search online request timed out after ${ONLINE_TIMEOUT_MS}ms`)\n }\n throw error\n } finally {\n clearTimeout(timer)\n }\n}\n","import type { OpenExternalUrlRequestPayload, OpenRequestPayload } from '@sdk/payload.types'\n\n/**\n * Open a file in the CatalogIQ instance.\n */\nexport function open(payload: OpenRequestPayload = {}): Promise<string> {\n return this.API.request('open', payload)\n}\n\n/**\n * Open external URL in a new tab. Works on both web and mobile.\n */\nexport function openExternalUrl(payload: OpenExternalUrlRequestPayload): Promise<void> {\n return this.API.request('open_external_url', payload)\n}\n","import { omit } from 'lodash-es'\n\nimport type { PitcherEnv } from '@sdk/interfaces'\nimport type { User } from '@openapi'\n\n/**\n * Fetches the necessary info for the app to know where it is embedded.\n *\n * It contains information about:\n * - user\n * - instance\n * - organization\n * - security token to query Pitcher REST API\n * - Salesforce connection information (if connected) including security token to query Salesforce REST API\n * - Auth0 token information\n *\n * @example\n * const env = usePitcherApi().getEnv().then((env) => {\n * console.log(env.pitcher.user.name)\n * })\n */\nexport function getEnv(): Promise<PitcherEnv> {\n return this.API.request('get_env').then((env: PitcherEnv) => omit(env, 'pitcher.org_config.segment'))\n}\n\ntype UpdateEnvParams = Pick<User, 'language'>\n\nexport function updateMyUser(payload: UpdateEnvParams): Promise<User> {\n return this.API.request('update_my_user', payload)\n}\n\nexport function isOffline(): Promise<boolean> {\n return this.API.request('is_offline')\n}\n","export type Language = [\n string, // key\n string, // name\n]\n\n/**\n * Fetches available languages for the logged-in user\n */\nexport function getLanguages(): Promise<Language[]> {\n return this.API.request('get_languages')\n}\n","import type {\n CanvasRetrieve,\n CanvasCreateRequest,\n PatchedCanvasUpdateRequest,\n SharedLink,\n Instance,\n CanvasRecommendedFiles,\n CanvasSection,\n} from '@openapi'\nimport type { GetCanvasesParams, CanvasIndicator } from '@lib/types/canvases'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type { CanvasThemeRetrieve } from '@lib/types/canvasTheme'\n/**\n * Fetches a list of canvases to use in your app.\n *\n * @example\n * // The `filters` object is a reserved payload key to transfer the metadata dict over the wire.\n * api.getCanvases({\n * search: 'my search query',\n * ordering: '-created_at',\n * filters: {\n * metadata__mydaterangefiltername__range: ['2023-12-10', '2023-12-22'],\n * metadata__mymultiselectfiltername: ['optionAValue', 'optionCValue'],\n * },\n * fields: 'id,name,metadata',\n * })\n */\nexport function getCanvases(\n payload: GetCanvasesParams & { filters?: Record<string, any>; fields?: string },\n): Promise<PaginatedData<CanvasRetrieve>> {\n return this.API.request('get_canvases', payload)\n}\n\nexport function createCanvas(payload: Omit<CanvasCreateRequest, 'instance_id'>): Promise<CanvasRetrieve> {\n return this.API.request('create_canvas', payload)\n}\n\nexport function deleteCanvas(payload: { id: CanvasRetrieve['id'] }): Promise<CanvasRetrieve> {\n return this.API.request('delete_canvas', payload)\n}\n\n/**\n * Updates a canvas by ID\n *\n * @example\n * // The fields param is appended to the URL as a query param.\n * onMounted(() => {\n * PitcherAPI.updateCanvas({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * fields: 'id,name',\n * name: 'To 3!',\n * }).then((res) => {\n * console.log(res) // logs: { id: '01HH4RCBH631K4JDHWAQB0RPR6', name: 'To 3!' }\n * })\n * })\n */\nexport function updateCanvas(\n payload: PatchedCanvasUpdateRequest & { id: CanvasRetrieve['id']; instance_id?: Instance['id']; fields?: string },\n): Promise<CanvasRetrieve> {\n let shouldDebug = false\n if (typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n shouldDebug = urlParams.get('debug') === 'true' || !!(window as any).debug\n }\n shouldDebug && console.info('JS API UPDATE CANVAS', payload)\n\n return this.API.request('update_canvas', payload).then((res: any) => {\n shouldDebug && console.info('JS API UPDATE CANVAS RESPONSE', res)\n return res\n })\n}\n\n/**\n * Updates canvas indicators by canvas ID. It merges the passed object into existing canvas indicators adding new keys if they were empty and overriding pre-existing keys.\n *\n * Indicators can also be updated using updateCanvas API but in this case passed object fully replaces existing indicators.\n *\n * @example\n * // The fields param is appended to the URL as a query param.\n * onMounted(() => {\n * PitcherAPI.updateCanvasIndicators({\n * id: '01J9XT0WVXRTETF4CQZP42CPZP',\n * indicators: {\n * existing: { type: 'info', label: 'new label' }, // will be overriden\n * new: { type: 'info', label: 'INFO' }, // will be added\n * removeExisting: null // will be set to null and ignored, it is the same as removal\n * }\n * }).then((res) => {\n * console.log(res) // entire canvas object, including indicators field\n * })\n * })\n */\nexport function updateCanvasIndicators(payload: {\n indicators: Record<string, CanvasIndicator>\n id: CanvasRetrieve['id']\n instance_id?: Instance['id']\n}): Promise<CanvasRetrieve> {\n return this.API.request('update_canvas_indicators', payload)\n}\n\n/**\n * Fetches a single canvas by ID.\n *\n * Pass `lazy_sections: true` to request the opt-in lazy \"shell\": when the\n * org/instance `lazy_load_sections` setting is also on, the response returns\n * ordered `section_ids` instead of the heavy inline `sections`, and you hydrate\n * section bodies on demand via {@link getSectionsByIds}. With the setting off\n * (or the param omitted) the response is the legacy fully-expanded canvas.\n */\nexport function getCanvas(payload: {\n id: CanvasRetrieve['id']\n fields?: string\n lazy_sections?: boolean\n}): Promise<CanvasRetrieve> {\n return this.API.request('get_canvas', payload)\n}\n\n/**\n * Batch-hydrate section bodies for a canvas fetched as a lazy shell.\n *\n * Companion to `getCanvas({ lazy_sections: true })`: pass the canvas ID and a\n * slice of its `section_ids` (≤100 per call) and receive the full section\n * bodies, serialized identically to a normal canvas retrieve's inline\n * `sections`. Only sections actually referenced by the canvas are returned.\n *\n * Pass the SAME `exclude_drafts` / `include_expired_files` / `include_pending_files`\n * the shell was fetched with so hydration filters identically to the shell that\n * advertised the IDs — otherwise admin decks (fetched with `exclude_drafts:false`,\n * expired/pending on) list draft/expired sections the batch would silently drop,\n * leaving them blank. Omit them to get the rep defaults (drafts excluded,\n * expired/pending off). `include_expired_files`/`include_pending_files` are\n * server-side role-gated (admin/editor only), matching the inline retrieve.\n *\n * @example\n * const { sections } = await api.getSectionsByIds({\n * canvas_id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * section_ids: ['01SEC...', '02SEC...'],\n * })\n */\nexport function getSectionsByIds(payload: {\n canvas_id: CanvasRetrieve['id']\n section_ids: string[]\n exclude_drafts?: boolean\n include_expired_files?: boolean\n include_pending_files?: boolean\n}): Promise<{ sections: CanvasSection[] }> {\n return this.API.request('get_canvas_sections_by_ids', payload)\n}\n\nexport function shareCanvas(payload: { id: CanvasRetrieve['id'] }): Promise<SharedLink> {\n return this.API.request('share_canvas', payload)\n}\n\nexport function getCanvasRecommendedFiles(payload: {\n canvas_id: CanvasRetrieve['id']\n match?: ('tags' | 'metadata')[]\n}): Promise<CanvasRecommendedFiles> {\n return this.API.request('get_canvas_recommended_files', payload)\n}\n\nexport function getCanvasTheme(payload: { canvas_id: CanvasRetrieve['id'] }): Promise<CanvasThemeRetrieve | null> {\n return this.API.request('get_canvas_theme', payload)\n}\n\nexport function unassignCanvasTheme(payload: { canvas_id: CanvasRetrieve['id'] }): Promise<void> {\n return this.API.request('unassign_canvas_theme', payload)\n}\n","import type { File, FileRetrieve, PaginatedFileList, FileUpdateRequest, FileRevision } from '@openapi'\nimport type { ListFilesPayload } from '@sdk/payload.types'\nimport type { AllFileCreateRequest, DeviceFile } from '@lib/types/files'\n\nexport function getFiles(\n payload: ListFilesPayload & { filters?: Record<string, any>; fields?: string },\n): Promise<PaginatedFileList> {\n const p = { ...payload }\n\n if (p.type) {\n p.type = Array.isArray(p.type) ? p.type : [p.type]\n }\n\n if (p.content_type) {\n p.content_type = (\n Array.isArray(p.content_type) ? p.content_type : [p.content_type]\n ) as ListFilesPayload['content_type']\n }\n\n return this.API.request('get_files', p)\n}\n\nexport function downloadFile(payload: { file_id: File['id'] }): Promise<null> {\n return this.API.request('download_file', payload)\n}\n\nexport function getAppConfig(payload?: { app_name?: string }): Promise<Record<string, any>> {\n let fileId\n\n if (!payload?.app_name && typeof window !== 'undefined' && window.location.href.startsWith('file://')) {\n const match = window.location.href.match(/pitcher(?:%20|\\s+)folders\\/files\\/([^/]+)\\//i)\n fileId = match?.[1]\n }\n\n return fileId\n ? this.API.request('get_file', { file_id: fileId }).then((file: FileRetrieve) => file?.metadata ?? {})\n : this.API.request('get_app_config', payload)\n}\n\nexport function getFile(payload: { id?: FileRetrieve['id']; file_id?: FileRetrieve['id'] }): Promise<FileRetrieve> {\n const { id, file_id } = payload\n return this.API.request('get_file', { ...payload, file_id: id || file_id })\n}\n\nexport function getFileRevisionData(payload: {\n file_id: FileRetrieve['id']\n revision_id: FileRevision['id']\n}): Promise<FileRetrieve> {\n return this.API.request('get_file_revision_data', payload)\n}\n\nexport function updateFile(payload: FileUpdateRequest & { id: File['id'] }): Promise<FileRetrieve> {\n return this.API.request('update_file', payload)\n}\n\nexport function deleteFile(payload: { file_id: File['id'] }): Promise<File['id']> {\n return this.API.request('delete_file', payload)\n}\n\nexport function createFile(payload: Omit<AllFileCreateRequest, 'instance_id'>): Promise<FileRetrieve> {\n return this.API.request('create_file', payload)\n}\n\n/**\n * Dispatches iOS native file selector and returns the selected file.\n *\n * @example\n * // iOS only method to select a file from the device.\n * api.selectDeviceFile()\n */\nexport function selectDeviceFile(): Promise<DeviceFile> {\n return this.API.request('select_device_file')\n}\n\n/**\n * Deletes a local file on iOS devices from Pitcher Folders.\n *\n * @example\n * // iOS only method to delete a local file.\n * api.deleteLocalFile({ url: 'file:///var/mobile/Containers/Data/Application/x/Documents/Pitcher%20Folders/ARPhotocapture/x.png' })\n */\nexport function deleteLocalFile(payload: { url: string }): Promise<void> {\n return this.API.request('delete_local_file', payload)\n}\n","import type { FileRetrieve, FileRevision } from '@openapi'\n\nexport function getFileRevisions(payload: {\n id?: FileRetrieve['id']\n file_id?: FileRetrieve['id']\n}): Promise<FileRevision[]> {\n const { id, file_id } = payload\n return this.API.request('get_file_revisions', { file_id: id || file_id })\n}\n","export function search(payload: { query: string; includeExpired?: boolean }): Promise<any> {\n return this.API.request('search', payload)\n}\n","import type { GetUsersParams, RefreshServiceTokenResponse, RefreshServiceTokenRequest } from '@lib/types/users'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type { User } from '@openapi'\n\nexport function getUsers(payload?: GetUsersParams): Promise<PaginatedData<User>> {\n return this.API.request('get_users', payload)\n}\n\n/**\n * Ask for a refreshed Salesforce token. In case the token hasn't expired yet, this method will return the same token as the current one found in the (`getEnv`)[#getenv] result.\n * @returns Promise resolving to an object containing the token\n */\nexport function refreshServiceToken(payload?: RefreshServiceTokenRequest): Promise<RefreshServiceTokenResponse> {\n return this.API.request('refresh_service_token', payload ?? {})\n}\n\nexport function refreshAccessToken() {\n return this.API.request('refresh_access_token')\n}\n","import type { File } from '@openapi'\n\n/**\n * @deprecated - not used anymore\n */\nexport function fetchDocumentInfo(payload: { fileId: File['id'] }): Promise<{\n pageCount: number\n [key: string]: unknown\n}> {\n return this.API.request('fetch_document_info', payload)\n}\n\n/**\n * Renders a page from a file together with annotations.\n *\n * @example\n * api.renderPageAsImage({\n * fileId: '123456',\n * documentId: '654321',\n * pageIndex: 0,\n * params: { width: 1920 },\n * })\n *\n * @returns A promise that resolves with the image as an ArrayBuffer.\n */\nexport function renderPageAsImage(payload: {\n /**\n * The ID of the file to render. Used when the documentId is not available.\n */\n fileId: File['id']\n /**\n * The ID of the document to render (optional). If not provided the fileId will be used.\n */\n documentId?: File['id']\n /**\n * The index of the page to render.\n */\n pageIndex: number\n /**\n * The parameters to use for rendering the page.\n */\n params: { width: number } | { height: number }\n}): Promise<ArrayBuffer> {\n return this.API.request('render_page_as_image', payload)\n}\n","export function toast(payload: { type: string; message: string }): Promise<void> {\n return this.API.request('toast', payload)\n}\n","/**\n * SmartStore Smart SQL Query Utilities\n *\n * This module provides utilities for converting SOQL queries to SmartStore Smart SQL format\n * for offline data access on iOS devices using Salesforce Mobile SDK.\n */\n\n// SQL keywords that should NOT be converted to SmartStore field references\nconst SQL_KEYWORDS = new Set([\n 'SELECT',\n 'FROM',\n 'WHERE',\n 'AND',\n 'OR',\n 'NOT',\n 'IN',\n 'LIKE',\n 'ORDER',\n 'BY',\n 'GROUP',\n 'HAVING',\n 'LIMIT',\n 'OFFSET',\n 'ASC',\n 'DESC',\n 'NULLS',\n 'FIRST',\n 'LAST',\n 'NULL',\n 'TRUE',\n 'FALSE',\n 'COUNT',\n 'SUM',\n 'AVG',\n 'MIN',\n 'MAX',\n 'COUNT_DISTINCT',\n 'CALENDAR_MONTH',\n 'CALENDAR_QUARTER',\n 'CALENDAR_YEAR',\n 'DAY_IN_MONTH',\n 'DAY_IN_WEEK',\n 'DAY_IN_YEAR',\n 'DAY_ONLY',\n 'FISCAL_MONTH',\n 'FISCAL_QUARTER',\n 'FISCAL_YEAR',\n 'HOUR_IN_DAY',\n 'WEEK_IN_MONTH',\n 'WEEK_IN_YEAR',\n 'INCLUDES',\n 'EXCLUDES',\n 'ABOVE',\n 'BELOW',\n 'ABOVE_OR_BELOW',\n 'AT',\n 'TYPEOF',\n 'WHEN',\n 'THEN',\n 'ELSE',\n 'END',\n 'USING',\n 'SCOPE',\n 'DATA',\n 'CATEGORY',\n 'ROLLUP',\n 'CUBE',\n 'FORMAT',\n 'CONVERTCURRENCY',\n 'TOLABEL',\n 'DISTANCE',\n 'GEOLOCATION',\n])\n\n// Aggregate functions that need special handling\nconst AGGREGATE_FUNCTIONS = ['COUNT', 'SUM', 'AVG', 'MIN', 'MAX', 'COUNT_DISTINCT']\n\n/**\n * Checks if a string is a SQL keyword\n */\nfunction isSqlKeyword(word: string): boolean {\n return SQL_KEYWORDS.has(word.toUpperCase())\n}\n\n/**\n * Checks if a value is a literal (string, number, boolean, null, date)\n */\nfunction isLiteralValue(value: string): boolean {\n const trimmed = value.trim()\n\n // Check for quoted strings\n if ((trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\")) || (trimmed.startsWith('\"') && trimmed.endsWith('\"'))) {\n return true\n }\n\n // Check for numbers\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmed)) {\n return true\n }\n\n // Check for boolean\n if (/^(true|false)$/i.test(trimmed)) {\n return true\n }\n\n // Check for null\n if (/^null$/i.test(trimmed)) {\n return true\n }\n\n // Check for date/datetime literals\n if (/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?(Z|[+-]\\d{2}:\\d{2})?)?$/.test(trimmed)) {\n return true\n }\n\n // Check for date literals like TODAY, YESTERDAY, LAST_N_DAYS:n, etc.\n if (\n /^(TODAY|YESTERDAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|LAST_N_DAYS:\\d+|NEXT_N_DAYS:\\d+|LAST_N_WEEKS:\\d+|NEXT_N_WEEKS:\\d+|LAST_N_MONTHS:\\d+|NEXT_N_MONTHS:\\d+|LAST_N_QUARTERS:\\d+|NEXT_N_QUARTERS:\\d+|LAST_N_YEARS:\\d+|NEXT_N_YEARS:\\d+|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)$/i.test(\n trimmed,\n )\n ) {\n return true\n }\n\n return false\n}\n\n/**\n * Checks if a token is an ISO 8601 datetime literal (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss.sssZ)\n */\nfunction isDateTimeLiteral(token: string): boolean {\n return /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?(Z|[+-]\\d{2}:\\d{2})?)?$/.test(token)\n}\n\n/**\n * Converts a field reference to SmartStore syntax\n * Handles relationship fields (Account.Name) and simple fields (Name)\n *\n * In SmartStore, relationship fields are stored as denormalized nested data within the soup.\n * So `Child_Account_vod__r.Name` becomes `{Child_Account_vod__c:Child_Account_vod__r.Name}`\n * - the full relationship path is preserved within the primary object's soup.\n */\nfunction convertFieldToSmartStore(field: string, primaryObject: string, objectAliases: Map<string, string>): string {\n const trimmed = field.trim()\n\n // Skip if it's a keyword or literal\n if (isSqlKeyword(trimmed) || isLiteralValue(trimmed)) {\n return trimmed\n }\n\n // Handle FIELDS(ALL) placeholder - convert to SmartStore _soup syntax\n // SmartStore uses {ObjectName:_soup} to select all fields from a soup\n if (trimmed === '__FIELDS_ALL_PLACEHOLDER__') {\n return `{${primaryObject}:_soup}`\n }\n\n // Handle wildcard * - should not be wrapped in SmartStore field reference syntax\n if (trimmed === '*') {\n return '*'\n }\n\n // Check if already in SmartStore format\n if (trimmed.startsWith('{') && trimmed.endsWith('}')) {\n return trimmed\n }\n\n // Handle relationship fields (e.g., Account.Name, Child_Account_vod__r.Name)\n // In SmartStore, relationship data is stored denormalized within the soup,\n // so we keep the full path and use the primary object as the soup name\n if (trimmed.includes('.')) {\n // Check if the first part is an alias for the primary object\n const parts = trimmed.split('.')\n const alias = parts[0]\n if (objectAliases.has(alias.toLowerCase()) && objectAliases.get(alias.toLowerCase()) === primaryObject) {\n // It's an alias for the primary object, use the rest as field path\n const fieldPath = parts.slice(1).join('.')\n return `{${primaryObject}:${fieldPath}}`\n }\n // For relationship fields, keep the full path within the primary object's soup\n return `{${primaryObject}:${trimmed}}`\n }\n\n // Simple field - use primary object\n return `{${primaryObject}:${trimmed}}`\n}\n\n/**\n * Converts an aggregate function to SmartStore syntax\n * e.g., COUNT(Id) → COUNT({Account:Id})\n */\nfunction convertAggregateFunction(expr: string, primaryObject: string, objectAliases: Map<string, string>): string {\n for (const func of AGGREGATE_FUNCTIONS) {\n const regex = new RegExp(`\\\\b${func}\\\\s*\\\\(([^)]+)\\\\)`, 'gi')\n expr = expr.replace(regex, (_match, innerField) => {\n const trimmedInner = innerField.trim()\n // Handle COUNT(*)\n if (trimmedInner === '*') {\n return `${func}(*)`\n }\n // Handle DISTINCT\n if (trimmedInner.toUpperCase().startsWith('DISTINCT ')) {\n const fieldPart = trimmedInner.substring(9).trim()\n const smartField = convertFieldToSmartStore(fieldPart, primaryObject, objectAliases)\n return `${func}(DISTINCT ${smartField})`\n }\n const smartField = convertFieldToSmartStore(trimmedInner, primaryObject, objectAliases)\n return `${func}(${smartField})`\n })\n }\n return expr\n}\n\n/**\n * Parses the SELECT clause fields, handling aggregate functions and aliases\n */\nfunction parseSelectFields(selectClause: string): string[] {\n const fields: string[] = []\n let depth = 0\n let currentField = ''\n\n for (let i = 0; i < selectClause.length; i++) {\n const char = selectClause[i]\n\n if (char === '(') {\n depth++\n currentField += char\n } else if (char === ')') {\n depth--\n currentField += char\n } else if (char === ',' && depth === 0) {\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n currentField = ''\n } else {\n currentField += char\n }\n }\n\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n\n return fields\n}\n\n/**\n * Converts SELECT fields to SmartStore syntax\n */\nfunction convertSelectFields(fields: string[], primaryObject: string, objectAliases: Map<string, string>): string[] {\n return fields.map((field) => {\n // Check for alias (e.g., \"COUNT(Id) cnt\" or \"Name AS n\")\n const aliasMatch = field.match(/^(.+?)\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*)$/i)\n let expression = field\n let alias = ''\n\n if (aliasMatch) {\n expression = aliasMatch[1].trim()\n alias = aliasMatch[2]\n }\n\n // Check if it's an aggregate function\n const hasAggregate = AGGREGATE_FUNCTIONS.some((func) => new RegExp(`\\\\b${func}\\\\s*\\\\(`, 'i').test(expression))\n\n if (hasAggregate) {\n const converted = convertAggregateFunction(expression, primaryObject, objectAliases)\n return alias ? `${converted} ${alias}` : converted\n }\n\n // Regular field\n const converted = convertFieldToSmartStore(expression, primaryObject, objectAliases)\n return alias ? `${converted} ${alias}` : converted\n })\n}\n\n/**\n * Converts SOQL null comparisons to SmartStore (SQL) syntax\n * SOQL: = null, != null\n * SQL: IS NULL, IS NOT NULL\n *\n * IMPORTANT: Process != and <> BEFORE = to avoid partial matches\n */\nfunction convertNullComparisons(clause: string): string {\n // Convert \"!= null\" or \"!=null\" to \"IS NOT NULL\" (case insensitive) - MUST be before = null\n let result = clause.replace(/\\s*!=\\s*null\\b/gi, ' IS NOT NULL')\n\n // Convert \"<> null\" to \"IS NOT NULL\" (case insensitive)\n result = result.replace(/\\s*<>\\s*null\\b/gi, ' IS NOT NULL')\n\n // Convert \"= null\" or \"=null\" to \"IS NULL\" (case insensitive) - MUST be after != null\n result = result.replace(/\\s*=\\s*null\\b/gi, ' IS NULL')\n\n return result\n}\n\n/**\n * Converts WHERE clause to SmartStore syntax\n * Preserves operators, literals, and keywords while converting field references\n * Also converts SOQL null comparisons (= null, != null) to SQL syntax (IS NULL, IS NOT NULL)\n */\nfunction convertWhereClause(whereClause: string, primaryObject: string, objectAliases: Map<string, string>): string {\n // Tokenize the WHERE clause while preserving structure\n let result = ''\n let i = 0\n const len = whereClause.length\n\n while (i < len) {\n const char = whereClause[i]\n\n // Skip whitespace\n if (/\\s/.test(char)) {\n result += char\n i++\n continue\n }\n\n // Handle quoted strings - pass through unchanged\n if (char === \"'\" || char === '\"') {\n const quote = char\n result += char\n i++\n while (i < len && whereClause[i] !== quote) {\n // Handle escaped quotes\n if (whereClause[i] === '\\\\' && i + 1 < len) {\n result += whereClause[i] + whereClause[i + 1]\n i += 2\n } else {\n result += whereClause[i]\n i++\n }\n }\n if (i < len) {\n result += whereClause[i]\n i++\n }\n continue\n }\n\n // Handle operators and special characters\n if (/[()=<>!,]/.test(char)) {\n result += char\n i++\n // Handle multi-char operators\n if ((char === '!' || char === '<' || char === '>') && i < len && whereClause[i] === '=') {\n result += whereClause[i]\n i++\n }\n continue\n }\n\n // Handle identifiers and keywords\n if (/[a-zA-Z_]/.test(char)) {\n let identifier = ''\n while (i < len && /[a-zA-Z0-9_.]/.test(whereClause[i])) {\n identifier += whereClause[i]\n i++\n }\n\n // Check if it's a keyword, literal, or field\n if (isSqlKeyword(identifier) || isLiteralValue(identifier)) {\n result += identifier\n } else {\n // It's a field reference\n result += convertFieldToSmartStore(identifier, primaryObject, objectAliases)\n }\n continue\n }\n\n // Handle numbers and datetime literals\n if (/[0-9-]/.test(char)) {\n let token = ''\n\n // Handle negative numbers or dates starting with digit\n if (char === '-') {\n token += char\n i++\n }\n\n // Read digits, dots, colons, and dashes for dates/datetimes\n while (i < len && /[0-9.:\\-TZ+]/.test(whereClause[i])) {\n token += whereClause[i]\n i++\n }\n\n // Wrap datetime literals in single quotes for Smart SQL (SQLite requirement)\n if (isDateTimeLiteral(token)) {\n result += `'${token}'`\n } else {\n result += token\n }\n continue\n }\n\n // Pass through any other character\n result += char\n i++\n }\n\n // Convert SOQL null comparisons to SQL syntax\n result = convertNullComparisons(result)\n\n return result\n}\n\n/**\n * Parses ORDER BY clause into field and direction pairs\n */\nfunction parseOrderByClause(orderByClause: string): Array<{ field: string; direction: string }> {\n const result: Array<{ field: string; direction: string }> = []\n\n // Split by comma, but be careful with functions\n const parts = orderByClause.split(/,(?![^()]*\\))/)\n\n for (const part of parts) {\n const trimmed = part.trim()\n if (!trimmed) continue\n\n // Match field and optional direction (ASC/DESC) and NULLS FIRST/LAST\n const match = trimmed.match(/^(.+?)\\s*(ASC|DESC)?\\s*(NULLS\\s+(?:FIRST|LAST))?$/i)\n\n if (match) {\n const field = match[1].trim()\n let direction = match[2] ? match[2].toUpperCase() : ''\n if (match[3]) {\n direction += (direction ? ' ' : '') + match[3].toUpperCase()\n }\n result.push({ field, direction })\n } else {\n result.push({ field: trimmed, direction: '' })\n }\n }\n\n return result\n}\n\n/**\n * Converts ORDER BY fields to SmartStore syntax\n */\nfunction convertOrderByFields(\n orderByParts: Array<{ field: string; direction: string }>,\n primaryObject: string,\n objectAliases: Map<string, string>,\n): string[] {\n return orderByParts.map(({ field, direction }) => {\n // Check for aggregate functions\n const hasAggregate = AGGREGATE_FUNCTIONS.some((func) => new RegExp(`\\\\b${func}\\\\s*\\\\(`, 'i').test(field))\n\n let convertedField: string\n if (hasAggregate) {\n convertedField = convertAggregateFunction(field, primaryObject, objectAliases)\n } else {\n convertedField = convertFieldToSmartStore(field, primaryObject, objectAliases)\n }\n\n return direction ? `${convertedField} ${direction}` : convertedField\n })\n}\n\n/**\n * Parses GROUP BY clause fields\n */\nfunction parseGroupByClause(groupByClause: string): string[] {\n return groupByClause\n .split(/,(?![^()]*\\))/)\n .map((f) => f.trim())\n .filter(Boolean)\n}\n\n/**\n * Converts GROUP BY fields to SmartStore syntax\n */\nfunction convertGroupByFields(fields: string[], primaryObject: string, objectAliases: Map<string, string>): string[] {\n return fields.map((field) => {\n // Check for aggregate functions (ROLLUP, CUBE)\n if (/^(ROLLUP|CUBE)\\s*\\(/i.test(field)) {\n return field.replace(/\\(([^)]+)\\)/g, (_match, inner) => {\n const innerFields = inner.split(',').map((f: string) => f.trim())\n const converted = innerFields.map((f: string) => convertFieldToSmartStore(f, primaryObject, objectAliases))\n return `(${converted.join(', ')})`\n })\n }\n return convertFieldToSmartStore(field, primaryObject, objectAliases)\n })\n}\n\n/**\n * Extracts FROM clause and any JOINs\n * Returns the primary object and any joined objects\n */\nfunction parseFromClause(fromClause: string): {\n primary: string\n alias?: string\n joins: Array<{ object: string; alias?: string; type: string; on?: string }>\n} {\n const joins: Array<{ object: string; alias?: string; type: string; on?: string }> = []\n\n // Match primary object with optional alias\n const primaryMatch = fromClause.match(/^([A-Za-z0-9_]+)(?:\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*))?/i)\n\n if (!primaryMatch) {\n return { primary: '', joins }\n }\n\n const primary = primaryMatch[1]\n const alias = primaryMatch[2]\n\n // Match JOIN clauses\n const joinRegex =\n /(LEFT\\s+OUTER\\s+JOIN|LEFT\\s+JOIN|INNER\\s+JOIN|JOIN)\\s+([A-Za-z0-9_]+)(?:\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*))?\\s+ON\\s+([^,]+?)(?=(?:LEFT|INNER|JOIN|$))/gi\n let joinMatch\n\n while ((joinMatch = joinRegex.exec(fromClause)) !== null) {\n joins.push({\n type: joinMatch[1].toUpperCase().replace(/\\s+/g, ' '),\n object: joinMatch[2],\n alias: joinMatch[3],\n on: joinMatch[4]?.trim(),\n })\n }\n\n return { primary, alias, joins }\n}\n\n/**\n * Removes subqueries (parenthesized SELECT statements) from a query string.\n * Returns the query with subqueries replaced by a placeholder.\n * This is needed because SmartStore doesn't support SOQL-style subqueries.\n */\nfunction removeSubqueries(query: string): { cleanQuery: string; subqueries: string[] } {\n const subqueries: string[] = []\n let cleanQuery = ''\n let depth = 0\n let currentSubquery = ''\n let inSubquery = false\n\n for (let i = 0; i < query.length; i++) {\n const char = query[i]\n\n if (char === '(') {\n depth++\n if (depth === 1) {\n // Check if this starts a subquery (SELECT keyword inside parentheses).\n // Require SELECT followed by whitespace so we don't strip WHERE conditions\n // that use field names like Selected__c or Selection_Type__c.\n const remaining = query.substring(i + 1).trimStart()\n if (/^SELECT\\s/i.test(remaining)) {\n inSubquery = true\n currentSubquery = char\n continue\n }\n }\n if (inSubquery) {\n currentSubquery += char\n } else {\n cleanQuery += char\n }\n } else if (char === ')') {\n if (inSubquery) {\n currentSubquery += char\n depth--\n if (depth === 0) {\n // End of subquery\n subqueries.push(currentSubquery)\n currentSubquery = ''\n inSubquery = false\n }\n } else {\n depth--\n cleanQuery += char\n }\n } else {\n if (inSubquery) {\n currentSubquery += char\n } else {\n cleanQuery += char\n }\n }\n }\n\n return { cleanQuery, subqueries }\n}\n\n/**\n * Finds the main FROM clause in a query, ignoring any FROM clauses inside subqueries.\n * Returns the object name and the query with subqueries removed, so callers can reuse\n * the cleaned query and avoid parsing twice.\n */\nexport function findMainFromClause(query: string): { primaryObject: string | null; cleanQuery: string } {\n const { cleanQuery } = removeSubqueries(query)\n\n const fromMatch = cleanQuery.match(\n /FROM\\s+([A-Za-z0-9_]+)(?:\\s+(?:AS\\s+)?[A-Za-z_][A-Za-z0-9_]*)?(?=\\s+WHERE\\s+|\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n\n const primaryObject = fromMatch ? fromMatch[1] : null\n return { primaryObject, cleanQuery }\n}\n\n/**\n * Comprehensive SOQL to SmartStore Smart Query converter\n *\n * Converts standard SOQL queries to SmartStore Smart SQL format for offline use on iOS.\n * Handles SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING, LIMIT, OFFSET,\n * aggregate functions, and relationship fields.\n *\n * SmartStore stores denormalized data, so relationship fields are accessed directly\n * within the soup using the full relationship path (e.g., Child_Account_vod__r.Name).\n *\n * NOTE: SOQL subqueries (e.g., SELECT ... (SELECT ... FROM EventRelations) FROM Event)\n * are NOT supported by SmartStore. The subqueries will be removed and the data\n * should be fetched separately if needed.\n *\n * @param soqlQuery - The SOQL query string to convert\n * @returns The converted SmartStore Smart SQL query string\n *\n * @example\n * // Simple query\n * convertSoqlToSmartQuery('SELECT Id, Name FROM Account WHERE Active = true')\n * // Returns: SELECT {Account:Id}, {Account:Name} FROM {Account} WHERE {Account:Active} = true\n *\n * @example\n * // With relationship fields (denormalized access - no joins needed)\n * convertSoqlToSmartQuery('SELECT Id, Child_Account_vod__r.Name FROM Child_Account_vod__c')\n * // Returns: SELECT {Child_Account_vod__c:Id}, {Child_Account_vod__c:Child_Account_vod__r.Name} FROM {Child_Account_vod__c}\n *\n * @example\n * // With aggregate functions\n * convertSoqlToSmartQuery('SELECT COUNT(Id), Industry FROM Account GROUP BY Industry')\n * // Returns: SELECT COUNT({Account:Id}), {Account:Industry} FROM {Account} GROUP BY {Account:Industry}\n *\n * @example\n * // With ORDER BY and LIMIT\n * convertSoqlToSmartQuery('SELECT Id, Name FROM Contact ORDER BY LastName ASC, FirstName DESC LIMIT 100')\n * // Returns: SELECT {Contact:Id}, {Contact:Name} FROM {Contact} ORDER BY {Contact:LastName} ASC, {Contact:FirstName} DESC LIMIT 100\n */\nexport function convertSoqlToSmartQuery(soqlQuery: string): string {\n if (!soqlQuery || typeof soqlQuery !== 'string') {\n return ''\n }\n\n // Normalize whitespace\n let normalizedQuery = soqlQuery.replace(/\\s+/g, ' ').trim()\n\n // Find the main FROM clause and get query with subqueries removed (single parse)\n const { primaryObject, cleanQuery } = findMainFromClause(normalizedQuery)\n\n if (!primaryObject) {\n return soqlQuery\n }\n\n normalizedQuery = cleanQuery\n\n // Replace SOQL-specific FIELDS() syntax with __FIELDS_ALL_PLACEHOLDER__\n // We'll replace this with {ObjectName:_soup} after we know the object name\n // FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM) are SOQL-specific and not supported by SmartStore,\n // uses {ObjectName:_soup} to select all fields from a soup\n normalizedQuery = normalizedQuery.replace(\n /\\bFIELDS\\s*\\(\\s*(ALL|STANDARD|CUSTOM)\\s*\\)/gi,\n '__FIELDS_ALL_PLACEHOLDER__',\n )\n\n // Extract SELECT clause (from the clean query without subqueries)\n const selectMatch = normalizedQuery.match(/SELECT\\s+([\\s\\S]+?)\\s+FROM\\s+/i)\n if (!selectMatch) {\n return soqlQuery\n }\n\n // Extract FROM clause to get any alias\n const fromMatch = normalizedQuery.match(\n /FROM\\s+([\\s\\S]+?)(?=\\s+WHERE\\s+|\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n\n // Parse FROM clause to get alias if present\n const fromParsed = fromMatch ? parseFromClause(fromMatch[1].trim()) : { primary: primaryObject, joins: [] }\n\n // Extract other clauses\n const whereMatch = normalizedQuery.match(\n /WHERE\\s+([\\s\\S]+?)(?=\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n const groupByMatch = normalizedQuery.match(\n /GROUP\\s+BY\\s+([\\s\\S]+?)(?=\\s+HAVING\\s+|\\s+ORDER\\s+BY\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n const havingMatch = normalizedQuery.match(/HAVING\\s+([\\s\\S]+?)(?=\\s+ORDER\\s+BY\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i)\n const orderByMatch = normalizedQuery.match(/ORDER\\s+BY\\s+([\\s\\S]+?)(?=\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i)\n const limitMatch = normalizedQuery.match(/LIMIT\\s+(\\d+)/i)\n const offsetMatch = normalizedQuery.match(/OFFSET\\s+(\\d+)/i)\n\n // Build alias map for the primary object\n // SmartStore stores denormalized data, so relationship fields are accessed\n // directly within the soup without needing joins\n const objectAliases = new Map<string, string>()\n if (fromParsed.alias) {\n objectAliases.set(fromParsed.alias.toLowerCase(), primaryObject)\n }\n objectAliases.set(primaryObject.toLowerCase(), primaryObject)\n\n // Build the Smart Query\n const parts: string[] = []\n\n // SELECT clause\n const selectFields = parseSelectFields(selectMatch[1].trim())\n const smartSelectFields = convertSelectFields(selectFields, primaryObject, objectAliases)\n parts.push(`SELECT ${smartSelectFields.join(', ')}`)\n\n // FROM clause - just the primary object (SmartStore stores denormalized data)\n parts.push(`FROM {${primaryObject}}`)\n\n // WHERE clause\n const whereConditions: string[] = []\n\n // Add original WHERE conditions\n if (whereMatch) {\n const smartWhere = convertWhereClause(whereMatch[1].trim(), primaryObject, objectAliases)\n whereConditions.push(smartWhere)\n }\n\n // Combine all WHERE conditions\n if (whereConditions.length > 0) {\n parts.push(`WHERE ${whereConditions.join(' AND ')}`)\n }\n\n // GROUP BY clause\n if (groupByMatch) {\n const groupByFields = parseGroupByClause(groupByMatch[1].trim())\n const smartGroupBy = convertGroupByFields(groupByFields, primaryObject, objectAliases)\n parts.push(`GROUP BY ${smartGroupBy.join(', ')}`)\n }\n\n // HAVING clause\n if (havingMatch) {\n const smartHaving = convertWhereClause(havingMatch[1].trim(), primaryObject, objectAliases)\n parts.push(`HAVING ${smartHaving}`)\n }\n\n // ORDER BY clause\n if (orderByMatch) {\n const orderByParts = parseOrderByClause(orderByMatch[1].trim())\n const smartOrderBy = convertOrderByFields(orderByParts, primaryObject, objectAliases)\n parts.push(`ORDER BY ${smartOrderBy.join(', ')}`)\n }\n\n // LIMIT clause\n if (limitMatch) {\n parts.push(`LIMIT ${limitMatch[1]}`)\n }\n\n // OFFSET clause\n if (offsetMatch) {\n parts.push(`OFFSET ${offsetMatch[1]}`)\n }\n\n return parts.join(' ')\n}\n","import { highLevelApi } from '@sdk/main'\nimport type {\n QueryPayload,\n CRMQueryPayload,\n UpsertCRMObjectsPayload,\n CRMSmartObjectValidationRulesPayload,\n CRMSmartObjectMetadataPayload,\n CRMSmartObjectLayoutPayload,\n CRMSmartDeleteObjectsPayload,\n CRMCreatePayload,\n CRMUpsertPayload,\n CRMDescribePayload,\n CRMLayoutPayload,\n} from '@sdk/payload.types'\nimport { convertSoqlToSmartQuery, findMainFromClause } from '@lib/util/smart-store.util'\n\nexport function query(payload: QueryPayload) {\n return highLevelApi.API.request('query', payload)\n}\n\nexport function crmQuery(payload: CRMQueryPayload): Promise<any> {\n return highLevelApi.API.request('crm_query', payload)\n}\n\n/**\n * Extracts field names from the main SOQL query's SELECT clause (ignores subqueries).\n * Handles simple fields, relationship fields (Account.Name), and aliases.\n */\nfunction extractFieldsFromSoql(soqlQuery: string): string[] {\n const { cleanQuery } = findMainFromClause(soqlQuery.replace(/\\s+/g, ' ').trim())\n const selectMatch = cleanQuery.match(/SELECT\\s+([\\s\\S]+?)\\s+FROM\\s+/i)\n if (!selectMatch) return []\n\n const selectClause = selectMatch[1]\n const fields: string[] = []\n let depth = 0\n let currentField = ''\n\n for (let i = 0; i < selectClause.length; i++) {\n const char = selectClause[i]\n\n if (char === '(') {\n depth++\n currentField += char\n } else if (char === ')') {\n depth--\n currentField += char\n } else if (char === ',' && depth === 0) {\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n currentField = ''\n } else {\n currentField += char\n }\n }\n\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n\n // Extract just the field name (handle aliases like \"Name AS n\" or relationship fields like \"Account.Name\")\n return fields.map((field) => {\n // Remove alias (AS keyword or space followed by identifier)\n const aliasMatch = field.match(/^(.+?)\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*)$/i)\n const fieldExpr = aliasMatch ? aliasMatch[1].trim() : field.trim()\n\n // For relationship fields like \"Account.Name\", keep the last part as the field name,\n // but we'll use the full expression for matching\n return fieldExpr\n })\n}\n\n/**\n * Extracts the primary object name from the main SOQL query's FROM clause (ignores subqueries).\n */\nfunction extractObjectFromSoql(soqlQuery: string): string {\n const { primaryObject } = findMainFromClause(soqlQuery.replace(/\\s+/g, ' ').trim())\n return primaryObject ?? ''\n}\n\n/**\n * Sets a nested property on an object using a dot-separated path.\n * For example, setNestedProperty(obj, 'Child_Account_vod__r.Name', 'John')\n * results in { Child_Account_vod__r: { Name: 'John' } }\n */\nfunction setNestedProperty(obj: Record<string, any>, path: string, value: any): void {\n const parts = path.split('.')\n\n if (parts.length === 1) {\n // Simple field - set directly\n obj[path] = value\n return\n }\n\n // Relationship field - create nested structure\n let current = obj\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i]\n if (!current[part] || typeof current[part] !== 'object') {\n current[part] = {}\n }\n current = current[part]\n }\n current[parts[parts.length - 1]] = value\n}\n\n/**\n * Checks if a field is a special \"all fields\" selector.\n * These include FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM), and wildcard *.\n */\nfunction isAllFieldsSelector(field: string): boolean {\n const trimmed = field.trim()\n return trimmed === '*' || /^FIELDS\\s*\\(\\s*(ALL|STANDARD|CUSTOM)\\s*\\)$/i.test(trimmed)\n}\n\n/**\n * Transforms SmartStore query results (array of arrays) into CRM query format (array of objects).\n * Handles relationship fields by creating nested objects matching Salesforce REST API format.\n *\n * For example, field \"Child_Account_vod__r.Name\" with value \"John\" becomes:\n * { Child_Account_vod__r: { Name: \"John\" } }\n *\n * Special handling for FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM), and * selectors:\n * When these are used, SmartStore returns the entire soup object, which is spread into the record\n * instead of being assigned to a single field key.\n *\n * @param smartStoreResults - Array of arrays from SmartStore query\n * @param fields - Field names from the original SOQL query\n * @param objectName - Primary object name from the SOQL query\n * @returns Array of objects matching CRM query result format\n */\nfunction transformSmartStoreResults(smartStoreResults: any[][], fields: string[], objectName: string): any[] {\n if (!smartStoreResults || !Array.isArray(smartStoreResults)) {\n return []\n }\n\n return smartStoreResults.map((row) => {\n const record: Record<string, any> = {}\n\n // Map each value to its field name, creating nested objects for relationship fields\n fields.forEach((field, index) => {\n if (index < row.length) {\n const value = row[index]\n\n // Special handling for \"all fields\" selectors (FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM), *)\n // SmartStore returns the entire soup entry as a single object for {ObjectName:_soup}\n // Spread its properties into the record instead of assigning to a single field key\n if (isAllFieldsSelector(field)) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n // Spread all properties from the soup object into the record\n Object.assign(record, value)\n }\n } else {\n // Regular field - set normally\n setNestedProperty(record, field, value)\n }\n }\n })\n\n // Add attributes object (similar to Salesforce REST API format)\n // Get Id from the record if it exists for the URL\n const recordId = record['Id'] || record['id'] || ''\n record['attributes'] = {\n type: objectName,\n url: recordId ? `/services/data/v57.0/sobjects/${objectName}/${recordId}` : '',\n }\n\n return record\n })\n}\n\n/**\n * Executes a CRM query with automatic iOS/SmartStore adaptation.\n *\n * On iOS devices with the 'sfdc_offline_enabled' LaunchDarkly flag enabled,\n * this function automatically converts SOQL queries to SmartStore Smart SQL format\n * and uses the local SmartStore for offline data access.\n * On other platforms or when the flag is disabled, it uses the standard CRM query API.\n *\n * @param {CRMQueryPayload} payload - The query payload containing the SOQL query string.\n * @returns {Promise<any>} - Promise resolving with query results.\n *\n * @example\n * // Works on all platforms - automatically adapts for iOS with sfdc_offline_enabled LD flag\n * const result = await crmQueryAdaptive({ query: 'SELECT Id, Name FROM Account WHERE Active = true' })\n */\nexport async function crmQueryAdaptive(payload: CRMQueryPayload): Promise<any> {\n const query = payload.query\n\n if (!query || typeof query !== 'string') {\n return Promise.reject(new Error('Query is required and must be a string'))\n }\n\n // Check if SmartStore should be used (iOS + sfdc_offline_enabled LD flag)\n let useSmartStore = false\n try {\n const env: any = await highLevelApi.API.request('get_env')\n const isIos = env?.mode === 'IOS'\n const isSfdcSyncEnabled = env?.launch_darkly?.sfdc_offline_enabled === true\n useSmartStore = isIos && isSfdcSyncEnabled\n } catch {\n useSmartStore = false\n }\n\n console.log(`[crmQueryAdaptive] Called query: `, query)\n if (useSmartStore) {\n // Extract field names and object name from the original SOQL query\n const fields = extractFieldsFromSoql(query)\n const objectName = extractObjectFromSoql(query)\n\n // Convert SOQL to SmartStore Smart SQL\n let smartQuery = convertSoqlToSmartQuery(query)\n\n // Add SmartStore filter to exclude locally deleted records (unless already in query).\n // SmartStore stores boolean flags as 0/1, 'false'/'true', or NULL.\n if (!smartQuery.includes('__locally_deleted__')) {\n const fromMatch = smartQuery.match(/FROM\\s+\\{([A-Za-z0-9_]+)\\}/)\n const primaryObject = fromMatch?.[1]\n if (primaryObject) {\n const filter = `({${primaryObject}:__locally_deleted__} = 0 OR {${primaryObject}:__locally_deleted__} = 'false' OR {${primaryObject}:__locally_deleted__} IS NULL)`\n if (smartQuery.includes(' WHERE ')) {\n // Wrap existing conditions in parentheses so AND binds to the whole clause.\n // Otherwise \"A OR B\" + \" AND filter\" becomes A OR (B AND filter) by precedence.\n smartQuery = smartQuery.replace(\n /\\s+WHERE\\s+([\\s\\S]+?)(?=\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n (_, conditions) => ` WHERE (${conditions}) AND ${filter}`,\n )\n } else {\n // Insert WHERE after FROM {Object}, before ORDER BY / LIMIT / etc. (appending would produce invalid SQL)\n smartQuery = smartQuery.replace(\n /(FROM\\s+\\{[A-Za-z0-9_]+\\})((\\s+(?:ORDER\\s+BY|GROUP\\s+BY|HAVING|LIMIT|OFFSET)[\\s\\S]*)?)$/i,\n (_, fromClause, rest) => `${fromClause} WHERE ${filter}${rest}`,\n )\n }\n }\n }\n\n console.log(`[crmSmartQuery] Called query: `, smartQuery)\n\n // Execute SmartStore query\n const smartStoreResults = await crmSmartQuery({ query: smartQuery })\n\n // Transform results to match CRM query format\n const records = transformSmartStoreResults(smartStoreResults, fields, objectName)\n console.log(`[SmartStore] Results: `, records)\n\n return {\n records,\n totalSize: records.length,\n }\n }\n\n // Non-iOS or setting disabled: use standard CRM query\n return crmQuery(payload)\n}\n\n/**\n * Executes a SmartStore query against local CRM data (iOS only).\n * Uses Salesforce Mobile SDK SmartStore query syntax.\n * Validates that the query uses SmartStore syntax before execution.\n *\n * @param {CRMQueryPayload} payload - The query payload containing the SmartStore query string.\n * @returns {Promise<Array<any>>} - Promise resolving with an array of query results from SmartStore.\n * @throws {Error} - Throws an error if the query is not a valid SmartStore query.\n *\n * @example\n * // iOS only method to execute a SmartStore query.\n * api.crmSmartQuery({ query: 'SELECT {Account:Id}, {Account:Name} FROM {Account} ORDER BY {Account:Name} LIMIT 10' })\n */\nexport function crmSmartQuery(payload: CRMQueryPayload): Promise<Array<any>> {\n const query = payload.query\n\n // Validate SmartStore query syntax: must contain {soupName:fieldPath} pattern\n if (!query || typeof query !== 'string') {\n return Promise.reject(new Error('Query is required and must be a string'))\n }\n\n const smartStorePattern = /\\{[^}]+:[^}]+}/\n if (!smartStorePattern.test(query.trim())) {\n return Promise.reject(\n new Error(\n 'Invalid SmartStore query syntax. SmartStore queries must use curly braces syntax: {SoupName:FieldName}',\n ),\n )\n }\n\n return highLevelApi.API.request('crm_smart_query', payload)\n}\n\n/**\n * Retrieves metadata for a CRM smart object (iOS only).\n * Fetches object metadata from the Salesforce Mobile SDK cache.\n *\n * @param {CRMSmartObjectMetadataPayload} payload - The payload containing the object name.\n * @returns {Promise<any>} - Promise resolving with the object metadata.\n * @throws {Error} - Throws an error if the object name is not provided.\n *\n * @example\n * // iOS only method to retrieve CRM object metadata.\n * api.crmSmartObjectMetadata({ object: 'Account' })\n */\nexport function crmSmartObjectMetadata(payload: CRMSmartObjectMetadataPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n const objectName = payload.object\n\n if (!objectName || typeof objectName !== 'string' || objectName.trim() === '') {\n return Promise.reject(new Error('Object name is required and must be a non-empty string'))\n }\n\n if (\n payload.record_type_id !== undefined &&\n (typeof payload.record_type_id !== 'string' || payload.record_type_id.trim() === '')\n ) {\n return Promise.reject(new Error('record_type_id must be a non-empty string if provided'))\n }\n\n return highLevelApi.API.request('crm_smart_object_metadata', payload)\n}\n\n/**\n * Upserts CRM objects into local CRM data (iOS only).\n * Uses Salesforce Mobile SDK SmartStore to insert or update records.\n * Each object in the payload specifies a table name, the objects to upsert, and an optional external ID path.\n *\n * **Important**: Always provide `external_id_path` when performing updates to ensure records are\n * matched correctly. Without it, the operation may create duplicate records instead of updating existing ones.\n *\n * **Note**: When creating new records, you must provide an explicit identifier field (e.g., `Id`)\n * in each record object passed from the frontend. The backend does not auto-generate IDs.\n *\n * @param {UpsertCRMObjectsPayload} payload - The upsert payload containing an array of UpsertCRMObject items.\n * @returns {Promise<any>} - Promise resolving with the result of the upsert operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // iOS only method to upsert CRM objects.\n *\n * // Updating existing records - always include external_id_path\n * api.crmSmartUpsertObjects({\n * objects: [\n * {\n * table_name: 'Account',\n * objects: [{ Id: '001xx000003DGbQAAW', Name: 'Acme Corp Updated' }],\n * external_id_path: 'Id' // Required for updates to match existing records\n * }\n * ]\n * })\n *\n * // Creating new records - explicit ID required in each record\n * api.crmSmartUpsertObjects({\n * objects: [\n * {\n * table_name: 'Account',\n * objects: [\n * { Id: '001xx000003NEW001', Name: 'New Company' }, // Explicit ID required\n * { Id: '001xx000003NEW002', Name: 'Another Company' }\n * ]\n * }\n * ]\n * })\n */\nexport function crmSmartUpsertObjects(payload: UpsertCRMObjectsPayload): Promise<any> {\n if (!payload || !payload.objects || !Array.isArray(payload.objects)) {\n return Promise.reject(new Error('Payload must contain an array of objects'))\n }\n\n if (payload.objects.length === 0) {\n return Promise.reject(new Error('Objects array cannot be empty'))\n }\n\n for (const obj of payload.objects) {\n if (!obj) {\n return Promise.reject(new Error('Objects array cannot contain null or undefined elements'))\n }\n\n if (!obj.table_name || typeof obj.table_name !== 'string' || obj.table_name.trim() === '') {\n return Promise.reject(new Error('Each object must have a valid non-empty table_name'))\n }\n\n // Validate external_id_path if provided\n if (obj.external_id_path !== undefined) {\n if (typeof obj.external_id_path !== 'string' || obj.external_id_path.trim() === '') {\n return Promise.reject(\n new Error(\n `Object for table ${obj.table_name} has invalid external_id_path. It must be a non-empty string or undefined.`,\n ),\n )\n }\n }\n\n if (!obj.objects || !Array.isArray(obj.objects) || obj.objects.length === 0) {\n return Promise.reject(new Error(`Object for table ${obj.table_name} must have a non-empty objects array`))\n }\n\n // Validate that inner objects array doesn't contain null/undefined elements or arrays\n for (let i = 0; i < obj.objects.length; i++) {\n const record = obj.objects[i]\n if (!record || typeof record !== 'object' || Array.isArray(record)) {\n return Promise.reject(\n new Error(\n `Object for table ${obj.table_name} contains invalid element at index ${i}. All records must be valid objects, not null, undefined, or arrays.`,\n ),\n )\n }\n }\n }\n\n console.log('[crmSmartUpsertObjects] Request payload:', JSON.stringify(payload, null, 2))\n\n return highLevelApi.API.request('crm_smart_upsert_objects', payload)\n .then((result) => {\n console.log('[crmSmartUpsertObjects] Success:', result)\n return result\n })\n .catch((error) => {\n console.error('[crmSmartUpsertObjects] Error:', error)\n throw error\n })\n}\n/**\n * Retrieves validation rules for a CRM smart object (iOS only).\n * This method fetches the validation rules configured for a specific CRM object type\n * from the local SmartStore cache.\n *\n * @param {CRMSmartObjectValidationRulesPayload} payload - The payload containing the object name.\n * @returns {Promise<any>} - Promise resolving with the validation rules for the specified object.\n *\n * @example\n * // iOS only method to get validation rules for an Account object.\n * api.crmSmartObjectValidationRules({ object: 'Account' })\n *\n * @example\n * // Get validation rules for a Contact object.\n * api.crmSmartObjectValidationRules({ object: 'Contact' })\n */\nexport function crmSmartObjectValidationRules(payload: CRMSmartObjectValidationRulesPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n const objectName = payload.object\n\n if (!objectName || typeof objectName !== 'string' || objectName.trim() === '') {\n return Promise.reject(new Error('Object name is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_smart_object_validation_rules', payload)\n}\n\n/**\n * Retrieves layout information for a CRM smart object (iOS only).\n * Fetches object layout metadata from the Salesforce Mobile SDK cache.\n *\n * @param {CRMSmartObjectLayoutPayload} payload - The payload containing the object name and optional layout parameters.\n * @returns {Promise<any>} - Promise resolving with the object layout metadata.\n * @throws {Error} - Throws an error if the object name is not provided.\n *\n * @example\n * // iOS only method to retrieve CRM object layout.\n * api.crmSmartObjectLayout({ object: 'Account' })\n *\n * @example\n * // Get layout with specific form factor and mode.\n * api.crmSmartObjectLayout({ object: 'Account', form_factor: 'Large', mode: 'Edit' })\n */\nexport function crmSmartObjectLayout(payload: CRMSmartObjectLayoutPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n const objectName = payload.object\n\n if (!objectName || typeof objectName !== 'string' || objectName.trim() === '') {\n return Promise.reject(new Error('Object name is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_smart_object_layout', payload)\n}\n\n/**\n * Deletes CRM objects from local CRM data (iOS only).\n * Uses Salesforce Mobile SDK SmartStore to delete records.\n * Each object in the payload specifies a table name and an array of IDs to delete.\n *\n * @param {CRMSmartDeleteObjectsPayload} payload - The delete payload containing an array of CRMDeleteObject items.\n * @returns {Promise<any>} - Promise resolving with the result of the delete operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // iOS only method to delete CRM objects.\n * api.crmSmartDeleteObjects({\n * objects: [\n * {\n * table_name: 'Account',\n * ids: ['001xx000003DGbQAAW', '001xx000003DGbRABW']\n * },\n * {\n * table_name: 'Contact',\n * ids: ['003xx000004TmiQAAS']\n * }\n * ]\n * })\n */\nexport function crmSmartDeleteObjects(payload: CRMSmartDeleteObjectsPayload): Promise<any> {\n if (!payload || !payload.objects || !Array.isArray(payload.objects)) {\n return Promise.reject(new Error('Payload must contain an array of objects'))\n }\n\n if (payload.objects.length === 0) {\n return Promise.reject(new Error('Objects array cannot be empty'))\n }\n\n for (const obj of payload.objects) {\n if (!obj) {\n return Promise.reject(new Error('Objects array cannot contain null or undefined elements'))\n }\n\n if (!obj.table_name || typeof obj.table_name !== 'string' || obj.table_name.trim() === '') {\n return Promise.reject(new Error('Each object must have a valid non-empty table_name'))\n }\n\n if (!obj.ids || !Array.isArray(obj.ids) || obj.ids.length === 0) {\n return Promise.reject(new Error(`Object for table ${obj.table_name} must have a non-empty ids array`))\n }\n\n // Validate that ids array contains only non-empty strings\n for (let i = 0; i < obj.ids.length; i++) {\n const id = obj.ids[i]\n if (!id || typeof id !== 'string' || id.trim() === '') {\n return Promise.reject(\n new Error(\n `Object for table ${obj.table_name} contains invalid id at index ${i}. All IDs must be non-empty strings.`,\n ),\n )\n }\n }\n }\n\n console.log('[crmSmartDeleteObjects] Request payload:', JSON.stringify(payload, null, 2))\n\n return highLevelApi.API.request('crm_smart_delete_objects', payload)\n .then((result) => {\n console.log('[crmSmartDeleteObjects] Success:', result)\n return result\n })\n .catch((error) => {\n console.error('[crmSmartDeleteObjects] Error:', error)\n throw error\n })\n}\n\n/**\n * Creates new records in CRM (Web only).\n * Uses Salesforce REST API to create records.\n *\n * @param {CRMCreatePayload} payload - The create payload containing sobject type and records.\n * @returns {Promise<any>} - Promise resolving with the result of the create operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to create CRM records.\n * api.crmCreate({\n * sobject: 'Order__c',\n * records: [\n * { Account__c: '001xx000003DGbQAAW', Order_Date__c: '2024-01-15' },\n * { Account__c: '001xx000003DGbRABW', Order_Date__c: '2024-01-16' }\n * ]\n * })\n */\nexport function crmCreate(payload: CRMCreatePayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n if (!payload.records || !Array.isArray(payload.records) || payload.records.length === 0) {\n return Promise.reject(new Error('records is required and must be a non-empty array'))\n }\n\n for (let i = 0; i < payload.records.length; i++) {\n const record = payload.records[i]\n if (!record || typeof record !== 'object' || Array.isArray(record)) {\n return Promise.reject(\n new Error(`records contains invalid element at index ${i}. All records must be valid objects.`),\n )\n }\n }\n\n return highLevelApi.API.request('crm_create', payload)\n}\n\n/**\n * Upserts records in CRM (Web only).\n * Uses Salesforce REST API to insert or update records based on external ID.\n * If a record with matching external ID exists, it will be updated; otherwise, a new record is created.\n *\n * @param {CRMUpsertPayload} payload - The upsert payload containing sobject type, records, and external ID field.\n * @returns {Promise<any>} - Promise resolving with the result of the upsert operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to upsert CRM records.\n * api.crmUpsert({\n * sobject: 'Order__c',\n * records: [\n * { External_Id__c: 'ORD-001', Account__c: '001xx000003DGbQAAW', Status__c: 'Submitted' },\n * { External_Id__c: 'ORD-002', Account__c: '001xx000003DGbRABW', Status__c: 'Draft' }\n * ],\n * external_id_field: 'External_Id__c'\n * })\n */\nexport function crmUpsert(payload: CRMUpsertPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n if (!payload.records || !Array.isArray(payload.records) || payload.records.length === 0) {\n return Promise.reject(new Error('records is required and must be a non-empty array'))\n }\n\n if (\n !payload.external_id_field ||\n typeof payload.external_id_field !== 'string' ||\n payload.external_id_field.trim() === ''\n ) {\n return Promise.reject(new Error('external_id_field is required and must be a non-empty string'))\n }\n\n for (let i = 0; i < payload.records.length; i++) {\n const record = payload.records[i]\n if (!record || typeof record !== 'object' || Array.isArray(record)) {\n return Promise.reject(\n new Error(`records contains invalid element at index ${i}. All records must be valid objects.`),\n )\n }\n }\n\n return highLevelApi.API.request('crm_upsert', payload)\n}\n\n/**\n * Retrieves metadata/describe for a CRM object (Web only).\n * Uses Salesforce REST API to fetch object metadata including fields and picklist values.\n *\n * @param {CRMDescribePayload} payload - The describe payload containing the sobject name.\n * @returns {Promise<any>} - Promise resolving with the object metadata including fields and picklist values.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to get CRM object metadata.\n * api.crmDescribe({ sobject: 'Account' })\n * .then(metadata => {\n * // Access fields\n * console.log(metadata.fields)\n * // Access picklist values for a specific field\n * const industryField = metadata.fields.find(f => f.name === 'Industry')\n * console.log(industryField.picklistValues)\n * })\n */\nexport function crmDescribe(payload: CRMDescribePayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_describe', payload)\n}\n\n/**\n * Retrieves layout information for a CRM object (Web only).\n * Uses Salesforce REST API to fetch object layout including sections, fields arrangement, and form factors.\n *\n * @param {CRMLayoutPayload} payload - The layout payload containing the sobject name and optional layout parameters.\n * @returns {Promise<any>} - Promise resolving with the object layout information.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to get CRM object layout.\n * api.crmLayout({ sobject: 'Account' })\n * .then(layout => {\n * // Access layout sections\n * console.log(layout.editLayoutSections)\n * })\n *\n * @example\n * // Get layout with specific form factor, mode, and record type.\n * api.crmLayout({\n * sobject: 'Account',\n * form_factor: 'Large',\n * mode: 'Edit',\n * record_type_id: '012xx0000004ABC'\n * })\n */\nexport function crmLayout(payload: CRMLayoutPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_layout', payload)\n}\n","import type {\n File,\n Folder,\n FolderRetrieve,\n FolderCreateRequest,\n FolderUpdateRequest,\n PaginatedFolderList,\n} from '@openapi'\nimport type { FolderListRequest } from '@sdk/payload.types'\n\n/**\n * Retrieves a list of folders.\n * @param payload - The payload containing the search, ordering, filters, fields, name, page, and page_size.\n * @returns A promise that resolves to the list of folders.\n */\nexport function getFolders(payload: FolderListRequest): Promise<PaginatedFolderList> {\n return this.API.request('get_folders', payload)\n}\n\n/**\n * Retrieves a folder by its ID.\n * @param payload - An object containing the folder ID.\n * @param payload.id - The ID of the folder to retrieve. Defaults to 'root'.\n * @returns A promise that resolves to the retrieved folder.\n */\nexport function getFolder(payload: { id: FolderRetrieve['id'] } = { id: 'root' }): Promise<FolderRetrieve> {\n return this.API.request('get_folder', payload)\n}\n\n/**\n * Creates a new folder.\n * @param payload - The folder creation request payload, excluding the instance_id.\n * @returns A promise that resolves to the created folder.\n */\nexport function createFolder(payload: Omit<FolderCreateRequest, 'instance_id'>): Promise<FolderRetrieve> {\n return this.API.request('create_folder', payload)\n}\n\ntype UpdateFolderPayload = FolderUpdateRequest & { id: Folder['id'] }\n\n/**\n * Updates an existing folder.\n * @param payload - The folder update payload, including the folder ID and update data.\n * @returns A promise that resolves to the updated folder.\n */\nexport function updateFolder(payload: UpdateFolderPayload): Promise<FolderRetrieve> {\n return this.API.request('update_folder', payload)\n}\n\n/**\n * Deletes a folder.\n * @param payload - An object containing the ID of the folder to delete.\n * @param payload.folder_id - The ID of the folder to delete.\n * @returns A promise that resolves when the folder is deleted.\n */\nexport function deleteFolder(payload: { folder_id: FolderRetrieve['id'] }): Promise<void> {\n return this.API.request('delete_folder', payload)\n}\n\n/**\n * Moves items (files or folders) to a target folder.\n * @param payload - The payload containing the target folder ID and items to move.\n * @param payload.target_folder_id - The ID of the target folder.\n * @param payload.items - An array of items to move, each with an ID and type.\n * @returns A promise that resolves to the updated target folder.\n */\nexport function moveFolderItems(payload: {\n target_folder_id: Folder['id']\n items: { id: File['id'] | Folder['id']; type: 'folder' | 'file' }[]\n}): Promise<FolderRetrieve> {\n return this.API.request('move_folder_items', payload)\n}\n","import type { CoreFolderContentsRetrieve, CoreFolderEntityType, CoreFolderRetrieve } from '@lib/types/folder'\n\nexport function getCoreFolders(payload: {\n instance_id: string\n entity: CoreFolderEntityType\n parent_id?: string | null\n}): Promise<CoreFolderContentsRetrieve> {\n return this.API.request('get_core_folders', payload)\n}\n\nexport function patchCoreFolder(id: string, payload: Partial<CoreFolderRetrieve>): Promise<CoreFolderContentsRetrieve> {\n return this.API.request('patch_core_folder', {\n id,\n payload,\n })\n}\n","import { highLevelApi } from '@sdk/main'\nimport type { NotificationPayload } from '@sdk/payload.types'\n\nexport function notify(payload: NotificationPayload): Promise<void> {\n if (!payload.type) {\n payload.type = 'native'\n }\n\n return highLevelApi.API.request('notify', payload)\n}\n","import { highLevelApi } from '@sdk/main'\n\nexport function track(payload: { event_name: string; payload: any }) {\n return highLevelApi.API.request('track', payload)\n}\n","import type { PaginatedMetadataTemplateList } from '@openapi'\nimport type { GetInstanceMetadataTemplatesPayload } from '@sdk/payload.types'\n\nexport function getInstanceMetadataTemplates(\n payload?: GetInstanceMetadataTemplatesPayload,\n): Promise<PaginatedMetadataTemplateList> {\n return this.API.request('get_instance_metadata_templates', payload)\n}\n","/**\n * Dispatches iOS only sync method for non-files.\n *\n * @example\n * // iOS only method to sync non-files from the server.\n * api.triggerNonFilesSync()\n */\nexport function triggerNonFilesSync(): Promise<void> {\n return this.API.request('trigger_non_files_sync')\n}\n","import { highLevelApi } from '@sdk/main'\n\nimport type { SubmitUserFeedbackPayload } from '@sdk/payload.types'\n\n/**\n * Submit user feedback\n */\nexport function submitUserFeedback(payload: SubmitUserFeedbackPayload) {\n return highLevelApi.API.request('submit_user_feedback', payload)\n}\n","import type { OpenWebViewAlwaysOnTop, ShowSyncboxRequestPayload } from '@sdk/payload.types'\nimport { highLevelApi } from '@sdk/main'\n\nexport function close() {\n return highLevelApi.API.request('close') //`this` reference is lost on a new WebView\n}\n\nexport function openWebViewAlwaysOnTop(payload: OpenWebViewAlwaysOnTop): Promise<void> {\n return this.API.request('open_web_view_always_on_top', payload)\n}\n\nexport function showSyncbox(payload: ShowSyncboxRequestPayload): Promise<void> {\n return this.API.request('show_syncbox', payload)\n}\n","import type { SharePayload, ShareResponse, ShowPeerSessionRequestPayload } from '@sdk/payload.types'\n\n/**\n * Dispatch iOS sharing dialog.\n *\n * @example\n * api.share({text: \"example text\", subject: \"example subject\"})\n */\nexport async function share(payload: SharePayload): Promise<ShareResponse> {\n return this.API.request('share', payload)\n}\n\n/**\n * Show peer session dialog with button coordinates, for local peer sharing feature.\n *\n * @example\n * api.showPeerSession({x: 100, y: 200})\n */\nexport async function showPeerSession(payload: ShowPeerSessionRequestPayload): Promise<void> {\n return this.API.request('show_peer_session', payload)\n}\n","import { type CanvasThemeRetrieve } from '@lib/types/canvasTheme'\nimport type { CanvasRetrieve } from '@openapi'\n\nexport function getThemes(payload: Partial<CanvasThemeRetrieve>): Promise<CanvasThemeRetrieve[]> {\n return this.API.request('get_themes', payload)\n}\n\nexport function assignCanvasTheme(payload: {\n canvas_id: CanvasRetrieve['id']\n theme_id: CanvasThemeRetrieve['id']\n}): Promise<{ canvas_id: CanvasRetrieve['id']; theme_id: CanvasThemeRetrieve['id'] }> {\n return this.API.request('assign_canvas_theme', payload)\n}\n","type EventMap = Record<string, any>\n\ntype EventKey<KeyMap extends EventMap> = string & keyof KeyMap\ntype EventReceiver<KeyMap> = (params: KeyMap) => void\n\nexport interface Emitter<KeyMap extends EventMap> {\n on<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void\n off<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void\n emit<Key extends EventKey<KeyMap>>(eventName: Key, params: KeyMap[Key]): void\n}\n\nexport class EventEmitter<KeyMap extends EventMap> implements Emitter<KeyMap> {\n listeners: {\n [Key in keyof EventMap]?: ((p: EventMap[Key]) => void)[]\n } = {}\n on<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void {\n this.listeners[eventName] = (this.listeners[eventName] ?? []).concat(fn)\n }\n off<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void {\n this.listeners[eventName] = (this.listeners[eventName] ?? []).filter((f) => f !== fn)\n }\n emit<Key extends EventKey<KeyMap>>(eventName: Key, data?: KeyMap[Key]): void {\n ;(this.listeners[eventName] ?? []).forEach((fn) => fn(data))\n }\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import type { Emitter } from './utils/eventEmitter'\nimport type { File, User, CanvasRetrieve, CanvasSection } from '@openapi'\nimport type { PitcherOrg } from '@lib/types/organization.types'\nimport type { PitcherInstance } from '@lib/types/instance.types'\nimport type { LaunchDarklyEnv } from '@lib/types/launchDarkly.types'\nimport type { CDP_EVENT_TYPE, CLIENT_TYPE } from '@lib/constants/cdp.const'\nimport type { PeerConnectivityEvent } from '@sdk/peer-connectivity'\n\nexport const PITCHER_EVENT = 'PITCHER_EVENT' as const\nexport enum PitcherMessageType {\n REQUEST = 'PITCHER_REQUEST',\n RESPONSE = 'PITCHER_RESPONSE',\n}\nexport enum PitcherResponseStatus {\n OK = 'ok',\n ERROR = 'error',\n}\n\nexport interface PitcherMessage {\n type: typeof PITCHER_EVENT\n request: {\n id: string\n type: string\n body?: Record<string, any>\n }\n}\n\ntype FetchMode =\n | 'postmessage' // the default mode where each platform is responsible to respond\n | 'prefer-online' // in this mode, the api will try to use the REST API directly if a handler is available in the onlineRestApiHandlers.ts file\n\nexport interface ApiOptions {\n errorLogger?: (p: any) => string | void\n logLevel?: 'off' | 'info' | 'debug'\n casing?: 'camel' | 'snake'\n fetchMode?: FetchMode\n}\n\nexport interface OrgConfigResponse {\n auth0: {\n domain: string\n issuer: string\n audience: string\n auth0_domain: string\n web_client_id: string\n region: 'us' | 'eu' | 'au'\n }\n segment: {\n web_write_key: string\n }\n region: 'us' | 'eu' | 'au'\n auth0_tenant_region: 'us' | 'eu' | 'au'\n datadog_region: 'us' | 'eu'\n segment_region: 'us' | 'eu'\n sentry_region: 'us' | 'eu'\n}\n\nexport interface PitcherEnv {\n mode: 'WEB' | 'IOS' | 'WINDOWS' | 'ANDROID'\n pitcher: {\n token_claims: Record<string, any>\n organization: PitcherOrg\n org_config?: OrgConfigResponse\n instance: PitcherInstance\n user: User\n access_token: string\n id_token: string\n impersonated_by?: string\n }\n launch_darkly?: LaunchDarklyEnv\n permissions?: string[]\n client_type?: (typeof CLIENT_TYPE)[keyof typeof CLIENT_TYPE]\n crm_shape?: Record<string, any>\n state?: {\n active_file?: {\n id: File['id']\n }\n active_section_id?: CanvasSection['id']\n active_canvas_id?: CanvasRetrieve['id']\n canvas_correlation_id?: string\n }\n device_locale?: string\n sync_badge_value?: number\n}\n\nexport interface PitcherAPI extends Emitter<ApiEventMap> {\n request(type: string, body: any, callback: () => any): Promise<PitcherResponse>\n}\n\nexport interface PitcherInterface extends Emitter<PitcherEventMap> {\n API: PitcherAPI\n}\n\nexport interface PitcherResponse {\n type: PitcherMessageType.RESPONSE\n request: {\n id: string\n type: string\n body?: Record<string, any>\n }\n response: {\n status: PitcherResponseStatus\n body?: Record<string, any>\n }\n}\n\nexport interface OpenCanvasPitcherEvent {\n account_id?: string\n account_name?: string\n canvas_id?: string\n edit_mode?: 'true' | 'false'\n}\n\nexport interface CreateAndOpenCanvasEvent {\n account_id?: string\n}\n\nexport interface StartCallPitcherEvent {\n account?: { id: string; name: string }\n contact_ids?: string[]\n /**\n * CRM meeting/event id. When provided, the host fetches the meeting through\n * its own CRM provider so the meeting bar shows the proper subject/time\n * instead of \"Unscheduled\".\n */\n meeting_id?: string\n canvas_id?: string\n edit_mode?: 'true' | 'false'\n post_action?: string\n post_action_path?: string\n}\n\n/**\n * Preselects an account in the meeting bar without starting a call.\n * Used by the SFDC passthrough Prepare flow.\n */\nexport interface SelectAccountPitcherEvent {\n account?: { id: string; name?: string }\n}\n\nexport interface RouteChangedPitcherEvent {\n route_name: string\n route_path: string\n}\n\nexport enum PitcherEventName {\n ENV_CHANGED = 'env_changed',\n ACCESS_TOKEN_RENEWED = 'access_token_renewed',\n PHOTOS_CAPTURED = 'photos_captured',\n GLOBAL_PHOTO_CAPTURED = 'global_photo_captured',\n FILE_DOWNLOADED = 'file_downloaded',\n FILE_UPLOAD_PROGRESS = 'file_upload_progress',\n UPDATE_LOCATION = 'update_location',\n CANVAS_UPDATED = 'canvas_updated',\n CANVAS_UPDATED_SUCCESS = 'canvas_updated_success',\n FILE_CLOSED = 'file_closed',\n FILE_OPENED = 'file_opened',\n APP_BACKGROUNDED = 'app_backgrounded',\n APP_FOREGROUNDED = 'app_foregrounded',\n NON_FILES_SYNC_FINISHED = 'non_files_sync_finished',\n CONTENT_LIST_REFRESH_REQUESTED = 'content_list_refresh_requested',\n NETWORK_CONNECTION_ESTABLISHED = 'network_connection_established',\n NETWORK_CONNECTION_LOST = 'network_connection_lost',\n ENTERED_FULLSCREEN = 'entered_fullscreen',\n EXITED_FULLSCREEN = 'exited_fullscreen',\n SUBMIT_POSTCALL_CLICKED = 'submit_postcall_clicked',\n ANALYTICS_CAPTURED = 'analytics_captured',\n OPEN_FOLDER_REQUESTED = 'open_folder_requested',\n CANVAS_PAGE_NEXT_REQUESTED = 'canvas_page_next_requested',\n CANVAS_PAGE_PREVIOUS_REQUESTED = 'canvas_page_previous_requested',\n CANVAS_OPEN_REQUESTED = 'canvas_open_requested',\n CANVAS_CLOSE_REQUESTED = 'canvas_close_requested',\n ROUTE_CHANGE_REQUESTED = 'route_change_requested',\n ITEM_SHAREBOX_STATUS_REQUESTED = 'item_sharebox_status_requested',\n ITEM_SHAREBOX_STATUS_UPDATED = 'item_sharebox_status_updated',\n ITEM_SHAREBOX_ADD_REQUESTED = 'item_sharebox_add_requested',\n ITEM_SHAREBOX_ADD_COMPLETED = 'item_sharebox_add_completed',\n SYNC_BADGE_VALUE_REPORTED = 'sync_badge_value_reported',\n SYNC_BOX_RESOLVE_ERROR_TAPPED = 'sync_box_resolve_error_tapped',\n PEER_CONNECTIVITY_EVENT = 'peer_connectivity_event',\n}\n\nexport enum PitcherBroadcastedEventName {\n UI_SHOW_MODAL = 'ui:show-modal',\n UI_HIDE_MODAL = 'ui:hide-modal',\n FILE_DOWNLOAD = 'file:download',\n CANVAS_NEXT_BUTTON_CLICKED = 'canvas_next_button_clicked', // NOTE: This event is separate from `CANVAS_PAGE_NEXT_REQUESTED`\n CANVAS_PREVIOUS_BUTTON_CLICKED = 'canvas_previous_button_clicked', // NOTE: This event is separate from `CANVAS_PAGE_PREVIOUS_REQUESTED`\n CANVAS_OPENED = 'canvas_opened',\n CANVAS_CLOSED = 'canvas_closed',\n ROUTE_CHANGED = 'route_changed',\n}\n\nexport enum PitcherExternalEventName {\n CREATE_AND_OPEN_CANVAS = 'create_and_open_canvas',\n OPEN_CANVAS = 'open_canvas',\n START_CALL = 'start_call',\n SELECT_ACCOUNT = 'select_account',\n}\n\n/**\n * Base interface for update location actions.\n */\ninterface UpdateLocation {\n /**\n * The action to be performed.\n */\n action: string\n}\n\n/**\n * Represents a route in the location.\n */\nexport interface LocationRoute {\n /**\n * The path of the route.\n */\n path: string\n /**\n * The query parameters of the route.\n */\n query: Record<string, any>\n /**\n * Indicates if the route is being restored.\n */\n is_restoring: boolean\n /**\n * Indicates if the route is mounted.\n */\n is_mounted: boolean\n /**\n * Indicates when application is still registered but not used right now.\n */\n is_inactive: boolean\n}\n\n/**\n * A record of location routes.\n */\nexport type LocationRoutes = Record<string, LocationRoute>\n\n/**\n * Interface for the 'register' update location action.\n */\nexport interface UpdateLocationOnRegister extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'register'\n /**\n * The child application identifier.\n */\n child_app: string\n /**\n * The parent application identifier (optional).\n */\n parent_app?: string\n /**\n * The path of the route (optional).\n */\n path?: string\n /**\n * The query parameters of the route (optional).\n */\n query?: Record<string, any>\n}\n\n/**\n * Interface for the 'unregister' update location action.\n */\nexport interface UpdateLocationOnUnregister extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'unregister'\n /**\n * The application identifier.\n */\n app: string\n}\n\n/**\n * Interface for the 'update' update location action.\n */\nexport interface UpdateLocationOnUpdate extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'update'\n /**\n * The routes to be updated.\n */\n routes: Record<string, Omit<LocationRoute, 'is_restoring' | 'is_mounted' | 'is_inactive'>>\n}\n\n/**\n * Interface for the 'mounted' update location action.\n */\nexport interface UpdateLocationOnMounted extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'mounted'\n /**\n * The application identifier.\n */\n app: string\n}\n\n/**\n * Interface for the 'restore' update location action.\n */\nexport interface UpdateLocationOnRestore extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'restore'\n /**\n * The routes to be restored.\n */\n routes: Record<string, Omit<LocationRoute, 'is_mounted'>>\n}\n\n/**\n * Interface for the 'restore_completed' update location action.\n */\nexport interface UpdateLocationOnRestoreCompleted extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'restore_completed'\n /**\n * The application identifier.\n */\n app: string\n /**\n * The path of the route.\n */\n path: string\n /**\n * The query parameters of the route.\n */\n query: Record<string, any>\n}\n\n/**\n * Interface for the 'get_routes_request' update location action.\n */\nexport interface UpdateLocationOnGetRoutesRequest extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'get_routes_request'\n /**\n * The application identifier.\n */\n app: string\n}\n\n/**\n * Interface for the 'get_routes_response' update location action.\n */\nexport interface UpdateLocationOnGetRoutesResponse extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'get_routes_response'\n /**\n * The application identifier.\n */\n app: string\n /**\n * The routes in the response.\n */\n routes: LocationRoutes\n}\n\n/**\n * Union type for all update location pitcher events.\n */\nexport type UpdateLocationPitcherEvent =\n | UpdateLocationOnUnregister\n | UpdateLocationOnRestore\n | UpdateLocationOnUpdate\n | UpdateLocationOnRegister\n | UpdateLocationOnRestoreCompleted\n | UpdateLocationOnMounted\n | UpdateLocationOnGetRoutesRequest\n | UpdateLocationOnGetRoutesResponse\n\nexport interface PitcherEventMap {\n [PitcherEventName.ENV_CHANGED]: PitcherEnv\n /**\n * The shell renewed the Pitcher access token. Apps that cached `env.pitcher.access_token`\n * (instead of reading it lazily via `getEnv()`) should replace their copy with this one.\n *\n * @see web-only for now — Impact iOS does not emit this event yet; keep a pull fallback\n * (`getEnv()` / `refreshAccessToken()`) for cross-platform apps.\n */\n [PitcherEventName.ACCESS_TOKEN_RENEWED]: { access_token: string }\n /**\n * @see iOS-only\n */\n [PitcherEventName.PHOTOS_CAPTURED]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.GLOBAL_PHOTO_CAPTURED]: { url: string; section_id?: string }\n /**\n * @see iOS-only\n */\n [PitcherEventName.NON_FILES_SYNC_FINISHED]: { user_triggered: boolean }\n /**\n * @see iOS-only\n */\n [PitcherEventName.CONTENT_LIST_REFRESH_REQUESTED]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.FILE_DOWNLOADED]: File\n /**\n * @see iOS-only\n */\n [PitcherEventName.NETWORK_CONNECTION_ESTABLISHED]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.NETWORK_CONNECTION_LOST]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.FILE_UPLOAD_PROGRESS]: { upload_uid: string; progress: number }\n /**\n * @see iOS-only\n */\n [PitcherEventName.ANALYTICS_CAPTURED]: {\n type: (typeof CDP_EVENT_TYPE)[keyof typeof CDP_EVENT_TYPE]\n payload: any\n }\n /**\n * @see WEB-only\n */\n [PitcherEventName.ENTERED_FULLSCREEN]: void\n /**\n * @see WEB-only\n */\n [PitcherEventName.EXITED_FULLSCREEN]: void\n\n [PitcherEventName.CANVAS_UPDATED]: Record<string, any>\n [PitcherEventName.CANVAS_UPDATED_SUCCESS]: Partial<CanvasRetrieve>\n [PitcherEventName.UPDATE_LOCATION]: UpdateLocationPitcherEvent\n [PitcherEventName.FILE_CLOSED]: { file_id?: string; view_id?: string }\n [PitcherEventName.FILE_OPENED]: { file_id?: string; view_id?: string }\n [PitcherEventName.SUBMIT_POSTCALL_CLICKED]: void\n [PitcherEventName.CANVAS_PAGE_NEXT_REQUESTED]: { canvas_id?: string; current_page_index?: number }\n [PitcherEventName.CANVAS_PAGE_PREVIOUS_REQUESTED]: { canvas_id?: string; current_page_index?: number }\n [PitcherEventName.CANVAS_OPEN_REQUESTED]: { canvas_id?: string }\n [PitcherEventName.CANVAS_CLOSE_REQUESTED]: { canvas_id?: string }\n /**\n * @see iOS-only\n */\n [PitcherEventName.ROUTE_CHANGE_REQUESTED]: RouteChangedPitcherEvent\n [PitcherEventName.ITEM_SHAREBOX_STATUS_REQUESTED]: {\n item_id: string\n }\n [PitcherEventName.ITEM_SHAREBOX_STATUS_UPDATED]: {\n item_id: string\n is_in_sharebox: boolean\n }\n [PitcherEventName.ITEM_SHAREBOX_ADD_REQUESTED]: {\n item_id: string\n }\n [PitcherEventName.ITEM_SHAREBOX_ADD_COMPLETED]: {\n item_id: string\n success: boolean\n is_in_sharebox: boolean\n error?: string\n }\n /**\n * @see iOS-only\n */\n [PitcherEventName.SYNC_BADGE_VALUE_REPORTED]: {\n count: number\n }\n /**\n * @see iOS-only\n * Fired when user taps \"Fix\" on a failed SFDC sync error in the Syncbox.\n * The id may be a Salesforce ID, external ID, or locally-generated temp ID.\n */\n [PitcherEventName.SYNC_BOX_RESOLVE_ERROR_TAPPED]: {\n /** Record ID that failed to sync (SF ID, external ID, or temp ID like PIT_...) */\n id: string\n /** SFDC object/soup name (e.g. \"Event\", \"Call2_vod__c\") */\n table_name: string\n /** Salesforce sync error message */\n last_error: string\n }\n [PitcherEventName.PEER_CONNECTIVITY_EVENT]: PeerConnectivityEvent\n // broadcasted requests\n [PitcherBroadcastedEventName.UI_SHOW_MODAL]: void\n [PitcherBroadcastedEventName.UI_HIDE_MODAL]: void\n [PitcherBroadcastedEventName.FILE_DOWNLOAD]: { body: File['id'] }\n [PitcherBroadcastedEventName.CANVAS_NEXT_BUTTON_CLICKED]: { body: { current_page_index: number; canvas_id?: string } }\n [PitcherBroadcastedEventName.CANVAS_PREVIOUS_BUTTON_CLICKED]: {\n body: { current_page_index: number; canvas_id?: string }\n }\n [PitcherBroadcastedEventName.CANVAS_OPENED]: {\n body: { canvas_id: string }\n }\n [PitcherBroadcastedEventName.CANVAS_CLOSED]: {\n body: { canvas_id: string }\n }\n [PitcherBroadcastedEventName.ROUTE_CHANGED]: {\n body: { route_name: string; route_path: string }\n }\n // external link events\n [PitcherExternalEventName.OPEN_CANVAS]: OpenCanvasPitcherEvent\n [PitcherExternalEventName.START_CALL]: StartCallPitcherEvent\n [PitcherExternalEventName.CREATE_AND_OPEN_CANVAS]: CreateAndOpenCanvasEvent\n [PitcherExternalEventName.SELECT_ACCOUNT]: SelectAccountPitcherEvent\n}\n\nexport interface PitcherEvent {\n type: keyof PitcherEventMap\n body: PitcherEventMap[keyof PitcherEventMap]\n}\n\nexport interface ApiEventMap {\n event: PitcherEvent\n}\n","export class AssertionError extends Error {}\n\nexport function assert(exp: boolean, message: string) {\n if (!exp) {\n throw new AssertionError(message)\n }\n}\n","import { snakeCase, camelCase, startCase } from 'lodash-es'\n\nconst defaultSkipKeys = [\n 'id__in',\n 'tags__in',\n 'tags__not_in',\n 'template__id',\n 'template__id__in',\n 'modified_at__gtr',\n 'created_at__gtr',\n 'end_at__lt',\n 'start_at__gt',\n 'account__id',\n 'end_at__gt',\n 'end_at__range',\n 'start_at__lt',\n 'start_at__range',\n 'external_objects__connection_id',\n 'external_objects__content_type',\n 'external_objects__external_content_type',\n 'external_objects__external_object_id',\n 'owned_by__name__icontains',\n 'template__name__icontains',\n]\n\nconst defaultSkipObjectKeys = ['context', 'overrides', 'filters', 'metadata', 'style', 'hidden']\n\nconst shouldSkipObjectKey = (key: string, skipObjectKeys: string[]): boolean => {\n return skipObjectKeys.includes(key) || key.endsWith('style')\n}\n\nexport const camelCaseKeys = <T>(obj: T, skipKeys = defaultSkipKeys, skipObjectKeys = defaultSkipObjectKeys): T => {\n if (Array.isArray(obj)) {\n return obj.map((v) => camelCaseKeys(v, skipKeys, skipObjectKeys)) as T\n } else if (obj != null && obj.constructor === Object) {\n return Object.keys(obj).reduce((result, key) => {\n const skip = shouldSkipObjectKey(key, skipObjectKeys)\n const newKey = skipKeys.includes(key) || skip ? key : camelCase(key)\n const value = skip ? (obj as any)[key] : camelCaseKeys((obj as any)[key], skipKeys, skipObjectKeys)\n return { ...result, [newKey]: value }\n }, {}) as T\n }\n\n return obj\n}\n\nexport const snakeCaseKeys = <T>(obj: T, skipKeys = defaultSkipKeys, skipObjectKeys = defaultSkipObjectKeys): T => {\n if (Array.isArray(obj)) {\n return obj.map((v) => snakeCaseKeys(v, skipKeys, skipObjectKeys)) as T\n } else if (obj != null && obj.constructor === Object) {\n return Object.keys(obj).reduce((result, key) => {\n const skip = shouldSkipObjectKey(key, skipObjectKeys)\n const newKey = skipKeys.includes(key) || skip ? key : snakeCase(key)\n const value = skip ? (obj as any)[key] : snakeCaseKeys((obj as any)[key], skipKeys, skipObjectKeys)\n return { ...result, [newKey]: value }\n }, {}) as T\n }\n\n return obj\n}\n\nexport const pascalCaseKeys = <T>(obj: T, skipKeys = defaultSkipKeys, skipObjectKeys = defaultSkipObjectKeys): T => {\n if (Array.isArray(obj)) {\n return obj.map((v) => pascalCaseKeys(v, skipKeys, skipObjectKeys)) as T\n } else if (obj != null && obj.constructor === Object) {\n return Object.keys(obj).reduce((result, key) => {\n const skip = shouldSkipObjectKey(key, skipObjectKeys)\n const newKey = skipKeys.includes(key) || skip ? key : titleCase(key).replace(/ /g, '')\n const value = skip ? (obj as any)[key] : pascalCaseKeys((obj as any)[key], skipKeys, skipObjectKeys)\n return { ...result, [newKey]: value }\n }, {}) as T\n }\n\n return obj\n}\n\nexport const titleCase = (s?: string) => startCase(camelCase(s))\n","export function truncateObject(obj: any, currentDepth: number = 1, lengthTrigger = 20): any {\n if (typeof obj !== 'object' || obj === null) {\n return obj\n }\n\n if (Array.isArray(obj)) {\n if (obj.length > lengthTrigger && currentDepth <= 0) {\n return `[Truncated - ${obj.length} length array]`\n }\n return obj.map((item) => truncateObject(item, currentDepth - 1, lengthTrigger))\n }\n\n const keys = Object.keys(obj)\n if (keys.length > lengthTrigger && currentDepth <= 0) {\n return `{Truncated - ${keys.length} properties obj}`\n }\n\n return keys.reduce(\n (acc, key) => {\n acc[key] = truncateObject(obj[key], currentDepth - 1, lengthTrigger)\n return acc\n },\n {} as Record<string, any>,\n )\n}\n","export function isOriginValid(\n event: MessageEvent,\n allowedOrigins: string[] = [],\n isDev: boolean = ['development', 'test'].includes(process.env.NODE_ENV ?? ''),\n): boolean {\n if (isDev) {\n // In development mode, always return true to bypass origin checks\n return true\n }\n\n if (!event || !event.origin) {\n return false\n }\n\n // If allowedOrigins is empty, use the current window's origin\n const validOrigins = [...allowedOrigins, window.location.origin, 'pitcher.com']\n\n const isValid = validOrigins.includes(event.origin) || validOrigins.some((origin) => event.origin.endsWith(origin))\n\n if (!isValid) {\n console.warn(\n `The message origin ${event.origin} is not the same as the current origin ${window.location.origin}. Bailing...`,\n )\n }\n\n return isValid\n}\n","import { setEnv } from '@sdk/api/onlineRestApiHandlers'\nimport { highLevelApi } from '@sdk/main'\n\ntype FetchOptions = {\n method?: string\n headers?: Record<string, string>\n body?: string\n credentials?: RequestCredentials\n params?: Record<string, any>\n}\n\nconst MAX_RETRIES = 5\nconst BASE_DELAY = 1000 // 1 second\nlet refreshPromise: Promise<string> | null = null\n\nasync function refreshToken(): Promise<string> {\n if (refreshPromise) return refreshPromise\n\n console.info('Refreshing access token...')\n refreshPromise = (async () => {\n try {\n return await highLevelApi.refreshAccessToken().then((accessTokenResponse: { access_token: string }) =>\n highLevelApi.getEnv().then((env) => {\n setEnv(env)\n return accessTokenResponse.access_token\n }),\n )\n } catch (error) {\n console.error('Failed to refresh token:', error)\n throw error\n } finally {\n refreshPromise = null\n }\n })()\n\n return refreshPromise\n}\n\n// Custom parameter serializer function with 'repeat' format for arrays\nfunction paramsSerializer(params: Record<string, any>): string {\n const searchParams = new URLSearchParams()\n\n function addParam(key: string, value: any) {\n if (value === undefined || value === null) {\n return\n }\n if (Array.isArray(value)) {\n value.forEach((val) => addParam(key, val))\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n for (const subKey in value) {\n addParam(`${key}[${subKey}]`, value[subKey])\n }\n } else {\n searchParams.append(key, value)\n }\n }\n\n for (const key in params) {\n addParam(key, params[key])\n }\n\n return searchParams.toString()\n}\n\nasync function fetchWithRetry(url: string, options: FetchOptions, remainingRetries = MAX_RETRIES): Promise<any> {\n try {\n const response = await fetch(url, options)\n if (!response.ok) {\n if (response.status === 401) {\n const newToken = await refreshToken()\n options.headers = options.headers || {}\n options.headers.Authorization = `Bearer ${newToken}`\n return fetchWithRetry(url, options, remainingRetries)\n } else if (response.status >= 500 && response.status < 600 && remainingRetries > 0) {\n // Handle server errors with retries\n const delay = BASE_DELAY * Math.pow(2, MAX_RETRIES - remainingRetries)\n await new Promise((resolve) => setTimeout(resolve, delay))\n return fetchWithRetry(url, options, remainingRetries - 1)\n } else {\n // Handle non-2xx and non-5xx status codes without retry\n const errorData = await response.json()\n const error = new Error(\n `HTTP error! status: ${response.status}, message: ${errorData.message || response.statusText}`,\n )\n ;(error as Error & { status?: number }).status = response.status\n throw error\n }\n }\n\n if (response.status === 204 || response.status === 205) {\n return\n }\n return response.json()\n } catch (error) {\n if (\n remainingRetries > 0 &&\n !(error instanceof TypeError) &&\n (error as Error & { status?: number }).status !== 404\n ) {\n // Handle network errors with retries, but not 404s\n const delay = BASE_DELAY * Math.pow(2, MAX_RETRIES - remainingRetries)\n await new Promise((resolve) => setTimeout(resolve, delay))\n return fetchWithRetry(url, options, remainingRetries - 1)\n }\n throw error\n }\n}\n\nexport function createHttpClient(origin: string, token: string) {\n const headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n }\n const apiPath = '/api/v1'\n const baseCommon = { credentials: 'include' as RequestCredentials }\n\n return {\n get: async (endpoint: string, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'GET',\n headers,\n })\n return data\n },\n post: async (endpoint: string, body?: object, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'POST',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n put: async (endpoint: string, body: object, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'PUT',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n delete: async (endpoint: string, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'DELETE',\n headers,\n })\n return data\n },\n patch: async (endpoint: string, body: object, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'PATCH',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n /** PATCH with a full absolute URL (bypasses /api/v1 prefix). */\n patchUrl: async (absoluteUrl: string, body: object, options: FetchOptions = {}) => {\n const data = await fetchWithRetry(absoluteUrl, {\n ...baseCommon,\n ...options,\n method: 'PATCH',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n }\n}\n","import { mapKeys, pickBy } from 'lodash-es'\nimport { parseISO, isValid, format } from 'date-fns'\nimport { METADATA_FILTER_DATE_FORMAT } from './filter.const'\n\nimport { deepToRaw } from '@lib/util/reactive'\n\nexport function normalizeFilterParams(params: Record<string, any>) {\n let normalizedParams = deepToRaw(params)\n\n // remove all 'system:xxxx' filterParams\n normalizedParams = pickBy(normalizedParams, (value, key) => {\n return !key.includes('system:')\n })\n\n normalizedParams = mapKeys(normalizedParams, (_, key) => {\n const isDateRange =\n Array.isArray(normalizedParams[key]) &&\n normalizedParams[key].length === 2 &&\n normalizedParams[key].every((date: string) => {\n const parsedDate = parseISO(date)\n return (\n typeof date === 'string' && isValid(parsedDate) && format(parsedDate, METADATA_FILTER_DATE_FORMAT) === date\n )\n })\n return `metadata__${key}${isDateRange ? '__range' : ''}`\n })\n\n return normalizedParams\n}\n\nexport function normalizeNetworkFilterParams(params?: Record<string, any> | null) {\n if (!params) return {}\n\n return Object.entries(params).reduce(\n (acc, [key, value]) => {\n acc[key] = key.endsWith('__range') && Array.isArray(value) ? value.join(',') : value\n\n return acc\n },\n {} as Record<string, any>,\n )\n}\n","import { pickBy, merge } from 'lodash-es'\n\nimport { createHttpClient } from '@sdk/utils/httpFetch'\nimport type { PitcherEnv } from '@sdk/interfaces'\nimport type { GetCanvasesParams } from '@lib/types/canvases'\nimport type { CanvasCreateRequest, CanvasRetrieve } from '@openapi'\nimport { normalizeNetworkFilterParams } from '@lib/components/filters/filter.util'\n\ntype ApiBaseUrlOverride = {\n api_base_url?: string\n}\n\nlet env: PitcherEnv\nlet http: ReturnType<typeof createHttpClient>\n\nfunction check() {\n if (!env) throw new Error('Missing env')\n if (!http) throw new Error('Missing http')\n}\n\nfunction pickNonNullish(data?: Record<string, any>) {\n return pickBy(data ?? {}, (v) => v !== undefined && v !== null)\n}\n\nexport const setEnv = (e: PitcherEnv) => {\n if (!e?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain) {\n console.warn('No custom domain found in token claims', e?.pitcher?.token_claims)\n typeof window !== 'undefined' &&\n window.Sentry?.captureMessage?.('No custom domain found in token claims', {\n extra: { env: e },\n level: 'warning',\n })\n }\n\n const newCustomDomain = e?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain\n const shouldRefreshHttpClient =\n e?.pitcher?.access_token !== env?.pitcher?.access_token ||\n (newCustomDomain &&\n newCustomDomain !== env?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain)\n\n env = merge({}, env, e)\n\n if (shouldRefreshHttpClient) {\n http = createHttpClient(\n env.pitcher.token_claims['https://pitcher.com/claims/urls'].custom_domain,\n env.pitcher.access_token,\n )\n }\n}\n\nexport const onlineRestApiHandlers: Record<string, any> = {\n get_canvases: async (\n params: GetCanvasesParams & { filters?: Record<string, any>; fields?: string } & ApiBaseUrlOverride,\n ) => {\n check()\n const { api_base_url, filters = {}, ...restParams } = params\n const res = await http.get('/canvases', {\n params: {\n instance_id: env.pitcher.instance.id,\n ...normalizeNetworkFilterParams(filters),\n ...pickNonNullish(restParams),\n },\n })\n\n return res\n },\n get_canvas: async (params: { id: CanvasRetrieve['id']; fields?: string; lazy_sections?: boolean }) => {\n check()\n const { id, ...restParams } = params\n const res = await http.get(`/canvases/${params.id}`, { params: restParams })\n return res\n },\n // Lazy section loading companion: batch-hydrate section bodies for a canvas\n // that was fetched as a shell (`?lazy_sections=true`). Hits the same Django\n // /api/v1 base as get_canvas. Returns { sections: CanvasSection[] }.\n get_canvas_sections_by_ids: async (params: {\n canvas_id: CanvasRetrieve['id']\n section_ids: string[]\n // Forwarded so hydration filters identically to the shell that advertised\n // the IDs (admin shells are fetched with exclude_drafts:false + expired/\n // pending on). Only sent when provided; the endpoint applies rep defaults\n // and role-gates expired/pending otherwise.\n exclude_drafts?: boolean\n include_expired_files?: boolean\n include_pending_files?: boolean\n }) => {\n check()\n const res = await http.post('/canvases/sections/by-ids', {\n canvas_id: params.canvas_id,\n section_ids: params.section_ids,\n ...(params.exclude_drafts !== undefined && { exclude_drafts: params.exclude_drafts }),\n ...(params.include_expired_files !== undefined && { include_expired_files: params.include_expired_files }),\n ...(params.include_pending_files !== undefined && { include_pending_files: params.include_pending_files }),\n })\n return res\n },\n create_canvas: async (params: CanvasCreateRequest) => {\n check()\n const res = await http.post('/canvases', { ...params, instance_id: env.pitcher.instance.id })\n return res\n },\n update_canvas: async (params: { id: CanvasRetrieve['id']; fields?: string } & Record<string, any>) => {\n check()\n const { id, fields, ...canvasData } = params\n const useCoreEndpoint = (env as any)?.launch_darkly?.enable_canvas_core_patch === true\n if (useCoreEndpoint) {\n const origin = env.pitcher.token_claims['https://pitcher.com/claims/urls'].custom_domain\n const fieldsQs = fields ? `?fields=${encodeURIComponent(fields)}` : ''\n const url = `${origin}/core/api/protected/v1/canvases/${id}${fieldsQs}`\n // Use http.patchUrl for Core path (bypasses /api/v1 prefix)\n const res = await http.patchUrl(url, canvasData)\n return res\n }\n const res = await http.patch(`/canvases/${id}`, { fields, ...canvasData })\n return res\n },\n delete_canvas: async (params: { id: CanvasRetrieve['id'] }) => {\n check()\n const res = await http.delete(`/canvases/${params.id}`)\n return res\n },\n share_canvas: async (params: { id: CanvasRetrieve['id'] }) => {\n check()\n let link\n\n try {\n link = await http.get(`/shared-links/canvas/${params.id}`)\n } catch (e) {\n if ((e as Error & { status?: number })?.status === 404) {\n link = await http.post('/shared-links', {\n canvas_id: params.id,\n })\n } else {\n throw e\n }\n }\n\n return link\n },\n get_canvas_recommended_files: async (params: {\n canvas_id: CanvasRetrieve['id']\n match?: ('tags' | 'metadata')[]\n }) => {\n check()\n const { canvas_id, ...restParams } = params\n const res = await http.get(`/canvases/${canvas_id}/recommended_files`, { params: restParams })\n return res\n },\n get_collaborations: async (params: Record<string, any>) => {\n check()\n const res = await http.get('/collaborations', { params: pickNonNullish(params) })\n return res\n },\n create_collaboration: async (params: Record<string, any>) => {\n check()\n const res = await http.post('/collaborations', params)\n return res\n },\n delete_collaboration: async (params: { collaboration_id: number | string }) => {\n check()\n const { collaboration_id } = params\n const res = await http.delete(`/collaborations/${collaboration_id}`)\n return res\n },\n get_instance_memberships: async (params: Record<string, any>) => {\n check()\n const res = await http.get('/instance-memberships', { params: pickNonNullish(params) })\n return res\n },\n get_content_distribution_groups: async (params: Record<string, any>) => {\n check()\n const res = await http.get('/content-distribution-groups', { params: pickNonNullish(params) })\n return res\n },\n}\n","type WindowType = Window & typeof globalThis\n\nexport function getTopPitcherWindow(current: WindowType = window): WindowType {\n try {\n if (current.location.protocol === 'file:') {\n return window.top as WindowType\n }\n if (\n current.parent !== current &&\n (current.parent.location.href.includes('pitcher.com') || current.parent.location.href.includes('localhost'))\n ) {\n return getTopPitcherWindow(current.parent as WindowType)\n }\n } catch (e) {\n // Cross-origin hit, stop here\n }\n return current\n}\n","import { v4 as uuid } from 'uuid'\nimport { cloneDeep } from 'lodash-es'\n\nimport type { ApiEventMap, PitcherAPI, PitcherEvent, PitcherResponse, ApiOptions, PitcherEnv } from '@sdk/interfaces'\nimport { PitcherResponseStatus, PitcherMessageType } from '@sdk/interfaces'\nimport { EventEmitter } from '@sdk/utils/eventEmitter'\nimport { assert } from '@sdk/utils/assert'\nimport { snakeCaseKeys, camelCaseKeys } from '@lib/util/casing'\nimport { truncateObject } from '@sdk/utils/object'\nimport { isOriginValid } from '@lib/util/message-event'\nimport { setEnv, onlineRestApiHandlers } from '@sdk/api/onlineRestApiHandlers'\nimport { getTopPitcherWindow } from '@sdk/utils/window'\n\nconst TRUNCATE_LENGTH_TRIGGER = 10\nconst RAW_PAYLOAD_METHODS: string[] = [\n 'crm_create',\n 'crm_upsert',\n 'crm_describe',\n 'crm_layout',\n 'crm_smart_query',\n 'crm_smart_object_metadata',\n 'crm_smart_object_validation_rules',\n 'crm_smart_object_layout',\n 'crm_smart_upsert_objects',\n 'crm_smart_delete_objects',\n]\n\nfunction updateOnlineHandlersEnv(env?: PitcherEnv) {\n env && setEnv(env)\n}\nexport class LowLevelApi extends EventEmitter<ApiEventMap> implements PitcherAPI {\n constructor(options?: ApiOptions) {\n super()\n this.callbacks = {}\n this.options = options ?? {\n casing: 'snake',\n logLevel: 'off',\n errorLogger: () => {},\n fetchMode: 'postmessage',\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('message', (event) => {\n if (!isOriginValid(event)) return\n\n this.options.logLevel === 'debug' && console.log('message received', event)\n if (event.data.type === 'PITCHER_RESPONSE') {\n assert(event.data.request.id, 'event id is required')\n this.handleCallbackMessage(event.data.request.id, event.data)\n } else if (event.data.type === 'PITCHER_EVENT') {\n this.handleEventMessage(this.options.casing === 'camel' ? camelCaseKeys(event.data.event) : event.data.event)\n }\n })\n\n this.request('subscribe') // subscribe to events\n }\n }\n\n callbacks: {\n [k: string]: { callback: (res: PitcherResponse) => void; dispatched_at: number; type: string; payload: object }\n }\n\n private options: ApiOptions\n\n private handleCallbackMessage(id: string, body: PitcherResponse) {\n if (this.callbacks[id]) {\n this.callbacks[id].callback(body)\n // metrics\n this.options.logLevel &&\n ['info', 'debug'].includes(this.options.logLevel) &&\n console.log(\n `It took ${Date.now() - this.callbacks[id].dispatched_at} ms for the event ${this.callbacks[id].type}`,\n )\n // cleanup\n delete this.callbacks[id]\n }\n }\n\n private handleEventMessage(event: PitcherEvent) {\n this.emit('event', event)\n }\n\n public request(type: string, body: object | null = null): Promise<any> {\n const fetchMode: ApiOptions['fetchMode'] = this.options.fetchMode ?? 'postmessage'\n return new Promise((resolve, reject) => {\n const id = uuid()\n const callback = (res: PitcherResponse) => {\n this.options.logLevel === 'debug' && console.log(`Callback ${id} response:`, res)\n if (res.response.status === 'ok') {\n resolve(\n (this.options.casing === 'camel' ? camelCaseKeys(res.response.body) : res.response.body) as PitcherResponse,\n )\n\n if (type === 'get_env') updateOnlineHandlersEnv(res.response.body as PitcherEnv | undefined)\n } else if (res.response.status === 'error') {\n if (this.options.errorLogger) {\n this.options.errorLogger({\n type: res.request.type,\n message: `Pitcher JS API call failure: ${res.request.type}`,\n js_api_response: JSON.stringify(truncateObject(res, 3, TRUNCATE_LENGTH_TRIGGER)),\n })\n }\n reject(this.options.casing === 'camel' ? camelCaseKeys(res.response.body) : res.response.body)\n } else {\n throw new Error('unsupported response status')\n }\n }\n const shouldSkipSnakeCase = RAW_PAYLOAD_METHODS.includes(type)\n const payload = shouldSkipSnakeCase ? cloneDeep(body) : cloneDeep(snakeCaseKeys(body)) // default: snake case for impact / cloneDeep to create serializable object\n\n this.callbacks[id] = {\n dispatched_at: Date.now(),\n type,\n payload: payload ?? {},\n callback,\n }\n\n if (fetchMode === 'prefer-online' && type && onlineRestApiHandlers[type]) {\n onlineRestApiHandlers[type](payload)\n .then((data: any) => {\n if (this.callbacks[id]) {\n this.callbacks[id].callback({\n type: PitcherMessageType.RESPONSE,\n request: { id, type },\n response: { status: PitcherResponseStatus.OK, body: data },\n } satisfies PitcherResponse)\n delete this.callbacks[id]\n }\n })\n .catch((error: any) => {\n if (this.callbacks[id]) {\n this.callbacks[id].callback({\n type: PitcherMessageType.RESPONSE,\n request: { id, type },\n response: { status: PitcherResponseStatus.ERROR, body: error },\n } satisfies PitcherResponse)\n delete this.callbacks[id]\n }\n })\n } else {\n // Post message to top ancestor window\n const targetWindow = getTopPitcherWindow(window)\n if (typeof targetWindow !== 'undefined' && targetWindow) {\n targetWindow.postMessage(\n {\n type: 'PITCHER_REQUEST',\n request: {\n type,\n id,\n body: payload,\n },\n },\n '*',\n )\n }\n }\n })\n }\n}\n","import * as modules from '@sdk/api/modules'\nimport { EventEmitter } from '@sdk/utils/eventEmitter'\nimport { LowLevelApi } from '@sdk/api/LowLevelApi'\nimport type { PitcherEvent, ApiOptions } from '@sdk/interfaces'\n\n/**\n * Creates a high-level API instance and caches it. Reterns a new instance only if new options are provided.\n */\nexport function createHighLevelApi(options?: ApiOptions) {\n const API = new LowLevelApi(options)\n const eventEmitter = new EventEmitter()\n\n API.on('event', (event: PitcherEvent) => {\n eventEmitter.emit(event.type, event.body)\n })\n\n return {\n API,\n ...modules,\n /**\n * Subscribe to a given event type by its key.\n *\n * @param {string} type - The event type to subscribe to.\n * @param {(payload: PitcherEvent) => void} callback - The callback function to handle the event.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event. * @example\n *\n * @example\n * const unsubscribeFromSectionListUpdate = usePitcherApi().on('entered_fullscreen', (event: object) => {\n * // handle event\n * })\n * // later\n * unsubscribeFromSectionListUpdate()\n */\n on: (type: string, callback: (payload: PitcherEvent) => void) => eventEmitter.on(type, callback),\n\n /**\n * Unsubscribe from a given event type by its key and the attached callback reference.\n * @param {string} type - The event type to unsubscribe from.\n * @param {(payload: PitcherEvent) => void} callback - The callback function reference to remove.\n *\n * @example\n * const callback = (event: object) => {\n * // handle event\n * }\n * usePitcherApi().on('entered_fullscreen', callback)\n * // later\n * usePitcherApi().off('entered_fullscreen', callback)\n */\n off: (type: string, callback: (payload: PitcherEvent) => void) => eventEmitter.off(type, callback),\n\n /**\n * Make the entire CatalogIQ fullscreen.\n *\n * @example\n * usePitcherApi().enterFullscreen()\n */\n enterFullscreen: () => API.request('enter_fullscreen'),\n\n /**\n * Exit fullscreen mode.\n *\n * @example\n * usePitcherApi().exitFullscreen()\n */\n exitFullscreen: () => API.request('exit_fullscreen'),\n\n /**\n * Return is CatalogIQ in fullscreen.\n *\n * @example\n * usePitcherApi().isFullscreen()\n */\n isFullscreen: () => API.request('is_fullscreen'),\n\n /**\n * Log out the current user.\n *\n * @example\n * usePitcherApi().logout()\n */\n logout: () => API.request('logout'),\n\n /**\n * Quit the current instance and go to the instance selection screen.\n *\n * @example\n * usePitcherApi().quitInstance()\n */\n quitInstance: () => API.request('quit_instance'),\n\n /**\n * Get the request types.\n *\n * @returns {Promise<any>}\n */\n getRequestTypes: () => API.request('get_request_types'),\n\n /**\n * Broadcast an event to CatalogIQ.\n * @param {PitcherEvent} event - The event to broadcast.\n *\n * @example\n * usePitcherApi()\n * .broadcast({\n * type: \"canvas_updated\",\n * body: { context: { myContextProperty: 'test' } },\n * })\n * .then(function (result) {\n * useUi().toast({\n * message: \"Canvas Populated.\",\n * type: \"info\",\n * })\n * })\n */\n broadcast: (event: PitcherEvent) => API.request('broadcast', event),\n\n /**\n * Broadcast an event to webviews only (iOS only).\n * @param {PitcherEvent} event - The event to broadcast.\n *\n * @example\n * usePitcherApi()\n * .broadcastToWebviews({\n * type: \"canvas_updated\",\n * body: { context: { myContextProperty: 'test' } },\n * })\n * .then(function (result) {\n * useUi().toast({\n * message: \"Canvas Populated.\",\n * type: \"info\",\n * })\n * })\n */\n broadcastToWebviews: (event: PitcherEvent) => API.request('broadcast_to_webviews', event),\n\n /**\n * Subscribe to updates.\n *\n * @returns {Promise<void>}\n */\n subscribe: () => API.request('subscribe'),\n\n /**\n * Unsubscribe from updates.\n *\n * @returns {Promise<void>}\n */\n unsubscribe: () => API.request('unsubscribe'),\n }\n}\n","export function usePostRobot() {\n if (window.postRobot) return window.postRobot\n\n return import('post-robot').then((m) => m.default || m)\n}\n","import type {\n SelectedPage as ContentSelectorSelectedPage,\n SelectedFile as ContentSelectorSelectedFile,\n SelectorType,\n} from '@content-selector/stores/app'\nimport type { Selection } from '@lib/types/selections'\nimport type { CanvasSelection } from '@canvas-selector/appTypes'\nimport type { ComponentNode, EmbeddableProps } from '@canvas-builder/types/canvas'\nimport type { SfEvent } from '@lib/types/sfdc'\nimport type { Mutable } from '@lib/types/ts'\nimport type { CanvasRetrieve, File, User, Canvas, CanvasSection, FileContentTypeEnum } from '@openapi'\nimport type { OpenRequestPayload } from '@sdk/payload.types'\nimport type { Range } from '@lib/util/tsHelpers'\nimport type { Agenda, AgendaSelectorProps } from '@agenda-selector/types/agenda.type'\nimport type { CollectionSelectorProps } from '@collection-selector/types/collection-selector.type'\nimport type { CollectionPlayer } from '@collection-player/types/collection-player.type'\nimport type { EmbedLocation } from '@lib/types/app'\n\nexport const UI_MESSAGE = 'UI_MESSAGE' as const\n\nexport const UI_API_METHOD_TYPES = {\n UI_BROADCAST: 'ui_broadcast',\n UI_SELECT_CONTENT: 'ui_select_content',\n UI_SELECT_CANVASES: 'ui_select_canvases',\n UI_OPEN: 'ui_open',\n UI_EMBEDDABLE_READY: 'ui_embeddable_ready',\n UI_TOAST: 'ui_toast',\n UI_CAPTURE_APP_ERROR: 'ui_capture_app_error',\n UI_UPDATE_CANVAS: 'ui_update_canvas',\n UI_PRINT_CANVAS: 'ui_print_canvas',\n UI_OPEN_CANVAS_OVERLAY: 'ui_open_canvas_overlay',\n UI_OPEN_COLLECTION_PLAYER_OVERLAY: 'ui_open_collection_player_overlay',\n UI_SELECT_COLLECTION_PLAYER_CONTENT: 'ui_select_collection_player_content',\n UI_SELECT_AGENDA_CONTENT: 'ui_select_agenda_content',\n UI_UPDATE_LOCATION: 'ui_update_location',\n UI_PRESELECT_SFDC_MEETING_ID: 'ui_preselect_sfdc_meeting_id',\n UI_SET_POSTCALL_STYLE: 'ui_set_postcall_style',\n UI_ENABLE_POSTCALL_SUBMIT: 'ui_enable_postcall_submit',\n UI_DISABLE_POSTCALL_SUBMIT: 'ui_disable_postcall_submit',\n UI_COMPLETE_POSTCALL: 'ui_complete_postcall',\n UI_STOP_MEETING: 'ui_stop_meeting',\n UI_CANCEL_MEETING: 'ui_cancel_meeting',\n UI_RESUME_MEETING: 'ui_resume_meeting',\n UI_PROMPT_PIA: 'ui_prompt_pia',\n\n UI_CANVAS_NAVIGATE_NEXT_PAGE: 'ui_canvas_navigate_next_page',\n UI_CANVAS_NAVIGATE_PREVIOUS_PAGE: 'ui_canvas_navigate_previous_page',\n UI_CANVAS_NAVIGATE_PAGE: 'ui_canvas_navigate_page',\n\n UI_APP_LOADED: 'ui_app_loaded',\n UI_APP_RESIZE: 'ui_app_resize',\n\n UI_CLOSE_CANVAS_SECTION_EXECUTION: 'ui_close_canvas_section_execution',\n UI_CLOSE_CANVAS_DRAWER: 'ui_close_canvas_drawer',\n UI_OPEN_GLOBAL_POPUP: 'ui_open_global_popup',\n UI_CLOSE_GLOBAL_POPUP: 'ui_close_global_popup',\n UI_OPEN_SHARING_SETTINGS: 'ui_open_sharing_settings',\n} as const\n\nexport const UI_MESSAGE_TYPES = {\n UI_MEETING_CANCELED: 'ui_meeting_canceled',\n UI_CANVAS_UPDATED: 'ui_canvas_updated',\n UI_SECTION_LIST_UPDATED: 'ui_section_list_updated',\n UI_APP_SET_DATA: 'ui_app_set_data',\n UI_APP_UPDATE_DATA: 'ui_app_update_data',\n UI_PROMPT_PIA_RESPONSE_STREAMED: 'ui_prompt_pia_response_streamed',\n} as const\n\nexport const UI_NATIVE_MESSAGE_TYPES = [\n UI_MESSAGE_TYPES.UI_APP_SET_DATA,\n UI_MESSAGE_TYPES.UI_APP_UPDATE_DATA,\n UI_MESSAGE_TYPES.UI_CANVAS_UPDATED,\n] as const\n\n// UI API METHOD TYPES\nexport type UiBroadcastRequest = Record<string, any>\n\nexport type UiSelectContentRequest = {\n /** Array of selections */\n selections?: Selection[]\n content_type?: 'file' | 'slide' | 'content'\n allowed_selector_types?: SelectorType[]\n allowed_content_types?: FileContentTypeEnum[]\n allowed_asset_content_types?: FileContentTypeEnum[]\n max_selections?: number\n min_selections?: Range<0, 999>\n allowed_ids?: File['id'][]\n initial_metadata_filters?: Record<string, any>\n /**\n * Array of file extensions to scope out list of the results (optional). Only files with these extensions will be shown.\n */\n allowed_original_extensions?: string[]\n /**\n * Disables files from selection which are not sharable (optional).\n */\n disable_no_sharable?: boolean\n /**\n * Disables files from selection which do not have pptx_data in metadata object (optional).\n */\n disable_no_pptx_data?: boolean\n /**\n * Only allow content pdf pages (optional). User will be forced to select a page from the pdf.\n */\n only_allow_content_pdf_pages?: boolean\n}\n\nexport type UiSelectContentResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected content */\n content?: (ContentSelectorSelectedFile | ContentSelectorSelectedPage)[]\n}\n\nexport type UiSelectCollectionPlayerRequest = {\n initial_data?: CollectionSelectorProps['initialData']\n attach_to?: CollectionSelectorProps['attachTo']\n open_settings?: CollectionSelectorProps['openSettings']\n readonly_name?: CollectionSelectorProps['readonlyName']\n close_on_settings?: CollectionSelectorProps['closeOnSettings']\n translations?: CollectionSelectorProps['translations']\n initial_metadata_filters?: CollectionSelectorProps['initialMetadataFilters']\n hide_close?: CollectionSelectorProps['hideClose']\n}\n\nexport type UiSelectCollectionPlayerResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected' | 'settings'\n /** Selected content */\n content?: CollectionPlayer\n}\n\nexport type UiSelectAgendaRequest = {\n initial_agenda?: AgendaSelectorProps['initialAgenda']\n attach_to?: AgendaSelectorProps['attachTo']\n}\n\nexport type UiSelectAgendaResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected content */\n content?: Agenda\n}\n\nexport type UiSelectCanvasesRequest = {\n /** Array of selections */\n selections?: CanvasSelection[]\n allowed_types?: ('canvas' | 'canvas-template' | 'section' | 'section-template')[]\n allowed_ids?: Canvas['id'][]\n initial_metadata_filters?: Record<string, any>\n}\n\nexport type UiSelectCanvasesResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected canvases */\n canvases?: Canvas[]\n}\n\nexport type UiPromptPiaRequest = {\n /** Unique identifier of this prompt (needed for streaming event) */\n id: string\n /** Prompt to send to PIA */\n prompt: string\n}\n\nexport type UiPromptPiaResponse = {\n /** Unique identifier of this prompt (needed for streaming event) */\n id: string\n /** PIA response */\n response: string\n}\n\n/**\n * Error object to send to Pitcher sentry instance\n */\nexport type UiCaptureAppErrorRequest = Record<string, any>\n\nexport type UiUpdateCanvasRequest = Mutable<CanvasRetrieve> & {\n /** Comma-separated list of field keys to return from the server */\n fields?: string\n}\n\nexport type UiPrintCanvasRequest = {\n /** Canvas ID to print */\n id: CanvasRetrieve['id']\n /** Optional HTTPS URL for async download notifications */\n notify_url?: string\n}\n\nexport type UiPrintCanvasResponse = {\n /** Job ID for tracking the async download */\n job_id?: string\n /** Indicates if the request was successful */\n success: boolean\n}\n\nexport type UiOpenRequest = OpenRequestPayload & {\n /** Name of the app to open */\n app_name?: string\n /** Context to pass to the app */\n app_context?: Record<string, any>\n /** Embed location of the app */\n app_embed_location?: EmbedLocation\n}\n\nexport type UiCompletePostcallRequest = {\n /** Indicates if the postcall was successfully submitted */\n was_successfully_submitted?: boolean\n}\n\nexport type UiSetPostcallStyleRequest = Record<string, any>\n\nexport type UiAppResizeRequest = {\n /** Requested height as the number of pixels */\n height: number\n}\n\nexport type UiCanvasNavigatePageRequest = {\n /** The id of the component we want to navigate to */\n page: ComponentNode['id']\n}\n\nexport interface UiToastRequest {\n /**\n * Type of the toast, influences the default icon\n * @defaultValue **REQUIRED**\n */\n type: 'info' | 'error' | 'warning' | 'success' | 'loading'\n\n /**\n * Text to show inside the toast\n * @defaultValue **REQUIRED**\n */\n message: string\n\n /**\n * Optional, value in milliseconds\n * @defaultValue 3500\n */\n duration?: number\n\n /**\n * Visibility of the close button, default is true\n * @defaultValue true\n */\n closable?: boolean\n\n /**\n * Toast won't be hidden as long as it is hovered\n * @defaultValue true\n */\n keepAliveOnHover?: boolean\n\n /**\n * Set to `false` to hide the icon\n * @defaultValue true\n */\n showIcon?: boolean\n}\n\nexport interface UiPreselectSfdcMeetingIdRequest {\n /** Salesforce Meeting ID */\n eventId: string\n}\n\nexport interface UiPreselectSfdcMeetingIdResponse {\n /** Salesforce Event */\n event: SfEvent | null\n}\n\nexport interface UiOpenCollectionPlayerOverlayGroup {\n /** File ID */\n id: string\n /** File name */\n name: string\n /** Optional: specific slides/pages to show from the file */\n slides?: Array<{\n /** The file ID (same as parent group.id) */\n file_id: string\n /** Zero-based page/slide index to show */\n slide_index: number\n }>\n}\n\nexport interface UiOpenCollectionPlayerOverlayRequest {\n /** Array of files/slides to be played in the collection */\n groups: UiOpenCollectionPlayerOverlayGroup[]\n /** The display name for the collection */\n name: string\n}\n\n// UI API EVENT MESSAGE TYPES\nexport type UiMessagePayloads = {\n [UI_MESSAGE_TYPES.UI_MEETING_CANCELED]: UiMeetingCanceledPayload\n [UI_MESSAGE_TYPES.UI_APP_SET_DATA]: UiAppSetDataPayload\n [UI_MESSAGE_TYPES.UI_APP_UPDATE_DATA]: UiAppUpdateDataPayload\n [UI_MESSAGE_TYPES.UI_CANVAS_UPDATED]: UiCanvasUpdatedPayload\n [UI_MESSAGE_TYPES.UI_SECTION_LIST_UPDATED]: UiSectionListUpdatedPayload\n [UI_MESSAGE_TYPES.UI_PROMPT_PIA_RESPONSE_STREAMED]: UiPromptPiaResponseStreamedPayload\n}\n\nexport type UiMessageEnvelope<\n T extends\n (typeof UI_MESSAGE_TYPES)[keyof typeof UI_MESSAGE_TYPES] = (typeof UI_MESSAGE_TYPES)[keyof typeof UI_MESSAGE_TYPES],\n> = {\n /** Message type */\n type: T\n /** Message body */\n body: UiMessagePayloads[T]\n}\n\nexport type UiMeetingCanceledPayload = {\n /** Account ID */\n accountId?: string\n /** Event ID */\n eventId?: string\n}\n\nexport type UiAppSetDataPayload = {\n /** Client name */\n client: string | null\n /** Platform name */\n platform: string | undefined\n /** User information */\n user: User | null\n /** Edit mode status */\n is_edit_mode: boolean\n /** Call status */\n in_call: boolean\n /** Canvas data */\n canvas: CanvasRetrieve\n /** Section used in canvas */\n used_in_section: CanvasSection | null\n /** Component ID */\n component_id: string\n /** Embeddable settings */\n settings: EmbeddableProps['settings'] | null\n /** Width of the canvas */\n width: string | undefined\n /** Height of the canvas */\n height: string | undefined\n /** Full screen mode status */\n full_screen_mode: boolean | undefined\n /** Display mode */\n display_mode: string | undefined\n /** Section index in section list */\n section_index: number | null\n /** Section list ID */\n section_list_id: string | null\n /** Canvas correlation ID for tracking */\n canvas_correlation_id: string | undefined\n}\n\nexport type UiAppUpdateDataPayload = {\n /** Call status */\n in_call: boolean\n /** Edit mode status */\n is_edit_mode: boolean\n}\n\nexport type UiCanvasUpdatedPayload = {\n /** Canvas data */\n canvas: CanvasRetrieve\n}\n\nexport type UiSectionListUpdatedPayload = {\n /** List of section IDs */\n section_list_ids: string[]\n /** Section list component ID */\n section_list_component_id: string\n /** Canvas data */\n canvas: CanvasRetrieve | null\n}\n\nexport type UiPromptPiaResponseStreamedPayload = {\n /** Unique identifier of this prompt */\n id: string\n /** PIA response so far */\n partial_response: string\n /** Current chunk of the response */\n chunk: string\n}\n\nexport interface UiOpenGlobalPopupRequest {\n /** Name of the app to open */\n app_name: string\n /** Extra context to pass to the app */\n extra_context?: Record<string, any>\n}\n\nexport interface UiOpenGlobalPopupResponse {\n /** Whether the popup was successfully opened */\n success: boolean\n}\n\nexport interface UiOpenSharingSettingsRequest {\n files: Array<{\n id: string\n name: string\n thumbnail_url?: string\n content_type?: string\n }>\n default_auth_strategy?: string\n}\n\nexport interface UiOpenSharingSettingsResponse {\n user_action: 'confirmed' | 'cancelled'\n settings?: {\n auth_strategy:\n | 'none'\n | 'any_email'\n | 'specified_emails'\n | 'specified_domains'\n | 'verified_emails'\n | 'verified_domains'\n allowed_emails?: string[]\n allowed_domains?: string[]\n valid_until_days?: number | null\n allow_download?: boolean\n }\n}\n","import { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport {\n type UiSelectAgendaRequest,\n type UiSelectAgendaResponse,\n type UiSelectCollectionPlayerRequest,\n type UiSelectCollectionPlayerResponse,\n type UiSelectContentRequest,\n type UiSelectContentResponse,\n type UiOpenRequest,\n type UiToastRequest,\n type UiPreselectSfdcMeetingIdRequest,\n type UiPreselectSfdcMeetingIdResponse,\n type UiOpenGlobalPopupRequest,\n type UiOpenGlobalPopupResponse,\n UI_API_METHOD_TYPES,\n} from '@sdk/api/modules/ui/types.ui'\n\n/**\n * @hidden\n * @deprecated\n */\nexport async function ui_select_content(payload: UiSelectContentRequest = {}): Promise<UiSelectContentResponse> {\n const pr = await usePostRobot()\n console.warn(\n '[content.ui.ts]: ui_select_content is deprecated and might get removed in future versions, please use select_content instead.',\n )\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_CONTENT, payload)\n return <UiSelectContentResponse>response.data\n}\n\n/**\n * Allows the user to select (and preselect) content from the instance.\n *\n * Opens the content selector dialog to allow the user to select content and handle the outcome. This method allows you to\n * prompt the user to select content from the CatalogIQ instance and use that content in your application.\n *\n * @example\n * const api = useApi() // or useUi() if you know that you 're in UI context\n * api\n * .selectContent({\n * selections: [\n * { fileId: \"01HCZ623YYRFJQ0F7B69VWE510\", type: \"file\" },\n * {\n * fileId: \"01HD3XGZ5FN90QJGK7CH8TBZDF\",\n * type: \"page\",\n * pageIndex: 2,\n * },\n * ],\n * })\n *\n * @param payload optional payload to preselect specific content\n * @returns Promise with the user action and selected content\n */\nexport async function selectContent(payload: UiSelectContentRequest = {}): Promise<UiSelectContentResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_CONTENT, payload)\n return <UiSelectContentResponse>response.data\n}\n\n/**\n * Open a file in the CatalogIQ instance.\n */\nexport async function open(payload: UiOpenRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN, payload)\n}\n\n/**\n * Show a toast message to the user.\n *\n * @example\n * useUi().toast({ type: 'info', message: 'Hello, world!' })\n */\nexport async function toast(payload: UiToastRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_TOAST, payload)\n}\n\n/**\n * Preselect a meeting in the top meeting bar by Salesforce Meeting ID. From there, the user can easily start the meeting\n * with a single click.\n *\n * @example\n * const objectFetchedFromSalesforce = {\n * // fetch dynamically from Salesforce or provide in another way\n * EventId: '00U1r00000D1J1zEAF',\n * }\n * ui.preselectSfdcMeetingId({ eventId: objectFetchedFromSalesforce.EventId }).then((response) => {\n * // e.g. display advanced meeting details inside your app\n * console.log(response.event)\n * })\n */\nexport async function preselectSfdcMeetingId(\n payload: UiPreselectSfdcMeetingIdRequest,\n): Promise<UiPreselectSfdcMeetingIdResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_PRESELECT_SFDC_MEETING_ID, payload)\n return <UiPreselectSfdcMeetingIdResponse>response.data\n}\n\n/**\n * Opens the collection player selector modal to allow the user to select collection player content and handle the outcome.\n * ```\n * const api = useApi() // or useUi() if you know that you 're in UI context\n *\n * uiApi.selectCollectionContent({\n * // optional payload\n * initial_data: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectCollectionContent(\n payload: UiSelectCollectionPlayerRequest = {},\n): Promise<UiSelectCollectionPlayerResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_COLLECTION_PLAYER_CONTENT, payload)\n\n return <UiSelectCollectionPlayerResponse>response.data\n}\n\n/**\n * Opens the agenda selector modal to allow the user to select agenda content and handle the outcome.\n * ```\n * const api = useApi() // or useUi() if you know that you 're in UI context\n *\n * uiApi.selectAgendaContent({\n * // optional payload\n * initial_agenda: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectAgendaContent(payload: UiSelectAgendaRequest = {}): Promise<UiSelectAgendaResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_AGENDA_CONTENT, payload)\n\n return <UiSelectAgendaResponse>response.data\n}\n\n/**\n * Opens a global popup app by name.\n *\n * @example\n * const api = useApi()\n * api.openGlobalPopup('my-popup-app')\n * api.openGlobalPopup('my-popup-app', { customData: 'value' })\n *\n * @param appName - The name of the app to open (must have app_type: 'ui-global-popup')\n * @param extraContext - Extra context to pass to the app\n * @returns Promise with the result of the operation\n */\nexport async function openGlobalPopup(\n appName: string,\n extraContext?: Record<string, any>,\n): Promise<UiOpenGlobalPopupResponse> {\n const pr = await usePostRobot()\n const payload: UiOpenGlobalPopupRequest = {\n app_name: appName,\n extra_context: extraContext,\n }\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN_GLOBAL_POPUP, payload)\n return <UiOpenGlobalPopupResponse>response.data\n}\n\n/**\n * Closes the currently open global popup app.\n *\n * @example\n * const api = useApi()\n * api.closeGlobalPopup()\n */\nexport async function closeGlobalPopup(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_CLOSE_GLOBAL_POPUP, {})\n}\n","import { UI_API_METHOD_TYPES } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * This event is used for appJson.module.canvas.start_in_loading_mode: true apps.\n * A loading curtain is displayed until you call this event.\n *\n * @example\n * useUi().embeddableReady()\n *\n */\nexport async function embeddableReady(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_EMBEDDABLE_READY)\n}\n","import { UI_API_METHOD_TYPES } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type { UpdateLocationPitcherEvent } from '@sdk/interfaces'\nimport { getTopPitcherWindow } from '@sdk/utils/window'\n\n/**\n * Navigate to another page in the CatalogIQ instance.\n *\n * [//]: # 'TODO: This is a very powerful event, we need to expand documentation here'\n *\n * @example\n * const canvasId = '1234567890abcdef12345678' // obtain target canvasId\n * useUi().updateLocation({\n * action: 'restore',\n * routes: {\n * 'slotty-ui': {\n * path: '/canvases/saved-canvases/' + canvasId + '/build/present',\n * query: {},\n * },\n * },\n * })\n */\n\nexport async function updateLocation(payload: UpdateLocationPitcherEvent): Promise<any> {\n const pr = await usePostRobot()\n return pr.send(getTopPitcherWindow(), UI_API_METHOD_TYPES.UI_UPDATE_LOCATION, payload)\n}\n","import { UI_API_METHOD_TYPES, type UiCaptureAppErrorRequest } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Send an app error to Pitcher sentry instance.\n *\n * @example\n * try {\n * throw new Error('This is an error')\n * } catch (error) {\n * useUi().captureAppError(error)\n * }\n *\n * @param payload error object to send to Pitcher sentry instance\n */\nexport async function captureAppError(payload: UiCaptureAppErrorRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CAPTURE_APP_ERROR, payload)\n}\n","import { type CanvasRetrieve } from '@openapi'\nimport type {\n UiAppResizeRequest,\n UiCanvasNavigatePageRequest,\n UiUpdateCanvasRequest,\n UiPrintCanvasRequest,\n UiPrintCanvasResponse,\n UiSelectCanvasesRequest,\n UiSelectCanvasesResponse,\n UiOpenCollectionPlayerOverlayRequest,\n} from '@sdk/api/modules/ui/types.ui'\nimport { UI_API_METHOD_TYPES } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Modify the currently loaded canvas. On the web it sends\n * an [update_canvas](https://pitcher.readme.io/reference/update_canvas) request to the server.\n *\n * @param payload parts of the canvas object to update with fields to return\n */\nexport async function updateCanvas(payload: UiUpdateCanvasRequest): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n return pr\n .send(window.parent, UI_API_METHOD_TYPES.UI_UPDATE_CANVAS, payload)\n .then((response) => response.data as CanvasRetrieve)\n}\n\n/**\n * Trigger async print/download of a canvas with optional notification URL.\n * Calls the downloader-test endpoint to convert the canvas to PDF.\n *\n * @param payload Canvas ID and optional notify URL for async notifications\n * @returns Promise with job ID and success status\n *\n * @example\n * useUi().printCanvas({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * notify_url: 'https://my-webhook.example.com/canvas-ready'\n * })\n */\nexport async function printCanvas(payload: UiPrintCanvasRequest): Promise<UiPrintCanvasResponse> {\n const pr = await usePostRobot()\n return pr\n .send(window.parent, UI_API_METHOD_TYPES.UI_PRINT_CANVAS, payload)\n .then((response) => response.data as UiPrintCanvasResponse)\n}\n\n/**\n * Notify the CatalogIQ instance that the app is loaded and ready to get the data. Triggering this method will trigger\n * the `on_app_set_data` event.\n *\n * @example\n * @example\n * useUi().appLoaded()\n */\nexport async function appLoaded(): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_APP_LOADED, body: {} }, '*')\n}\n\n/**\n * Resize the app iframe to a given height.\n *\n * Note that initial iframe height comes from the `app.json` manifest file. It can also be adjusted by the user when adding\n * app component to the canvas. In case when the app must be temporarily resized to show larger ui elements it can read the\n * user-set height from the [on_app_set_data](#on-app-set-data) event.\n * @param payload object containing requested height of the iframe as the number of pixels\n */\nexport async function appResize(payload: UiAppResizeRequest): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_APP_RESIZE, body: payload }, '*')\n}\n\n/**\n * Close the Canvas Section Execution modal. Only takes effect for `canvas_section_execution` app modules\n *\n * Note that this method simply closes the modal and will result in the app calling it being unmounted from the DOM and\n * destroyed. Make sure your app has finished updating data before you call this method.\n *\n * @example\n * useUi().closeCanvasSectionExecution()\n */\nexport async function closeCanvasSectionExecution(): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_CLOSE_CANVAS_SECTION_EXECUTION, body: {} }, '*')\n}\n\n/**\n * Close the Canvas Drawer modal. Only takes effect for apps running in `canvas_drawer` embed location\n *\n * Note that this method simply closes the drawer and will result in the app calling it being unmounted from the DOM and\n * destroyed. Make sure your app has finished updating data before you call this method.\n *\n * @example\n * useUi().closeCanvasDrawer()\n */\nexport async function closeCanvasDrawer(): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_CLOSE_CANVAS_DRAWER, body: {} }, '*')\n}\n\n/**\n * Navigate to the next page in the current canvas. Noop if the current page is the last one.\n *\n * @example\n * useUi().canvasNavigateNextPage()\n */\nexport async function canvasNavigateNextPage(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANVAS_NAVIGATE_NEXT_PAGE)\n}\n\n/**\n * Navigate to the previous page in the current canvas. Noop if the current page is the first one.\n *\n * @example\n * useUi().canvasNavigatePreviousPage()\n */\nexport async function canvasNavigatePreviousPage(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANVAS_NAVIGATE_PREVIOUS_PAGE)\n}\n\n/**\n * Navigate to a specific canvas place in the current canvas. Despite the event and parameter name, it takes the component\n * id that we want to put in view.\n *\n * @example\n * const uiApi = useUi() // our useApi()\n *\n * let activeCanvas = null\n * const unsubscribe = uiApi.on_app_set_data((data) => {\n * activeCanvas = data?.canvas\n * })\n *\n * document.getElementById('my-button').addEventListener('click', () => {\n * const target = activeCanvas?.content?.data?.find((i: any) => i.data.app_name === 'my-target-app-id') || null\n * if (target) {\n * uiApi.canvasNavigatePage({ page: target.id })\n * }\n * })\n */\nexport async function canvasNavigatePage(payload: UiCanvasNavigatePageRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANVAS_NAVIGATE_PAGE, payload)\n}\n\n/**\n * Opens a modal to view a canvas by ID.\n *\n * ```\n * onMounted(() => {\n * uiApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * edit_mode: false,\n * fullscreen: true,\n * })\n * })\n * ```\n *\n * You can also specify a position for the canvas overlay:\n *\n * ```\n * uiApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * position: {\n * top: '10px',\n * left: '20px',\n * right: '20px',\n * bottom: '10px'\n * }\n * })\n * ```\n */\nexport async function openCanvasOverlay(payload: {\n id: CanvasRetrieve['id']\n edit_mode?: boolean\n fullscreen?: boolean\n component_id?: string\n section_id?: string\n position?: {\n left?: number | string\n right?: number | string\n top?: number | string\n bottom?: number | string\n }\n}): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN_CANVAS_OVERLAY, payload)\n}\n\n/**\n * Opens the collection player overlay to view a collection of files/slides.\n *\n * This method opens the native Pitcher collection player interface with the specified\n * files and slides. You can show entire files or specific pages from files.\n *\n * @example\n * // Open collection with full files\n * useUi().openCollectionPlayerOverlay({\n * groups: [\n * { id: 'file-123-abc', name: 'Product Overview' },\n * { id: 'file-456-def', name: 'Pricing Slides' }\n * ],\n * name: 'Sales Deck'\n * })\n *\n * // Open collection with specific slides/pages\n * useUi().openCollectionPlayerOverlay({\n * groups: [\n * {\n * id: 'file-123-abc',\n * name: 'Product Overview',\n * slides: [\n * { file_id: 'file-123-abc', slide_index: 0 },\n * { file_id: 'file-123-abc', slide_index: 2 }\n * ]\n * }\n * ],\n * name: 'Custom Sales Presentation'\n * })\n *\n * @param payload Object containing groups array and collection name\n */\nexport async function openCollectionPlayerOverlay(payload: UiOpenCollectionPlayerOverlayRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN_COLLECTION_PLAYER_OVERLAY, payload)\n}\n\n/**\n * Allows the user to select (and preselect) canvases from the instance.\n *\n * This method allows you to prompt the user to select canvases from the CatalogIQ\n * instance and use that canvas selection in your application.\n *\n * @example\n * const api = useApi() // or useUi() if you know that you 're in UI context\n * api\n * .selectCanvases({\n * allowed_types: ['canvas','canvas-template','section','section-template'] // default ['canvas']\n * selections: [\n * { id: \"01HCZ623YYRFJQ0F7B69VWE510\" },\n * { id: \"02HCZ623YYRFJQ0F7B69VWE510\" },\n * ], // default []\n * })\n *\n * @param payload optional payload to preselect specific canvases\n * @returns Promise with the user action and selected canvases\n */\nexport async function selectCanvases(payload: UiSelectCanvasesRequest = {}): Promise<UiSelectCanvasesResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_CANVASES, payload)\n return <UiSelectCanvasesResponse>response.data\n}\n","import {\n UI_API_METHOD_TYPES,\n type UiCompletePostcallRequest,\n type UiSetPostcallStyleRequest,\n} from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Completes the postcall stage (with successful submission or not)\n *\n * @example\n * useUi().completePostcall({ was_successfully_submitted: true })\n */\nexport async function completePostcall(payload: UiCompletePostcallRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_COMPLETE_POSTCALL, payload)\n}\n\n/**\n * Cancels current meeting and the event remains unrealized (like it never happened).\n *\n * @example\n * useUi().cancelMeeting()\n */\nexport async function cancelMeeting(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANCEL_MEETING)\n}\n\n/**\n * Resumes the meeting and attempts to go at the last presented route / component.\n *\n * @example\n * useUi().resumeMeeting()\n */\nexport async function resumeMeeting(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_RESUME_MEETING)\n}\n\n/**\n * Ends current meeting and shows postcall form.\n *\n * @example\n * useUi().stopMeeting()\n */\nexport async function stopMeeting(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_STOP_MEETING)\n}\n\n/**\n * Mark the postcall form as possible to submit by the user.\n *\n * @deprecated\n * @example\n * useUi().enablePostcallSubmit()\n */\nexport async function enablePostcallSubmit(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_ENABLE_POSTCALL_SUBMIT)\n}\n\n/**\n * Mark the postcall form as **not** possible to submit by the user. Useful while processing the form data.\n *\n * @deprecated\n * @example\n * useUi().disablePostcallSubmit()\n */\nexport async function disablePostcallSubmit(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_DISABLE_POSTCALL_SUBMIT)\n}\n\n/**\n * Change the height of the postcall form.\n *\n * @example\n * useUi().setPostcallStyle({ height: 100 })\n */\nexport async function setPostcallStyle(payload: UiSetPostcallStyleRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_SET_POSTCALL_STYLE, payload)\n}\n","import { UI_API_METHOD_TYPES, type UiPromptPiaRequest, type UiPromptPiaResponse } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Sends a query to the Pitcher Intelligent Assistant (PIA) and handles the streamed response.\n *\n * @example\n * // Subscribe to PIA's streamed responses\n * const cleanup = await useUi().on(\n * UI_MESSAGE_TYPES.UI_PROMPT_PIA_RESPONSE_STREAMED,\n * async ({ chunk, partial_response, id }) => {\n * console.log(`PIA response chunk for stream ${id}: ${chunk}`);\n * console.log(`PIA response so far for stream ${id}: ${partial_response}`);\n * }\n * );\n * // Prompt PIA with a question and ensure cleanup is called afterwards\n * useUi().promptPia({ prompt: \"What's my most presented file?\", id: 'my-prompt-id-to-discern-with-stream-event' })\n * .finally(cleanup);\n */\nexport async function promptPia(payload: UiPromptPiaRequest): Promise<UiPromptPiaResponse> {\n const pr = await usePostRobot()\n const r = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_PROMPT_PIA, payload)\n return r.data as UiPromptPiaResponse\n}\n","import { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport {\n UI_API_METHOD_TYPES,\n type UiOpenSharingSettingsRequest,\n type UiOpenSharingSettingsResponse,\n} from './types.ui'\n\nexport async function openSharingSettings(\n payload: UiOpenSharingSettingsRequest,\n): Promise<UiOpenSharingSettingsResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(\n window.parent,\n UI_API_METHOD_TYPES.UI_OPEN_SHARING_SETTINGS,\n payload,\n )\n return response.data as UiOpenSharingSettingsResponse\n}\n","import { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type {\n UiMessageEnvelope,\n UiMeetingCanceledPayload,\n UiCanvasUpdatedPayload,\n UiSectionListUpdatedPayload,\n UiAppSetDataPayload,\n UiAppUpdateDataPayload,\n UiBroadcastRequest,\n UiMessagePayloads,\n} from './types.ui'\nimport { UI_API_METHOD_TYPES, UI_MESSAGE_TYPES, UI_NATIVE_MESSAGE_TYPES } from './types.ui'\nimport * as contentUi from './content.ui'\nimport * as loadingUi from './loading.ui'\nimport * as locationUi from './location.ui'\nimport * as appErrorsUi from './app-errors.ui'\nimport * as canvasUi from './canvas.ui'\nimport * as postCallUi from './post-call.ui'\nimport * as piaUi from './pia.ui'\nimport * as sharingUi from './sharing.ui'\n\nasync function onNative<T extends keyof UiMessagePayloads>(\n type: T,\n handler: (data: UiMessagePayloads[T]) => Promise<void>,\n) {\n const messageListener = (event: MessageEvent<UiMessageEnvelope<typeof type>>) => {\n if (event.data.type === type) {\n handler(event.data.body)\n }\n }\n window.addEventListener('message', messageListener)\n\n return () => window.removeEventListener('message', messageListener)\n}\n\nasync function onPostRobot<T extends keyof UiMessagePayloads>(\n type: T,\n handler: (data: UiMessagePayloads[T]) => Promise<void>,\n) {\n const pr = await usePostRobot()\n const listener = pr.on(type, (e) => handler(e.data))\n\n // return the cleanup function\n return listener.cancel\n}\n\n/**\n * Subscribe to a given event type by its key.\n *\n * @example\n * const unsubscribeFromSectionListUpdate = useUi().on('ui_section_list_updated', (event: object) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribeFromSectionListUpdate.then(unsubscribe => unsubscribe())\n *\n * @param type The event type/key to subscribe to.\n * @param handler The handler function to call when the event is emitted.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction on<T extends keyof UiMessagePayloads>(type: T, handler: (data: UiMessagePayloads[T]) => Promise<void>) {\n if (UI_NATIVE_MESSAGE_TYPES.includes(type as (typeof UI_NATIVE_MESSAGE_TYPES)[number])) {\n return onNative(type, handler)\n }\n\n return onPostRobot(type, handler)\n}\n\n/**\n * Subscribe to the meeting canceled event.\n *\n * @example\n * const unsubscribeFromMeetingCanceled = useUi().onMeetingCanceled((event: {\n * accountId?: string;\n * eventId?: string;\n * }) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribeFromMeetingCanceled.then(cancel => cancel())\n *\n * @param handler\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onMeetingCanceled(handler: (data: UiMeetingCanceledPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_MEETING_CANCELED, handler)\n}\n\n/**\n * Subscribe to the canvas updated event. It is triggered when the current canvas of the app is updated.\n *\n * @example\n * const unsubscribePromise = useUi().onCanvasUpdated((event: { canvas }) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onCanvasUpdated(handler: (data: UiCanvasUpdatedPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_CANVAS_UPDATED, handler)\n}\n\n/**\n * Subscribe to the section list updated event. It is triggered when the list of sections (products) in the current canvas\n * is updated.\n *\n * @example\n * const unsubscribePromise = useUi().onSectionListUpdated((event: { canvas }) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onSectionListUpdated(handler: (data: UiSectionListUpdatedPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_SECTION_LIST_UPDATED, handler)\n}\n\n/**\n * Subscribe to the app set data event. It is triggered when the app data is set. This event is triggered when the app is\n * loaded and in certain other cases after loading.\n *\n * This is the main event for the canvas app to receive data from the CatalogIQ instance and know about its environment.\n *\n * @example\n * let user = null\n * let isEditMode = null\n * let activeCanvas = null\n * let isPrintMode = false\n * const unsubscribePromise = useUi().onAppSetData((data) => {\n * user = data?.user\n * isEditMode = data?.is_edit_mode\n * activeCanvas = data?.canvas\n * isPrintMode = data?.display_mode === 'print' || data?.client === 'dsr'\n * // ...mode logic...\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onAppSetData(handler: (data: UiAppSetDataPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_APP_SET_DATA, handler)\n}\n\n/**\n * Subscribe to the app update data event. It is triggered when the user changes from edit mode to view mode or vice versa\n * and when the call is started or ended.\n *\n * @example\n * let inCall = false\n * let isEditMode = false\n * const unsubscribePromise = useUi().onAppUpdateData((data) => {\n * isEditMode = data?.is_edit_mode\n * inCall = data?.in_call\n * // ...mode logic...\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onAppUpdateData(handler: (data: UiAppUpdateDataPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_APP_UPDATE_DATA, handler)\n}\n\n/**\n * Broadcast event to the UI. Hidden from the documentation.\n *\n * @hidden\n */\nasync function uiBroadcast(payload: UiBroadcastRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_BROADCAST, payload)\n}\n\nexport default {\n on,\n onMeetingCanceled,\n onCanvasUpdated,\n onSectionListUpdated,\n onAppSetData,\n onAppUpdateData,\n uiBroadcast,\n ...contentUi,\n ...loadingUi,\n ...locationUi,\n ...appErrorsUi,\n ...canvasUi,\n ...postCallUi,\n ...piaUi,\n ...sharingUi,\n}\n","import type { PitcherEnv } from '@sdk/interfaces'\nimport type {\n SelectedPage as ContentSelectorSelectedPage,\n SelectedFile as ContentSelectorSelectedFile,\n SelectorType,\n} from '@content-selector/stores/app'\nimport type { Selection as ContentSelectorSelection } from '@lib/types/selections'\nimport type { Canvas, File } from '@openapi'\nimport type { CanvasSelection } from '@canvas-selector/appTypes'\nimport type { CLIENT_TYPE } from '@lib/constants/cdp.const'\nimport type { LaunchDarklyEnv } from '@lib/types/launchDarkly.types'\nimport type { CollectionSelectorProps } from '@collection-selector/types/collection-selector.type'\nimport type { CollectionPlayer } from '@collection-player/types/collection-player.type'\nimport type { Agenda, AgendaSelectorProps } from '@agenda-selector/types/agenda.type'\n\nexport const ADMIN_MESSAGE = 'ADMIN_MESSAGE' as const\n\nexport const ADMIN_MESSAGE_TYPES = {\n ENV_CHANGED: 'admin_env_changed',\n} as const\n\nexport const ADMIN_API_TYPES = {\n ADMIN_REQUEST: 'ADMIN_REQUEST',\n ADMIN_RESPONSE: 'ADMIN_RESPONSE',\n} as const\n\nexport const ADMIN_API_METHOD_TYPES = {\n CAPTURE_APP_ERROR: 'admin_capture_app_error',\n CREATE_CANVAS: 'admin_create_canvas',\n GET_APP_CONFIG: 'admin_get_app_config',\n GET_CANVAS: 'admin_get_canvas',\n GET_CANVASES: 'admin_get_canvases',\n OPEN_CANVAS_OVERLAY: 'admin_open_canvas_overlay',\n OPEN_COLLECTION_PLAYER_OVERLAY: 'admin_open_collection_player_overlay',\n GET_ENV: 'admin_get_env',\n GET_FILE: 'admin_get_file',\n OPEN: 'admin_open_file_overlay',\n CLOSE: 'admin_close_file_overlay',\n GET_FILES: 'admin_get_files',\n GET_INSTANCE_METADATA_TEMPLATES: 'admin_get_instance_metadata_templates',\n GET_USERS: 'admin_get_users',\n TOAST: 'admin_toast',\n UPDATE_CANVAS: 'admin_update_canvas',\n SELECT_COLLECTION_PLAYER_CONTENT: 'admin_select_collection_player_content',\n SELECT_AGENDA_CONTENT: 'admin_select_agenda_content',\n SELECT_CONTENT: 'admin_select_content',\n SELECT_CANVASES: 'admin_select_canvases',\n} as const\n\nexport type AdminMessagePayloads = {\n [ADMIN_MESSAGE_TYPES.ENV_CHANGED]: AdminEnv\n}\n\n/**\n * Error object to send to Pitcher sentry instance\n */\nexport type AdminCaptureAppErrorRequest = Record<string, any>\n\n/**\n * Represents an admin request with a specific payload.\n * @template Payload - The type of the payload data.\n */\nexport type AdminRequest<Payload = any> = {\n /**\n * Unique identifier for the request.\n */\n id: string\n /**\n * Type of the admin API request.\n */\n type: (typeof ADMIN_API_TYPES)['ADMIN_REQUEST']\n /**\n * Body of the request containing the method type and payload data.\n */\n body: {\n /**\n * Type of the admin API method.\n */\n type: (typeof ADMIN_API_METHOD_TYPES)[keyof typeof ADMIN_API_METHOD_TYPES]\n /**\n * Payload data for the request.\n */\n data: Payload\n }\n}\n\n/**\n * Represents a request to show a toast notification.\n */\nexport interface AdminToastRequest {\n /**\n * Type of the toast notification.\n */\n type: 'info' | 'error' | 'warning' | 'success' | 'loading'\n /**\n * Message to be displayed in the toast.\n */\n message: string\n /**\n * Duration for which the toast should be displayed (optional).\n */\n duration?: number\n /**\n * Indicates if the toast can be closed manually (optional).\n */\n closable?: boolean\n /**\n * Indicates if the toast should remain visible when hovered over (optional).\n */\n keepAliveOnHover?: boolean\n /**\n * Indicates if an icon should be shown in the toast (optional).\n */\n showIcon?: boolean\n}\n\n/**\n * Represents a request to select content.\n */\nexport type AdminSelectContentRequest = {\n /**\n * List of selections to hydrate the picker with.\n */\n selections?: ContentSelectorSelection[]\n /**\n * Maximum number of selections allowed (optional).\n */\n max_selections?: number\n /**\n * Minimum number of selections allowed (optional).\n */\n min_selections?: number\n /**\n * Type of content to allow selection for (optional).\n * file: Files only\n * slide: Slides only\n * content: Files and slides\n * @default 'content'\n */\n content_type?: 'file' | 'slide' | 'content'\n /**\n * CSS style to apply to the picker (optional).\n */\n style?: Record<string, any>\n /**\n * Array of file ids to include in the picker (optional).\n */\n allowed_ids?: File['id'][]\n /**\n * Array of file extensions to scope out list of the results (optional). Only files with these extensions will be shown.\n */\n allowed_original_extensions?: string[]\n /**\n * Initial metadata filters to apply to the picker (optional).\n */\n initial_metadata_filters?: Record<string, any>\n /**\n * Array of selector types to include in the picker (optional).\n */\n allowed_selector_types?: SelectorType[]\n /**\n * Disables files from selection which are not sharable (optional).\n */\n disable_no_sharable?: boolean\n /**\n * Disables files from selection which do not have pptx_data in metadata object (optional).\n */\n disable_no_pptx_data?: boolean\n /**\n * Only allow content pdf pages (optional). User will be forced to select a page from the pdf.\n */\n only_allow_content_pdf_pages?: boolean\n}\n\n/**\n * Represents a response to a content selection request.\n */\nexport type AdminSelectContentResponse = {\n /**\n * Action taken by the user.\n */\n user_action: 'cancelled' | 'selected'\n /**\n * Selected content, if any.\n */\n content?: (ContentSelectorSelectedFile | ContentSelectorSelectedPage)[]\n}\n\nexport type AdminSelectCanvasesRequest = {\n /**\n * Array of selections.\n */\n selections?: CanvasSelection[]\n /**\n * Array of canvas types to include in the picker (optional).\n */\n allowed_types?: ('canvas' | 'canvas-template' | 'section' | 'section-template')[]\n /**\n * Array of canvas ids to include in the picker (optional).\n */\n allowed_ids?: Canvas['id'][]\n /**\n * Initial metadata filters to apply to the picker (optional).\n */\n initial_metadata_filters?: Record<string, any>\n /**\n * The sequencing key to use for ordering the canvases (optional).\n */\n sequencing_key?: string\n}\n\nexport type AdminSelectCanvasesResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected canvases */\n canvases?: Canvas[]\n}\n\n/**\n * Represents an admin response with a specific payload.\n * @template Response - The type of the response data.\n */\nexport type AdminResponse<Response = any> = {\n /**\n * Unique identifier for the response.\n */\n id: string\n /**\n * Type of the admin API response.\n */\n type: (typeof ADMIN_API_TYPES)['ADMIN_RESPONSE']\n /**\n * Body of the response containing the response data.\n */\n body: Response\n}\n\n/**\n * Represents an admin message with a specific payload.\n * @template Payload - The type of the message data.\n */\nexport type AdminMessage<Payload = any> = {\n /**\n * Unique identifier for the message.\n */\n id: string\n /**\n * Type of the admin message.\n */\n type: typeof ADMIN_MESSAGE\n /**\n * Body of the message containing the message type and payload data.\n */\n body: {\n /**\n * Type of the admin message.\n */\n type: (typeof ADMIN_MESSAGE_TYPES)[keyof typeof ADMIN_MESSAGE_TYPES]\n /**\n * Payload data for the message.\n */\n data: Payload\n }\n}\n\n/**\n * Represents the admin environment.\n */\nexport type AdminEnv = {\n /**\n * Pitcher environment settings.\n */\n mode?: PitcherEnv['mode']\n pitcher: PitcherEnv['pitcher']\n launch_darkly?: LaunchDarklyEnv\n client_type?: (typeof CLIENT_TYPE)[keyof typeof CLIENT_TYPE]\n crm_shape?: Record<string, any>\n state?: PitcherEnv['state']\n}\n\nexport type AdminOpenCollectionPlayerOverlayGroup = {\n id: string\n name: string\n slides?: Array<{\n file_id: string\n slide_index: number\n }>\n}\n\nexport type AdminOpenCollectionPlayerOverlayRequest = {\n groups: AdminOpenCollectionPlayerOverlayGroup[]\n name: string\n}\n\nexport type AdminSelectCollectionPlayerRequest = {\n initial_data?: CollectionSelectorProps['initialData']\n attach_to?: CollectionSelectorProps['attachTo']\n open_settings?: CollectionSelectorProps['openSettings']\n readonly_name?: CollectionSelectorProps['readonlyName']\n close_on_settings?: CollectionSelectorProps['closeOnSettings']\n translations?: CollectionSelectorProps['translations']\n initial_metadata_filters?: CollectionSelectorProps['initialMetadataFilters']\n hide_close?: CollectionSelectorProps['hideClose']\n}\n\nexport type AdminSelectCollectionPlayerResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected' | 'settings'\n /** Selected content */\n content?: CollectionPlayer\n}\n\nexport type AdminSelectAgendaRequest = {\n initial_agenda?: AgendaSelectorProps['initialAgenda']\n attach_to?: AgendaSelectorProps['attachTo']\n}\n\nexport type AdminSelectAgendaResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected content */\n content?: Agenda\n}\n","import { ADMIN_API_METHOD_TYPES, type AdminCaptureAppErrorRequest } from '@sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Send an app error to Pitcher sentry instance.\n *\n * @example\n * try {\n * throw new Error('This is an error')\n * } catch (error) {\n * useAdmin().captureAppError({\n * error,\n * message: 'This is an app error',\n * })\n * }\n *\n * @param payload error object to send to Pitcher sentry instance\n */\nexport async function captureAppError(payload: AdminCaptureAppErrorRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, ADMIN_API_METHOD_TYPES.CAPTURE_APP_ERROR, payload)\n}\n","import { omit } from 'lodash-es'\n\nimport { ADMIN_API_METHOD_TYPES, type AdminEnv } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n/**\n * Fetches the necessary info for the app to know where it is embedded.\n *\n * Check out [usePitcherApi().getEnv()](../internal/functions/createHighLevelApi.md#getenv) for more information.\n *\n * @example\n * adminApi.getEnv()\n */\nexport async function getEnv(): Promise<AdminEnv> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_ENV)\n const env = <AdminEnv>response.data\n return omit(env, 'pitcher.org_config.segment')\n}\n","import type { CanvasRetrieve, PatchedCanvasUpdateRequest, Instance, CanvasCreateRequest } from '@openapi'\nimport type { GetCanvasesParams } from '@lib/types/canvases'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type {\n AdminSelectCanvasesRequest,\n AdminSelectCanvasesResponse,\n AdminOpenCollectionPlayerOverlayRequest,\n} from '@lib/sdk/api/modules/admin/types.admin'\nimport { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Creates a new canvas.\n *\n * @example\n * adminApi.createCanvas({\n * name: 'my new canvas';\n * })\n */\nexport async function createCanvas(payload: CanvasCreateRequest): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.CREATE_CANVAS, payload)\n return <CanvasRetrieve>response.data\n}\n\n/**\n * Fetches a list of canvases to use in your app.\n *\n * @example\n * // The `filters` object is a reserved payload key to transfer the metadata dict over the wire.\n * adminApi.getCanvases({\n * search: 'my search query',\n * ordering: '-created_at',\n * filters: {\n * metadata__mydaterangefiltername__range: ['2023-12-10', '2023-12-22'],\n * metadata__mymultiselectfiltername: ['optionAValue', 'optionCValue'],\n * },\n * fields: 'id,name,metadata',\n * })\n */\nexport async function getCanvases(\n payload: GetCanvasesParams & { filters?: Record<string, any>; fields?: string },\n): Promise<PaginatedData<CanvasRetrieve>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_CANVASES, payload)\n return <PaginatedData<CanvasRetrieve>>response.data\n}\n\n/**\n * Fetches a canvas by id with the defined fields or all of them.\n *\n * @example\n * // The `filters` object is a reserved payload key to transfer the metadata dict over the wire.\n * adminApi.getCanvas({\n * fields: 'id,name,metadata',\n * })\n */\nexport async function getCanvas(payload: { id: CanvasRetrieve['id']; fields?: string }): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_CANVAS, payload)\n return <CanvasRetrieve>response.data\n}\n\n/**\n * Updates a canvas by ID and returns the defined fields or all of them.\n *\n * @example\n * // The fields param is appended to the URL as a query param.\n * onMounted(() => {\n * adminApi.updateCanvas({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * fields: 'id,name',\n * name: 'To 3!',\n * }).then((res) => {\n * console.log(res) // logs: { id: '01HH4RCBH631K4JDHWAQB0RPR6', name: 'To 3!' }\n * })\n * })\n */\nexport async function updateCanvas(\n payload: PatchedCanvasUpdateRequest & { id: CanvasRetrieve['id']; instance_id?: Instance['id']; fields?: string },\n): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n const r = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.UPDATE_CANVAS, payload)\n return <CanvasRetrieve>r.data\n}\n\n/**\n * Opens a modal to view a canvas by ID.\n *\n * ```\n * onMounted(() => {\n * adminApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * edit_mode: false,\n * fullscreen: true,\n * })\n * })\n * ```\n *\n * You can also specify a position for the canvas overlay:\n *\n * ```\n * adminApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * position: {\n * top: '10px',\n * left: '20px',\n * right: '20px',\n * bottom: '10px'\n * }\n * })\n * ```\n */\nexport async function openCanvasOverlay(payload: {\n id: CanvasRetrieve['id']\n edit_mode?: boolean\n fullscreen?: boolean\n component_id?: string\n section_id?: string\n position?: {\n left?: number | string\n right?: number | string\n top?: number | string\n bottom?: number | string\n }\n}): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.OPEN_CANVAS_OVERLAY, payload)\n}\n\n/**\n * Opens a modal to display collection player content.\n *\n * @example\n * adminApi.openCollectionPlayerOverlay({\n * name: 'My Collection',\n * groups: [\n * {\n * id: 'file-id-1',\n * name: 'Group 1',\n * },\n * {\n * id: 'group-2',\n * name: 'Group 2',\n * slides: [\n * { file_id: 'file-id-2', slide_index: 0 },\n * { file_id: 'file-id-3', slide_index: 1 },\n * ],\n * },\n * ],\n * })\n */\nexport async function openCollectionPlayerOverlay(payload: AdminOpenCollectionPlayerOverlayRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.OPEN_COLLECTION_PLAYER_OVERLAY, payload)\n}\n\n/**\n * Allows the user to select (and preselect) canvases from the instance.\n *\n * This method allows you to prompt the user to select canvases from the CatalogIQ\n * instance and use that canvas selection in your application.\n *\n * @example\n * const api = useApi() // or useAdmin() if you know that you 're in Admin context\n * api\n * .selectCanvases({\n * allowed_types: ['canvas','canvas-template','section','section-template'] // default ['canvas']\n * selections: [\n * { id: \"01HCZ623YYRFJQ0F7B69VWE510\" },\n * { id: \"02HCZ623YYRFJQ0F7B69VWE510\" },\n * ], // default []\n * })\n *\n * @param payload optional payload to preselect specific canvases\n * @returns Promise with the user action and selected canvases\n */\nexport async function selectCanvases(payload: AdminSelectCanvasesRequest = {}): Promise<AdminSelectCanvasesResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_CANVASES, payload)\n return <AdminSelectCanvasesResponse>response.data\n}\n","import type { PaginatedMetadataTemplateList } from '@openapi'\nimport type { GetInstanceMetadataTemplatesPayload } from '@sdk/payload.types'\nimport { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Fetches a list of metadata templates to use in your app. Instance is auto-injected by admin app if in instance scope.\n *\n * @example\n * adminApi.getInstanceMetadataTemplates()\n **/\nexport async function getInstanceMetadataTemplates(\n payload?: GetInstanceMetadataTemplatesPayload,\n): Promise<PaginatedMetadataTemplateList> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_INSTANCE_METADATA_TEMPLATES, payload)\n return <PaginatedMetadataTemplateList>response.data\n}\n","import { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type { File, PaginatedFileList } from '@openapi'\n\n/**\n * Get the metadata object of an app with a given name.\n *\n * @param {object} payload - The payload object.\n * @param {string} payload.app_name - `name` value from `app.json` of the app you want to get the metadata of.\n *\n * @example\n * useAdmin().getAppConfig({ app_name: 'my-app' })\n */\nexport async function getAppConfig(payload: { app_name: string }): Promise<Record<string, any>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_APP_CONFIG, payload)\n return <Record<string, any>>response.data\n}\n\n/**\n * Fetches a file by ID.\n *\n * @example\n * adminApi.getFile({ id: 'my-file-id' })\n */\nexport async function getFile(payload: { id: File['id'] }): Promise<File> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_FILE, payload)\n return response.data as File\n}\n\n/**\n * Lists available files.\n *\n * @example\n * adminApi.getFiles()\n */\nexport async function getFiles(payload: Record<string, any>): Promise<PaginatedFileList> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_FILES, payload)\n return response.data as PaginatedFileList\n}\n\n/**\n * Opens a file by id.\n *\n * @example\n * adminApi.open({ id: 'my-file-id' })\n */\nexport async function open(payload: { id: File['id'] }): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.OPEN, payload)\n}\n\n/**\n * Closes the already open file that was opened via api or by the user.\n *\n * @example\n * adminApi.close()\n */\nexport async function close(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.CLOSE)\n}\n","import type {\n AdminSelectAgendaRequest,\n AdminSelectAgendaResponse,\n AdminSelectCollectionPlayerRequest,\n AdminSelectCollectionPlayerResponse,\n AdminSelectContentRequest,\n AdminSelectContentResponse,\n} from '@sdk/api/modules/admin/types.admin'\nimport { ADMIN_API_METHOD_TYPES } from '@sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@sdk/utils/postrobot'\n\n/**\n * Opens the collection player selector modal to allow the user to select collection player content and handle the outcome.\n * ```\n * const api = useApi() // or useAdmin() if you know that you 're in Admin context\n *\n * adminApi.selectCollectionContent({\n * // optional payload\n * initial_data: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectCollectionContent(\n payload: AdminSelectCollectionPlayerRequest = {},\n): Promise<AdminSelectCollectionPlayerResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_COLLECTION_PLAYER_CONTENT, payload)\n\n return <AdminSelectCollectionPlayerResponse>response.data\n}\n\n/**\n * Opens the agenda selector modal to allow the user to select agenda content and handle the outcome.\n * ```\n * const api = useApi() // or useAdmin() if you know that you 're in Admin context\n *\n * adminApi.selectAgendaContent({\n * // optional payload\n * initial_agenda: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectAgendaContent(payload: AdminSelectAgendaRequest = {}): Promise<AdminSelectAgendaResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_AGENDA_CONTENT, payload)\n\n return <AdminSelectAgendaResponse>response.data\n}\n\n/**\n * Opens a selector that allows you to select (and preselect) from your Pitcher uploaded content.\n *\n * @example\n * const api = useApi() // or useAdmin() if you know that you 're in Admin app context\n * api\n * .select_content({\n * selections: [\n * { fileId: \"01HCZ623YYRFJQ0F7B69VWE510\", type: \"file\" },\n * {\n * fileId: \"01HD3XGZ5FN90QJGK7CH8TBZDF\",\n * type: \"page\",\n * pageIndex: 2,\n * },\n * ],\n * })\n */\nexport async function selectContent(payload: AdminSelectContentRequest): Promise<AdminSelectContentResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_CONTENT, payload)\n return response.data as AdminSelectContentResponse\n}\n","import type { GetUsersParams } from '@lib/types/users'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type { User } from '@openapi'\nimport { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Fetches a list of users from the admin API.\n *\n * @param payload - Optional parameters for filtering users\n * @returns Promise resolving to a paginated list of users\n *\n * @example\n * const adminApi = useAdmin()\n * const users = await adminApi.getUsers({ page_size: 100 })\n */\nexport async function getUsers(payload?: GetUsersParams): Promise<PaginatedData<User>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_USERS, payload)\n return response.data as PaginatedData<User>\n}\n","import {\n ADMIN_API_METHOD_TYPES,\n type AdminToastRequest,\n type ADMIN_MESSAGE_TYPES,\n type AdminMessagePayloads,\n} from './types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport * as appErrorsAdmin from './app-errors.admin'\nimport * as envAdmin from './env.admin'\nimport * as canvasAdmin from './canvas.admin'\nimport * as metadataTemplatesAdmin from './metadataTemplates.admin'\nimport * as filesAdmin from './files.admin'\nimport * as contentAdmin from './content.admin'\nimport * as usersAdmin from './users.admin'\n/**\n * Subscribe to a given event type by its key.\n *\n * @param type The event type/key to subscribe to.\n * @param handler The handler function to call when the event is emitted.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\n\nasync function on(\n type: (typeof ADMIN_MESSAGE_TYPES)[keyof typeof ADMIN_MESSAGE_TYPES],\n handler: (data: AdminMessagePayloads[typeof type]) => Promise<void>,\n) {\n const pr = await usePostRobot()\n const listener = pr.on(type, (e) => handler(e.data))\n\n // return the cleanup function\n return listener.cancel\n}\n\n/**\n * Show a toast message to the user. Compatible with the UI API version of this method.\n *\n * @example\n * useAdmin().toast({ type: 'info', message: 'Hello, world!' })\n */\nasync function toast(payload: AdminToastRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.TOAST, payload)\n}\n\nexport default {\n on,\n toast,\n ...appErrorsAdmin,\n ...contentAdmin,\n ...envAdmin,\n ...canvasAdmin,\n ...metadataTemplatesAdmin,\n ...filesAdmin,\n ...usersAdmin,\n}\n","import type { PitcherEnv } from '@sdk/interfaces'\n\nexport const DSR_MESSAGE = 'DSR_MESSAGE' as const\n\nexport const DSR_MESSAGE_TYPES = {\n ENV_CHANGED: 'dsr_env_changed',\n} as const\n\nexport const DSR_API_TYPES = {\n DSR_REQUEST: 'DSR_REQUEST',\n DSR_RESPONSE: 'DSR_RESPONSE',\n} as const\n\nexport const DSR_API_METHOD_TYPES = {\n GET_ENV: 'dsr_get_env',\n GET_FILE: 'dsr_get_file',\n GET_APP_CONFIG: 'dsr_get_app_config',\n CLOSE: 'dsr_close',\n DSR_EMBEDDABLE_READY: 'dsr_embeddable_ready',\n} as const\n\nexport type DsrMessagePayloads = {\n [DSR_MESSAGE_TYPES.ENV_CHANGED]: DsrEnv\n}\n\nexport type DsrRequest<Payload = any> = {\n id: string\n type: (typeof DSR_API_TYPES)['DSR_REQUEST']\n body: {\n type: (typeof DSR_API_METHOD_TYPES)[keyof typeof DSR_API_METHOD_TYPES]\n data: Payload\n }\n}\n\nexport type DsrResponse<Response = any> = {\n id: string\n type: (typeof DSR_API_TYPES)['DSR_RESPONSE']\n body: Response\n}\n\nexport type DsrMessage<Payload = any> = {\n id: string\n type: typeof DSR_MESSAGE\n body: {\n type: (typeof DSR_MESSAGE_TYPES)[keyof typeof DSR_MESSAGE_TYPES]\n data: Payload\n }\n}\n\n// TODO: Request / message payloads to the dsr via embeddable's iframe\n\n// Responses / message payloads from the dsr\nexport type DsrEnv = Pick<PitcherEnv, 'mode' | 'launch_darkly' | 'client_type' | 'state'> & {\n pitcher?: {\n access_token?: string\n }\n}\n","import { omit } from 'lodash-es'\n\nimport { DSR_API_METHOD_TYPES, type DsrEnv } from '@lib/sdk/api/modules/dsr/types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Fetches the necessary info for the app to know where it is embedded.\n *\n * Check out [usePitcherApi().getEnv()](../internal/functions/createHighLevelApi.md#getenv) for more information.\n *\n * @example\n * useDsr().getEnv()\n */\nexport async function getEnv(): Promise<DsrEnv> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, DSR_API_METHOD_TYPES.GET_ENV)\n const env = <DsrEnv>response.data\n return omit(env, 'pitcher.org_config.segment')\n}\n","import { DSR_API_METHOD_TYPES } from '@sdk/api/modules/dsr/types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Signal to DSR that the app is ready to be shown.\n *\n * @example\n * useDsr().embeddableReady()\n */\nexport async function embeddableReady(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, DSR_API_METHOD_TYPES.DSR_EMBEDDABLE_READY)\n}\n","import { DSR_API_METHOD_TYPES } from '@lib/sdk/api/modules/dsr/types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type { File } from '@openapi'\n/**\n * Closes the already open file that was opened via api or by the user.\n *\n * @example\n * dsrApi.close()\n */\nexport async function close(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, DSR_API_METHOD_TYPES.CLOSE)\n}\n\n/**\n * Fetches a file by ID.\n *\n * @example\n * dsrApi.getFile({ id: 'my-file-id' })\n */\nexport async function getFile(payload: { id: File['id'] }): Promise<File> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, DSR_API_METHOD_TYPES.GET_FILE, payload)\n return response.data as File\n}\n\n/**\n * Retrieves the configuration for the calling app.\n * App name can be optionally provided, otherwise it will be derived from the caller's URL.\n *\n * @example\n * dsrApi.getAppConfig() // for self config\n * // or with explicit app name\n * dsrApi.getAppConfig({ app_name: 'my-app' })\n */\nexport async function getAppConfig(payload?: { app_name?: string }): Promise<Record<string, any>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, DSR_API_METHOD_TYPES.GET_APP_CONFIG, payload ?? {})\n return response.data as Record<string, any>\n}\n","import type { DSR_MESSAGE_TYPES, DsrMessagePayloads } from './types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport * as envDsr from './env.dsr'\nimport * as loadingDsr from './loading.dsr'\nimport * as filesDsr from './files.dsr'\n\n/**\n * Subscribe to a given event type by its key.\n *\n * @param type The event type/key to subscribe to.\n * @param handler The handler function to call when the event is emitted.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nasync function on(\n type: (typeof DSR_MESSAGE_TYPES)[keyof typeof DSR_MESSAGE_TYPES],\n handler: (data: DsrMessagePayloads[typeof type]) => Promise<void>,\n) {\n const pr = await usePostRobot()\n const listener = pr.on(type, (e) => handler(e.data))\n\n // return the cleanup function\n return listener.cancel\n}\n\nexport default {\n on,\n ...envDsr,\n ...loadingDsr,\n ...filesDsr,\n}\n","export const PEER_CONNECTIVITY_EVENT = 'peer_connectivity_event'\n\nexport const PeerConnectivityActions = {\n CANVAS_PAGE_NEXT: 'canvas.navigate.next',\n CANVAS_PAGE_PREVIOUS: 'canvas.navigate.previous',\n CANVAS_OPEN: 'canvas.open',\n CANVAS_CLOSE: 'canvas.close',\n ROUTE_CHANGE: 'route.change',\n FILE_OPEN: 'file.open',\n FILE_CLOSE: 'file.close',\n BROWSER_FOLDER_OPEN: 'browser.folder.open',\n} as const\n\nexport const DEFAULT_PEER_CONNECTIVITY_VERSION = 1\nexport const PEER_CONNECTIVITY_HANDLER_MATCH_ALL = '*'\n","import { PitcherEventName, usePitcherApi } from '@sdk/main'\n\nimport { DEFAULT_PEER_CONNECTIVITY_VERSION, PEER_CONNECTIVITY_HANDLER_MATCH_ALL } from './peerConnectivity.constants'\nimport type {\n PeerConnectivityDispatchOptions,\n PeerConnectivityEvent,\n PeerConnectivityEventHandler,\n PeerConnectivityEventPayload,\n} from './peerConnectivity.types'\n\ntype HandlerMap = Map<string, Set<PeerConnectivityEventHandler>>\n\nconst handlers: HandlerMap = new Map()\nlet unsubscribeNativeListener: (() => void) | null = null\nlet peerConnectivitySupportPromise: Promise<boolean> | null = null\n\nfunction generateCorrelationId(): string {\n const cryptoApi = globalThis.crypto\n if (cryptoApi?.randomUUID) {\n return cryptoApi.randomUUID()\n }\n return `peer-${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`\n}\n\nfunction normalizeEventPayload(\n payload: PeerConnectivityEventPayload,\n defaults?: Partial<PeerConnectivityEvent>,\n): PeerConnectivityEvent {\n const metadata = payload.metadata ?? {}\n const normalized: PeerConnectivityEvent = {\n version: payload.version ?? defaults?.version ?? DEFAULT_PEER_CONNECTIVITY_VERSION,\n action: payload.action,\n context: payload.context ?? defaults?.context,\n data: payload.data ?? defaults?.data,\n metadata: {\n correlationId: metadata.correlationId ?? defaults?.metadata?.correlationId ?? generateCorrelationId(),\n source: metadata.source ?? defaults?.metadata?.source ?? 'web',\n timestamp: metadata.timestamp ?? defaults?.metadata?.timestamp ?? Date.now(),\n extras: {\n ...(defaults?.metadata?.extras ?? {}),\n ...(metadata.extras ?? {}),\n },\n },\n }\n\n return normalized\n}\n\nfunction addHandler(action: string, handler: PeerConnectivityEventHandler) {\n const key = action || PEER_CONNECTIVITY_HANDLER_MATCH_ALL\n const handlerSet = handlers.get(key) ?? new Set<PeerConnectivityEventHandler>()\n handlerSet.add(handler)\n handlers.set(key, handlerSet)\n}\n\nfunction removeHandler(action: string, handler: PeerConnectivityEventHandler) {\n const handlerSet = handlers.get(action)\n if (!handlerSet) {\n return\n }\n handlerSet.delete(handler)\n if (!handlerSet.size) {\n handlers.delete(action)\n }\n if (!handlers.size) {\n teardownNativeListener()\n }\n}\n\nasync function ensureNativeListener() {\n if (unsubscribeNativeListener) {\n return\n }\n\n const api = usePitcherApi()\n const listener = (event: PeerConnectivityEventPayload) => {\n try {\n const normalized = normalizeEventPayload(event, {\n metadata: {\n correlationId: generateCorrelationId(),\n source: 'native',\n timestamp: Date.now(),\n extras: {},\n },\n })\n dispatchEvent(normalized)\n } catch (error) {\n console.error('[peer-connectivity] Failed to handle native event:', error)\n }\n }\n\n api.on(PitcherEventName.PEER_CONNECTIVITY_EVENT, listener as any)\n unsubscribeNativeListener = () => {\n api.off(PitcherEventName.PEER_CONNECTIVITY_EVENT, listener as any)\n unsubscribeNativeListener = null\n }\n}\n\nfunction teardownNativeListener() {\n if (unsubscribeNativeListener) {\n unsubscribeNativeListener()\n unsubscribeNativeListener = null\n }\n}\n\nfunction dispatchEvent(event: PeerConnectivityEvent) {\n const specificHandlers = handlers.get(event.action)\n const wildcardHandlers = handlers.get(PEER_CONNECTIVITY_HANDLER_MATCH_ALL)\n\n if (!specificHandlers && !wildcardHandlers) {\n return\n }\n\n const payload = Object.freeze(event)\n specificHandlers?.forEach((handler) => {\n try {\n handler(payload)\n } catch (error) {\n console.error(`[peer-connectivity] Handler error for action \"${event.action}\":`, error)\n }\n })\n wildcardHandlers?.forEach((handler) => {\n try {\n handler(payload)\n } catch (error) {\n console.error('[peer-connectivity] Handler error for wildcard action:', error)\n }\n })\n}\n\nasync function isPeerConnectivitySupported(): Promise<boolean> {\n if (!peerConnectivitySupportPromise) {\n const api = usePitcherApi()\n peerConnectivitySupportPromise = api\n .getEnv()\n .then((env) => env.mode === 'IOS')\n .catch((error) => {\n console.error('[peer-connectivity] Failed to determine environment support:', error)\n return false\n })\n }\n\n return peerConnectivitySupportPromise\n}\n\nfunction normalizeActions(actionOrActions: string | string[]): string[] {\n return Array.isArray(actionOrActions) ? actionOrActions : [actionOrActions]\n}\n\nexport function registerPeerConnectivityHandler(\n actionOrActions: string | string[],\n handler: PeerConnectivityEventHandler,\n): () => void {\n normalizeActions(actionOrActions).forEach((action) => {\n addHandler(action, handler)\n })\n\n ensureNativeListener().catch((error) => {\n console.error('[peer-connectivity] Failed to register native listener:', error)\n })\n\n return () => {\n normalizeActions(actionOrActions).forEach((action) => {\n removeHandler(action, handler)\n })\n }\n}\n\nexport async function sendPeerConnectivityEvent(\n payload: PeerConnectivityEventPayload,\n options?: PeerConnectivityDispatchOptions,\n): Promise<void> {\n if (!payload?.action) {\n console.warn('[peer-connectivity] Attempted to send an event without action')\n return\n }\n\n if (options?.isFeatureEnabled === false) {\n return\n }\n\n const isSupported = await isPeerConnectivitySupported()\n if (!isSupported) {\n return\n }\n\n const api = usePitcherApi()\n const normalizedPayload = normalizeEventPayload(payload, {\n metadata: {\n correlationId: generateCorrelationId(),\n source: 'web',\n timestamp: Date.now(),\n extras: {},\n },\n })\n\n try {\n await api.broadcast({\n type: PitcherEventName.PEER_CONNECTIVITY_EVENT,\n body: normalizedPayload,\n })\n } catch (error) {\n console.error('[peer-connectivity] Failed to send event:', error)\n }\n}\n","import { isEqual, snakeCase } from 'lodash-es'\n\nimport type { ApiOptions } from './interfaces'\nimport { createHighLevelApi } from '@sdk/api/HighLevelApi'\nimport ui from '@sdk/api/modules/ui'\nimport admin from '@sdk/api/modules/admin'\nimport dsr from '@sdk/api/modules/dsr'\n\nexport * from '@sdk/interfaces'\nexport * from '@sdk/payload.types'\nexport * from '@sdk/api/modules/ui/types.ui'\nexport * from '@sdk/api/modules/admin/types.admin'\nexport * from '@sdk/api/modules/dsr/types.dsr'\nexport * from '@sdk/peer-connectivity'\n\nexport let highLevelApi: ReturnType<typeof createHighLevelApi>\n\nlet prevOptions: ApiOptions | undefined\n\n/**\n * Check out the returned object documentation for the list of available methods.\n */\nexport function usePitcherApi(options?: ApiOptions): ReturnType<typeof createHighLevelApi> {\n if (!highLevelApi || !isEqual(options, prevOptions)) {\n highLevelApi = createHighLevelApi(options)\n prevOptions = options\n }\n\n return highLevelApi\n}\n\nfunction enhanceWithSnakeCase<T extends Record<string, any>>(api: T): T {\n Object.entries(api).forEach(([key, value]) => {\n const newKey = snakeCase(key)\n if (newKey && !api[newKey]) {\n ;(api as any)[newKey] = value\n }\n })\n return api\n}\n\nconst uiApi = enhanceWithSnakeCase(ui)\nconst adminApi = enhanceWithSnakeCase(admin)\nconst dsrApi = enhanceWithSnakeCase(dsr)\n\n/**\n * API methods available in the CatalogIQ default UI.\n *\n * You can store the API object in a variable and call the methods directly.\n *\n * Most methods have a `snake_case` and `camelCase` version of their name available.\n *\n * ```ts\n * const uiApi = useUi()\n * ```\n *\n * @returns UI API object with methods described below.\n */\nexport function useUi() {\n return uiApi\n}\n\n/**\n * API methods available in the CatalogIQ Admin.\n *\n * You can store the API object in a variable and call the methods directly.\n *\n * Most methods have a `snake_case` and `camelCase` version of their name available.\n *\n * ```ts\n * import { useAdmin } from '@pitcher/js-api'\n *\n * const adminApi = useAdmin()\n * ```\n */\nexport function useAdmin() {\n return adminApi\n}\n\n/**\n * API methods available in the CatalogIQ default UI.\n *\n * You can store the API object in a variable and call the methods directly.\n *\n * Most methods have a `snake_case` and `camelCase` version of their name available.\n *\n * ```ts\n * import { useDsr } from '@pitcher/js-api'\n *\n * const dsrApi = useDsr()\n * ```\n */\nexport function useDsr() {\n return dsrApi\n}\n\nexport type JsApiLocation = 'ui' | 'admin' | 'dsr' | 'impact'\n\nexport function getAvailableApis(): JsApiLocation[] {\n if (typeof window === 'undefined') throw new Error('getAvailableApis: window is not defined')\n const location = window.parent.jsApiLocation\n return location === 'ui' ? ['ui', 'impact'] : [location ?? 'impact']\n}\n\n/**\n * This method returns an object containing the API methods that are available to you in a given environment, whether that be the Canvas, UI, Admin or DSR.\n *\n * - CatalogIQ UI - the method will return an object containing methods available in both `usePitcherApi` and `useUi`\n * - CatalogIQ DSR - the method will return the same result as `useDsr`\n * - CatalogIQ Admin - the method will return the same result as `useAdmin`\n *\n * ```ts\n * import { useApi } from '@pitcher/js-api'\n *\n * const api = useApi()\n * ```\n */\nexport function useApi(options?: ApiOptions) {\n if (typeof window === 'undefined') throw new Error('useApi: window is not defined')\n const location = window.parent.jsApiLocation\n switch (location) {\n case 'ui':\n return { ...usePitcherApi(), ...useUi(), ui: useUi(), impact: usePitcherApi() } // merge, but also expose as separate keys to avoid collisions\n case 'admin':\n return useAdmin()\n case 'dsr':\n return { ...useDsr(), broadcast: usePitcherApi().broadcast }\n case 'impact':\n return usePitcherApi(options) // first level (slotty and custom UIs)\n default:\n return usePitcherApi(options)\n }\n}\n","import pr from 'post-robot'\nwindow.postRobot = pr\nexport * from './main'\n"],"names":["root","factory","module","this","modules","installedModules","__webpack_require__","moduleId","exports","name","getter","value","mode","ns","key","object","property","__webpack_exports__","promise_ZalgoPromise","src_types_TYPES_0","window_ProxyWindow","setup","destroy","setup_serializeMessage","setup_deserializeMessage","createProxyWindow","setup_toProxyWindow","on_on","on_once","send_send","markWindowKnown","cleanUpWindow","isRegex","item","IE_WIN_ACCESS_ERROR","getActualProtocol","win","getProtocol","protocol","isAboutProtocol","getParent","getOpener","canReadFromWindow","getActualDomain","location","parent","host","getDomain","domain","isSameDomain","desc","assertSameDomain","isAncestorParent","child","childParent","result","getFrames","frames","len","i","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","err","iframeIndex","collection","doc","getAncestor","matchDomain","pattern","origin","subpattern","isWindow","obj","getFrameForWindow","_i21","_document$querySelect2","closeWindow","utils_isPromise","_toString","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","startActive","endActive","ZalgoPromise","handler","_this","_result","_error","resolved","rejected","isAsync","res","_proto","error","_this2","_err","j","handlers","chain","firstPromise","secondPromise","_handlers$i","onSuccess","onError","_result2","promiseResult","onFinally","time","_this3","timeout","resolve","reject","promises","count","results","prom","awaitPromises","_loop","items","method","context","args","_delay","Zalgo","util_safeIndexOf","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","testWeakMap","testKey","weakmap","keys","entry","values","index","getFunctionName","fn","setFunctionName","uniqueID","chars","str","m","p1","objectIDs","serializeArgs","subkey","val","uid","getEmptyObject","memoizeGlobalIndex","memoizeGlobalIndexValidFrom","memoize","options","_options$thisNamespac","thisNamespace","cacheTime","simpleCache","thisCache","memoizeIndex","memoizedFunction","_len","_key","cache","cacheKey","cacheResult","memoizePromise","memoizedPromiseFunction","_arguments","_len2","_key2","src_util_noop","stringifyError","level","stack","message","newErr","stringify","util_isRegex","util_getOrSet","getBody","body","isDocumentReady","isDocumentInteractive","interval","currentScript","getCurrentScript","stackDetails","scriptLocation","_i22","_Array$prototype$slic2","script","currentUID","hashedString","hash","total","global_getGlobal","globalKey","getObj","globalStore","defStore","store","storeKey","defVal","WildCard","getWildcard","global","windowStore","winStore","getStore","getInstanceID","resolveHelloPromise","_ref","helloPromises","existingPromise","newPromise","sayHello","_ref4","_ref5","instanceID","getWindowInstanceID","_ref6","send","_ref7","isSerializedType","determineType","serializeType","type","_SERIALIZER","SERIALIZER","defaultSerializers","_DESERIALIZER","DESERIALIZER","_ref2","code","data","defaultDeserializers","cleanupProxyWindows","idToProxyWindow","_i2","_idToProxyWindow$keys2","id","getSerializedWindow","winPromise","_ref$id","windowNamePromise","windowTypePromise","window","getName","href","opts","_opts$method","_ref3","url","target","_ref3$method","form","_i24","_Object$keys4","_body$key","input","sameDomain","ProxyWindow","serializedWindow","_this4","isPopupPromise","getNamePromise","reopenPromise","focusPromise","_this5","match","_ref8","_ref9","actualWindow","addMethod","source","methodStore","proxyWindowMethods","lookupMethod","function_serializeFunction","destination","on","meth","methodSource","arg","serializeMessage","_serialize","serializers","serializer","deserializeMessage","_deserialize","deserializers","deserializer","serializedPromise","serializedFunction","getDeserializedFunction","crossDomainFunctionWrapper","_args","SEND_MESSAGE_STRATEGIES","serializedMessage","send_sendMessage","domainBuffer","strategies","errors","strategyName","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","requestListeners","_i4","winQualifier","nameListeners","domainListeners","_i6","_domainListeners$__DO2","_domainListeners$__DO3","listener","handleRequest","logName","sendResponse","ack","handleAck","handleResponse","receive_receiveMessage","event","receivedMessages","messages","parsedMessage","parseMessages","requestListener","addRequestListener","winCandidate","requestListenerPromise","actualWin","listenersCollection","_i8","_win2","_i10","_listenersCollection","_i12","_domain2","_i14","existingListener","strDomain","winNameListeners","winNameDomainListeners","winNameDomainRegexListeners","winNameDomainRegexListener","winOrProxyWin","domainMatcher","responseTimeout","childTimeout","fireAndForget","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","_i15","_getFrames8","_temp","targetDomain","actualDomain","normalizedDomain","responseListener","reqPromises","totalAckTimeout","totalResTimeout","ackTimeout","resTimeout","loop","responseListeners","_responseListeners$ke2","_requestPromises$get2","require$$0","freeGlobal","freeSelf","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","length","isArray","symbolProto","symbolToString","baseToString","isObject","identity","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","getValue","getNative","WeakMap","objectCreate","baseCreate","proto","apply","thisArg","copyArray","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","lastCalled","stamp","remaining","constant","defineProperty","baseSetToString","string","setToString","arrayEach","MAX_SAFE_INTEGER","reIsUint","isIndex","baseAssignValue","eq","other","assignValue","objValue","copyObject","props","customizer","isNew","newValue","nativeMax","overRest","start","transform","otherArgs","baseRest","isLength","isArrayLike","isIterateeCall","createAssigner","assigner","sources","guard","isPrototype","Ctor","baseTimes","n","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","nativeKeys","baseKeys","nativeKeysIn","baseKeysIn","isProto","keysIn","reIsDeepProp","reIsPlainProp","isKey","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","entries","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","size","MapCache","FUNC_ERROR_TEXT","resolver","memoized","MAX_MEMOIZE_SIZE","memoizeCapped","rePropName","reEscapeChar","stringToPath","number","quote","subString","toString","castPath","toKey","baseGet","path","get","defaultValue","arrayPush","offset","spreadableSymbol","isFlattenable","baseFlatten","depth","predicate","isStrict","flatten","flatRest","getPrototype","objectCtorString","isPlainObject","baseSlice","end","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","stringToArray","createCaseFirst","methodName","strSymbols","chr","trailing","upperFirst","capitalize","arrayReduce","accumulator","initAccum","basePropertyOf","deburredLetters","deburrLetter","reLatin","reComboMark","deburr","reAsciiWord","asciiWords","reHasUnicodeWord","hasUnicodeWord","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","words","reApos","createCompounder","callback","camelCase","word","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","baseAssign","baseAssignIn","allocUnsafe","cloneBuffer","buffer","isDeep","arrayFilter","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","copySymbols","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","Promise","Set","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","initCloneArray","Uint8Array","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","reFlags","cloneRegExp","regexp","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","stacked","subValue","cloneDeep","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","set","equalByTag","convert","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","matchData","srcValue","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseHasIn","hasPath","hasFunc","hasIn","baseMatchesProperty","baseProperty","basePropertyDeep","baseIteratee","createBaseFor","fromRight","iterable","baseFor","assignMergeValue","isArrayLikeObject","safeGet","toPlainObject","baseMergeDeep","srcIndex","mergeFunc","isCommon","isTyped","baseMerge","last","isEqual","merge","baseUnset","customOmitClone","omit","paths","baseSet","nested","basePickBy","pickBy","prop","snakeCase","resolvePiaSearchMode","config","PIA_SEARCH_ROUTE","CAPABILITIES_TIMEOUT_MS","ON_DEVICE_MAX_TOKENS","ONLINE_TIMEOUT_MS","WEB_CAPABILITIES","withTimeout","ms","label","timer","normalizeOrigin","apiOriginFromEnv","env","claimDomain","orgDomain","buildOnDevicePrompt","query","contextText","aiGetCapabilities","highLevelApi","aiComplete","payload","piaSearchAnswer","instanceId","controller","response","output","open","openExternalUrl","getEnv","updateMyUser","isOffline","getLanguages","getCanvases","createCanvas","deleteCanvas","updateCanvas","shouldDebug","updateCanvasIndicators","getCanvas","getSectionsByIds","shareCanvas","getCanvasRecommendedFiles","getCanvasTheme","unassignCanvasTheme","getFiles","p","downloadFile","getAppConfig","fileId","file","getFile","file_id","getFileRevisionData","updateFile","deleteFile","createFile","selectDeviceFile","deleteLocalFile","getFileRevisions","search","getUsers","refreshServiceToken","refreshAccessToken","fetchDocumentInfo","renderPageAsImage","toast","SQL_KEYWORDS","AGGREGATE_FUNCTIONS","isSqlKeyword","isLiteralValue","trimmed","isDateTimeLiteral","token","convertFieldToSmartStore","field","primaryObject","objectAliases","parts","alias","fieldPath","convertAggregateFunction","expr","regex","_match","innerField","trimmedInner","fieldPart","smartField","parseSelectFields","selectClause","fields","currentField","char","convertSelectFields","aliasMatch","expression","converted","convertNullComparisons","clause","convertWhereClause","whereClause","identifier","parseOrderByClause","orderByClause","part","direction","convertOrderByFields","orderByParts","hasAggregate","convertedField","parseGroupByClause","groupByClause","f","convertGroupByFields","inner","parseFromClause","fromClause","joins","primaryMatch","primary","joinRegex","joinMatch","removeSubqueries","subqueries","cleanQuery","currentSubquery","inSubquery","findMainFromClause","fromMatch","convertSoqlToSmartQuery","soqlQuery","normalizedQuery","selectMatch","fromParsed","whereMatch","groupByMatch","havingMatch","orderByMatch","limitMatch","offsetMatch","selectFields","smartSelectFields","whereConditions","smartWhere","groupByFields","smartGroupBy","smartHaving","smartOrderBy","crmQuery","extractFieldsFromSoql","extractObjectFromSoql","setNestedProperty","current","isAllFieldsSelector","transformSmartStoreResults","smartStoreResults","objectName","row","record","recordId","crmQueryAdaptive","useSmartStore","isIos","isSfdcSyncEnabled","smartQuery","filter","_","conditions","rest","crmSmartQuery","records","crmSmartObjectMetadata","crmSmartUpsertObjects","crmSmartObjectValidationRules","crmSmartObjectLayout","crmSmartDeleteObjects","crmCreate","crmUpsert","crmDescribe","crmLayout","getFolders","getFolder","createFolder","updateFolder","deleteFolder","moveFolderItems","getCoreFolders","patchCoreFolder","notify","track","getInstanceMetadataTemplates","triggerNonFilesSync","submitUserFeedback","close","openWebViewAlwaysOnTop","showSyncbox","share","showPeerSession","getThemes","assignCanvasTheme","EventEmitter","eventName","byteToHex","unsafeStringify","arr","rnds8","rng","v4","buf","_v4","rnds","PITCHER_EVENT","PitcherMessageType","PitcherResponseStatus","PitcherEventName","PitcherBroadcastedEventName","PitcherExternalEventName","AssertionError","assert","exp","defaultSkipKeys","defaultSkipObjectKeys","shouldSkipObjectKey","skipObjectKeys","camelCaseKeys","skipKeys","v","skip","newKey","snakeCaseKeys","truncateObject","currentDepth","lengthTrigger","acc","isOriginValid","allowedOrigins","isDev","validOrigins","isValid","MAX_RETRIES","BASE_DELAY","refreshPromise","refreshToken","accessTokenResponse","setEnv","paramsSerializer","params","searchParams","addParam","subKey","fetchWithRetry","remainingRetries","newToken","delay","errorData","createHttpClient","headers","apiPath","baseCommon","endpoint","absoluteUrl","normalizeNetworkFilterParams","http","check","pickNonNullish","newCustomDomain","shouldRefreshHttpClient","onlineRestApiHandlers","api_base_url","filters","restParams","canvasData","fieldsQs","link","e","canvas_id","collaboration_id","getTopPitcherWindow","TRUNCATE_LENGTH_TRIGGER","RAW_PAYLOAD_METHODS","updateOnlineHandlersEnv","LowLevelApi","fetchMode","uuid","shouldSkipSnakeCase","targetWindow","createHighLevelApi","API","eventEmitter","usePostRobot","UI_MESSAGE","UI_API_METHOD_TYPES","UI_MESSAGE_TYPES","UI_NATIVE_MESSAGE_TYPES","ui_select_content","pr","selectContent","preselectSfdcMeetingId","selectCollectionContent","selectAgendaContent","openGlobalPopup","appName","extraContext","closeGlobalPopup","embeddableReady","updateLocation","captureAppError","printCanvas","appLoaded","appResize","closeCanvasSectionExecution","closeCanvasDrawer","canvasNavigateNextPage","canvasNavigatePreviousPage","canvasNavigatePage","openCanvasOverlay","openCollectionPlayerOverlay","selectCanvases","completePostcall","cancelMeeting","resumeMeeting","stopMeeting","enablePostcallSubmit","disablePostcallSubmit","setPostcallStyle","promptPia","openSharingSettings","onNative","messageListener","onPostRobot","onMeetingCanceled","onCanvasUpdated","onSectionListUpdated","onAppSetData","onAppUpdateData","uiBroadcast","ui","contentUi","loadingUi","locationUi","appErrorsUi","canvasUi","postCallUi","piaUi","sharingUi","ADMIN_MESSAGE","ADMIN_MESSAGE_TYPES","ADMIN_API_TYPES","ADMIN_API_METHOD_TYPES","admin","appErrorsAdmin","contentAdmin","envAdmin","canvasAdmin","metadataTemplatesAdmin","filesAdmin","usersAdmin","DSR_MESSAGE","DSR_MESSAGE_TYPES","DSR_API_TYPES","DSR_API_METHOD_TYPES","dsr","envDsr","loadingDsr","filesDsr","PEER_CONNECTIVITY_EVENT","PeerConnectivityActions","DEFAULT_PEER_CONNECTIVITY_VERSION","PEER_CONNECTIVITY_HANDLER_MATCH_ALL","unsubscribeNativeListener","peerConnectivitySupportPromise","generateCorrelationId","cryptoApi","normalizeEventPayload","defaults","metadata","addHandler","action","handlerSet","removeHandler","teardownNativeListener","ensureNativeListener","api","usePitcherApi","normalized","dispatchEvent","specificHandlers","wildcardHandlers","isPeerConnectivitySupported","normalizeActions","actionOrActions","registerPeerConnectivityHandler","sendPeerConnectivityEvent","normalizedPayload","prevOptions","enhanceWithSnakeCase","uiApi","adminApi","dsrApi","useUi","useAdmin","useDsr","getAvailableApis","useApi"],"mappings":"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EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,225,226,227]}
1
+ {"version":3,"file":"js-api.umd.min.js","sources":["../../../../../node_modules/post-robot/dist/post-robot.js","../../../../../node_modules/post-robot/index.js","../../../../../node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/lodash-es/_root.js","../../../../../node_modules/lodash-es/_Symbol.js","../../../../../node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/lodash-es/_objectToString.js","../../../../../node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/lodash-es/isSymbol.js","../../../../../node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/lodash-es/isArray.js","../../../../../node_modules/lodash-es/_baseToString.js","../../../../../node_modules/lodash-es/isObject.js","../../../../../node_modules/lodash-es/identity.js","../../../../../node_modules/lodash-es/isFunction.js","../../../../../node_modules/lodash-es/_coreJsData.js","../../../../../node_modules/lodash-es/_isMasked.js","../../../../../node_modules/lodash-es/_toSource.js","../../../../../node_modules/lodash-es/_baseIsNative.js","../../../../../node_modules/lodash-es/_getValue.js","../../../../../node_modules/lodash-es/_getNative.js","../../../../../node_modules/lodash-es/_WeakMap.js","../../../../../node_modules/lodash-es/_baseCreate.js","../../../../../node_modules/lodash-es/_apply.js","../../../../../node_modules/lodash-es/_copyArray.js","../../../../../node_modules/lodash-es/_shortOut.js","../../../../../node_modules/lodash-es/constant.js","../../../../../node_modules/lodash-es/_defineProperty.js","../../../../../node_modules/lodash-es/_baseSetToString.js","../../../../../node_modules/lodash-es/_setToString.js","../../../../../node_modules/lodash-es/_arrayEach.js","../../../../../node_modules/lodash-es/_isIndex.js","../../../../../node_modules/lodash-es/_baseAssignValue.js","../../../../../node_modules/lodash-es/eq.js","../../../../../node_modules/lodash-es/_assignValue.js","../../../../../node_modules/lodash-es/_copyObject.js","../../../../../node_modules/lodash-es/_overRest.js","../../../../../node_modules/lodash-es/_baseRest.js","../../../../../node_modules/lodash-es/isLength.js","../../../../../node_modules/lodash-es/isArrayLike.js","../../../../../node_modules/lodash-es/_isIterateeCall.js","../../../../../node_modules/lodash-es/_createAssigner.js","../../../../../node_modules/lodash-es/_isPrototype.js","../../../../../node_modules/lodash-es/_baseTimes.js","../../../../../node_modules/lodash-es/_baseIsArguments.js","../../../../../node_modules/lodash-es/isArguments.js","../../../../../node_modules/lodash-es/stubFalse.js","../../../../../node_modules/lodash-es/isBuffer.js","../../../../../node_modules/lodash-es/_baseIsTypedArray.js","../../../../../node_modules/lodash-es/_baseUnary.js","../../../../../node_modules/lodash-es/_nodeUtil.js","../../../../../node_modules/lodash-es/isTypedArray.js","../../../../../node_modules/lodash-es/_arrayLikeKeys.js","../../../../../node_modules/lodash-es/_overArg.js","../../../../../node_modules/lodash-es/_nativeKeys.js","../../../../../node_modules/lodash-es/_baseKeys.js","../../../../../node_modules/lodash-es/keys.js","../../../../../node_modules/lodash-es/_nativeKeysIn.js","../../../../../node_modules/lodash-es/_baseKeysIn.js","../../../../../node_modules/lodash-es/keysIn.js","../../../../../node_modules/lodash-es/_isKey.js","../../../../../node_modules/lodash-es/_nativeCreate.js","../../../../../node_modules/lodash-es/_hashClear.js","../../../../../node_modules/lodash-es/_hashDelete.js","../../../../../node_modules/lodash-es/_hashGet.js","../../../../../node_modules/lodash-es/_hashHas.js","../../../../../node_modules/lodash-es/_hashSet.js","../../../../../node_modules/lodash-es/_Hash.js","../../../../../node_modules/lodash-es/_listCacheClear.js","../../../../../node_modules/lodash-es/_assocIndexOf.js","../../../../../node_modules/lodash-es/_listCacheDelete.js","../../../../../node_modules/lodash-es/_listCacheGet.js","../../../../../node_modules/lodash-es/_listCacheHas.js","../../../../../node_modules/lodash-es/_listCacheSet.js","../../../../../node_modules/lodash-es/_ListCache.js","../../../../../node_modules/lodash-es/_Map.js","../../../../../node_modules/lodash-es/_mapCacheClear.js","../../../../../node_modules/lodash-es/_isKeyable.js","../../../../../node_modules/lodash-es/_getMapData.js","../../../../../node_modules/lodash-es/_mapCacheDelete.js","../../../../../node_modules/lodash-es/_mapCacheGet.js","../../../../../node_modules/lodash-es/_mapCacheHas.js","../../../../../node_modules/lodash-es/_mapCacheSet.js","../../../../../node_modules/lodash-es/_MapCache.js","../../../../../node_modules/lodash-es/memoize.js","../../../../../node_modules/lodash-es/_memoizeCapped.js","../../../../../node_modules/lodash-es/_stringToPath.js","../../../../../node_modules/lodash-es/toString.js","../../../../../node_modules/lodash-es/_castPath.js","../../../../../node_modules/lodash-es/_toKey.js","../../../../../node_modules/lodash-es/_baseGet.js","../../../../../node_modules/lodash-es/get.js","../../../../../node_modules/lodash-es/_arrayPush.js","../../../../../node_modules/lodash-es/_isFlattenable.js","../../../../../node_modules/lodash-es/_baseFlatten.js","../../../../../node_modules/lodash-es/flatten.js","../../../../../node_modules/lodash-es/_flatRest.js","../../../../../node_modules/lodash-es/_getPrototype.js","../../../../../node_modules/lodash-es/isPlainObject.js","../../../../../node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/lodash-es/_castSlice.js","../../../../../node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/lodash-es/upperFirst.js","../../../../../node_modules/lodash-es/capitalize.js","../../../../../node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/lodash-es/deburr.js","../../../../../node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/lodash-es/words.js","../../../../../node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/lodash-es/camelCase.js","../../../../../node_modules/lodash-es/_stackClear.js","../../../../../node_modules/lodash-es/_stackDelete.js","../../../../../node_modules/lodash-es/_stackGet.js","../../../../../node_modules/lodash-es/_stackHas.js","../../../../../node_modules/lodash-es/_stackSet.js","../../../../../node_modules/lodash-es/_Stack.js","../../../../../node_modules/lodash-es/_baseAssign.js","../../../../../node_modules/lodash-es/_baseAssignIn.js","../../../../../node_modules/lodash-es/_cloneBuffer.js","../../../../../node_modules/lodash-es/_arrayFilter.js","../../../../../node_modules/lodash-es/stubArray.js","../../../../../node_modules/lodash-es/_getSymbols.js","../../../../../node_modules/lodash-es/_copySymbols.js","../../../../../node_modules/lodash-es/_getSymbolsIn.js","../../../../../node_modules/lodash-es/_copySymbolsIn.js","../../../../../node_modules/lodash-es/_baseGetAllKeys.js","../../../../../node_modules/lodash-es/_getAllKeys.js","../../../../../node_modules/lodash-es/_getAllKeysIn.js","../../../../../node_modules/lodash-es/_DataView.js","../../../../../node_modules/lodash-es/_Promise.js","../../../../../node_modules/lodash-es/_Set.js","../../../../../node_modules/lodash-es/_getTag.js","../../../../../node_modules/lodash-es/_initCloneArray.js","../../../../../node_modules/lodash-es/_Uint8Array.js","../../../../../node_modules/lodash-es/_cloneArrayBuffer.js","../../../../../node_modules/lodash-es/_cloneDataView.js","../../../../../node_modules/lodash-es/_cloneRegExp.js","../../../../../node_modules/lodash-es/_cloneSymbol.js","../../../../../node_modules/lodash-es/_cloneTypedArray.js","../../../../../node_modules/lodash-es/_initCloneByTag.js","../../../../../node_modules/lodash-es/_initCloneObject.js","../../../../../node_modules/lodash-es/_baseIsMap.js","../../../../../node_modules/lodash-es/isMap.js","../../../../../node_modules/lodash-es/_baseIsSet.js","../../../../../node_modules/lodash-es/isSet.js","../../../../../node_modules/lodash-es/_baseClone.js","../../../../../node_modules/lodash-es/cloneDeep.js","../../../../../node_modules/lodash-es/_setCacheAdd.js","../../../../../node_modules/lodash-es/_setCacheHas.js","../../../../../node_modules/lodash-es/_SetCache.js","../../../../../node_modules/lodash-es/_arraySome.js","../../../../../node_modules/lodash-es/_cacheHas.js","../../../../../node_modules/lodash-es/_equalArrays.js","../../../../../node_modules/lodash-es/_mapToArray.js","../../../../../node_modules/lodash-es/_setToArray.js","../../../../../node_modules/lodash-es/_equalByTag.js","../../../../../node_modules/lodash-es/_equalObjects.js","../../../../../node_modules/lodash-es/_baseIsEqualDeep.js","../../../../../node_modules/lodash-es/_baseIsEqual.js","../../../../../node_modules/lodash-es/_baseIsMatch.js","../../../../../node_modules/lodash-es/_isStrictComparable.js","../../../../../node_modules/lodash-es/_getMatchData.js","../../../../../node_modules/lodash-es/_matchesStrictComparable.js","../../../../../node_modules/lodash-es/_baseMatches.js","../../../../../node_modules/lodash-es/_baseHasIn.js","../../../../../node_modules/lodash-es/_hasPath.js","../../../../../node_modules/lodash-es/hasIn.js","../../../../../node_modules/lodash-es/_baseMatchesProperty.js","../../../../../node_modules/lodash-es/_baseProperty.js","../../../../../node_modules/lodash-es/_basePropertyDeep.js","../../../../../node_modules/lodash-es/property.js","../../../../../node_modules/lodash-es/_baseIteratee.js","../../../../../node_modules/lodash-es/_createBaseFor.js","../../../../../node_modules/lodash-es/_baseFor.js","../../../../../node_modules/lodash-es/_assignMergeValue.js","../../../../../node_modules/lodash-es/isArrayLikeObject.js","../../../../../node_modules/lodash-es/_safeGet.js","../../../../../node_modules/lodash-es/toPlainObject.js","../../../../../node_modules/lodash-es/_baseMergeDeep.js","../../../../../node_modules/lodash-es/_baseMerge.js","../../../../../node_modules/lodash-es/last.js","../../../../../node_modules/lodash-es/_parent.js","../../../../../node_modules/lodash-es/isEqual.js","../../../../../node_modules/lodash-es/merge.js","../../../../../node_modules/lodash-es/_baseUnset.js","../../../../../node_modules/lodash-es/_customOmitClone.js","../../../../../node_modules/lodash-es/omit.js","../../../../../node_modules/lodash-es/_baseSet.js","../../../../../node_modules/lodash-es/_basePickBy.js","../../../../../node_modules/lodash-es/pickBy.js","../../../../../node_modules/lodash-es/snakeCase.js","../../src/lib/types/launchDarkly.types.ts","../../src/lib/sdk/api/modules/ai.ts","../../src/lib/sdk/api/modules/appsDb.ts","../../src/lib/sdk/api/modules/open.ts","../../src/lib/sdk/api/modules/env.ts","../../src/lib/sdk/api/modules/languages.ts","../../src/lib/sdk/api/modules/canvas.ts","../../src/lib/sdk/api/modules/files.ts","../../src/lib/sdk/api/modules/filesRevisions.ts","../../src/lib/sdk/api/modules/search.ts","../../src/lib/sdk/api/modules/users.ts","../../src/lib/sdk/api/modules/pspdfkit.ts","../../src/lib/sdk/api/modules/toast.ts","../../src/lib/util/smart-store.util.ts","../../src/lib/sdk/api/modules/query.ts","../../src/lib/sdk/api/modules/folders.ts","../../src/lib/sdk/api/modules/folders.core.ts","../../src/lib/sdk/api/modules/notifications.ts","../../src/lib/sdk/api/modules/track.ts","../../src/lib/sdk/api/modules/metadataTemplates.ts","../../src/lib/sdk/api/modules/sync.ts","../../src/lib/sdk/api/modules/feedback.ts","../../src/lib/sdk/api/modules/webView.ts","../../src/lib/sdk/api/modules/share.ts","../../src/lib/sdk/api/modules/theme.ts","../../src/lib/sdk/utils/eventEmitter.ts","../../../../../node_modules/uuid/dist/stringify.js","../../../../../node_modules/uuid/dist/rng.js","../../../../../node_modules/uuid/dist/v4.js","../../src/lib/sdk/interfaces.ts","../../src/lib/sdk/utils/assert.ts","../../src/lib/util/casing.ts","../../src/lib/sdk/utils/object.ts","../../src/lib/util/message-event.ts","../../src/lib/sdk/utils/httpFetch.ts","../../src/lib/components/filters/filter.util.ts","../../src/lib/sdk/api/onlineRestApiHandlers.ts","../../src/lib/sdk/utils/window.ts","../../src/lib/sdk/api/LowLevelApi.ts","../../src/lib/sdk/api/HighLevelApi.ts","../../src/lib/sdk/utils/postrobot.ts","../../src/lib/sdk/api/modules/ui/types.ui.ts","../../src/lib/sdk/api/modules/ui/content.ui.ts","../../src/lib/sdk/api/modules/ui/loading.ui.ts","../../src/lib/sdk/api/modules/ui/location.ui.ts","../../src/lib/sdk/api/modules/ui/app-errors.ui.ts","../../src/lib/sdk/api/modules/ui/canvas.ui.ts","../../src/lib/sdk/api/modules/ui/post-call.ui.ts","../../src/lib/sdk/api/modules/ui/pia.ui.ts","../../src/lib/sdk/api/modules/ui/sharing.ui.ts","../../src/lib/sdk/api/modules/ui/index.ts","../../src/lib/sdk/api/modules/admin/types.admin.ts","../../src/lib/sdk/api/modules/admin/app-errors.admin.ts","../../src/lib/sdk/api/modules/admin/env.admin.ts","../../src/lib/sdk/api/modules/admin/canvas.admin.ts","../../src/lib/sdk/api/modules/admin/metadataTemplates.admin.ts","../../src/lib/sdk/api/modules/admin/files.admin.ts","../../src/lib/sdk/api/modules/admin/content.admin.ts","../../src/lib/sdk/api/modules/admin/users.admin.ts","../../src/lib/sdk/api/modules/admin/index.ts","../../src/lib/sdk/api/modules/dsr/types.dsr.ts","../../src/lib/sdk/api/modules/dsr/env.dsr.ts","../../src/lib/sdk/api/modules/dsr/loading.dsr.ts","../../src/lib/sdk/api/modules/dsr/files.dsr.ts","../../src/lib/sdk/api/modules/dsr/index.ts","../../src/lib/sdk/peer-connectivity/peerConnectivity.constants.ts","../../src/lib/sdk/peer-connectivity/peerConnectivity.ts","../../src/lib/sdk/main.ts","../../src/lib/sdk/main.umd-esm.ts"],"sourcesContent":["!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, (function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.r = function(exports) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {\n value: \"Module\"\n });\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n };\n __webpack_require__.t = function(value, mode) {\n 1 & mode && (value = __webpack_require__(value));\n if (8 & mode) return value;\n if (4 & mode && \"object\" == typeof value && value && value.__esModule) return value;\n var ns = Object.create(null);\n __webpack_require__.r(ns);\n Object.defineProperty(ns, \"default\", {\n enumerable: !0,\n value: value\n });\n if (2 & mode && \"string\" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {\n return value[key];\n }.bind(null, key));\n return ns;\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return {}.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = 0);\n }([ function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n __webpack_require__.r(__webpack_exports__);\n __webpack_require__.d(__webpack_exports__, \"Promise\", (function() {\n return promise_ZalgoPromise;\n }));\n __webpack_require__.d(__webpack_exports__, \"TYPES\", (function() {\n return src_types_TYPES_0;\n }));\n __webpack_require__.d(__webpack_exports__, \"ProxyWindow\", (function() {\n return window_ProxyWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"setup\", (function() {\n return setup;\n }));\n __webpack_require__.d(__webpack_exports__, \"destroy\", (function() {\n return destroy;\n }));\n __webpack_require__.d(__webpack_exports__, \"serializeMessage\", (function() {\n return setup_serializeMessage;\n }));\n __webpack_require__.d(__webpack_exports__, \"deserializeMessage\", (function() {\n return setup_deserializeMessage;\n }));\n __webpack_require__.d(__webpack_exports__, \"createProxyWindow\", (function() {\n return createProxyWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"toProxyWindow\", (function() {\n return setup_toProxyWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"on\", (function() {\n return on_on;\n }));\n __webpack_require__.d(__webpack_exports__, \"once\", (function() {\n return on_once;\n }));\n __webpack_require__.d(__webpack_exports__, \"send\", (function() {\n return send_send;\n }));\n __webpack_require__.d(__webpack_exports__, \"markWindowKnown\", (function() {\n return markWindowKnown;\n }));\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", (function() {\n return cleanUpWindow;\n }));\n __webpack_require__.d(__webpack_exports__, \"bridge\", (function() {}));\n function isRegex(item) {\n return \"[object RegExp]\" === {}.toString.call(item);\n }\n var IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function getActualProtocol(win) {\n void 0 === win && (win = window);\n return win.location.protocol;\n }\n function getProtocol(win) {\n void 0 === win && (win = window);\n if (win.mockDomain) {\n var protocol = win.mockDomain.split(\"//\")[0];\n if (protocol) return protocol;\n }\n return getActualProtocol(win);\n }\n function isAboutProtocol(win) {\n void 0 === win && (win = window);\n return \"about:\" === getProtocol(win);\n }\n function getParent(win) {\n void 0 === win && (win = window);\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener(win) {\n void 0 === win && (win = window);\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain(win) {\n void 0 === win && (win = window);\n var location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = getActualProtocol(win);\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (\"file:\" === protocol) return \"file://\";\n if (\"about:\" === protocol) {\n var parent = getParent(win);\n return parent && canReadFromWindow() ? getActualDomain(parent) : \"about://\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function getDomain(win) {\n void 0 === win && (win = window);\n var domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(\"mock:\") ? win.mockDomain : domain;\n }\n function isSameDomain(win) {\n if (!function(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n } catch (err) {}\n try {\n if (function(win) {\n void 0 === win && (win = window);\n return \"mock:\" === getProtocol(win);\n }(win) && canReadFromWindow()) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n if (getDomain(window) === getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }\n function assertSameDomain(win) {\n if (!isSameDomain(win)) throw new Error(\"Expected window to be same domain\");\n return win;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [];\n var frames;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [];\n var iframeFrames = [];\n function isWindowClosed(win, allowMock) {\n void 0 === allowMock && (allowMock = !0);\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && isSameDomain(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n var parent = frame;\n for (;parent.parentNode && parent.parentNode !== parent; ) parent = parent.parentNode;\n if (!parent.host || !doc.documentElement.contains(parent.host)) return !0;\n }\n return !1;\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor(win) {\n void 0 === win && (win = window);\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return \"*\" === pattern || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some((function(subpattern) {\n return matchDomain(subpattern, origin);\n })));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === {}.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (\"postMessage\" in obj && \"self\" in obj && \"location\" in obj) return !0;\n } catch (err) {}\n return !1;\n }\n function getFrameForWindow(win) {\n if (isSameDomain(win)) return assertSameDomain(win).frameElement;\n for (var _i21 = 0, _document$querySelect2 = document.querySelectorAll(\"iframe\"); _i21 < _document$querySelect2.length; _i21++) {\n var frame = _document$querySelect2[_i21];\n if (frame && frame.contentWindow && frame.contentWindow === win) return frame;\n }\n }\n function closeWindow(win) {\n if (function(win) {\n void 0 === win && (win = window);\n return Boolean(getParent(win));\n }(win)) {\n var frame = getFrameForWindow(win);\n if (frame && frame.parentElement) {\n frame.parentElement.removeChild(frame);\n return;\n }\n }\n try {\n win.close();\n } catch (err) {}\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [];\n var possiblyUnhandledPromiseHandlers = [];\n var activeCount = 0;\n var flushPromise;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n this.resolved = void 0;\n this.rejected = void 0;\n this.errorHandled = void 0;\n this.value = void 0;\n this.error = void 0;\n this.handlers = void 0;\n this.dispatching = void 0;\n this.stack = void 0;\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result;\n var _error;\n var resolved = !1;\n var rejected = !1;\n var isAsync = !1;\n startActive();\n try {\n handler((function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }), (function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n }));\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n var _proto = ZalgoPromise.prototype;\n _proto.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n _proto.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : {}.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout((function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout((function() {\n throw err;\n }), 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }), 1);\n this.dispatch();\n return this;\n };\n _proto.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n _proto.dispatch = function() {\n var resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!this.dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n var chain = function(firstPromise, secondPromise) {\n return firstPromise.then((function(res) {\n secondPromise.resolve(res);\n }), (function(err) {\n secondPromise.reject(err);\n }));\n };\n for (var i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise;\n var _result2 = void 0;\n if (resolved) try {\n _result2 = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n } else if (rejected) {\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n try {\n _result2 = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n var promiseResult = _result2;\n promiseResult.resolved ? promise.resolve(promiseResult.value) : promise.reject(promiseResult.error);\n promiseResult.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? promise.resolve(_result2.value) : promise.reject(_result2.error) : chain(_result2, promise) : promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n _proto.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise;\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n _proto.catch = function(onError) {\n return this.then(void 0, onError);\n };\n _proto.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then((function(result) {\n return ZalgoPromise.try(onFinally).then((function() {\n return result;\n }));\n }), (function(err) {\n return ZalgoPromise.try(onFinally).then((function() {\n throw err;\n }));\n }));\n };\n _proto.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout((function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }), time);\n return this.then((function(result) {\n clearTimeout(timeout);\n return result;\n }));\n };\n _proto.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n _proto.lazy = function() {\n this.errorHandled = !0;\n return this;\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise((function(resolve, reject) {\n return value.then(resolve, reject);\n })) : (new ZalgoPromise).resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return (new ZalgoPromise).reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return (new ZalgoPromise).asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise;\n var count = promises.length;\n var results = [].slice();\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then((function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }), (function(err) {\n secondPromise.reject(err);\n }));\n };\n for (var i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n var awaitPromises = [];\n var _loop = function(key) {\n if (promises.hasOwnProperty(key)) {\n var value = promises[key];\n utils_isPromise(value) ? awaitPromises.push(value.then((function(res) {\n result[key] = res;\n }))) : result[key] = value;\n }\n };\n for (var key in promises) _loop(key);\n return ZalgoPromise.all(awaitPromises).then((function() {\n return result;\n }));\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise((function(resolve) {\n setTimeout(resolve, _delay);\n }));\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new Zalgo;\n flushActive();\n return promise;\n }(ZalgoPromise);\n };\n return ZalgoPromise;\n }();\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n this.name = void 0;\n this.weakmap = void 0;\n this.keys = void 0;\n this.values = void 0;\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap;\n var testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap;\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n var _proto = CrossDomainSafeWeakMap.prototype;\n _proto._cleanupClosedWindows = function() {\n var weakmap = this.weakmap;\n var keys = this.keys;\n for (var i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n _proto.isSafeToReadWrite = function(key) {\n return !isWindow(key);\n };\n _proto.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name;\n var entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys;\n var values = this.values;\n var index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n _proto.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n _proto.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys;\n var index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n _proto.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n _proto.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }();\n function getFunctionName(fn) {\n return fn.name || fn.__name__ || fn.displayName || \"anonymous\";\n }\n function setFunctionName(fn, name) {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {}\n fn.__name__ = fn.displayName = name;\n return fn;\n }\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"uid_\" + \"xxxxxxxxxx\".replace(/./g, (function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n })) + \"_\" + function(str) {\n if (\"function\" == typeof btoa) return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (function(m, p1) {\n return String.fromCharCode(parseInt(p1, 16));\n }))).replace(/[=]/g, \"\");\n if (\"undefined\" != typeof Buffer) return Buffer.from(str, \"utf8\").toString(\"base64\").replace(/[=]/g, \"\");\n throw new Error(\"Can not find window.btoa or Buffer\");\n }((new Date).toISOString().slice(11, 19).replace(\"T\", \".\")).replace(/[^a-zA-Z0-9]/g, \"\").toLowerCase();\n }\n var objectIDs;\n function serializeArgs(args) {\n try {\n return JSON.stringify([].slice.call(args), (function(subkey, val) {\n return \"function\" == typeof val ? \"memoize[\" + function(obj) {\n objectIDs = objectIDs || new weakmap_CrossDomainSafeWeakMap;\n if (null == obj || \"object\" != typeof obj && \"function\" != typeof obj) throw new Error(\"Invalid object\");\n var uid = objectIDs.get(obj);\n if (!uid) {\n uid = typeof obj + \":\" + uniqueID();\n objectIDs.set(obj, uid);\n }\n return uid;\n }(val) + \"]\" : \"undefined\" != typeof window && val instanceof window.Element || null !== val && \"object\" == typeof val && 1 === val.nodeType && \"object\" == typeof val.style && \"object\" == typeof val.ownerDocument ? {} : val;\n }));\n } catch (err) {\n throw new Error(\"Arguments not serializable -- can not be used to memoize\");\n }\n }\n function getEmptyObject() {\n return {};\n }\n var memoizeGlobalIndex = 0;\n var memoizeGlobalIndexValidFrom = 0;\n function memoize(method, options) {\n void 0 === options && (options = {});\n var _options$thisNamespac = options.thisNamespace, thisNamespace = void 0 !== _options$thisNamespac && _options$thisNamespac, cacheTime = options.time;\n var simpleCache;\n var thisCache;\n var memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n var memoizedFunction = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n if (memoizeIndex < memoizeGlobalIndexValidFrom) {\n simpleCache = null;\n thisCache = null;\n memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n }\n var cache;\n cache = thisNamespace ? (thisCache = thisCache || new weakmap_CrossDomainSafeWeakMap).getOrSet(this, getEmptyObject) : simpleCache = simpleCache || {};\n var cacheKey;\n try {\n cacheKey = serializeArgs(args);\n } catch (_unused) {\n return method.apply(this, arguments);\n }\n var cacheResult = cache[cacheKey];\n if (cacheResult && cacheTime && Date.now() - cacheResult.time < cacheTime) {\n delete cache[cacheKey];\n cacheResult = null;\n }\n if (cacheResult) return cacheResult.value;\n var time = Date.now();\n var value = method.apply(this, arguments);\n cache[cacheKey] = {\n time: time,\n value: value\n };\n return value;\n };\n memoizedFunction.reset = function() {\n simpleCache = null;\n thisCache = null;\n };\n return setFunctionName(memoizedFunction, (options.name || getFunctionName(method)) + \"::memoized\");\n }\n memoize.clear = function() {\n memoizeGlobalIndexValidFrom = memoizeGlobalIndex;\n };\n function memoizePromise(method) {\n var cache = {};\n function memoizedPromiseFunction() {\n var _arguments = arguments, _this = this;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];\n var key = serializeArgs(args);\n if (cache.hasOwnProperty(key)) return cache[key];\n cache[key] = promise_ZalgoPromise.try((function() {\n return method.apply(_this, _arguments);\n })).finally((function() {\n delete cache[key];\n }));\n return cache[key];\n }\n memoizedPromiseFunction.reset = function() {\n cache = {};\n };\n return setFunctionName(memoizedPromiseFunction, getFunctionName(method) + \"::promiseMemoized\");\n }\n function src_util_noop() {}\n function stringifyError(err, level) {\n void 0 === level && (level = 1);\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"<unknown error: \" + {}.toString.call(err) + \">\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack;\n var message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return err && err.toString && \"function\" == typeof err.toString ? err.toString() : {}.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n function stringify(item) {\n return \"string\" == typeof item ? item : item && item.toString && \"function\" == typeof item.toString ? item.toString() : {}.toString.call(item);\n }\n memoize((function(obj) {\n if (Object.values) return Object.values(obj);\n var result = [];\n for (var key in obj) obj.hasOwnProperty(key) && result.push(obj[key]);\n return result;\n }));\n function util_isRegex(item) {\n return \"[object RegExp]\" === {}.toString.call(item);\n }\n function util_getOrSet(obj, key, getter) {\n if (obj.hasOwnProperty(key)) return obj[key];\n var val = getter();\n obj[key] = val;\n return val;\n }\n Error;\n function getBody() {\n var body = document.body;\n if (!body) throw new Error(\"Body element not found\");\n return body;\n }\n function isDocumentReady() {\n return Boolean(document.body) && \"complete\" === document.readyState;\n }\n function isDocumentInteractive() {\n return Boolean(document.body) && \"interactive\" === document.readyState;\n }\n memoize((function() {\n return new promise_ZalgoPromise((function(resolve) {\n if (isDocumentReady() || isDocumentInteractive()) return resolve();\n var interval = setInterval((function() {\n if (isDocumentReady() || isDocumentInteractive()) {\n clearInterval(interval);\n return resolve();\n }\n }), 10);\n }));\n }));\n var currentScript = \"undefined\" != typeof document ? document.currentScript : null;\n var getCurrentScript = memoize((function() {\n if (currentScript) return currentScript;\n if (currentScript = function() {\n try {\n var stack = function() {\n try {\n throw new Error(\"_\");\n } catch (err) {\n return err.stack || \"\";\n }\n }();\n var stackDetails = /.*at [^(]*\\((.*):(.+):(.+)\\)$/gi.exec(stack);\n var scriptLocation = stackDetails && stackDetails[1];\n if (!scriptLocation) return;\n for (var _i22 = 0, _Array$prototype$slic2 = [].slice.call(document.getElementsByTagName(\"script\")).reverse(); _i22 < _Array$prototype$slic2.length; _i22++) {\n var script = _Array$prototype$slic2[_i22];\n if (script.src && script.src === scriptLocation) return script;\n }\n } catch (err) {}\n }()) return currentScript;\n throw new Error(\"Can not determine current script\");\n }));\n var currentUID = uniqueID();\n memoize((function() {\n var script;\n try {\n script = getCurrentScript();\n } catch (err) {\n return currentUID;\n }\n var uid = script.getAttribute(\"data-uid\");\n if (uid && \"string\" == typeof uid) return uid;\n if ((uid = script.getAttribute(\"data-uid-auto\")) && \"string\" == typeof uid) return uid;\n if (script.src) {\n var hashedString = function(str) {\n var hash = \"\";\n for (var i = 0; i < str.length; i++) {\n var total = str[i].charCodeAt(0) * i;\n str[i + 1] && (total += str[i + 1].charCodeAt(0) * (i - 1));\n hash += String.fromCharCode(97 + Math.abs(total) % 26);\n }\n return hash;\n }(JSON.stringify({\n src: script.src,\n dataset: script.dataset\n }));\n uid = \"uid_\" + hashedString.slice(hashedString.length - 30);\n } else uid = uniqueID();\n script.setAttribute(\"data-uid-auto\", uid);\n return uid;\n }));\n function global_getGlobal(win) {\n void 0 === win && (win = window);\n var globalKey = \"__post_robot_10_0_46__\";\n return win !== window ? win[globalKey] : win[globalKey] = win[globalKey] || {};\n }\n var getObj = function() {\n return {};\n };\n function globalStore(key, defStore) {\n void 0 === key && (key = \"store\");\n void 0 === defStore && (defStore = getObj);\n return util_getOrSet(global_getGlobal(), key, (function() {\n var store = defStore();\n return {\n has: function(storeKey) {\n return store.hasOwnProperty(storeKey);\n },\n get: function(storeKey, defVal) {\n return store.hasOwnProperty(storeKey) ? store[storeKey] : defVal;\n },\n set: function(storeKey, val) {\n store[storeKey] = val;\n return val;\n },\n del: function(storeKey) {\n delete store[storeKey];\n },\n getOrSet: function(storeKey, getter) {\n return util_getOrSet(store, storeKey, getter);\n },\n reset: function() {\n store = defStore();\n },\n keys: function() {\n return Object.keys(store);\n }\n };\n }));\n }\n var WildCard = function() {};\n function getWildcard() {\n var global = global_getGlobal();\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new WildCard;\n return global.WINDOW_WILDCARD;\n }\n function windowStore(key, defStore) {\n void 0 === key && (key = \"store\");\n void 0 === defStore && (defStore = getObj);\n return globalStore(\"windowStore\").getOrSet(key, (function() {\n var winStore = new weakmap_CrossDomainSafeWeakMap;\n var getStore = function(win) {\n return winStore.getOrSet(win, defStore);\n };\n return {\n has: function(win) {\n return getStore(win).hasOwnProperty(key);\n },\n get: function(win, defVal) {\n var store = getStore(win);\n return store.hasOwnProperty(key) ? store[key] : defVal;\n },\n set: function(win, val) {\n getStore(win)[key] = val;\n return val;\n },\n del: function(win) {\n delete getStore(win)[key];\n },\n getOrSet: function(win, getter) {\n return util_getOrSet(getStore(win), key, getter);\n }\n };\n }));\n }\n function getInstanceID() {\n return globalStore(\"instance\").getOrSet(\"instanceID\", uniqueID);\n }\n function resolveHelloPromise(win, _ref) {\n var domain = _ref.domain;\n var helloPromises = windowStore(\"helloPromises\");\n var existingPromise = helloPromises.get(win);\n existingPromise && existingPromise.resolve({\n domain: domain\n });\n var newPromise = promise_ZalgoPromise.resolve({\n domain: domain\n });\n helloPromises.set(win, newPromise);\n return newPromise;\n }\n function sayHello(win, _ref4) {\n return (0, _ref4.send)(win, \"postrobot_hello\", {\n instanceID: getInstanceID()\n }, {\n domain: \"*\",\n timeout: -1\n }).then((function(_ref5) {\n var origin = _ref5.origin, instanceID = _ref5.data.instanceID;\n resolveHelloPromise(win, {\n domain: origin\n });\n return {\n win: win,\n domain: origin,\n instanceID: instanceID\n };\n }));\n }\n function getWindowInstanceID(win, _ref6) {\n var send = _ref6.send;\n return windowStore(\"windowInstanceIDPromises\").getOrSet(win, (function() {\n return sayHello(win, {\n send: send\n }).then((function(_ref7) {\n return _ref7.instanceID;\n }));\n }));\n }\n function markWindowKnown(win) {\n windowStore(\"knownWindows\").set(win, !0);\n }\n function isSerializedType(item) {\n return \"object\" == typeof item && null !== item && \"string\" == typeof item.__type__;\n }\n function determineType(val) {\n return void 0 === val ? \"undefined\" : null === val ? \"null\" : Array.isArray(val) ? \"array\" : \"function\" == typeof val ? \"function\" : \"object\" == typeof val ? val instanceof Error ? \"error\" : \"function\" == typeof val.then ? \"promise\" : \"[object RegExp]\" === {}.toString.call(val) ? \"regex\" : \"[object Date]\" === {}.toString.call(val) ? \"date\" : \"object\" : \"string\" == typeof val ? \"string\" : \"number\" == typeof val ? \"number\" : \"boolean\" == typeof val ? \"boolean\" : void 0;\n }\n function serializeType(type, val) {\n return {\n __type__: type,\n __val__: val\n };\n }\n var _SERIALIZER;\n var SERIALIZER = ((_SERIALIZER = {}).function = function() {}, _SERIALIZER.error = function(_ref) {\n return serializeType(\"error\", {\n message: _ref.message,\n stack: _ref.stack,\n code: _ref.code,\n data: _ref.data\n });\n }, _SERIALIZER.promise = function() {}, _SERIALIZER.regex = function(val) {\n return serializeType(\"regex\", val.source);\n }, _SERIALIZER.date = function(val) {\n return serializeType(\"date\", val.toJSON());\n }, _SERIALIZER.array = function(val) {\n return val;\n }, _SERIALIZER.object = function(val) {\n return val;\n }, _SERIALIZER.string = function(val) {\n return val;\n }, _SERIALIZER.number = function(val) {\n return val;\n }, _SERIALIZER.boolean = function(val) {\n return val;\n }, _SERIALIZER.null = function(val) {\n return val;\n }, _SERIALIZER[void 0] = function(val) {\n return serializeType(\"undefined\", val);\n }, _SERIALIZER);\n var defaultSerializers = {};\n var _DESERIALIZER;\n var DESERIALIZER = ((_DESERIALIZER = {}).function = function() {\n throw new Error(\"Function serialization is not implemented; nothing to deserialize\");\n }, _DESERIALIZER.error = function(_ref2) {\n var stack = _ref2.stack, code = _ref2.code, data = _ref2.data;\n var error = new Error(_ref2.message);\n error.code = code;\n data && (error.data = data);\n error.stack = stack + \"\\n\\n\" + error.stack;\n return error;\n }, _DESERIALIZER.promise = function() {\n throw new Error(\"Promise serialization is not implemented; nothing to deserialize\");\n }, _DESERIALIZER.regex = function(val) {\n return new RegExp(val);\n }, _DESERIALIZER.date = function(val) {\n return new Date(val);\n }, _DESERIALIZER.array = function(val) {\n return val;\n }, _DESERIALIZER.object = function(val) {\n return val;\n }, _DESERIALIZER.string = function(val) {\n return val;\n }, _DESERIALIZER.number = function(val) {\n return val;\n }, _DESERIALIZER.boolean = function(val) {\n return val;\n }, _DESERIALIZER.null = function(val) {\n return val;\n }, _DESERIALIZER[void 0] = function() {}, _DESERIALIZER);\n var defaultDeserializers = {};\n new promise_ZalgoPromise((function(resolve) {\n if (window.document && window.document.body) return resolve(window.document.body);\n var interval = setInterval((function() {\n if (window.document && window.document.body) {\n clearInterval(interval);\n return resolve(window.document.body);\n }\n }), 10);\n }));\n function cleanupProxyWindows() {\n var idToProxyWindow = globalStore(\"idToProxyWindow\");\n for (var _i2 = 0, _idToProxyWindow$keys2 = idToProxyWindow.keys(); _i2 < _idToProxyWindow$keys2.length; _i2++) {\n var id = _idToProxyWindow$keys2[_i2];\n idToProxyWindow.get(id).shouldClean() && idToProxyWindow.del(id);\n }\n }\n function getSerializedWindow(winPromise, _ref) {\n var send = _ref.send, _ref$id = _ref.id, id = void 0 === _ref$id ? uniqueID() : _ref$id;\n var windowNamePromise = winPromise.then((function(win) {\n if (isSameDomain(win)) return assertSameDomain(win).name;\n }));\n var windowTypePromise = winPromise.then((function(window) {\n if (isWindowClosed(window)) throw new Error(\"Window is closed, can not determine type\");\n return getOpener(window) ? \"popup\" : \"iframe\";\n }));\n windowNamePromise.catch(src_util_noop);\n windowTypePromise.catch(src_util_noop);\n var getName = function() {\n return winPromise.then((function(win) {\n if (!isWindowClosed(win)) return isSameDomain(win) ? assertSameDomain(win).name : windowNamePromise;\n }));\n };\n return {\n id: id,\n getType: function() {\n return windowTypePromise;\n },\n getInstanceID: memoizePromise((function() {\n return winPromise.then((function(win) {\n return getWindowInstanceID(win, {\n send: send\n });\n }));\n })),\n close: function() {\n return winPromise.then(closeWindow);\n },\n getName: getName,\n focus: function() {\n return winPromise.then((function(win) {\n win.focus();\n }));\n },\n isClosed: function() {\n return winPromise.then((function(win) {\n return isWindowClosed(win);\n }));\n },\n setLocation: function(href, opts) {\n void 0 === opts && (opts = {});\n return winPromise.then((function(win) {\n var domain = window.location.protocol + \"//\" + window.location.host;\n var _opts$method = opts.method, method = void 0 === _opts$method ? \"get\" : _opts$method, body = opts.body;\n if (0 === href.indexOf(\"/\")) href = \"\" + domain + href; else if (!href.match(/^https?:\\/\\//) && 0 !== href.indexOf(domain)) throw new Error(\"Expected url to be http or https url, or absolute path, got \" + JSON.stringify(href));\n if (\"post\" === method) return getName().then((function(name) {\n if (!name) throw new Error(\"Can not post to window without target name\");\n !function(_ref3) {\n var url = _ref3.url, target = _ref3.target, body = _ref3.body, _ref3$method = _ref3.method, method = void 0 === _ref3$method ? \"post\" : _ref3$method;\n var form = document.createElement(\"form\");\n form.setAttribute(\"target\", target);\n form.setAttribute(\"method\", method);\n form.setAttribute(\"action\", url);\n form.style.display = \"none\";\n if (body) for (var _i24 = 0, _Object$keys4 = Object.keys(body); _i24 < _Object$keys4.length; _i24++) {\n var _body$key;\n var key = _Object$keys4[_i24];\n var input = document.createElement(\"input\");\n input.setAttribute(\"name\", key);\n input.setAttribute(\"value\", null == (_body$key = body[key]) ? void 0 : _body$key.toString());\n form.appendChild(input);\n }\n getBody().appendChild(form);\n form.submit();\n getBody().removeChild(form);\n }({\n url: href,\n target: name,\n method: method,\n body: body\n });\n }));\n if (\"get\" !== method) throw new Error(\"Unsupported method: \" + method);\n if (isSameDomain(win)) try {\n if (win.location && \"function\" == typeof win.location.replace) {\n win.location.replace(href);\n return;\n }\n } catch (err) {}\n win.location = href;\n }));\n },\n setName: function(name) {\n return winPromise.then((function(win) {\n var sameDomain = isSameDomain(win);\n var frame = getFrameForWindow(win);\n if (!sameDomain) throw new Error(\"Can not set name for cross-domain window: \" + name);\n assertSameDomain(win).name = name;\n frame && frame.setAttribute(\"name\", name);\n windowNamePromise = promise_ZalgoPromise.resolve(name);\n }));\n }\n };\n }\n var window_ProxyWindow = function() {\n function ProxyWindow(_ref2) {\n var send = _ref2.send, win = _ref2.win, serializedWindow = _ref2.serializedWindow;\n this.id = void 0;\n this.isProxyWindow = !0;\n this.serializedWindow = void 0;\n this.actualWindow = void 0;\n this.actualWindowPromise = void 0;\n this.send = void 0;\n this.name = void 0;\n this.actualWindowPromise = new promise_ZalgoPromise;\n this.serializedWindow = serializedWindow || getSerializedWindow(this.actualWindowPromise, {\n send: send\n });\n globalStore(\"idToProxyWindow\").set(this.getID(), this);\n win && this.setWindow(win, {\n send: send\n });\n }\n var _proto = ProxyWindow.prototype;\n _proto.getID = function() {\n return this.serializedWindow.id;\n };\n _proto.getType = function() {\n return this.serializedWindow.getType();\n };\n _proto.isPopup = function() {\n return this.getType().then((function(type) {\n return \"popup\" === type;\n }));\n };\n _proto.setLocation = function(href, opts) {\n var _this = this;\n return this.serializedWindow.setLocation(href, opts).then((function() {\n return _this;\n }));\n };\n _proto.getName = function() {\n return this.serializedWindow.getName();\n };\n _proto.setName = function(name) {\n var _this2 = this;\n return this.serializedWindow.setName(name).then((function() {\n return _this2;\n }));\n };\n _proto.close = function() {\n var _this3 = this;\n return this.serializedWindow.close().then((function() {\n return _this3;\n }));\n };\n _proto.focus = function() {\n var _this4 = this;\n var isPopupPromise = this.isPopup();\n var getNamePromise = this.getName();\n var reopenPromise = promise_ZalgoPromise.hash({\n isPopup: isPopupPromise,\n name: getNamePromise\n }).then((function(_ref3) {\n var name = _ref3.name;\n _ref3.isPopup && name && window.open(\"\", name, \"noopener\");\n }));\n var focusPromise = this.serializedWindow.focus();\n return promise_ZalgoPromise.all([ reopenPromise, focusPromise ]).then((function() {\n return _this4;\n }));\n };\n _proto.isClosed = function() {\n return this.serializedWindow.isClosed();\n };\n _proto.getWindow = function() {\n return this.actualWindow;\n };\n _proto.setWindow = function(win, _ref4) {\n var send = _ref4.send;\n this.actualWindow = win;\n this.actualWindowPromise.resolve(this.actualWindow);\n this.serializedWindow = getSerializedWindow(this.actualWindowPromise, {\n send: send,\n id: this.getID()\n });\n windowStore(\"winToProxyWindow\").set(win, this);\n };\n _proto.awaitWindow = function() {\n return this.actualWindowPromise;\n };\n _proto.matchWindow = function(win, _ref5) {\n var _this5 = this;\n var send = _ref5.send;\n return promise_ZalgoPromise.try((function() {\n return _this5.actualWindow ? win === _this5.actualWindow : promise_ZalgoPromise.hash({\n proxyInstanceID: _this5.getInstanceID(),\n knownWindowInstanceID: getWindowInstanceID(win, {\n send: send\n })\n }).then((function(_ref6) {\n var match = _ref6.proxyInstanceID === _ref6.knownWindowInstanceID;\n match && _this5.setWindow(win, {\n send: send\n });\n return match;\n }));\n }));\n };\n _proto.unwrap = function() {\n return this.actualWindow || this;\n };\n _proto.getInstanceID = function() {\n return this.serializedWindow.getInstanceID();\n };\n _proto.shouldClean = function() {\n return Boolean(this.actualWindow && isWindowClosed(this.actualWindow));\n };\n _proto.serialize = function() {\n return this.serializedWindow;\n };\n ProxyWindow.unwrap = function(win) {\n return ProxyWindow.isProxyWindow(win) ? win.unwrap() : win;\n };\n ProxyWindow.serialize = function(win, _ref7) {\n var send = _ref7.send;\n cleanupProxyWindows();\n return ProxyWindow.toProxyWindow(win, {\n send: send\n }).serialize();\n };\n ProxyWindow.deserialize = function(serializedWindow, _ref8) {\n var send = _ref8.send;\n cleanupProxyWindows();\n return globalStore(\"idToProxyWindow\").get(serializedWindow.id) || new ProxyWindow({\n serializedWindow: serializedWindow,\n send: send\n });\n };\n ProxyWindow.isProxyWindow = function(obj) {\n return Boolean(obj && !isWindow(obj) && obj.isProxyWindow);\n };\n ProxyWindow.toProxyWindow = function(win, _ref9) {\n var send = _ref9.send;\n cleanupProxyWindows();\n if (ProxyWindow.isProxyWindow(win)) return win;\n var actualWindow = win;\n return windowStore(\"winToProxyWindow\").get(actualWindow) || new ProxyWindow({\n win: actualWindow,\n send: send\n });\n };\n return ProxyWindow;\n }();\n function addMethod(id, val, name, source, domain) {\n var methodStore = windowStore(\"methodStore\");\n var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n if (window_ProxyWindow.isProxyWindow(source)) proxyWindowMethods.set(id, {\n val: val,\n name: name,\n domain: domain,\n source: source\n }); else {\n proxyWindowMethods.del(id);\n methodStore.getOrSet(source, (function() {\n return {};\n }))[id] = {\n domain: domain,\n name: name,\n val: val,\n source: source\n };\n }\n }\n function lookupMethod(source, id) {\n var methodStore = windowStore(\"methodStore\");\n var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n return methodStore.getOrSet(source, (function() {\n return {};\n }))[id] || proxyWindowMethods.get(id);\n }\n function function_serializeFunction(destination, domain, val, key, _ref3) {\n on = (_ref = {\n on: _ref3.on,\n send: _ref3.send\n }).on, send = _ref.send, globalStore(\"builtinListeners\").getOrSet(\"functionCalls\", (function() {\n return on(\"postrobot_method\", {\n domain: \"*\"\n }, (function(_ref2) {\n var source = _ref2.source, origin = _ref2.origin, data = _ref2.data;\n var id = data.id, name = data.name;\n var meth = lookupMethod(source, id);\n if (!meth) throw new Error(\"Could not find method '\" + name + \"' with id: \" + data.id + \" in \" + getDomain(window));\n var methodSource = meth.source, domain = meth.domain, val = meth.val;\n return promise_ZalgoPromise.try((function() {\n if (!matchDomain(domain, origin)) throw new Error(\"Method '\" + data.name + \"' domain \" + JSON.stringify(util_isRegex(meth.domain) ? meth.domain.source : meth.domain) + \" does not match origin \" + origin + \" in \" + getDomain(window));\n if (window_ProxyWindow.isProxyWindow(methodSource)) return methodSource.matchWindow(source, {\n send: send\n }).then((function(match) {\n if (!match) throw new Error(\"Method call '\" + data.name + \"' failed - proxy window does not match source in \" + getDomain(window));\n }));\n })).then((function() {\n return val.apply({\n source: source,\n origin: origin\n }, data.args);\n }), (function(err) {\n return promise_ZalgoPromise.try((function() {\n if (val.onError) return val.onError(err);\n })).then((function() {\n err.stack && (err.stack = \"Remote call to \" + name + \"(\" + function(args) {\n void 0 === args && (args = []);\n return (item = args, [].slice.call(item)).map((function(arg) {\n return \"string\" == typeof arg ? \"'\" + arg + \"'\" : void 0 === arg ? \"undefined\" : null === arg ? \"null\" : \"boolean\" == typeof arg ? arg.toString() : Array.isArray(arg) ? \"[ ... ]\" : \"object\" == typeof arg ? \"{ ... }\" : \"function\" == typeof arg ? \"() => { ... }\" : \"<\" + typeof arg + \">\";\n })).join(\", \");\n var item;\n }(data.args) + \") failed\\n\\n\" + err.stack);\n throw err;\n }));\n })).then((function(result) {\n return {\n result: result,\n id: id,\n name: name\n };\n }));\n }));\n }));\n var _ref, on, send;\n var id = val.__id__ || uniqueID();\n destination = window_ProxyWindow.unwrap(destination);\n var name = val.__name__ || val.name || key;\n \"string\" == typeof name && \"function\" == typeof name.indexOf && 0 === name.indexOf(\"anonymous::\") && (name = name.replace(\"anonymous::\", key + \"::\"));\n if (window_ProxyWindow.isProxyWindow(destination)) {\n addMethod(id, val, name, destination, domain);\n destination.awaitWindow().then((function(win) {\n addMethod(id, val, name, win, domain);\n }));\n } else addMethod(id, val, name, destination, domain);\n return serializeType(\"cross_domain_function\", {\n id: id,\n name: name\n });\n }\n function serializeMessage(destination, domain, obj, _ref) {\n var _serialize;\n var on = _ref.on, send = _ref.send;\n return function(obj, serializers) {\n void 0 === serializers && (serializers = defaultSerializers);\n var result = JSON.stringify(obj, (function(key) {\n var val = this[key];\n if (isSerializedType(this)) return val;\n var type = determineType(val);\n if (!type) return val;\n var serializer = serializers[type] || SERIALIZER[type];\n return serializer ? serializer(val, key) : val;\n }));\n return void 0 === result ? \"undefined\" : result;\n }(obj, ((_serialize = {}).promise = function(val, key) {\n return function(destination, domain, val, key, _ref) {\n return serializeType(\"cross_domain_zalgo_promise\", {\n then: function_serializeFunction(destination, domain, (function(resolve, reject) {\n return val.then(resolve, reject);\n }), key, {\n on: _ref.on,\n send: _ref.send\n })\n });\n }(destination, domain, val, key, {\n on: on,\n send: send\n });\n }, _serialize.function = function(val, key) {\n return function_serializeFunction(destination, domain, val, key, {\n on: on,\n send: send\n });\n }, _serialize.object = function(val) {\n return isWindow(val) || window_ProxyWindow.isProxyWindow(val) ? serializeType(\"cross_domain_window\", window_ProxyWindow.serialize(val, {\n send: send\n })) : val;\n }, _serialize));\n }\n function deserializeMessage(source, origin, message, _ref2) {\n var _deserialize;\n var send = _ref2.send;\n return function(str, deserializers) {\n void 0 === deserializers && (deserializers = defaultDeserializers);\n if (\"undefined\" !== str) return JSON.parse(str, (function(key, val) {\n if (isSerializedType(this)) return val;\n var type;\n var value;\n if (isSerializedType(val)) {\n type = val.__type__;\n value = val.__val__;\n } else {\n type = determineType(val);\n value = val;\n }\n if (!type) return value;\n var deserializer = deserializers[type] || DESERIALIZER[type];\n return deserializer ? deserializer(value, key) : value;\n }));\n }(message, ((_deserialize = {}).cross_domain_zalgo_promise = function(serializedPromise) {\n return function(source, origin, _ref2) {\n return new promise_ZalgoPromise(_ref2.then);\n }(0, 0, serializedPromise);\n }, _deserialize.cross_domain_function = function(serializedFunction) {\n return function(source, origin, _ref4, _ref5) {\n var id = _ref4.id, name = _ref4.name;\n var send = _ref5.send;\n var getDeserializedFunction = function(opts) {\n void 0 === opts && (opts = {});\n function crossDomainFunctionWrapper() {\n var _arguments = arguments;\n return window_ProxyWindow.toProxyWindow(source, {\n send: send\n }).awaitWindow().then((function(win) {\n var meth = lookupMethod(win, id);\n if (meth && meth.val !== crossDomainFunctionWrapper) return meth.val.apply({\n source: window,\n origin: getDomain()\n }, _arguments);\n var _args = [].slice.call(_arguments);\n return opts.fireAndForget ? send(win, \"postrobot_method\", {\n id: id,\n name: name,\n args: _args\n }, {\n domain: origin,\n fireAndForget: !0\n }) : send(win, \"postrobot_method\", {\n id: id,\n name: name,\n args: _args\n }, {\n domain: origin,\n fireAndForget: !1\n }).then((function(res) {\n return res.data.result;\n }));\n })).catch((function(err) {\n throw err;\n }));\n }\n crossDomainFunctionWrapper.__name__ = name;\n crossDomainFunctionWrapper.__origin__ = origin;\n crossDomainFunctionWrapper.__source__ = source;\n crossDomainFunctionWrapper.__id__ = id;\n crossDomainFunctionWrapper.origin = origin;\n return crossDomainFunctionWrapper;\n };\n var crossDomainFunctionWrapper = getDeserializedFunction();\n crossDomainFunctionWrapper.fireAndForget = getDeserializedFunction({\n fireAndForget: !0\n });\n return crossDomainFunctionWrapper;\n }(source, origin, serializedFunction, {\n send: send\n });\n }, _deserialize.cross_domain_window = function(serializedWindow) {\n return window_ProxyWindow.deserialize(serializedWindow, {\n send: send\n });\n }, _deserialize));\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES.postrobot_post_message = function(win, serializedMessage, domain) {\n 0 === domain.indexOf(\"file:\") && (domain = \"*\");\n win.postMessage(serializedMessage, domain);\n };\n function send_sendMessage(win, domain, message, _ref2) {\n var on = _ref2.on, send = _ref2.send;\n return promise_ZalgoPromise.try((function() {\n var domainBuffer = windowStore().getOrSet(win, (function() {\n return {};\n }));\n domainBuffer.buffer = domainBuffer.buffer || [];\n domainBuffer.buffer.push(message);\n domainBuffer.flush = domainBuffer.flush || promise_ZalgoPromise.flush().then((function() {\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var serializedMessage = serializeMessage(win, domain, ((_ref = {}).__post_robot_10_0_46__ = domainBuffer.buffer || [], \n _ref), {\n on: on,\n send: send\n });\n var _ref;\n delete domainBuffer.buffer;\n var strategies = Object.keys(SEND_MESSAGE_STRATEGIES);\n var errors = [];\n for (var _i2 = 0; _i2 < strategies.length; _i2++) {\n var strategyName = strategies[_i2];\n try {\n SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n } catch (err) {\n errors.push(err);\n }\n }\n if (errors.length === strategies.length) throw new Error(\"All post-robot messaging strategies failed:\\n\\n\" + errors.map((function(err, i) {\n return i + \". \" + stringifyError(err);\n })).join(\"\\n\\n\"));\n }));\n return domainBuffer.flush.then((function() {\n delete domainBuffer.flush;\n }));\n })).then(src_util_noop);\n }\n function getResponseListener(hash) {\n return globalStore(\"responseListeners\").get(hash);\n }\n function deleteResponseListener(hash) {\n globalStore(\"responseListeners\").del(hash);\n }\n function isResponseListenerErrored(hash) {\n return globalStore(\"erroredResponseListeners\").has(hash);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n var requestListeners = windowStore(\"requestListeners\");\n \"*\" === win && (win = null);\n \"*\" === domain && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n for (var _i4 = 0, _ref3 = [ win, getWildcard() ]; _i4 < _ref3.length; _i4++) {\n var winQualifier = _ref3[_i4];\n if (winQualifier) {\n var nameListeners = requestListeners.get(winQualifier);\n if (nameListeners) {\n var domainListeners = nameListeners[name];\n if (domainListeners) {\n if (domain && \"string\" == typeof domain) {\n if (domainListeners[domain]) return domainListeners[domain];\n if (domainListeners.__domain_regex__) for (var _i6 = 0, _domainListeners$__DO2 = domainListeners.__domain_regex__; _i6 < _domainListeners$__DO2.length; _i6++) {\n var _domainListeners$__DO3 = _domainListeners$__DO2[_i6], listener = _domainListeners$__DO3.listener;\n if (matchDomain(_domainListeners$__DO3.regex, domain)) return listener;\n }\n }\n if (domainListeners[\"*\"]) return domainListeners[\"*\"];\n }\n }\n }\n }\n }\n function handleRequest(source, origin, message, _ref) {\n var on = _ref.on, send = _ref.send;\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n var logName = \"postrobot_method\" === message.name && message.data && \"string\" == typeof message.data.name ? message.data.name + \"()\" : message.name;\n function sendResponse(ack, data, error) {\n return promise_ZalgoPromise.flush().then((function() {\n if (!message.fireAndForget && !isWindowClosed(source)) try {\n return send_sendMessage(source, origin, {\n id: uniqueID(),\n origin: getDomain(window),\n type: \"postrobot_message_response\",\n hash: message.hash,\n name: message.name,\n ack: ack,\n data: data,\n error: error\n }, {\n on: on,\n send: send\n });\n } catch (err) {\n throw new Error(\"Send response message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n }\n }));\n }\n return promise_ZalgoPromise.all([ promise_ZalgoPromise.flush().then((function() {\n if (!message.fireAndForget && !isWindowClosed(source)) try {\n return send_sendMessage(source, origin, {\n id: uniqueID(),\n origin: getDomain(window),\n type: \"postrobot_message_ack\",\n hash: message.hash,\n name: message.name\n }, {\n on: on,\n send: send\n });\n } catch (err) {\n throw new Error(\"Send ack message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n }\n })), promise_ZalgoPromise.try((function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n return options.handler({\n source: source,\n origin: origin,\n data: message.data\n });\n })).then((function(data) {\n return sendResponse(\"success\", data);\n }), (function(error) {\n return sendResponse(\"error\", null, error);\n })) ]).then(src_util_noop).catch((function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n }));\n }\n function handleAck(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) 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 try {\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n if (source !== options.win) throw new Error(\"Ack source does not match registered window\");\n } catch (err) {\n options.promise.reject(err);\n }\n options.ack = !0;\n }\n }\n function handleResponse(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) 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 if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() + \")\" : pattern.toString()));\n var pattern;\n if (source !== options.win) throw new Error(\"Response source does not match registered window\");\n deleteResponseListener(message.hash);\n \"error\" === message.ack ? options.promise.reject(message.error) : \"success\" === message.ack && options.promise.resolve({\n source: source,\n origin: origin,\n data: message.data\n });\n }\n }\n function receive_receiveMessage(event, _ref2) {\n var on = _ref2.on, send = _ref2.send;\n var receivedMessages = globalStore(\"receivedMessages\");\n try {\n if (!window || window.closed || !event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin;\n var messages = function(message, source, origin, _ref) {\n var on = _ref.on, send = _ref.send;\n var parsedMessage;\n try {\n parsedMessage = deserializeMessage(source, origin, message, {\n on: on,\n send: send\n });\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" == typeof parsedMessage && null !== parsedMessage) {\n var parseMessages = parsedMessage.__post_robot_10_0_46__;\n if (Array.isArray(parseMessages)) return parseMessages;\n }\n }(event.data, source, origin, {\n on: on,\n send: send\n });\n if (messages) {\n markWindowKnown(source);\n for (var _i2 = 0; _i2 < messages.length; _i2++) {\n var message = messages[_i2];\n if (receivedMessages.has(message.id)) return;\n receivedMessages.set(message.id, !0);\n if (isWindowClosed(source) && !message.fireAndForget) return;\n 0 === message.origin.indexOf(\"file:\") && (origin = \"file://\");\n try {\n \"postrobot_message_request\" === message.type ? handleRequest(source, origin, message, {\n on: on,\n send: send\n }) : \"postrobot_message_response\" === message.type ? handleResponse(source, origin, message) : \"postrobot_message_ack\" === message.type && handleAck(source, origin, message);\n } catch (err) {\n setTimeout((function() {\n throw err;\n }), 0);\n }\n }\n }\n }\n function on_on(name, options, handler) {\n if (!name) throw new Error(\"Expected name\");\n if (\"function\" == typeof (options = options || {})) {\n handler = options;\n options = {};\n }\n if (!handler) throw new Error(\"Expected handler\");\n var requestListener = function addRequestListener(_ref4, listener) {\n var name = _ref4.name, winCandidate = _ref4.win, domain = _ref4.domain;\n var requestListeners = windowStore(\"requestListeners\");\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (winCandidate && \"*\" !== winCandidate && window_ProxyWindow.isProxyWindow(winCandidate)) {\n var requestListenerPromise = winCandidate.awaitWindow().then((function(actualWin) {\n return addRequestListener({\n name: name,\n win: actualWin,\n domain: domain\n }, listener);\n }));\n return {\n cancel: function() {\n requestListenerPromise.then((function(requestListener) {\n return requestListener.cancel();\n }), src_util_noop);\n }\n };\n }\n var win = winCandidate;\n if (Array.isArray(win)) {\n var listenersCollection = [];\n for (var _i8 = 0, _win2 = win; _i8 < _win2.length; _i8++) listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: _win2[_i8]\n }, listener));\n return {\n cancel: function() {\n for (var _i10 = 0; _i10 < listenersCollection.length; _i10++) listenersCollection[_i10].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n var _listenersCollection = [];\n for (var _i12 = 0, _domain2 = domain; _i12 < _domain2.length; _i12++) _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _domain2[_i12]\n }, listener));\n return {\n cancel: function() {\n for (var _i14 = 0; _i14 < _listenersCollection.length; _i14++) _listenersCollection[_i14].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && \"*\" !== win || (win = getWildcard());\n var strDomain = (domain = domain || \"*\").toString();\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var winNameListeners = requestListeners.getOrSet(win, (function() {\n return {};\n }));\n var winNameDomainListeners = util_getOrSet(winNameListeners, name, (function() {\n return {};\n }));\n var winNameDomainRegexListeners;\n var winNameDomainRegexListener;\n util_isRegex(domain) ? (winNameDomainRegexListeners = util_getOrSet(winNameDomainListeners, \"__domain_regex__\", (function() {\n return [];\n }))).push(winNameDomainRegexListener = {\n regex: domain,\n listener: listener\n }) : winNameDomainListeners[strDomain] = listener;\n return {\n cancel: function() {\n delete winNameDomainListeners[strDomain];\n if (winNameDomainRegexListener) {\n winNameDomainRegexListeners.splice(winNameDomainRegexListeners.indexOf(winNameDomainRegexListener, 1));\n winNameDomainRegexListeners.length || delete winNameDomainListeners.__domain_regex__;\n }\n Object.keys(winNameDomainListeners).length || delete winNameListeners[name];\n win && !Object.keys(winNameListeners).length && requestListeners.del(win);\n }\n };\n }({\n name: name,\n win: options.window,\n domain: options.domain || \"*\"\n }, {\n handler: handler || options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n }\n });\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function on_once(name, options, handler) {\n if (\"function\" == typeof (options = options || {})) {\n handler = options;\n options = {};\n }\n var promise = new promise_ZalgoPromise;\n var listener;\n options.errorHandler = function(err) {\n listener.cancel();\n promise.reject(err);\n };\n listener = on_on(name, options, (function(event) {\n listener.cancel();\n promise.resolve(event);\n if (handler) return handler(event);\n }));\n promise.cancel = listener.cancel;\n return promise;\n }\n var send_send = function send(winOrProxyWin, name, data, options) {\n var domainMatcher = (options = options || {}).domain || \"*\";\n var responseTimeout = options.timeout || -1;\n var childTimeout = options.timeout || 5e3;\n var fireAndForget = options.fireAndForget || !1;\n return window_ProxyWindow.toProxyWindow(winOrProxyWin, {\n send: send\n }).awaitWindow().then((function(win) {\n return promise_ZalgoPromise.try((function() {\n !function(name, win, domain) {\n if (!name) throw new Error(\"Expected name\");\n if (domain && \"string\" != typeof domain && !Array.isArray(domain) && !util_isRegex(domain)) throw new TypeError(\"Can not send \" + name + \". Expected domain \" + JSON.stringify(domain) + \" to be a string, array, or regex\");\n if (isWindowClosed(win)) throw new Error(\"Can not send \" + name + \". Target window is closed\");\n }(name, win, domainMatcher);\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function(win) {\n void 0 === win && (win = window);\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n var result = [];\n for (var _i3 = 0, _getFrames2 = getFrames(win); _i3 < _getFrames2.length; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame); _i5 < _getAllChildFrames2.length; _i5++) result.push(_getAllChildFrames2[_i5]);\n }\n return result;\n }(win); _i7 < _getAllChildFrames4.length; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent); _i15 < _getFrames8.length; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win, timeout, name) {\n void 0 === timeout && (timeout = 5e3);\n void 0 === name && (name = \"Window\");\n var promise = function(win) {\n return windowStore(\"helloPromises\").getOrSet(win, (function() {\n return new promise_ZalgoPromise;\n }));\n }(win);\n -1 !== timeout && (promise = promise.timeout(timeout, new Error(name + \" did not load after \" + timeout + \"ms\")));\n return promise;\n }(win, childTimeout);\n })).then((function(_temp) {\n return function(win, targetDomain, actualDomain, _ref) {\n var send = _ref.send;\n return promise_ZalgoPromise.try((function() {\n return \"string\" == typeof targetDomain ? targetDomain : promise_ZalgoPromise.try((function() {\n return actualDomain || sayHello(win, {\n send: send\n }).then((function(_ref2) {\n return _ref2.domain;\n }));\n })).then((function(normalizedDomain) {\n if (!matchDomain(targetDomain, targetDomain)) throw new Error(\"Domain \" + stringify(targetDomain) + \" does not match \" + stringify(targetDomain));\n return normalizedDomain;\n }));\n }));\n }(win, domainMatcher, (void 0 === _temp ? {} : _temp).domain, {\n send: send\n });\n })).then((function(targetDomain) {\n var domain = targetDomain;\n var logName = \"postrobot_method\" === name && data && \"string\" == typeof data.name ? data.name + \"()\" : name;\n var promise = new promise_ZalgoPromise;\n var hash = name + \"_\" + uniqueID();\n if (!fireAndForget) {\n var responseListener = {\n name: name,\n win: win,\n domain: domain,\n promise: promise\n };\n !function(hash, listener) {\n globalStore(\"responseListeners\").set(hash, listener);\n }(hash, responseListener);\n var reqPromises = windowStore(\"requestPromises\").getOrSet(win, (function() {\n return [];\n }));\n reqPromises.push(promise);\n promise.catch((function() {\n !function(hash) {\n globalStore(\"erroredResponseListeners\").set(hash, !0);\n }(hash);\n deleteResponseListener(hash);\n }));\n var totalAckTimeout = function(win) {\n return windowStore(\"knownWindows\").get(win, !1);\n }(win) ? 1e4 : 2e3;\n var totalResTimeout = responseTimeout;\n var ackTimeout = totalAckTimeout;\n var resTimeout = totalResTimeout;\n var interval = function(method, time) {\n var timeout;\n !function loop() {\n timeout = setTimeout((function() {\n !function() {\n if (isWindowClosed(win)) return promise.reject(new Error(\"Window closed for \" + name + \" before \" + (responseListener.ack ? \"response\" : \"ack\")));\n if (responseListener.cancelled) return promise.reject(new Error(\"Response listener was cancelled for \" + name));\n ackTimeout = Math.max(ackTimeout - 500, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - 500, 0));\n responseListener.ack || 0 !== ackTimeout ? 0 === resTimeout && promise.reject(new Error(\"No response for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalResTimeout + \"ms\")) : promise.reject(new Error(\"No ack for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalAckTimeout + \"ms\"));\n }();\n loop();\n }), 500);\n }();\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n promise.finally((function() {\n interval.cancel();\n reqPromises.splice(reqPromises.indexOf(promise, 1));\n })).catch(src_util_noop);\n }\n return send_sendMessage(win, domain, {\n id: uniqueID(),\n origin: getDomain(window),\n type: \"postrobot_message_request\",\n hash: hash,\n name: name,\n data: data,\n fireAndForget: fireAndForget\n }, {\n on: on_on,\n send: send\n }).then((function() {\n return fireAndForget ? promise.resolve() : promise;\n }), (function(err) {\n throw new Error(\"Send request message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n }));\n }));\n }));\n };\n function setup_serializeMessage(destination, domain, obj) {\n return serializeMessage(destination, domain, obj, {\n on: on_on,\n send: send_send\n });\n }\n function setup_deserializeMessage(source, origin, message) {\n return deserializeMessage(source, origin, message, {\n on: on_on,\n send: send_send\n });\n }\n function createProxyWindow(win) {\n return new window_ProxyWindow({\n send: send_send,\n win: win\n });\n }\n function setup_toProxyWindow(win) {\n return window_ProxyWindow.toProxyWindow(win, {\n send: send_send\n });\n }\n function setup() {\n if (!global_getGlobal().initialized) {\n global_getGlobal().initialized = !0;\n on = (_ref3 = {\n on: on_on,\n send: send_send\n }).on, send = _ref3.send, (global = global_getGlobal()).receiveMessage = global.receiveMessage || function(message) {\n return receive_receiveMessage(message, {\n on: on,\n send: send\n });\n };\n !function(_ref5) {\n var on = _ref5.on, send = _ref5.send;\n globalStore().getOrSet(\"postMessageListener\", (function() {\n return function(obj, event, handler) {\n obj.addEventListener(\"message\", handler);\n return {\n cancel: function() {\n obj.removeEventListener(\"message\", handler);\n }\n };\n }(window, 0, (function(event) {\n !function(event, _ref4) {\n var on = _ref4.on, send = _ref4.send;\n promise_ZalgoPromise.try((function() {\n var source = event.source || event.sourceElement;\n var origin = event.origin || event.originalEvent && event.originalEvent.origin;\n var data = event.data;\n \"null\" === origin && (origin = \"file://\");\n if (source) {\n if (!origin) throw new Error(\"Post message did not have origin domain\");\n receive_receiveMessage({\n source: source,\n origin: origin,\n data: data\n }, {\n on: on,\n send: send\n });\n }\n }));\n }(event, {\n on: on,\n send: send\n });\n }));\n }));\n }({\n on: on_on,\n send: send_send\n });\n !function(_ref8) {\n var on = _ref8.on, send = _ref8.send;\n globalStore(\"builtinListeners\").getOrSet(\"helloListener\", (function() {\n var listener = on(\"postrobot_hello\", {\n domain: \"*\"\n }, (function(_ref3) {\n resolveHelloPromise(_ref3.source, {\n domain: _ref3.origin\n });\n return {\n instanceID: getInstanceID()\n };\n }));\n var parent = getAncestor();\n parent && sayHello(parent, {\n send: send\n }).catch((function(err) {}));\n return listener;\n }));\n }({\n on: on_on,\n send: send_send\n });\n }\n var _ref3, on, send, global;\n }\n function destroy() {\n !function() {\n var responseListeners = globalStore(\"responseListeners\");\n for (var _i2 = 0, _responseListeners$ke2 = responseListeners.keys(); _i2 < _responseListeners$ke2.length; _i2++) {\n var hash = _responseListeners$ke2[_i2];\n var listener = responseListeners.get(hash);\n listener && (listener.cancelled = !0);\n responseListeners.del(hash);\n }\n }();\n (listener = globalStore().get(\"postMessageListener\")) && listener.cancel();\n var listener;\n delete window.__post_robot_10_0_46__;\n }\n var src_types_TYPES_0 = !0;\n function cleanUpWindow(win) {\n for (var _i2 = 0, _requestPromises$get2 = windowStore(\"requestPromises\").get(win, []); _i2 < _requestPromises$get2.length; _i2++) _requestPromises$get2[_i2].reject(new Error(\"Window \" + (isWindowClosed(win) ? \"closed\" : \"cleaned up\") + \" before response\")).catch(src_util_noop);\n }\n setup();\n } ]);\n}));","/* @flow */\n\n// $FlowFixMe\nmodule.exports = require('./dist/post-robot'); // eslint-disable-line import/no-commonjs\n\n// $FlowFixMe\nmodule.exports.default = module.exports; // eslint-disable-line import/no-commonjs\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n\n // Prevent prototype pollution:\n // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n var index = -1,\n length = path.length;\n\n if (!length) {\n return true;\n }\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n // Always block \"__proto__\" anywhere in the path if it's not expected\n if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n return false;\n }\n\n // Block constructor/prototype as non-terminal traversal keys to prevent\n // escaping the object graph into built-in constructors and prototypes.\n if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n return false;\n }\n }\n\n var obj = parent(object, path);\n return obj == null || delete obj[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nexport default omit;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nexport default pickBy;\n","import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n","export type LaunchDarklyBooleanFlagKey =\n | 'ai_image_generation_model'\n | 'ai_video_generation_model'\n | 'allow_ai_prompts_in_canvas_text'\n | 'allow_bulk_actions_canvases_files'\n | 'allow_content_grid_autofill'\n | 'allow_canvas_duplication'\n | 'allow_canvases_tables_columns_settings'\n | 'allow_table_column_resizing'\n | 'allow_creating_canvas_with_no_template'\n | 'allow_dynamic_data_table_for_scribble_component'\n | 'allow_html_for_scribble_component'\n | 'allow_embeddable_for_scribble_component'\n | 'allow_embeddable_hiding'\n | 'allow_multimedia_for_scribble_component'\n | 'allow_note_taking'\n | 'allow_rep_canvas_metadata_edit'\n | 'allow_rep_file_distributions'\n | 'allow_rep_file_rating'\n | 'allow_rep_file_upload'\n | 'allow_saving_annotations_in_personal_layer'\n | 'allow_user_to_edit_font_size_and_color_in_canvas_tokens'\n | 'are_sections_system_controlled'\n | 'enable_canvas_core_distributions'\n | 'copy_context_to_canvas'\n | 'copy_template_metadata_to_canvas'\n | 'disable_canvas_edit_for_reps'\n | 'disable_custom_tooltips'\n | 'disable_file_edit_content'\n | 'enable_inline_wopi_edit_button'\n | 'disable_fullscreen_canvas_builder'\n | 'disable_impact_web_browser_fullscreen'\n | 'disable_user_invitations'\n | 'display_section_list_name'\n | 'disable_download_canvas'\n | 'enable_ai_generated_thumbnails'\n | 'enable_analytics'\n | 'enable_app_developer_role'\n | 'enable_algolia_search'\n | 'enable_background_image_theme_options'\n | 'enable_better_canvas_builder_control_bars_on_zoom'\n | 'enable_bulk_update_file_attributes'\n | 'enable_canvas_as_home'\n | 'enable_canvas_blocks'\n | 'enable_canvas_node_debugging'\n | 'enable_canvas_freeze'\n | 'enable_canvas_locks'\n | 'enable_canvas_template_edit_in_impact'\n | 'enable_canvas_tokens'\n | 'enable_collaborations'\n | 'enable_collection_player_data_accessor'\n | 'enable_content_grid_data_accessor'\n | 'enable_content_type_change_in_content_selector'\n | 'enable_cross_tab_instance_reload_for_ld_sync'\n | 'enable_create_section_from_section_template'\n | 'enable_custom_display_overrides'\n | 'enable_default_crm_shape'\n | 'enable_detailed_date_format'\n | 'enable_dsr_readonly_annotations'\n | 'enable_dnd_html_editor'\n | 'enable_dynamic_content_component'\n | 'enable_dynamic_data_table_component'\n | 'enable_custom_data_tables'\n | 'enable_embedded_video_autoplay'\n | 'enable_embedded_video'\n | 'enable_enhanced_canvas_drawer_app'\n | 'enable_enhanced_indicators'\n | 'enable_enhanced_section_execution_states'\n | 'enable_experimental_canvas_builder_dnd'\n | 'enable_extra_file_data'\n | 'enable_file_copy'\n | 'enable_file_pages_metadata'\n | 'enable_file_revisions'\n | 'enable_file_divisible_permission'\n | 'enable_folder_details_edit'\n | 'enable_folder_distributions'\n | 'enable_handlebar_template_support'\n | 'enable_height_in_component_theming'\n | 'enable_home_customization'\n | 'enable_hotspot_visibility'\n | 'enable_improved_canvas_node_updating'\n | 'enable_individual_users_in_file_distribution'\n | 'enable_inline_filter_options'\n | 'enable_insearch_in_section_selector'\n | 'enable_instance_cloner'\n | 'enable_advanced_cloner'\n | 'enable_content_promotion'\n | 'enable_instance_editor_role'\n | 'enable_instance_navigation_from_management'\n | 'enable_knock_notifications'\n | 'enable_maintain_section_theme_control'\n | 'enable_metadata_in_file_uploads_with_default_values'\n | 'enable_more_intuitive_component_spacing'\n | 'enable_multi_destination_upload'\n | 'enable_multimedia_component_ai_images'\n | 'enable_new_meeting_bar'\n | 'enable_provider_agnostic_meeting_bar'\n | 'enable_original_pdf_link'\n | 'enable_scale_content'\n | 'enable_sorting_in_tiptap_table'\n | 'enable_theme_assets'\n | 'enable_toc_enhancements_to_support_same_section_in_section_list'\n | 'enable_pia_assistant'\n | 'enable_pipe_character_multi_search'\n | 'enable_popup_apps'\n | 'enable_pre_send_validation'\n | 'enable_reorder_search'\n | 'enable_reorder_scribble_isolation'\n | 'enable_reorder_component_options_menu'\n | 'enable_resizable_multimedia_component'\n | 'enable_responsive_scribble_component'\n | 'enable_saved_canvases_filters'\n | 'enable_short_tag_column_in_tables'\n | 'enable_scribble_component'\n | 'enable_scribble_content_as_background'\n | 'enable_search_and_filters_in_multimedia_component'\n | 'enable_section_context_in_dsr'\n | 'enable_selectors_dnd'\n | 'enable_section_selector_edit_section'\n | 'enable_smart_folders'\n | 'enable_smart_folders_for_sections'\n | 'enable_smart_folders_in_section_selector'\n | 'enable_smart_folders_in_files'\n | 'enable_sorting_in_sections'\n | 'enable_suggested_tags'\n | 'enable_template_component_permissions'\n | 'enable_template_folders'\n | 'enable_theme_options_border_radius'\n | 'enable_themes'\n | 'hide_asset_uploader'\n | 'hide_user_feedback_widget'\n | 'include_files_content_in_print'\n | 'interpolate_rep_canvases_on_edit_mode'\n | 'is_timeline_component_allowed'\n | 'launch_in_full_screen_on_present_mode'\n | 'prefer_online_handlers'\n | 'restrict_owned_files_from_admins'\n | 'show_asset_manager_for_multimedia'\n | 'show_clear_all_annotations_button'\n | 'show_content_selector_list_view'\n | 'show_metadata_filters_in_all_canvas_things'\n | 'show_only_preview_mode_for_html_component'\n | 'show_popularity_icons'\n | 'use_core_endpoint_for_analytics'\n | 'convert_pptx_to_section_with_scribble_pdfjs'\n | 'use_short_url_for_shared_link'\n | 'use_zoho_instead_of_ms_wopi'\n | 'enable_new_section_list'\n | 'enable_sharebox_apps'\n | 'enable_sharebox_bulk_filtering'\n | 'enable_back_to_previous_location_in_canvas'\n | 'enable_crm_shape_for_external_links'\n | 'enable_adaptive_popup_apps'\n | 'enable_file_version_polling'\n | 'skip_pspdfkit_wait_for_high_res_thumbs'\n | 'enable_reactive_scribble_component_toolbar'\n | 'enable_embeddable_full_screen_mode'\n | 'enable_enhanced_user_management'\n | 'enable_impersonation'\n | 'enable_instance_admin_user_assignment'\n | 'keep_static_pptx_editable'\n | 'enable_canvas_pdf_dimensions'\n | 'enable_editable_pptx_of_canvas'\n | 'enable_editable_pptx_of_canvas_with_fonts'\n | 'enable_aspose_pptx_of_canvas'\n | 'enable_canvas_control_bars_collapse'\n | 'enable_rep_app_visibility_order'\n | 'enable_file_sharing_print_permissions'\n | 'enable_section_sharing_print_permissions'\n | 'enable_marketplace_tab'\n | 'enable_sfdc_account_visibility_for_canvases'\n | 'sfdc_offline_enabled'\n | 'enable_granular_permissions'\n | 'enable_hub_collections'\n | 'enable_hub_recommended_smart_folder'\n | 'enable_custom_user_properties'\n\nexport type LaunchDarklyNumberFlagKey =\n | 'canvas_section_selector_page_size'\n | 'canvas_section_selector_selected_items_with_thumbnail_size'\n\n/** How PIA Search serves inference (PIT-6863). */\nexport type PiaSearchMode = 'off' | 'on_device' | 'online'\n\n/**\n * `pia_search_config` LD flag value — selects how PIA Search serves inference.\n * Object-valued (not a bare boolean) so the mode can grow sibling config later\n * without a second flag; `mode` is the only field today.\n */\nexport type PiaSearchConfig = {\n mode?: PiaSearchMode\n}\n\n/**\n * Resolve the PIA Search mode from the `pia_search_config` flag: a valid `mode`\n * wins; anything missing or invalid resolves to `'off'` (fail-closed).\n */\nexport function resolvePiaSearchMode(config: PiaSearchConfig | null | undefined): PiaSearchMode {\n if (config?.mode === 'off' || config?.mode === 'on_device' || config?.mode === 'online') return config.mode\n return 'off'\n}\n\ntype LaunchDarklyObjectFlags = {\n canvas_manager_table_columns: CanvasManagerTableColumns\n context_crm_shape: Record<string, any>\n pia_search_config: PiaSearchConfig\n}\n\nexport type LaunchDarklyObjectFlagKey = keyof LaunchDarklyObjectFlags\nexport type LaunchDarklyStringFlagKey = keyof typeof _LaunchDarklyStringFlags\nconst _LaunchDarklyStringFlags = {\n canvas_component_grouping: ['page', 'page_break', 'none'],\n batch_open_content_grid_ar_files: ['off', 'simultaneous', 'swap'],\n selectors_dnd_batch_add_style: ['button', 'buttons', 'dropdown'],\n pspdfkit_client_version: ['', 'pspdfkit-web/2024.6.0/pspdfkit.js', 'pspdfkit-web/1.14.0/nutrient-viewer.js'], // path suffix appended to file.pspdfkit_server_url; empty → legacy 2024.6.0/pspdfkit.js\n slotty_ui_remote_script_url: ['https://anyvalidurl.xyz', ''], // empty string means no remote script\n dsr_remote_script_url: ['https://anyvalidurl.xyz', ''], // empty string means no remote script\n ai_image_generation_model: ['minimax/image-01', ''], // empty string means minimax/image-01\n ai_video_generation_model: ['minimax/video-01', ''], // empty string means minimax/video-01\n sharebox_format: ['content-grid', 'content-grid-default', 'collection-player-default'],\n} as const\n\ntype LaunchDarklyStringFlagValue<K extends LaunchDarklyStringFlagKey = LaunchDarklyStringFlagKey> =\n K extends LaunchDarklyStringFlagKey ? (typeof _LaunchDarklyStringFlags)[K][number] : never\n\ntype CanvasManagerVisibility = {\n hide: string[]\n order: string[]\n}\n\nexport type CanvasTablePagination = {\n sizes: number[]\n default: number\n}\n\nexport type CanvasManagerTableColumns = {\n canvas_templates: CanvasManagerVisibility\n canvases: CanvasManagerVisibility\n section_templates: CanvasManagerVisibility\n sections: CanvasManagerVisibility\n}\n\nexport type LaunchDarklyEnv = {\n [K in LaunchDarklyBooleanFlagKey]?: boolean\n} & {\n [K in LaunchDarklyStringFlagKey]?: LaunchDarklyStringFlagValue<K>\n} & {\n [K in LaunchDarklyNumberFlagKey]?: number\n} & {\n [K in keyof LaunchDarklyObjectFlags]?: LaunchDarklyObjectFlags[K]\n} & {\n [key: string]: any\n}\n","import { highLevelApi } from '@sdk/main'\nimport type { PitcherEnv } from '@sdk/interfaces'\nimport type {\n AICompletePayload,\n AICompleteResult,\n AIRuntimeCapabilities,\n PiaSearchAnswerPayload,\n PiaSearchAnswerResult,\n} from '@sdk/payload.types'\nimport { resolvePiaSearchMode } from '@lib/types/launchDarkly.types'\n\n/**\n * AI surface of the JS API (PIT-6863): Impact owns AI inference on every\n * platform behind ONE surface.\n *\n * - iOS: `ai.get_capabilities` / `ai.complete` are answered by the native\n * on-device (Gemma) bridge over the standard PITCHER_REQUEST postMessage.\n * - Web: there is no local model — capabilities resolve statically to the\n * online (Bedrock) runtime and `piaSearchAnswer` calls the next-core\n * `pia-prepare/pia-search` route directly with the env's access token.\n *\n * Casing note: `ai.complete`'s payload keys (`prompt`/`max_tokens`/`stream`)\n * are already snake_case, so LowLevelApi's `snakeCaseKeys` transform is a\n * no-op — no RAW_PAYLOAD_METHODS entry is needed (verified against the iOS\n * wire contract).\n */\n\nconst PIA_SEARCH_ROUTE = '/core/api/protected/pia-prepare/pia-search'\n/** `ai.get_capabilities` bound so an older iOS build that never answers the\n * postMessage can't hang `piaSearchAnswer` forever (LowLevelApi has no\n * timeouts) — on timeout the caller falls through to the online path. */\nconst CAPABILITIES_TIMEOUT_MS = 3_000\nconst ON_DEVICE_MAX_TOKENS = 512\n/** Online answer request bound so a hung/slow backend can't leave\n * `piaSearchAnswer` pending forever (the on-device path is already bounded by\n * `CAPABILITIES_TIMEOUT_MS`). This is the terminal path — on timeout the call\n * rejects and callers (e.g. the Hub) degrade to lexical search. */\nconst ONLINE_TIMEOUT_MS = 30_000\n\nconst WEB_CAPABILITIES: AIRuntimeCapabilities = {\n available: true,\n offline: false,\n runtime: 'bedrock-online',\n}\n\nfunction withTimeout<T>(promise: Promise<T>, ms: number, label: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms)\n promise.then(\n (value) => {\n clearTimeout(timer)\n resolve(value)\n },\n (error) => {\n clearTimeout(timer)\n reject(error)\n },\n )\n })\n}\n\nfunction normalizeOrigin(domain: string): string {\n return domain.startsWith('http') ? domain : `https://${domain}`\n}\n\n/** Customer API origin, from the token claims (canonical) with the org\n * metadata custom_domain as fallback — the slotty `pia.ui.ts` pattern. */\nfunction apiOriginFromEnv(env: PitcherEnv): string {\n const claimDomain = env?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain\n if (typeof claimDomain === 'string' && claimDomain.length > 0) return normalizeOrigin(claimDomain)\n const orgDomain = env?.pitcher?.organization?.metadata?.custom_domain\n if (typeof orgDomain === 'string' && orgDomain.length > 0) return normalizeOrigin(orgDomain)\n throw new Error('piaSearchAnswer: no customer domain found in env (token_claims / organization metadata)')\n}\n\nfunction buildOnDevicePrompt(query: string, contextText?: string): string {\n const context =\n typeof contextText === 'string' && contextText.trim().length > 0\n ? contextText.trim()\n : 'No content context was provided.'\n return `You are PIA, a sales content assistant. Answer the rep's question using ONLY the CONTEXT below — do not invent content that is not in it.\n\nCONTEXT:\n${context}\n\nQUESTION: ${query}\n\nAnswer concisely in plain text. If the context does not contain the answer, say you could not find it in the available content.`\n}\n\n/**\n * Capabilities of the AI completion runtime on the current platform.\n *\n * On iOS this asks the native on-device bridge (`ai.get_capabilities`); on web\n * it resolves statically to the online (Bedrock) runtime — no postMessage\n * round-trip.\n *\n * @returns {Promise<AIRuntimeCapabilities>} - Promise resolving with the runtime capabilities.\n *\n * @example\n * const capabilities = await api.aiGetCapabilities()\n * if (capabilities.available) { ... }\n */\nexport async function aiGetCapabilities(): Promise<AIRuntimeCapabilities> {\n const env: PitcherEnv = await highLevelApi.API.request('get_env')\n if (env?.mode === 'IOS') {\n return highLevelApi.API.request('ai.get_capabilities')\n }\n return { ...WEB_CAPABILITIES }\n}\n\n/**\n * Run an AI completion on the on-device model (iOS only). On web the host\n * rejects with a clear error — use `piaSearchAnswer` (or the next-core AI\n * routes) for online inference instead.\n *\n * The payload is the EXACT iOS wire contract: `{ prompt, max_tokens?, stream? }`\n * → `{ text, tokens_generated, elapsed_seconds, time_to_first_token_seconds }`.\n *\n * @param {AICompletePayload} payload - The completion payload.\n * @returns {Promise<AICompleteResult>} - Promise resolving with the completion.\n *\n * @example\n * const completion = await api.aiComplete({ prompt: 'Summarize ...', max_tokens: 256 })\n * console.log(completion.text)\n */\nexport function aiComplete(payload: AICompletePayload): Promise<AICompleteResult> {\n if (!payload || typeof payload.prompt !== 'string' || payload.prompt.trim() === '') {\n return Promise.reject(new Error('prompt is required and must be a non-empty string'))\n }\n return highLevelApi.API.request('ai.complete', payload)\n}\n\n/**\n * Answer a rep's natural-language question over the instance's content — the\n * ONE high-level PIA Search call (PIT-6863). Routing follows the\n * `pia_search_config` flag mode (see `resolvePiaSearchMode`):\n *\n * - `on_device` on iOS with an available local model → `aiComplete` over the\n * caller-assembled `context_text` (the Hub has the file metadata\n * client-side). Unavailable/downloading models fall through to online.\n * - `online` (or any on-device fallback) → POST to the next-core\n * `pia-prepare/pia-search` Bedrock route, which assembles its own candidate\n * context server-side.\n * - `off` → rejects.\n *\n * @param {PiaSearchAnswerPayload} payload - The question + optional context/narrowing.\n * @returns {Promise<PiaSearchAnswerResult>} - Unified answer with the serving `source`.\n *\n * @example\n * const result = await api.piaSearchAnswer({ query: 'What is our pricing for oncology?' })\n * console.log(result.answer, result.cited_file_ids, result.source)\n */\nexport async function piaSearchAnswer(payload: PiaSearchAnswerPayload): Promise<PiaSearchAnswerResult> {\n if (!payload || typeof payload.query !== 'string' || payload.query.trim() === '') {\n return Promise.reject(new Error('query is required and must be a non-empty string'))\n }\n\n const env: PitcherEnv = await highLevelApi.API.request('get_env')\n const mode = resolvePiaSearchMode(env?.launch_darkly?.pia_search_config)\n if (mode === 'off') {\n throw new Error('pia_search_disabled: pia_search_config resolves to mode \"off\"')\n }\n\n // On-device path — iOS only (web never has a local model). Any failure\n // (bridge timeout, model unavailable, completion error) falls through to the\n // online route.\n if (mode === 'on_device' && env?.mode === 'IOS') {\n try {\n const capabilities = await withTimeout(\n highLevelApi.API.request('ai.get_capabilities') as Promise<AIRuntimeCapabilities>,\n CAPABILITIES_TIMEOUT_MS,\n 'ai.get_capabilities',\n )\n if (capabilities?.available) {\n const completion = await aiComplete({\n prompt: buildOnDevicePrompt(payload.query, payload.context_text),\n max_tokens: payload.max_tokens ?? ON_DEVICE_MAX_TOKENS,\n })\n return { answer: completion.text, source: 'on_device' }\n }\n } catch (error) {\n console.warn('[piaSearchAnswer] on-device path unavailable, falling back to online:', error)\n }\n }\n\n const instanceId = payload.instance_id || env?.pitcher?.instance?.id\n if (!instanceId) {\n throw new Error('piaSearchAnswer: instance_id could not be resolved from the payload or env')\n }\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), ONLINE_TIMEOUT_MS)\n try {\n const response = await fetch(`${apiOriginFromEnv(env)}${PIA_SEARCH_ROUTE}`, {\n method: 'POST',\n signal: controller.signal,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${env.pitcher.access_token}`,\n },\n body: JSON.stringify({\n query: payload.query,\n instance_id: instanceId,\n ...(Array.isArray(payload.file_ids) && payload.file_ids.length > 0 && { file_ids: payload.file_ids }),\n }),\n })\n if (!response.ok) {\n throw new Error(`pia_search ${response.status}`)\n }\n // Consume the body INSIDE the timed window: fetch() resolves on headers\n // alone, so a response that stalls mid-body would otherwise hang unbounded.\n // The abort signal cancels the body read too, so clearTimeout must wait\n // until json() settles (finally).\n const data = (await response.json()) as {\n pia_search?: { answer?: string; cited_file_ids?: string[]; confidence?: 'high' | 'medium' | 'low' }\n }\n const output = data?.pia_search ?? {}\n return {\n answer: typeof output.answer === 'string' ? output.answer : '',\n cited_file_ids: Array.isArray(output.cited_file_ids) ? output.cited_file_ids : [],\n ...(output.confidence && { confidence: output.confidence }),\n source: 'online',\n }\n } catch (error) {\n // AbortError name check is the cross-runtime signal (WKWebView included).\n if ((error as { name?: string })?.name === 'AbortError') {\n throw new Error(`pia_search online request timed out after ${ONLINE_TIMEOUT_MS}ms`)\n }\n throw error\n } finally {\n clearTimeout(timer)\n }\n}\n","import { highLevelApi } from '@sdk/main'\nimport type {\n AppsDbDeleteEntryPayload,\n AppsDbEntriesResult,\n AppsDbEntry,\n AppsDbGetEntriesPayload,\n AppsDbPsqlPayload,\n AppsDbUpsertEntryPayload,\n} from '@sdk/payload.types'\n\nconst APPS_DB_BASE_PATH = '/core/api/protected/appsdb'\n\ninterface AppsDbContext {\n isIos: boolean\n origin: string\n accessToken: string\n instanceId?: string\n}\n\nasync function fetchAppsDbContext(): Promise<AppsDbContext> {\n const env: any = await highLevelApi.API.request('get_env')\n const claimsDomain = env?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain\n const metadataDomain = env?.pitcher?.organization?.metadata?.custom_domain\n let origin = claimsDomain || metadataDomain || ''\n if (origin && !origin.startsWith('http')) origin = `https://${origin}`\n\n return {\n isIos: (env?.mode ?? env?.pitcher?.mode) === 'IOS',\n origin,\n accessToken: env?.pitcher?.access_token ?? '',\n instanceId: env?.pitcher?.instance?.id,\n }\n}\n\n// Hub flows chain SDK calls (psql search → PUT/POST), each needing the context;\n// memoize the get_env round-trip so one logical operation doesn't re-marshal the\n// full env over the bridge per call. Short TTL keeps a refreshed access token\n// from going stale in the cache.\nconst CONTEXT_TTL_MS = 60_000\nlet contextCache: { promise: Promise<AppsDbContext>; fetchedAt: number } | null = null\n\nfunction getAppsDbContext(): Promise<AppsDbContext> {\n if (contextCache && Date.now() - contextCache.fetchedAt < CONTEXT_TTL_MS) {\n return contextCache.promise\n }\n const promise = fetchAppsDbContext()\n contextCache = { promise, fetchedAt: Date.now() }\n promise.catch(() => {\n if (contextCache?.promise === promise) contextCache = null\n })\n return promise\n}\n\nasync function appsDbRestFetch(\n ctx: AppsDbContext,\n path: string,\n init: { method: string; body?: object; params?: Record<string, any> },\n): Promise<any> {\n // Orgs without a custom_domain resolve to an empty origin — fall back to the\n // current window origin (mirrors the old relative-fetch behavior, e.g. hub\n // dev behind the Vite proxy) instead of throwing TypeError: Invalid URL.\n const base = ctx.origin || (typeof window !== 'undefined' ? window.location.origin : '')\n const url = new URL(`${base}${APPS_DB_BASE_PATH}${path}`)\n Object.entries(init.params ?? {}).forEach(([key, value]) => {\n if (value !== undefined && value !== null) url.searchParams.set(key, String(value))\n })\n\n const response = await fetch(url.toString(), {\n method: init.method,\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${ctx.accessToken}`,\n ...(ctx.instanceId ? { 'x-instance-id': ctx.instanceId } : {}),\n },\n ...(init.body !== undefined ? { body: JSON.stringify(init.body) } : {}),\n })\n\n if (!response.ok) {\n let errorBody: any\n try {\n errorBody = await response.json()\n } catch {\n errorBody = undefined\n }\n const error = new Error(\n `AppsDB request failed: ${response.status}${errorBody?.error ? ` — ${errorBody.error}` : ''}`,\n )\n ;(error as Error & { status?: number }).status = response.status\n throw error\n }\n\n if (response.status === 204 || response.status === 205) return undefined\n // Guard against empty-body 2xx responses — response.json() would throw\n const text = await response.text()\n return text ? JSON.parse(text) : undefined\n}\n\n// Bridge rejections surface as the raw PITCHER_RESPONSE error body, e.g. iOS:\n// { error_code: 'requestTypeDoesNotExists', localized_description: '...' }.\n// With `casing: 'camel'` the keys arrive camelized, hence the errorCode check.\nfunction hasErrorCode(error: any, code: string): boolean {\n return (\n error?.error_code === code ||\n error?.errorCode === code ||\n error?.code === code ||\n (typeof error?.reason === 'string' && error.reason.includes(code)) ||\n (typeof error?.message === 'string' && error.message.includes(code))\n )\n}\n\nfunction isTypeNotSyncedError(error: any): boolean {\n return hasErrorCode(error, 'type_not_synced')\n}\n\n/**\n * Version-skew guard: an app build whose native bridge predates the `appsdb_*`\n * handlers rejects them with `requestTypeDoesNotExists` — callers then use the\n * REST path, exactly as before this surface existed.\n */\nfunction isBridgeUnsupportedError(error: any): boolean {\n return hasErrorCode(error, 'requestTypeDoesNotExists')\n}\n\ntype PsqlCondition = { path: string; value: string | number | boolean | null }\n\nfunction parsePsqlLiteral(raw: string): string | number | boolean | null | undefined {\n if (/^'.*'$/.test(raw)) return raw.slice(1, -1).replace(/''/g, \"'\")\n if (/^-?\\d+(\\.\\d+)?$/.test(raw)) return Number(raw)\n if (/^true$/i.test(raw)) return true\n if (/^false$/i.test(raw)) return false\n if (/^null$/i.test(raw)) return null\n return undefined\n}\n\n/** Blanks single-quoted literals ('' = escaped quote) so keyword checks only see text outside quotes. */\nfunction stripQuotedLiterals(where: string): string {\n return where.replace(/'(?:[^']|'')*'/g, \"''\")\n}\n\n/** Splits a WHERE clause on top-level AND, respecting single-quoted literals. Null on unbalanced quotes. */\nfunction splitTopLevelAnd(where: string): string[] | null {\n const parts: string[] = []\n let current = ''\n let inQuote = false\n let i = 0\n while (i < where.length) {\n const char = where[i]\n if (char === \"'\") {\n if (inQuote && where[i + 1] === \"'\") {\n current += \"''\"\n i += 2\n continue\n }\n inQuote = !inQuote\n current += char\n i += 1\n continue\n }\n if (!inQuote) {\n const separator = where.slice(i).match(/^ AND /i)\n if (separator) {\n parts.push(current)\n current = ''\n i += separator[0].length\n continue\n }\n }\n current += char\n i += 1\n }\n if (inQuote) return null\n parts.push(current)\n return parts\n}\n\n/**\n * Parses the subset of PSQL the local mirror can serve: `SELECT * FROM <type>`\n * with an optional AND-chain of `field = literal` conditions. Anything richer\n * (explicit field lists, OR/NOT, comparison operators, LIKE, ORDER BY, LIMIT)\n * returns null and the caller falls back to a network fetch. Quoted literals\n * are respected — a value containing e.g. ' AND ' or the word IN neither\n * mis-splits nor forces the network fallback.\n */\nfunction parseSimplePsql(query: string): { type: string; conditions: PsqlCondition[] } | null {\n const normalized = query.replace(/\\s+/g, ' ').trim()\n const match = normalized.match(/^SELECT \\* FROM ([A-Za-z0-9_]+)( WHERE (.+))?$/i)\n if (!match) return null\n\n const type = match[1]\n const where = match[3]\n if (!where) return { type, conditions: [] }\n if (/\\bOR\\b|\\bNOT\\b|\\bLIKE\\b|\\bIN\\b|[<>]|!=/i.test(stripQuotedLiterals(where))) return null\n\n const rawConditions = splitTopLevelAnd(where)\n if (!rawConditions) return null\n\n const conditions: PsqlCondition[] = []\n for (const part of rawConditions) {\n const condition = part.trim().match(/^([A-Za-z0-9_.]+) ?= ?(.+)$/)\n if (!condition) return null\n const value = parsePsqlLiteral(condition[2].trim())\n if (value === undefined) return null\n conditions.push({ path: condition[1], value })\n }\n return { type, conditions }\n}\n\nfunction entryMatches(entry: AppsDbEntry, conditions: PsqlCondition[]): boolean {\n return conditions.every(({ path, value }) => {\n const actual = path.split('.').reduce((acc: any, key: string) => (acc == null ? undefined : acc[key]), entry)\n if (value === null) return actual === null || actual === undefined\n if (actual === null || actual === undefined) return false\n return String(actual) === String(value)\n })\n}\n\n/**\n * Lists AppsDB entries of a type, adapting to the platform:\n * - Web: GET to the next-core AppsDB REST API.\n * - iOS: reads the local offline mirror via the `appsdb_get_entries` bridge\n * request. Types not allowlisted in the `offline_appsdb_types` setting fail\n * with `code = type_not_synced` and automatically fall back to the network.\n *\n * @example\n * const { entries } = await api.appsDbGetEntries({ type: 'favorite' })\n */\nexport async function appsDbGetEntries(payload: AppsDbGetEntriesPayload): Promise<AppsDbEntriesResult> {\n if (!payload?.type || typeof payload.type !== 'string') {\n return Promise.reject(new Error('type is required and must be a non-empty string'))\n }\n\n const ctx = await getAppsDbContext()\n if (ctx.isIos) {\n try {\n return await highLevelApi.API.request('appsdb_get_entries', payload)\n } catch (error: any) {\n if (!isTypeNotSyncedError(error) && !isBridgeUnsupportedError(error)) throw error\n }\n }\n return appsDbRestFetch(ctx, '', { method: 'GET', params: payload })\n}\n\n/**\n * Creates or updates (deep-merges) an AppsDB entry, adapting to the platform:\n * - Web: POST (create) or PUT (update, when `id` is set) to the next-core AppsDB REST API.\n * - iOS: the `appsdb_upsert_entry` bridge request writes on the server and\n * mirrors the authoritative result locally. Offline it rejects with\n * `code = offline_write_not_supported` — AppsDB writes are online-only.\n *\n * The `data` blob is sent verbatim (no key-casing transformation), and all\n * `appsDb*` responses are likewise returned verbatim — even for\n * `casing: 'camel'` consumers — so bridge and REST results are identical.\n *\n * @example\n * const entry = await api.appsDbUpsertEntry({ type: 'favorite', user_id: 1, data: { file_id: 'abc' } })\n */\nexport async function appsDbUpsertEntry(payload: AppsDbUpsertEntryPayload): Promise<AppsDbEntry> {\n if (!payload?.data || typeof payload.data !== 'object') {\n return Promise.reject(new Error('data is required and must be an object'))\n }\n if (!payload.id && !payload.type) {\n return Promise.reject(new Error('type is required when creating an entry (no id provided)'))\n }\n\n const ctx = await getAppsDbContext()\n if (ctx.isIos) {\n try {\n return await highLevelApi.API.request('appsdb_upsert_entry', payload)\n } catch (error: any) {\n if (!isBridgeUnsupportedError(error)) throw error\n }\n }\n if (payload.id) {\n return appsDbRestFetch(ctx, `/${encodeURIComponent(payload.id)}`, { method: 'PUT', body: { data: payload.data } })\n }\n return appsDbRestFetch(ctx, '', { method: 'POST', body: payload })\n}\n\n/**\n * Deletes an AppsDB entry (soft delete server-side), adapting to the platform:\n * - Web: DELETE to the next-core AppsDB REST API.\n * - iOS: the `appsdb_delete_entry` bridge request deletes on the server and\n * removes the entry from the local offline mirror. Offline it rejects with\n * `code = offline_write_not_supported`.\n *\n * @example\n * await api.appsDbDeleteEntry({ id: '01H5ZXE7YP2JR6Q1Z2G3K4H5J6' })\n */\nexport async function appsDbDeleteEntry(payload: AppsDbDeleteEntryPayload): Promise<void> {\n if (!payload?.id || typeof payload.id !== 'string') {\n return Promise.reject(new Error('id is required and must be a non-empty string'))\n }\n\n const ctx = await getAppsDbContext()\n if (ctx.isIos) {\n try {\n return await highLevelApi.API.request('appsdb_delete_entry', payload)\n } catch (error: any) {\n if (!isBridgeUnsupportedError(error)) throw error\n }\n }\n await appsDbRestFetch(ctx, `/${encodeURIComponent(payload.id)}`, { method: 'DELETE' })\n}\n\nasync function isDeviceOffline(): Promise<boolean> {\n try {\n return Boolean(await highLevelApi.API.request('is_offline'))\n } catch {\n // Fail open to the network — a broken connectivity probe must not route\n // reads through the possibly-stale mirror.\n return false\n }\n}\n\n// Mirror reads are windowed like the REST API — page in sync-sized chunks\n// (mirrors the native sync page size). Reads are local-device SQLite, so\n// there is no page-count cap: the loop drains the mirror completely.\nconst MIRROR_PAGE_LIMIT = 1000\n\n/**\n * Serves a parsed psql query from the local offline mirror. Returns null when\n * the mirror can't serve it (type not in the `offline_appsdb_types` allowlist,\n * or a native bridge that predates the `appsdb_*` handlers) so the caller can\n * fall through to a network attempt.\n *\n * WHERE evaluation needs the full entry set, so windowed bridge responses are\n * paged until exhausted. Bridges without windowing support return everything\n * with no `hasMore`, ending the loop after one page.\n */\nasync function psqlFromMirror(parsed: {\n type: string\n conditions: PsqlCondition[]\n}): Promise<AppsDbEntriesResult | null> {\n try {\n const entries: AppsDbEntry[] = []\n let hasMore = true\n while (hasMore) {\n const result: AppsDbEntriesResult = await highLevelApi.API.request('appsdb_get_entries', {\n type: parsed.type,\n limit: MIRROR_PAGE_LIMIT,\n offset: entries.length,\n })\n const page = result?.entries ?? []\n entries.push(...page)\n // An empty page can't advance the offset, so stop on it even if a\n // misbehaving bridge keeps reporting hasMore — otherwise the loop would\n // re-request the same offset forever (SDK requests have no timeout).\n hasMore = Boolean(result?.hasMore) && page.length > 0\n }\n const matched = entries.filter((entry) => entryMatches(entry, parsed.conditions))\n return { entries: matched, totalCount: matched.length, hasMore: false }\n } catch (error: any) {\n if (isTypeNotSyncedError(error) || isBridgeUnsupportedError(error)) return null\n throw error\n }\n}\n\n/**\n * Runs a PSQL (SQL-like) query against AppsDB: POST to the next-core\n * `/appsdb/psql` endpoint whenever the network is available.\n *\n * On iOS the local offline mirror (`appsdb_get_entries` + client-side\n * evaluation of simple `field = literal` AND-chains) serves the query ONLY\n * while the device is offline, or when an online fetch fails at the\n * connection level. Online queries are always answered by the server: Hub\n * flows use psql results to decide between creating and updating an entry,\n * and the mirror can lag the server by a sync cycle (multi-device) — a stale\n * empty read would turn an update into a duplicate create. Offline that same\n * stale read is harmless because AppsDB writes are rejected offline anyway.\n *\n * @example\n * const { entries } = await api.appsDbPsql({\n * query: \"SELECT * FROM personalfolders WHERE user_id = 1 AND data.custom_domain = 'acme.my.pitcher.com'\",\n * })\n */\nexport async function appsDbPsql(payload: AppsDbPsqlPayload): Promise<AppsDbEntriesResult> {\n if (!payload?.query || typeof payload.query !== 'string') {\n return Promise.reject(new Error('query is required and must be a non-empty string'))\n }\n\n const ctx = await getAppsDbContext()\n if (ctx.isIos) {\n const parsed = parseSimplePsql(payload.query)\n let mirrorUnavailable = false\n if (parsed && (await isDeviceOffline())) {\n const local = await psqlFromMirror(parsed)\n if (local) return local\n mirrorUnavailable = true\n }\n try {\n return await appsDbRestFetch(ctx, '/psql', { method: 'POST', body: payload })\n } catch (error: any) {\n // fetch rejects with TypeError on connection-level failures (HTTP errors\n // carry a status) — the offline probe can race a real connectivity drop.\n // A mirror miss above can't succeed on retry, so don't probe it twice.\n if (parsed && !mirrorUnavailable && error instanceof TypeError) {\n const local = await psqlFromMirror(parsed)\n if (local) return local\n }\n throw error\n }\n }\n return appsDbRestFetch(ctx, '/psql', { method: 'POST', body: payload })\n}\n","import type { OpenExternalUrlRequestPayload, OpenRequestPayload } from '@sdk/payload.types'\n\n/**\n * Open a file in the CatalogIQ instance.\n */\nexport function open(payload: OpenRequestPayload = {}): Promise<string> {\n return this.API.request('open', payload)\n}\n\n/**\n * Open external URL in a new tab. Works on both web and mobile.\n */\nexport function openExternalUrl(payload: OpenExternalUrlRequestPayload): Promise<void> {\n return this.API.request('open_external_url', payload)\n}\n","import { omit } from 'lodash-es'\n\nimport type { PitcherEnv } from '@sdk/interfaces'\nimport type { User } from '@openapi'\n\n/**\n * Fetches the necessary info for the app to know where it is embedded.\n *\n * It contains information about:\n * - user\n * - instance\n * - organization\n * - security token to query Pitcher REST API\n * - Salesforce connection information (if connected) including security token to query Salesforce REST API\n * - Auth0 token information\n *\n * @example\n * const env = usePitcherApi().getEnv().then((env) => {\n * console.log(env.pitcher.user.name)\n * })\n */\nexport function getEnv(): Promise<PitcherEnv> {\n return this.API.request('get_env').then((env: PitcherEnv) => omit(env, 'pitcher.org_config.segment'))\n}\n\ntype UpdateEnvParams = Pick<User, 'language'>\n\nexport function updateMyUser(payload: UpdateEnvParams): Promise<User> {\n return this.API.request('update_my_user', payload)\n}\n\nexport function isOffline(): Promise<boolean> {\n return this.API.request('is_offline')\n}\n","export type Language = [\n string, // key\n string, // name\n]\n\n/**\n * Fetches available languages for the logged-in user\n */\nexport function getLanguages(): Promise<Language[]> {\n return this.API.request('get_languages')\n}\n","import type {\n CanvasRetrieve,\n CanvasCreateRequest,\n PatchedCanvasUpdateRequest,\n SharedLink,\n Instance,\n CanvasRecommendedFiles,\n CanvasSection,\n} from '@openapi'\nimport type { GetCanvasesParams, CanvasIndicator } from '@lib/types/canvases'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type { CanvasThemeRetrieve } from '@lib/types/canvasTheme'\n/**\n * Fetches a list of canvases to use in your app.\n *\n * @example\n * // The `filters` object is a reserved payload key to transfer the metadata dict over the wire.\n * api.getCanvases({\n * search: 'my search query',\n * ordering: '-created_at',\n * filters: {\n * metadata__mydaterangefiltername__range: ['2023-12-10', '2023-12-22'],\n * metadata__mymultiselectfiltername: ['optionAValue', 'optionCValue'],\n * },\n * fields: 'id,name,metadata',\n * })\n */\nexport function getCanvases(\n payload: GetCanvasesParams & { filters?: Record<string, any>; fields?: string },\n): Promise<PaginatedData<CanvasRetrieve>> {\n return this.API.request('get_canvases', payload)\n}\n\nexport function createCanvas(payload: Omit<CanvasCreateRequest, 'instance_id'>): Promise<CanvasRetrieve> {\n return this.API.request('create_canvas', payload)\n}\n\nexport function deleteCanvas(payload: { id: CanvasRetrieve['id'] }): Promise<CanvasRetrieve> {\n return this.API.request('delete_canvas', payload)\n}\n\n/**\n * Updates a canvas by ID\n *\n * @example\n * // The fields param is appended to the URL as a query param.\n * onMounted(() => {\n * PitcherAPI.updateCanvas({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * fields: 'id,name',\n * name: 'To 3!',\n * }).then((res) => {\n * console.log(res) // logs: { id: '01HH4RCBH631K4JDHWAQB0RPR6', name: 'To 3!' }\n * })\n * })\n */\nexport function updateCanvas(\n payload: PatchedCanvasUpdateRequest & { id: CanvasRetrieve['id']; instance_id?: Instance['id']; fields?: string },\n): Promise<CanvasRetrieve> {\n let shouldDebug = false\n if (typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n shouldDebug = urlParams.get('debug') === 'true' || !!(window as any).debug\n }\n shouldDebug && console.info('JS API UPDATE CANVAS', payload)\n\n return this.API.request('update_canvas', payload).then((res: any) => {\n shouldDebug && console.info('JS API UPDATE CANVAS RESPONSE', res)\n return res\n })\n}\n\n/**\n * Updates canvas indicators by canvas ID. It merges the passed object into existing canvas indicators adding new keys if they were empty and overriding pre-existing keys.\n *\n * Indicators can also be updated using updateCanvas API but in this case passed object fully replaces existing indicators.\n *\n * @example\n * // The fields param is appended to the URL as a query param.\n * onMounted(() => {\n * PitcherAPI.updateCanvasIndicators({\n * id: '01J9XT0WVXRTETF4CQZP42CPZP',\n * indicators: {\n * existing: { type: 'info', label: 'new label' }, // will be overriden\n * new: { type: 'info', label: 'INFO' }, // will be added\n * removeExisting: null // will be set to null and ignored, it is the same as removal\n * }\n * }).then((res) => {\n * console.log(res) // entire canvas object, including indicators field\n * })\n * })\n */\nexport function updateCanvasIndicators(payload: {\n indicators: Record<string, CanvasIndicator>\n id: CanvasRetrieve['id']\n instance_id?: Instance['id']\n}): Promise<CanvasRetrieve> {\n return this.API.request('update_canvas_indicators', payload)\n}\n\n/**\n * Fetches a single canvas by ID.\n *\n * Pass `lazy_sections: true` to request the opt-in lazy \"shell\": when the\n * org/instance `lazy_load_sections` setting is also on, the response returns\n * ordered `section_ids` instead of the heavy inline `sections`, and you hydrate\n * section bodies on demand via {@link getSectionsByIds}. With the setting off\n * (or the param omitted) the response is the legacy fully-expanded canvas.\n */\nexport function getCanvas(payload: {\n id: CanvasRetrieve['id']\n fields?: string\n lazy_sections?: boolean\n}): Promise<CanvasRetrieve> {\n return this.API.request('get_canvas', payload)\n}\n\n/**\n * Batch-hydrate section bodies for a canvas fetched as a lazy shell.\n *\n * Companion to `getCanvas({ lazy_sections: true })`: pass the canvas ID and a\n * slice of its `section_ids` (≤100 per call) and receive the full section\n * bodies, serialized identically to a normal canvas retrieve's inline\n * `sections`. Only sections actually referenced by the canvas are returned.\n *\n * Pass the SAME `exclude_drafts` / `include_expired_files` / `include_pending_files`\n * the shell was fetched with so hydration filters identically to the shell that\n * advertised the IDs — otherwise admin decks (fetched with `exclude_drafts:false`,\n * expired/pending on) list draft/expired sections the batch would silently drop,\n * leaving them blank. Omit them to get the rep defaults (drafts excluded,\n * expired/pending off). `include_expired_files`/`include_pending_files` are\n * server-side role-gated (admin/editor only), matching the inline retrieve.\n *\n * @example\n * const { sections } = await api.getSectionsByIds({\n * canvas_id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * section_ids: ['01SEC...', '02SEC...'],\n * })\n */\nexport function getSectionsByIds(payload: {\n canvas_id: CanvasRetrieve['id']\n section_ids: string[]\n exclude_drafts?: boolean\n include_expired_files?: boolean\n include_pending_files?: boolean\n}): Promise<{ sections: CanvasSection[] }> {\n return this.API.request('get_canvas_sections_by_ids', payload)\n}\n\nexport function shareCanvas(payload: { id: CanvasRetrieve['id'] }): Promise<SharedLink> {\n return this.API.request('share_canvas', payload)\n}\n\nexport function getCanvasRecommendedFiles(payload: {\n canvas_id: CanvasRetrieve['id']\n match?: ('tags' | 'metadata')[]\n}): Promise<CanvasRecommendedFiles> {\n return this.API.request('get_canvas_recommended_files', payload)\n}\n\nexport function getCanvasTheme(payload: { canvas_id: CanvasRetrieve['id'] }): Promise<CanvasThemeRetrieve | null> {\n return this.API.request('get_canvas_theme', payload)\n}\n\nexport function unassignCanvasTheme(payload: { canvas_id: CanvasRetrieve['id'] }): Promise<void> {\n return this.API.request('unassign_canvas_theme', payload)\n}\n","import type { File, FileRetrieve, PaginatedFileList, FileUpdateRequest, FileRevision } from '@openapi'\nimport type { ListFilesPayload } from '@sdk/payload.types'\nimport type { AllFileCreateRequest, DeviceFile } from '@lib/types/files'\n\nexport function getFiles(\n payload: ListFilesPayload & { filters?: Record<string, any>; fields?: string },\n): Promise<PaginatedFileList> {\n const p = { ...payload }\n\n if (p.type) {\n p.type = Array.isArray(p.type) ? p.type : [p.type]\n }\n\n if (p.content_type) {\n p.content_type = (\n Array.isArray(p.content_type) ? p.content_type : [p.content_type]\n ) as ListFilesPayload['content_type']\n }\n\n return this.API.request('get_files', p)\n}\n\nexport function downloadFile(payload: { file_id: File['id'] }): Promise<null> {\n return this.API.request('download_file', payload)\n}\n\nexport function getAppConfig(payload?: { app_name?: string }): Promise<Record<string, any>> {\n let fileId\n\n if (!payload?.app_name && typeof window !== 'undefined' && window.location.href.startsWith('file://')) {\n const match = window.location.href.match(/pitcher(?:%20|\\s+)folders\\/files\\/([^/]+)\\//i)\n fileId = match?.[1]\n }\n\n return fileId\n ? this.API.request('get_file', { file_id: fileId }).then((file: FileRetrieve) => file?.metadata ?? {})\n : this.API.request('get_app_config', payload)\n}\n\nexport function getFile(payload: { id?: FileRetrieve['id']; file_id?: FileRetrieve['id'] }): Promise<FileRetrieve> {\n const { id, file_id } = payload\n return this.API.request('get_file', { ...payload, file_id: id || file_id })\n}\n\nexport function getFileRevisionData(payload: {\n file_id: FileRetrieve['id']\n revision_id: FileRevision['id']\n}): Promise<FileRetrieve> {\n return this.API.request('get_file_revision_data', payload)\n}\n\nexport function updateFile(payload: FileUpdateRequest & { id: File['id'] }): Promise<FileRetrieve> {\n return this.API.request('update_file', payload)\n}\n\nexport function deleteFile(payload: { file_id: File['id'] }): Promise<File['id']> {\n return this.API.request('delete_file', payload)\n}\n\nexport function createFile(payload: Omit<AllFileCreateRequest, 'instance_id'>): Promise<FileRetrieve> {\n return this.API.request('create_file', payload)\n}\n\n/**\n * Dispatches iOS native file selector and returns the selected file.\n *\n * @example\n * // iOS only method to select a file from the device.\n * api.selectDeviceFile()\n */\nexport function selectDeviceFile(): Promise<DeviceFile> {\n return this.API.request('select_device_file')\n}\n\n/**\n * Deletes a local file on iOS devices from Pitcher Folders.\n *\n * @example\n * // iOS only method to delete a local file.\n * api.deleteLocalFile({ url: 'file:///var/mobile/Containers/Data/Application/x/Documents/Pitcher%20Folders/ARPhotocapture/x.png' })\n */\nexport function deleteLocalFile(payload: { url: string }): Promise<void> {\n return this.API.request('delete_local_file', payload)\n}\n","import type { FileRetrieve, FileRevision } from '@openapi'\n\nexport function getFileRevisions(payload: {\n id?: FileRetrieve['id']\n file_id?: FileRetrieve['id']\n}): Promise<FileRevision[]> {\n const { id, file_id } = payload\n return this.API.request('get_file_revisions', { file_id: id || file_id })\n}\n","export function search(payload: { query: string; includeExpired?: boolean }): Promise<any> {\n return this.API.request('search', payload)\n}\n","import type { GetUsersParams, RefreshServiceTokenResponse, RefreshServiceTokenRequest } from '@lib/types/users'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type { User } from '@openapi'\n\nexport function getUsers(payload?: GetUsersParams): Promise<PaginatedData<User>> {\n return this.API.request('get_users', payload)\n}\n\n/**\n * Ask for a refreshed Salesforce token. In case the token hasn't expired yet, this method will return the same token as the current one found in the (`getEnv`)[#getenv] result.\n * @returns Promise resolving to an object containing the token\n */\nexport function refreshServiceToken(payload?: RefreshServiceTokenRequest): Promise<RefreshServiceTokenResponse> {\n return this.API.request('refresh_service_token', payload ?? {})\n}\n\nexport function refreshAccessToken() {\n return this.API.request('refresh_access_token')\n}\n","import type { File } from '@openapi'\n\n/**\n * @deprecated - not used anymore\n */\nexport function fetchDocumentInfo(payload: { fileId: File['id'] }): Promise<{\n pageCount: number\n [key: string]: unknown\n}> {\n return this.API.request('fetch_document_info', payload)\n}\n\n/**\n * Renders a page from a file together with annotations.\n *\n * @example\n * api.renderPageAsImage({\n * fileId: '123456',\n * documentId: '654321',\n * pageIndex: 0,\n * params: { width: 1920 },\n * })\n *\n * @returns A promise that resolves with the image as an ArrayBuffer.\n */\nexport function renderPageAsImage(payload: {\n /**\n * The ID of the file to render. Used when the documentId is not available.\n */\n fileId: File['id']\n /**\n * The ID of the document to render (optional). If not provided the fileId will be used.\n */\n documentId?: File['id']\n /**\n * The index of the page to render.\n */\n pageIndex: number\n /**\n * The parameters to use for rendering the page.\n */\n params: { width: number } | { height: number }\n}): Promise<ArrayBuffer> {\n return this.API.request('render_page_as_image', payload)\n}\n","export function toast(payload: { type: string; message: string }): Promise<void> {\n return this.API.request('toast', payload)\n}\n","/**\n * SmartStore Smart SQL Query Utilities\n *\n * This module provides utilities for converting SOQL queries to SmartStore Smart SQL format\n * for offline data access on iOS devices using Salesforce Mobile SDK.\n */\n\n// SQL keywords that should NOT be converted to SmartStore field references\nconst SQL_KEYWORDS = new Set([\n 'SELECT',\n 'FROM',\n 'WHERE',\n 'AND',\n 'OR',\n 'NOT',\n 'IN',\n 'LIKE',\n 'ORDER',\n 'BY',\n 'GROUP',\n 'HAVING',\n 'LIMIT',\n 'OFFSET',\n 'ASC',\n 'DESC',\n 'NULLS',\n 'FIRST',\n 'LAST',\n 'NULL',\n 'TRUE',\n 'FALSE',\n 'COUNT',\n 'SUM',\n 'AVG',\n 'MIN',\n 'MAX',\n 'COUNT_DISTINCT',\n 'CALENDAR_MONTH',\n 'CALENDAR_QUARTER',\n 'CALENDAR_YEAR',\n 'DAY_IN_MONTH',\n 'DAY_IN_WEEK',\n 'DAY_IN_YEAR',\n 'DAY_ONLY',\n 'FISCAL_MONTH',\n 'FISCAL_QUARTER',\n 'FISCAL_YEAR',\n 'HOUR_IN_DAY',\n 'WEEK_IN_MONTH',\n 'WEEK_IN_YEAR',\n 'INCLUDES',\n 'EXCLUDES',\n 'ABOVE',\n 'BELOW',\n 'ABOVE_OR_BELOW',\n 'AT',\n 'TYPEOF',\n 'WHEN',\n 'THEN',\n 'ELSE',\n 'END',\n 'USING',\n 'SCOPE',\n 'DATA',\n 'CATEGORY',\n 'ROLLUP',\n 'CUBE',\n 'FORMAT',\n 'CONVERTCURRENCY',\n 'TOLABEL',\n 'DISTANCE',\n 'GEOLOCATION',\n])\n\n// Aggregate functions that need special handling\nconst AGGREGATE_FUNCTIONS = ['COUNT', 'SUM', 'AVG', 'MIN', 'MAX', 'COUNT_DISTINCT']\n\n/**\n * Checks if a string is a SQL keyword\n */\nfunction isSqlKeyword(word: string): boolean {\n return SQL_KEYWORDS.has(word.toUpperCase())\n}\n\n/**\n * Checks if a value is a literal (string, number, boolean, null, date)\n */\nfunction isLiteralValue(value: string): boolean {\n const trimmed = value.trim()\n\n // Check for quoted strings\n if ((trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\")) || (trimmed.startsWith('\"') && trimmed.endsWith('\"'))) {\n return true\n }\n\n // Check for numbers\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmed)) {\n return true\n }\n\n // Check for boolean\n if (/^(true|false)$/i.test(trimmed)) {\n return true\n }\n\n // Check for null\n if (/^null$/i.test(trimmed)) {\n return true\n }\n\n // Check for date/datetime literals\n if (/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?(Z|[+-]\\d{2}:\\d{2})?)?$/.test(trimmed)) {\n return true\n }\n\n // Check for date literals like TODAY, YESTERDAY, LAST_N_DAYS:n, etc.\n if (\n /^(TODAY|YESTERDAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|LAST_N_DAYS:\\d+|NEXT_N_DAYS:\\d+|LAST_N_WEEKS:\\d+|NEXT_N_WEEKS:\\d+|LAST_N_MONTHS:\\d+|NEXT_N_MONTHS:\\d+|LAST_N_QUARTERS:\\d+|NEXT_N_QUARTERS:\\d+|LAST_N_YEARS:\\d+|NEXT_N_YEARS:\\d+|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)$/i.test(\n trimmed,\n )\n ) {\n return true\n }\n\n return false\n}\n\n/**\n * Checks if a token is an ISO 8601 datetime literal (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss.sssZ)\n */\nfunction isDateTimeLiteral(token: string): boolean {\n return /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?(Z|[+-]\\d{2}:\\d{2})?)?$/.test(token)\n}\n\n/**\n * Converts a field reference to SmartStore syntax\n * Handles relationship fields (Account.Name) and simple fields (Name)\n *\n * In SmartStore, relationship fields are stored as denormalized nested data within the soup.\n * So `Child_Account_vod__r.Name` becomes `{Child_Account_vod__c:Child_Account_vod__r.Name}`\n * - the full relationship path is preserved within the primary object's soup.\n */\nfunction convertFieldToSmartStore(field: string, primaryObject: string, objectAliases: Map<string, string>): string {\n const trimmed = field.trim()\n\n // Skip if it's a keyword or literal\n if (isSqlKeyword(trimmed) || isLiteralValue(trimmed)) {\n return trimmed\n }\n\n // Handle FIELDS(ALL) placeholder - convert to SmartStore _soup syntax\n // SmartStore uses {ObjectName:_soup} to select all fields from a soup\n if (trimmed === '__FIELDS_ALL_PLACEHOLDER__') {\n return `{${primaryObject}:_soup}`\n }\n\n // Handle wildcard * - should not be wrapped in SmartStore field reference syntax\n if (trimmed === '*') {\n return '*'\n }\n\n // Check if already in SmartStore format\n if (trimmed.startsWith('{') && trimmed.endsWith('}')) {\n return trimmed\n }\n\n // Handle relationship fields (e.g., Account.Name, Child_Account_vod__r.Name)\n // In SmartStore, relationship data is stored denormalized within the soup,\n // so we keep the full path and use the primary object as the soup name\n if (trimmed.includes('.')) {\n // Check if the first part is an alias for the primary object\n const parts = trimmed.split('.')\n const alias = parts[0]\n if (objectAliases.has(alias.toLowerCase()) && objectAliases.get(alias.toLowerCase()) === primaryObject) {\n // It's an alias for the primary object, use the rest as field path\n const fieldPath = parts.slice(1).join('.')\n return `{${primaryObject}:${fieldPath}}`\n }\n // For relationship fields, keep the full path within the primary object's soup\n return `{${primaryObject}:${trimmed}}`\n }\n\n // Simple field - use primary object\n return `{${primaryObject}:${trimmed}}`\n}\n\n/**\n * Converts an aggregate function to SmartStore syntax\n * e.g., COUNT(Id) → COUNT({Account:Id})\n */\nfunction convertAggregateFunction(expr: string, primaryObject: string, objectAliases: Map<string, string>): string {\n for (const func of AGGREGATE_FUNCTIONS) {\n const regex = new RegExp(`\\\\b${func}\\\\s*\\\\(([^)]+)\\\\)`, 'gi')\n expr = expr.replace(regex, (_match, innerField) => {\n const trimmedInner = innerField.trim()\n // Handle COUNT(*)\n if (trimmedInner === '*') {\n return `${func}(*)`\n }\n // Handle DISTINCT\n if (trimmedInner.toUpperCase().startsWith('DISTINCT ')) {\n const fieldPart = trimmedInner.substring(9).trim()\n const smartField = convertFieldToSmartStore(fieldPart, primaryObject, objectAliases)\n return `${func}(DISTINCT ${smartField})`\n }\n const smartField = convertFieldToSmartStore(trimmedInner, primaryObject, objectAliases)\n return `${func}(${smartField})`\n })\n }\n return expr\n}\n\n/**\n * Parses the SELECT clause fields, handling aggregate functions and aliases\n */\nfunction parseSelectFields(selectClause: string): string[] {\n const fields: string[] = []\n let depth = 0\n let currentField = ''\n\n for (let i = 0; i < selectClause.length; i++) {\n const char = selectClause[i]\n\n if (char === '(') {\n depth++\n currentField += char\n } else if (char === ')') {\n depth--\n currentField += char\n } else if (char === ',' && depth === 0) {\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n currentField = ''\n } else {\n currentField += char\n }\n }\n\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n\n return fields\n}\n\n/**\n * Converts SELECT fields to SmartStore syntax\n */\nfunction convertSelectFields(fields: string[], primaryObject: string, objectAliases: Map<string, string>): string[] {\n return fields.map((field) => {\n // Check for alias (e.g., \"COUNT(Id) cnt\" or \"Name AS n\")\n const aliasMatch = field.match(/^(.+?)\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*)$/i)\n let expression = field\n let alias = ''\n\n if (aliasMatch) {\n expression = aliasMatch[1].trim()\n alias = aliasMatch[2]\n }\n\n // Check if it's an aggregate function\n const hasAggregate = AGGREGATE_FUNCTIONS.some((func) => new RegExp(`\\\\b${func}\\\\s*\\\\(`, 'i').test(expression))\n\n if (hasAggregate) {\n const converted = convertAggregateFunction(expression, primaryObject, objectAliases)\n return alias ? `${converted} ${alias}` : converted\n }\n\n // Regular field\n const converted = convertFieldToSmartStore(expression, primaryObject, objectAliases)\n return alias ? `${converted} ${alias}` : converted\n })\n}\n\n/**\n * Converts SOQL null comparisons to SmartStore (SQL) syntax\n * SOQL: = null, != null\n * SQL: IS NULL, IS NOT NULL\n *\n * IMPORTANT: Process != and <> BEFORE = to avoid partial matches\n */\nfunction convertNullComparisons(clause: string): string {\n // Convert \"!= null\" or \"!=null\" to \"IS NOT NULL\" (case insensitive) - MUST be before = null\n let result = clause.replace(/\\s*!=\\s*null\\b/gi, ' IS NOT NULL')\n\n // Convert \"<> null\" to \"IS NOT NULL\" (case insensitive)\n result = result.replace(/\\s*<>\\s*null\\b/gi, ' IS NOT NULL')\n\n // Convert \"= null\" or \"=null\" to \"IS NULL\" (case insensitive) - MUST be after != null\n result = result.replace(/\\s*=\\s*null\\b/gi, ' IS NULL')\n\n return result\n}\n\n/**\n * Converts WHERE clause to SmartStore syntax\n * Preserves operators, literals, and keywords while converting field references\n * Also converts SOQL null comparisons (= null, != null) to SQL syntax (IS NULL, IS NOT NULL)\n */\nfunction convertWhereClause(whereClause: string, primaryObject: string, objectAliases: Map<string, string>): string {\n // Tokenize the WHERE clause while preserving structure\n let result = ''\n let i = 0\n const len = whereClause.length\n\n while (i < len) {\n const char = whereClause[i]\n\n // Skip whitespace\n if (/\\s/.test(char)) {\n result += char\n i++\n continue\n }\n\n // Handle quoted strings - pass through unchanged\n if (char === \"'\" || char === '\"') {\n const quote = char\n result += char\n i++\n while (i < len && whereClause[i] !== quote) {\n // Handle escaped quotes\n if (whereClause[i] === '\\\\' && i + 1 < len) {\n result += whereClause[i] + whereClause[i + 1]\n i += 2\n } else {\n result += whereClause[i]\n i++\n }\n }\n if (i < len) {\n result += whereClause[i]\n i++\n }\n continue\n }\n\n // Handle operators and special characters\n if (/[()=<>!,]/.test(char)) {\n result += char\n i++\n // Handle multi-char operators\n if ((char === '!' || char === '<' || char === '>') && i < len && whereClause[i] === '=') {\n result += whereClause[i]\n i++\n }\n continue\n }\n\n // Handle identifiers and keywords\n if (/[a-zA-Z_]/.test(char)) {\n let identifier = ''\n while (i < len && /[a-zA-Z0-9_.]/.test(whereClause[i])) {\n identifier += whereClause[i]\n i++\n }\n\n // Check if it's a keyword, literal, or field\n if (isSqlKeyword(identifier) || isLiteralValue(identifier)) {\n result += identifier\n } else {\n // It's a field reference\n result += convertFieldToSmartStore(identifier, primaryObject, objectAliases)\n }\n continue\n }\n\n // Handle numbers and datetime literals\n if (/[0-9-]/.test(char)) {\n let token = ''\n\n // Handle negative numbers or dates starting with digit\n if (char === '-') {\n token += char\n i++\n }\n\n // Read digits, dots, colons, and dashes for dates/datetimes\n while (i < len && /[0-9.:\\-TZ+]/.test(whereClause[i])) {\n token += whereClause[i]\n i++\n }\n\n // Wrap datetime literals in single quotes for Smart SQL (SQLite requirement)\n if (isDateTimeLiteral(token)) {\n result += `'${token}'`\n } else {\n result += token\n }\n continue\n }\n\n // Pass through any other character\n result += char\n i++\n }\n\n // Convert SOQL null comparisons to SQL syntax\n result = convertNullComparisons(result)\n\n return result\n}\n\n/**\n * Parses ORDER BY clause into field and direction pairs\n */\nfunction parseOrderByClause(orderByClause: string): Array<{ field: string; direction: string }> {\n const result: Array<{ field: string; direction: string }> = []\n\n // Split by comma, but be careful with functions\n const parts = orderByClause.split(/,(?![^()]*\\))/)\n\n for (const part of parts) {\n const trimmed = part.trim()\n if (!trimmed) continue\n\n // Match field and optional direction (ASC/DESC) and NULLS FIRST/LAST\n const match = trimmed.match(/^(.+?)\\s*(ASC|DESC)?\\s*(NULLS\\s+(?:FIRST|LAST))?$/i)\n\n if (match) {\n const field = match[1].trim()\n let direction = match[2] ? match[2].toUpperCase() : ''\n if (match[3]) {\n direction += (direction ? ' ' : '') + match[3].toUpperCase()\n }\n result.push({ field, direction })\n } else {\n result.push({ field: trimmed, direction: '' })\n }\n }\n\n return result\n}\n\n/**\n * Converts ORDER BY fields to SmartStore syntax\n */\nfunction convertOrderByFields(\n orderByParts: Array<{ field: string; direction: string }>,\n primaryObject: string,\n objectAliases: Map<string, string>,\n): string[] {\n return orderByParts.map(({ field, direction }) => {\n // Check for aggregate functions\n const hasAggregate = AGGREGATE_FUNCTIONS.some((func) => new RegExp(`\\\\b${func}\\\\s*\\\\(`, 'i').test(field))\n\n let convertedField: string\n if (hasAggregate) {\n convertedField = convertAggregateFunction(field, primaryObject, objectAliases)\n } else {\n convertedField = convertFieldToSmartStore(field, primaryObject, objectAliases)\n }\n\n return direction ? `${convertedField} ${direction}` : convertedField\n })\n}\n\n/**\n * Parses GROUP BY clause fields\n */\nfunction parseGroupByClause(groupByClause: string): string[] {\n return groupByClause\n .split(/,(?![^()]*\\))/)\n .map((f) => f.trim())\n .filter(Boolean)\n}\n\n/**\n * Converts GROUP BY fields to SmartStore syntax\n */\nfunction convertGroupByFields(fields: string[], primaryObject: string, objectAliases: Map<string, string>): string[] {\n return fields.map((field) => {\n // Check for aggregate functions (ROLLUP, CUBE)\n if (/^(ROLLUP|CUBE)\\s*\\(/i.test(field)) {\n return field.replace(/\\(([^)]+)\\)/g, (_match, inner) => {\n const innerFields = inner.split(',').map((f: string) => f.trim())\n const converted = innerFields.map((f: string) => convertFieldToSmartStore(f, primaryObject, objectAliases))\n return `(${converted.join(', ')})`\n })\n }\n return convertFieldToSmartStore(field, primaryObject, objectAliases)\n })\n}\n\n/**\n * Extracts FROM clause and any JOINs\n * Returns the primary object and any joined objects\n */\nfunction parseFromClause(fromClause: string): {\n primary: string\n alias?: string\n joins: Array<{ object: string; alias?: string; type: string; on?: string }>\n} {\n const joins: Array<{ object: string; alias?: string; type: string; on?: string }> = []\n\n // Match primary object with optional alias\n const primaryMatch = fromClause.match(/^([A-Za-z0-9_]+)(?:\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*))?/i)\n\n if (!primaryMatch) {\n return { primary: '', joins }\n }\n\n const primary = primaryMatch[1]\n const alias = primaryMatch[2]\n\n // Match JOIN clauses\n const joinRegex =\n /(LEFT\\s+OUTER\\s+JOIN|LEFT\\s+JOIN|INNER\\s+JOIN|JOIN)\\s+([A-Za-z0-9_]+)(?:\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*))?\\s+ON\\s+([^,]+?)(?=(?:LEFT|INNER|JOIN|$))/gi\n let joinMatch\n\n while ((joinMatch = joinRegex.exec(fromClause)) !== null) {\n joins.push({\n type: joinMatch[1].toUpperCase().replace(/\\s+/g, ' '),\n object: joinMatch[2],\n alias: joinMatch[3],\n on: joinMatch[4]?.trim(),\n })\n }\n\n return { primary, alias, joins }\n}\n\n/**\n * Removes subqueries (parenthesized SELECT statements) from a query string.\n * Returns the query with subqueries replaced by a placeholder.\n * This is needed because SmartStore doesn't support SOQL-style subqueries.\n */\nfunction removeSubqueries(query: string): { cleanQuery: string; subqueries: string[] } {\n const subqueries: string[] = []\n let cleanQuery = ''\n let depth = 0\n let currentSubquery = ''\n let inSubquery = false\n\n for (let i = 0; i < query.length; i++) {\n const char = query[i]\n\n if (char === '(') {\n depth++\n if (depth === 1) {\n // Check if this starts a subquery (SELECT keyword inside parentheses).\n // Require SELECT followed by whitespace so we don't strip WHERE conditions\n // that use field names like Selected__c or Selection_Type__c.\n const remaining = query.substring(i + 1).trimStart()\n if (/^SELECT\\s/i.test(remaining)) {\n inSubquery = true\n currentSubquery = char\n continue\n }\n }\n if (inSubquery) {\n currentSubquery += char\n } else {\n cleanQuery += char\n }\n } else if (char === ')') {\n if (inSubquery) {\n currentSubquery += char\n depth--\n if (depth === 0) {\n // End of subquery\n subqueries.push(currentSubquery)\n currentSubquery = ''\n inSubquery = false\n }\n } else {\n depth--\n cleanQuery += char\n }\n } else {\n if (inSubquery) {\n currentSubquery += char\n } else {\n cleanQuery += char\n }\n }\n }\n\n return { cleanQuery, subqueries }\n}\n\n/**\n * Finds the main FROM clause in a query, ignoring any FROM clauses inside subqueries.\n * Returns the object name and the query with subqueries removed, so callers can reuse\n * the cleaned query and avoid parsing twice.\n */\nexport function findMainFromClause(query: string): { primaryObject: string | null; cleanQuery: string } {\n const { cleanQuery } = removeSubqueries(query)\n\n const fromMatch = cleanQuery.match(\n /FROM\\s+([A-Za-z0-9_]+)(?:\\s+(?:AS\\s+)?[A-Za-z_][A-Za-z0-9_]*)?(?=\\s+WHERE\\s+|\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n\n const primaryObject = fromMatch ? fromMatch[1] : null\n return { primaryObject, cleanQuery }\n}\n\n/**\n * Comprehensive SOQL to SmartStore Smart Query converter\n *\n * Converts standard SOQL queries to SmartStore Smart SQL format for offline use on iOS.\n * Handles SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING, LIMIT, OFFSET,\n * aggregate functions, and relationship fields.\n *\n * SmartStore stores denormalized data, so relationship fields are accessed directly\n * within the soup using the full relationship path (e.g., Child_Account_vod__r.Name).\n *\n * NOTE: SOQL subqueries (e.g., SELECT ... (SELECT ... FROM EventRelations) FROM Event)\n * are NOT supported by SmartStore. The subqueries will be removed and the data\n * should be fetched separately if needed.\n *\n * @param soqlQuery - The SOQL query string to convert\n * @returns The converted SmartStore Smart SQL query string\n *\n * @example\n * // Simple query\n * convertSoqlToSmartQuery('SELECT Id, Name FROM Account WHERE Active = true')\n * // Returns: SELECT {Account:Id}, {Account:Name} FROM {Account} WHERE {Account:Active} = true\n *\n * @example\n * // With relationship fields (denormalized access - no joins needed)\n * convertSoqlToSmartQuery('SELECT Id, Child_Account_vod__r.Name FROM Child_Account_vod__c')\n * // Returns: SELECT {Child_Account_vod__c:Id}, {Child_Account_vod__c:Child_Account_vod__r.Name} FROM {Child_Account_vod__c}\n *\n * @example\n * // With aggregate functions\n * convertSoqlToSmartQuery('SELECT COUNT(Id), Industry FROM Account GROUP BY Industry')\n * // Returns: SELECT COUNT({Account:Id}), {Account:Industry} FROM {Account} GROUP BY {Account:Industry}\n *\n * @example\n * // With ORDER BY and LIMIT\n * convertSoqlToSmartQuery('SELECT Id, Name FROM Contact ORDER BY LastName ASC, FirstName DESC LIMIT 100')\n * // Returns: SELECT {Contact:Id}, {Contact:Name} FROM {Contact} ORDER BY {Contact:LastName} ASC, {Contact:FirstName} DESC LIMIT 100\n */\nexport function convertSoqlToSmartQuery(soqlQuery: string): string {\n if (!soqlQuery || typeof soqlQuery !== 'string') {\n return ''\n }\n\n // Normalize whitespace\n let normalizedQuery = soqlQuery.replace(/\\s+/g, ' ').trim()\n\n // Find the main FROM clause and get query with subqueries removed (single parse)\n const { primaryObject, cleanQuery } = findMainFromClause(normalizedQuery)\n\n if (!primaryObject) {\n return soqlQuery\n }\n\n normalizedQuery = cleanQuery\n\n // Replace SOQL-specific FIELDS() syntax with __FIELDS_ALL_PLACEHOLDER__\n // We'll replace this with {ObjectName:_soup} after we know the object name\n // FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM) are SOQL-specific and not supported by SmartStore,\n // uses {ObjectName:_soup} to select all fields from a soup\n normalizedQuery = normalizedQuery.replace(\n /\\bFIELDS\\s*\\(\\s*(ALL|STANDARD|CUSTOM)\\s*\\)/gi,\n '__FIELDS_ALL_PLACEHOLDER__',\n )\n\n // Extract SELECT clause (from the clean query without subqueries)\n const selectMatch = normalizedQuery.match(/SELECT\\s+([\\s\\S]+?)\\s+FROM\\s+/i)\n if (!selectMatch) {\n return soqlQuery\n }\n\n // Extract FROM clause to get any alias\n const fromMatch = normalizedQuery.match(\n /FROM\\s+([\\s\\S]+?)(?=\\s+WHERE\\s+|\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n\n // Parse FROM clause to get alias if present\n const fromParsed = fromMatch ? parseFromClause(fromMatch[1].trim()) : { primary: primaryObject, joins: [] }\n\n // Extract other clauses\n const whereMatch = normalizedQuery.match(\n /WHERE\\s+([\\s\\S]+?)(?=\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n const groupByMatch = normalizedQuery.match(\n /GROUP\\s+BY\\s+([\\s\\S]+?)(?=\\s+HAVING\\s+|\\s+ORDER\\s+BY\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n )\n const havingMatch = normalizedQuery.match(/HAVING\\s+([\\s\\S]+?)(?=\\s+ORDER\\s+BY\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i)\n const orderByMatch = normalizedQuery.match(/ORDER\\s+BY\\s+([\\s\\S]+?)(?=\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i)\n const limitMatch = normalizedQuery.match(/LIMIT\\s+(\\d+)/i)\n const offsetMatch = normalizedQuery.match(/OFFSET\\s+(\\d+)/i)\n\n // Build alias map for the primary object\n // SmartStore stores denormalized data, so relationship fields are accessed\n // directly within the soup without needing joins\n const objectAliases = new Map<string, string>()\n if (fromParsed.alias) {\n objectAliases.set(fromParsed.alias.toLowerCase(), primaryObject)\n }\n objectAliases.set(primaryObject.toLowerCase(), primaryObject)\n\n // Build the Smart Query\n const parts: string[] = []\n\n // SELECT clause\n const selectFields = parseSelectFields(selectMatch[1].trim())\n const smartSelectFields = convertSelectFields(selectFields, primaryObject, objectAliases)\n parts.push(`SELECT ${smartSelectFields.join(', ')}`)\n\n // FROM clause - just the primary object (SmartStore stores denormalized data)\n parts.push(`FROM {${primaryObject}}`)\n\n // WHERE clause\n const whereConditions: string[] = []\n\n // Add original WHERE conditions\n if (whereMatch) {\n const smartWhere = convertWhereClause(whereMatch[1].trim(), primaryObject, objectAliases)\n whereConditions.push(smartWhere)\n }\n\n // Combine all WHERE conditions\n if (whereConditions.length > 0) {\n parts.push(`WHERE ${whereConditions.join(' AND ')}`)\n }\n\n // GROUP BY clause\n if (groupByMatch) {\n const groupByFields = parseGroupByClause(groupByMatch[1].trim())\n const smartGroupBy = convertGroupByFields(groupByFields, primaryObject, objectAliases)\n parts.push(`GROUP BY ${smartGroupBy.join(', ')}`)\n }\n\n // HAVING clause\n if (havingMatch) {\n const smartHaving = convertWhereClause(havingMatch[1].trim(), primaryObject, objectAliases)\n parts.push(`HAVING ${smartHaving}`)\n }\n\n // ORDER BY clause\n if (orderByMatch) {\n const orderByParts = parseOrderByClause(orderByMatch[1].trim())\n const smartOrderBy = convertOrderByFields(orderByParts, primaryObject, objectAliases)\n parts.push(`ORDER BY ${smartOrderBy.join(', ')}`)\n }\n\n // LIMIT clause\n if (limitMatch) {\n parts.push(`LIMIT ${limitMatch[1]}`)\n }\n\n // OFFSET clause\n if (offsetMatch) {\n parts.push(`OFFSET ${offsetMatch[1]}`)\n }\n\n return parts.join(' ')\n}\n","import { highLevelApi } from '@sdk/main'\nimport type {\n QueryPayload,\n CRMQueryPayload,\n UpsertCRMObjectsPayload,\n CRMSmartObjectValidationRulesPayload,\n CRMSmartObjectMetadataPayload,\n CRMSmartObjectLayoutPayload,\n CRMSmartDeleteObjectsPayload,\n CRMCreatePayload,\n CRMUpsertPayload,\n CRMDescribePayload,\n CRMLayoutPayload,\n} from '@sdk/payload.types'\nimport { convertSoqlToSmartQuery, findMainFromClause } from '@lib/util/smart-store.util'\n\nexport function query(payload: QueryPayload) {\n return highLevelApi.API.request('query', payload)\n}\n\nexport function crmQuery(payload: CRMQueryPayload): Promise<any> {\n return highLevelApi.API.request('crm_query', payload)\n}\n\n/**\n * Extracts field names from the main SOQL query's SELECT clause (ignores subqueries).\n * Handles simple fields, relationship fields (Account.Name), and aliases.\n */\nfunction extractFieldsFromSoql(soqlQuery: string): string[] {\n const { cleanQuery } = findMainFromClause(soqlQuery.replace(/\\s+/g, ' ').trim())\n const selectMatch = cleanQuery.match(/SELECT\\s+([\\s\\S]+?)\\s+FROM\\s+/i)\n if (!selectMatch) return []\n\n const selectClause = selectMatch[1]\n const fields: string[] = []\n let depth = 0\n let currentField = ''\n\n for (let i = 0; i < selectClause.length; i++) {\n const char = selectClause[i]\n\n if (char === '(') {\n depth++\n currentField += char\n } else if (char === ')') {\n depth--\n currentField += char\n } else if (char === ',' && depth === 0) {\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n currentField = ''\n } else {\n currentField += char\n }\n }\n\n if (currentField.trim()) {\n fields.push(currentField.trim())\n }\n\n // Extract just the field name (handle aliases like \"Name AS n\" or relationship fields like \"Account.Name\")\n return fields.map((field) => {\n // Remove alias (AS keyword or space followed by identifier)\n const aliasMatch = field.match(/^(.+?)\\s+(?:AS\\s+)?([A-Za-z_][A-Za-z0-9_]*)$/i)\n const fieldExpr = aliasMatch ? aliasMatch[1].trim() : field.trim()\n\n // For relationship fields like \"Account.Name\", keep the last part as the field name,\n // but we'll use the full expression for matching\n return fieldExpr\n })\n}\n\n/**\n * Extracts the primary object name from the main SOQL query's FROM clause (ignores subqueries).\n */\nfunction extractObjectFromSoql(soqlQuery: string): string {\n const { primaryObject } = findMainFromClause(soqlQuery.replace(/\\s+/g, ' ').trim())\n return primaryObject ?? ''\n}\n\n/**\n * Sets a nested property on an object using a dot-separated path.\n * For example, setNestedProperty(obj, 'Child_Account_vod__r.Name', 'John')\n * results in { Child_Account_vod__r: { Name: 'John' } }\n */\nfunction setNestedProperty(obj: Record<string, any>, path: string, value: any): void {\n const parts = path.split('.')\n\n if (parts.length === 1) {\n // Simple field - set directly\n obj[path] = value\n return\n }\n\n // Relationship field - create nested structure\n let current = obj\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i]\n if (!current[part] || typeof current[part] !== 'object') {\n current[part] = {}\n }\n current = current[part]\n }\n current[parts[parts.length - 1]] = value\n}\n\n/**\n * Checks if a field is a special \"all fields\" selector.\n * These include FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM), and wildcard *.\n */\nfunction isAllFieldsSelector(field: string): boolean {\n const trimmed = field.trim()\n return trimmed === '*' || /^FIELDS\\s*\\(\\s*(ALL|STANDARD|CUSTOM)\\s*\\)$/i.test(trimmed)\n}\n\n/**\n * Transforms SmartStore query results (array of arrays) into CRM query format (array of objects).\n * Handles relationship fields by creating nested objects matching Salesforce REST API format.\n *\n * For example, field \"Child_Account_vod__r.Name\" with value \"John\" becomes:\n * { Child_Account_vod__r: { Name: \"John\" } }\n *\n * Special handling for FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM), and * selectors:\n * When these are used, SmartStore returns the entire soup object, which is spread into the record\n * instead of being assigned to a single field key.\n *\n * @param smartStoreResults - Array of arrays from SmartStore query\n * @param fields - Field names from the original SOQL query\n * @param objectName - Primary object name from the SOQL query\n * @returns Array of objects matching CRM query result format\n */\nfunction transformSmartStoreResults(smartStoreResults: any[][], fields: string[], objectName: string): any[] {\n if (!smartStoreResults || !Array.isArray(smartStoreResults)) {\n return []\n }\n\n return smartStoreResults.map((row) => {\n const record: Record<string, any> = {}\n\n // Map each value to its field name, creating nested objects for relationship fields\n fields.forEach((field, index) => {\n if (index < row.length) {\n const value = row[index]\n\n // Special handling for \"all fields\" selectors (FIELDS(ALL), FIELDS(STANDARD), FIELDS(CUSTOM), *)\n // SmartStore returns the entire soup entry as a single object for {ObjectName:_soup}\n // Spread its properties into the record instead of assigning to a single field key\n if (isAllFieldsSelector(field)) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n // Spread all properties from the soup object into the record\n Object.assign(record, value)\n }\n } else {\n // Regular field - set normally\n setNestedProperty(record, field, value)\n }\n }\n })\n\n // Add attributes object (similar to Salesforce REST API format)\n // Get Id from the record if it exists for the URL\n const recordId = record['Id'] || record['id'] || ''\n record['attributes'] = {\n type: objectName,\n url: recordId ? `/services/data/v57.0/sobjects/${objectName}/${recordId}` : '',\n }\n\n return record\n })\n}\n\n/**\n * Executes a CRM query with automatic iOS/SmartStore adaptation.\n *\n * On iOS devices with the 'sfdc_offline_enabled' LaunchDarkly flag enabled,\n * this function automatically converts SOQL queries to SmartStore Smart SQL format\n * and uses the local SmartStore for offline data access.\n * On other platforms or when the flag is disabled, it uses the standard CRM query API.\n *\n * @param {CRMQueryPayload} payload - The query payload containing the SOQL query string.\n * @returns {Promise<any>} - Promise resolving with query results.\n *\n * @example\n * // Works on all platforms - automatically adapts for iOS with sfdc_offline_enabled LD flag\n * const result = await crmQueryAdaptive({ query: 'SELECT Id, Name FROM Account WHERE Active = true' })\n */\nexport async function crmQueryAdaptive(payload: CRMQueryPayload): Promise<any> {\n const query = payload.query\n\n if (!query || typeof query !== 'string') {\n return Promise.reject(new Error('Query is required and must be a string'))\n }\n\n // Check if SmartStore should be used (iOS + sfdc_offline_enabled LD flag)\n let useSmartStore = false\n try {\n const env: any = await highLevelApi.API.request('get_env')\n const isIos = env?.mode === 'IOS'\n const isSfdcSyncEnabled = env?.launch_darkly?.sfdc_offline_enabled === true\n useSmartStore = isIos && isSfdcSyncEnabled\n } catch {\n useSmartStore = false\n }\n\n console.log(`[crmQueryAdaptive] Called query: `, query)\n if (useSmartStore) {\n // Extract field names and object name from the original SOQL query\n const fields = extractFieldsFromSoql(query)\n const objectName = extractObjectFromSoql(query)\n\n // Convert SOQL to SmartStore Smart SQL\n let smartQuery = convertSoqlToSmartQuery(query)\n\n // Add SmartStore filter to exclude locally deleted records (unless already in query).\n // SmartStore stores boolean flags as 0/1, 'false'/'true', or NULL.\n if (!smartQuery.includes('__locally_deleted__')) {\n const fromMatch = smartQuery.match(/FROM\\s+\\{([A-Za-z0-9_]+)\\}/)\n const primaryObject = fromMatch?.[1]\n if (primaryObject) {\n const filter = `({${primaryObject}:__locally_deleted__} = 0 OR {${primaryObject}:__locally_deleted__} = 'false' OR {${primaryObject}:__locally_deleted__} IS NULL)`\n if (smartQuery.includes(' WHERE ')) {\n // Wrap existing conditions in parentheses so AND binds to the whole clause.\n // Otherwise \"A OR B\" + \" AND filter\" becomes A OR (B AND filter) by precedence.\n smartQuery = smartQuery.replace(\n /\\s+WHERE\\s+([\\s\\S]+?)(?=\\s+ORDER\\s+BY\\s+|\\s+GROUP\\s+BY\\s+|\\s+HAVING\\s+|\\s+LIMIT\\s+|\\s+OFFSET\\s+|\\s*$)/i,\n (_, conditions) => ` WHERE (${conditions}) AND ${filter}`,\n )\n } else {\n // Insert WHERE after FROM {Object}, before ORDER BY / LIMIT / etc. (appending would produce invalid SQL)\n smartQuery = smartQuery.replace(\n /(FROM\\s+\\{[A-Za-z0-9_]+\\})((\\s+(?:ORDER\\s+BY|GROUP\\s+BY|HAVING|LIMIT|OFFSET)[\\s\\S]*)?)$/i,\n (_, fromClause, rest) => `${fromClause} WHERE ${filter}${rest}`,\n )\n }\n }\n }\n\n console.log(`[crmSmartQuery] Called query: `, smartQuery)\n\n // Execute SmartStore query\n const smartStoreResults = await crmSmartQuery({ query: smartQuery })\n\n // Transform results to match CRM query format\n const records = transformSmartStoreResults(smartStoreResults, fields, objectName)\n console.log(`[SmartStore] Results: `, records)\n\n return {\n records,\n totalSize: records.length,\n }\n }\n\n // Non-iOS or setting disabled: use standard CRM query\n return crmQuery(payload)\n}\n\n/**\n * Executes a SmartStore query against local CRM data (iOS only).\n * Uses Salesforce Mobile SDK SmartStore query syntax.\n * Validates that the query uses SmartStore syntax before execution.\n *\n * @param {CRMQueryPayload} payload - The query payload containing the SmartStore query string.\n * @returns {Promise<Array<any>>} - Promise resolving with an array of query results from SmartStore.\n * @throws {Error} - Throws an error if the query is not a valid SmartStore query.\n *\n * @example\n * // iOS only method to execute a SmartStore query.\n * api.crmSmartQuery({ query: 'SELECT {Account:Id}, {Account:Name} FROM {Account} ORDER BY {Account:Name} LIMIT 10' })\n */\nexport function crmSmartQuery(payload: CRMQueryPayload): Promise<Array<any>> {\n const query = payload.query\n\n // Validate SmartStore query syntax: must contain {soupName:fieldPath} pattern\n if (!query || typeof query !== 'string') {\n return Promise.reject(new Error('Query is required and must be a string'))\n }\n\n const smartStorePattern = /\\{[^}]+:[^}]+}/\n if (!smartStorePattern.test(query.trim())) {\n return Promise.reject(\n new Error(\n 'Invalid SmartStore query syntax. SmartStore queries must use curly braces syntax: {SoupName:FieldName}',\n ),\n )\n }\n\n return highLevelApi.API.request('crm_smart_query', payload)\n}\n\n/**\n * Retrieves metadata for a CRM smart object (iOS only).\n * Fetches object metadata from the Salesforce Mobile SDK cache.\n *\n * @param {CRMSmartObjectMetadataPayload} payload - The payload containing the object name.\n * @returns {Promise<any>} - Promise resolving with the object metadata.\n * @throws {Error} - Throws an error if the object name is not provided.\n *\n * @example\n * // iOS only method to retrieve CRM object metadata.\n * api.crmSmartObjectMetadata({ object: 'Account' })\n */\nexport function crmSmartObjectMetadata(payload: CRMSmartObjectMetadataPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n const objectName = payload.object\n\n if (!objectName || typeof objectName !== 'string' || objectName.trim() === '') {\n return Promise.reject(new Error('Object name is required and must be a non-empty string'))\n }\n\n if (\n payload.record_type_id !== undefined &&\n (typeof payload.record_type_id !== 'string' || payload.record_type_id.trim() === '')\n ) {\n return Promise.reject(new Error('record_type_id must be a non-empty string if provided'))\n }\n\n return highLevelApi.API.request('crm_smart_object_metadata', payload)\n}\n\n/**\n * Upserts CRM objects into local CRM data (iOS only).\n * Uses Salesforce Mobile SDK SmartStore to insert or update records.\n * Each object in the payload specifies a table name, the objects to upsert, and an optional external ID path.\n *\n * **Important**: Always provide `external_id_path` when performing updates to ensure records are\n * matched correctly. Without it, the operation may create duplicate records instead of updating existing ones.\n *\n * **Note**: When creating new records, you must provide an explicit identifier field (e.g., `Id`)\n * in each record object passed from the frontend. The backend does not auto-generate IDs.\n *\n * @param {UpsertCRMObjectsPayload} payload - The upsert payload containing an array of UpsertCRMObject items.\n * @returns {Promise<any>} - Promise resolving with the result of the upsert operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // iOS only method to upsert CRM objects.\n *\n * // Updating existing records - always include external_id_path\n * api.crmSmartUpsertObjects({\n * objects: [\n * {\n * table_name: 'Account',\n * objects: [{ Id: '001xx000003DGbQAAW', Name: 'Acme Corp Updated' }],\n * external_id_path: 'Id' // Required for updates to match existing records\n * }\n * ]\n * })\n *\n * // Creating new records - explicit ID required in each record\n * api.crmSmartUpsertObjects({\n * objects: [\n * {\n * table_name: 'Account',\n * objects: [\n * { Id: '001xx000003NEW001', Name: 'New Company' }, // Explicit ID required\n * { Id: '001xx000003NEW002', Name: 'Another Company' }\n * ]\n * }\n * ]\n * })\n */\nexport function crmSmartUpsertObjects(payload: UpsertCRMObjectsPayload): Promise<any> {\n if (!payload || !payload.objects || !Array.isArray(payload.objects)) {\n return Promise.reject(new Error('Payload must contain an array of objects'))\n }\n\n if (payload.objects.length === 0) {\n return Promise.reject(new Error('Objects array cannot be empty'))\n }\n\n for (const obj of payload.objects) {\n if (!obj) {\n return Promise.reject(new Error('Objects array cannot contain null or undefined elements'))\n }\n\n if (!obj.table_name || typeof obj.table_name !== 'string' || obj.table_name.trim() === '') {\n return Promise.reject(new Error('Each object must have a valid non-empty table_name'))\n }\n\n // Validate external_id_path if provided\n if (obj.external_id_path !== undefined) {\n if (typeof obj.external_id_path !== 'string' || obj.external_id_path.trim() === '') {\n return Promise.reject(\n new Error(\n `Object for table ${obj.table_name} has invalid external_id_path. It must be a non-empty string or undefined.`,\n ),\n )\n }\n }\n\n if (!obj.objects || !Array.isArray(obj.objects) || obj.objects.length === 0) {\n return Promise.reject(new Error(`Object for table ${obj.table_name} must have a non-empty objects array`))\n }\n\n // Validate that inner objects array doesn't contain null/undefined elements or arrays\n for (let i = 0; i < obj.objects.length; i++) {\n const record = obj.objects[i]\n if (!record || typeof record !== 'object' || Array.isArray(record)) {\n return Promise.reject(\n new Error(\n `Object for table ${obj.table_name} contains invalid element at index ${i}. All records must be valid objects, not null, undefined, or arrays.`,\n ),\n )\n }\n }\n }\n\n console.log('[crmSmartUpsertObjects] Request payload:', JSON.stringify(payload, null, 2))\n\n return highLevelApi.API.request('crm_smart_upsert_objects', payload)\n .then((result) => {\n console.log('[crmSmartUpsertObjects] Success:', result)\n return result\n })\n .catch((error) => {\n console.error('[crmSmartUpsertObjects] Error:', error)\n throw error\n })\n}\n/**\n * Retrieves validation rules for a CRM smart object (iOS only).\n * This method fetches the validation rules configured for a specific CRM object type\n * from the local SmartStore cache.\n *\n * @param {CRMSmartObjectValidationRulesPayload} payload - The payload containing the object name.\n * @returns {Promise<any>} - Promise resolving with the validation rules for the specified object.\n *\n * @example\n * // iOS only method to get validation rules for an Account object.\n * api.crmSmartObjectValidationRules({ object: 'Account' })\n *\n * @example\n * // Get validation rules for a Contact object.\n * api.crmSmartObjectValidationRules({ object: 'Contact' })\n */\nexport function crmSmartObjectValidationRules(payload: CRMSmartObjectValidationRulesPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n const objectName = payload.object\n\n if (!objectName || typeof objectName !== 'string' || objectName.trim() === '') {\n return Promise.reject(new Error('Object name is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_smart_object_validation_rules', payload)\n}\n\n/**\n * Retrieves layout information for a CRM smart object (iOS only).\n * Fetches object layout metadata from the Salesforce Mobile SDK cache.\n *\n * @param {CRMSmartObjectLayoutPayload} payload - The payload containing the object name and optional layout parameters.\n * @returns {Promise<any>} - Promise resolving with the object layout metadata.\n * @throws {Error} - Throws an error if the object name is not provided.\n *\n * @example\n * // iOS only method to retrieve CRM object layout.\n * api.crmSmartObjectLayout({ object: 'Account' })\n *\n * @example\n * // Get layout with specific form factor and mode.\n * api.crmSmartObjectLayout({ object: 'Account', form_factor: 'Large', mode: 'Edit' })\n */\nexport function crmSmartObjectLayout(payload: CRMSmartObjectLayoutPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n const objectName = payload.object\n\n if (!objectName || typeof objectName !== 'string' || objectName.trim() === '') {\n return Promise.reject(new Error('Object name is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_smart_object_layout', payload)\n}\n\n/**\n * Deletes CRM objects from local CRM data (iOS only).\n * Uses Salesforce Mobile SDK SmartStore to delete records.\n * Each object in the payload specifies a table name and an array of IDs to delete.\n *\n * @param {CRMSmartDeleteObjectsPayload} payload - The delete payload containing an array of CRMDeleteObject items.\n * @returns {Promise<any>} - Promise resolving with the result of the delete operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // iOS only method to delete CRM objects.\n * api.crmSmartDeleteObjects({\n * objects: [\n * {\n * table_name: 'Account',\n * ids: ['001xx000003DGbQAAW', '001xx000003DGbRABW']\n * },\n * {\n * table_name: 'Contact',\n * ids: ['003xx000004TmiQAAS']\n * }\n * ]\n * })\n */\nexport function crmSmartDeleteObjects(payload: CRMSmartDeleteObjectsPayload): Promise<any> {\n if (!payload || !payload.objects || !Array.isArray(payload.objects)) {\n return Promise.reject(new Error('Payload must contain an array of objects'))\n }\n\n if (payload.objects.length === 0) {\n return Promise.reject(new Error('Objects array cannot be empty'))\n }\n\n for (const obj of payload.objects) {\n if (!obj) {\n return Promise.reject(new Error('Objects array cannot contain null or undefined elements'))\n }\n\n if (!obj.table_name || typeof obj.table_name !== 'string' || obj.table_name.trim() === '') {\n return Promise.reject(new Error('Each object must have a valid non-empty table_name'))\n }\n\n if (!obj.ids || !Array.isArray(obj.ids) || obj.ids.length === 0) {\n return Promise.reject(new Error(`Object for table ${obj.table_name} must have a non-empty ids array`))\n }\n\n // Validate that ids array contains only non-empty strings\n for (let i = 0; i < obj.ids.length; i++) {\n const id = obj.ids[i]\n if (!id || typeof id !== 'string' || id.trim() === '') {\n return Promise.reject(\n new Error(\n `Object for table ${obj.table_name} contains invalid id at index ${i}. All IDs must be non-empty strings.`,\n ),\n )\n }\n }\n }\n\n console.log('[crmSmartDeleteObjects] Request payload:', JSON.stringify(payload, null, 2))\n\n return highLevelApi.API.request('crm_smart_delete_objects', payload)\n .then((result) => {\n console.log('[crmSmartDeleteObjects] Success:', result)\n return result\n })\n .catch((error) => {\n console.error('[crmSmartDeleteObjects] Error:', error)\n throw error\n })\n}\n\n/**\n * Creates new records in CRM (Web only).\n * Uses Salesforce REST API to create records.\n *\n * @param {CRMCreatePayload} payload - The create payload containing sobject type and records.\n * @returns {Promise<any>} - Promise resolving with the result of the create operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to create CRM records.\n * api.crmCreate({\n * sobject: 'Order__c',\n * records: [\n * { Account__c: '001xx000003DGbQAAW', Order_Date__c: '2024-01-15' },\n * { Account__c: '001xx000003DGbRABW', Order_Date__c: '2024-01-16' }\n * ]\n * })\n */\nexport function crmCreate(payload: CRMCreatePayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n if (!payload.records || !Array.isArray(payload.records) || payload.records.length === 0) {\n return Promise.reject(new Error('records is required and must be a non-empty array'))\n }\n\n for (let i = 0; i < payload.records.length; i++) {\n const record = payload.records[i]\n if (!record || typeof record !== 'object' || Array.isArray(record)) {\n return Promise.reject(\n new Error(`records contains invalid element at index ${i}. All records must be valid objects.`),\n )\n }\n }\n\n return highLevelApi.API.request('crm_create', payload)\n}\n\n/**\n * Upserts records in CRM (Web only).\n * Uses Salesforce REST API to insert or update records based on external ID.\n * If a record with matching external ID exists, it will be updated; otherwise, a new record is created.\n *\n * @param {CRMUpsertPayload} payload - The upsert payload containing sobject type, records, and external ID field.\n * @returns {Promise<any>} - Promise resolving with the result of the upsert operation.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to upsert CRM records.\n * api.crmUpsert({\n * sobject: 'Order__c',\n * records: [\n * { External_Id__c: 'ORD-001', Account__c: '001xx000003DGbQAAW', Status__c: 'Submitted' },\n * { External_Id__c: 'ORD-002', Account__c: '001xx000003DGbRABW', Status__c: 'Draft' }\n * ],\n * external_id_field: 'External_Id__c'\n * })\n */\nexport function crmUpsert(payload: CRMUpsertPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n if (!payload.records || !Array.isArray(payload.records) || payload.records.length === 0) {\n return Promise.reject(new Error('records is required and must be a non-empty array'))\n }\n\n if (\n !payload.external_id_field ||\n typeof payload.external_id_field !== 'string' ||\n payload.external_id_field.trim() === ''\n ) {\n return Promise.reject(new Error('external_id_field is required and must be a non-empty string'))\n }\n\n for (let i = 0; i < payload.records.length; i++) {\n const record = payload.records[i]\n if (!record || typeof record !== 'object' || Array.isArray(record)) {\n return Promise.reject(\n new Error(`records contains invalid element at index ${i}. All records must be valid objects.`),\n )\n }\n }\n\n return highLevelApi.API.request('crm_upsert', payload)\n}\n\n/**\n * Retrieves metadata/describe for a CRM object (Web only).\n * Uses Salesforce REST API to fetch object metadata including fields and picklist values.\n *\n * @param {CRMDescribePayload} payload - The describe payload containing the sobject name.\n * @returns {Promise<any>} - Promise resolving with the object metadata including fields and picklist values.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to get CRM object metadata.\n * api.crmDescribe({ sobject: 'Account' })\n * .then(metadata => {\n * // Access fields\n * console.log(metadata.fields)\n * // Access picklist values for a specific field\n * const industryField = metadata.fields.find(f => f.name === 'Industry')\n * console.log(industryField.picklistValues)\n * })\n */\nexport function crmDescribe(payload: CRMDescribePayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_describe', payload)\n}\n\n/**\n * Retrieves layout information for a CRM object (Web only).\n * Uses Salesforce REST API to fetch object layout including sections, fields arrangement, and form factors.\n *\n * @param {CRMLayoutPayload} payload - The layout payload containing the sobject name and optional layout parameters.\n * @returns {Promise<any>} - Promise resolving with the object layout information.\n * @throws {Error} - Throws an error if the payload is invalid.\n *\n * @example\n * // Web only method to get CRM object layout.\n * api.crmLayout({ sobject: 'Account' })\n * .then(layout => {\n * // Access layout sections\n * console.log(layout.editLayoutSections)\n * })\n *\n * @example\n * // Get layout with specific form factor, mode, and record type.\n * api.crmLayout({\n * sobject: 'Account',\n * form_factor: 'Large',\n * mode: 'Edit',\n * record_type_id: '012xx0000004ABC'\n * })\n */\nexport function crmLayout(payload: CRMLayoutPayload): Promise<any> {\n if (!payload) {\n return Promise.reject(new Error('Payload is required'))\n }\n\n if (!payload.sobject || typeof payload.sobject !== 'string' || payload.sobject.trim() === '') {\n return Promise.reject(new Error('sobject is required and must be a non-empty string'))\n }\n\n return highLevelApi.API.request('crm_layout', payload)\n}\n","import type {\n File,\n Folder,\n FolderRetrieve,\n FolderCreateRequest,\n FolderUpdateRequest,\n PaginatedFolderList,\n} from '@openapi'\nimport type { FolderListRequest } from '@sdk/payload.types'\n\n/**\n * Retrieves a list of folders.\n * @param payload - The payload containing the search, ordering, filters, fields, name, page, and page_size.\n * @returns A promise that resolves to the list of folders.\n */\nexport function getFolders(payload: FolderListRequest): Promise<PaginatedFolderList> {\n return this.API.request('get_folders', payload)\n}\n\n/**\n * Retrieves a folder by its ID.\n * @param payload - An object containing the folder ID.\n * @param payload.id - The ID of the folder to retrieve. Defaults to 'root'.\n * @returns A promise that resolves to the retrieved folder.\n */\nexport function getFolder(payload: { id: FolderRetrieve['id'] } = { id: 'root' }): Promise<FolderRetrieve> {\n return this.API.request('get_folder', payload)\n}\n\n/**\n * Creates a new folder.\n * @param payload - The folder creation request payload, excluding the instance_id.\n * @returns A promise that resolves to the created folder.\n */\nexport function createFolder(payload: Omit<FolderCreateRequest, 'instance_id'>): Promise<FolderRetrieve> {\n return this.API.request('create_folder', payload)\n}\n\ntype UpdateFolderPayload = FolderUpdateRequest & { id: Folder['id'] }\n\n/**\n * Updates an existing folder.\n * @param payload - The folder update payload, including the folder ID and update data.\n * @returns A promise that resolves to the updated folder.\n */\nexport function updateFolder(payload: UpdateFolderPayload): Promise<FolderRetrieve> {\n return this.API.request('update_folder', payload)\n}\n\n/**\n * Deletes a folder.\n * @param payload - An object containing the ID of the folder to delete.\n * @param payload.folder_id - The ID of the folder to delete.\n * @returns A promise that resolves when the folder is deleted.\n */\nexport function deleteFolder(payload: { folder_id: FolderRetrieve['id'] }): Promise<void> {\n return this.API.request('delete_folder', payload)\n}\n\n/**\n * Moves items (files or folders) to a target folder.\n * @param payload - The payload containing the target folder ID and items to move.\n * @param payload.target_folder_id - The ID of the target folder.\n * @param payload.items - An array of items to move, each with an ID and type.\n * @returns A promise that resolves to the updated target folder.\n */\nexport function moveFolderItems(payload: {\n target_folder_id: Folder['id']\n items: { id: File['id'] | Folder['id']; type: 'folder' | 'file' }[]\n}): Promise<FolderRetrieve> {\n return this.API.request('move_folder_items', payload)\n}\n","import type { CoreFolderContentsRetrieve, CoreFolderEntityType, CoreFolderRetrieve } from '@lib/types/folder'\n\nexport function getCoreFolders(payload: {\n instance_id: string\n entity: CoreFolderEntityType\n parent_id?: string | null\n}): Promise<CoreFolderContentsRetrieve> {\n return this.API.request('get_core_folders', payload)\n}\n\nexport function patchCoreFolder(id: string, payload: Partial<CoreFolderRetrieve>): Promise<CoreFolderContentsRetrieve> {\n return this.API.request('patch_core_folder', {\n id,\n payload,\n })\n}\n","import { highLevelApi } from '@sdk/main'\nimport type { NotificationPayload } from '@sdk/payload.types'\n\nexport function notify(payload: NotificationPayload): Promise<void> {\n if (!payload.type) {\n payload.type = 'native'\n }\n\n return highLevelApi.API.request('notify', payload)\n}\n","import { highLevelApi } from '@sdk/main'\n\nexport function track(payload: { event_name: string; payload: any }) {\n return highLevelApi.API.request('track', payload)\n}\n","import type { PaginatedMetadataTemplateList } from '@openapi'\nimport type { GetInstanceMetadataTemplatesPayload } from '@sdk/payload.types'\n\nexport function getInstanceMetadataTemplates(\n payload?: GetInstanceMetadataTemplatesPayload,\n): Promise<PaginatedMetadataTemplateList> {\n return this.API.request('get_instance_metadata_templates', payload)\n}\n","/**\n * Dispatches iOS only sync method for non-files.\n *\n * @example\n * // iOS only method to sync non-files from the server.\n * api.triggerNonFilesSync()\n */\nexport function triggerNonFilesSync(): Promise<void> {\n return this.API.request('trigger_non_files_sync')\n}\n","import { highLevelApi } from '@sdk/main'\n\nimport type { SubmitUserFeedbackPayload } from '@sdk/payload.types'\n\n/**\n * Submit user feedback\n */\nexport function submitUserFeedback(payload: SubmitUserFeedbackPayload) {\n return highLevelApi.API.request('submit_user_feedback', payload)\n}\n","import type { OpenWebViewAlwaysOnTop, ShowSyncboxRequestPayload } from '@sdk/payload.types'\nimport { highLevelApi } from '@sdk/main'\n\nexport function close() {\n return highLevelApi.API.request('close') //`this` reference is lost on a new WebView\n}\n\nexport function openWebViewAlwaysOnTop(payload: OpenWebViewAlwaysOnTop): Promise<void> {\n return this.API.request('open_web_view_always_on_top', payload)\n}\n\nexport function showSyncbox(payload: ShowSyncboxRequestPayload): Promise<void> {\n return this.API.request('show_syncbox', payload)\n}\n","import type { SharePayload, ShareResponse, ShowPeerSessionRequestPayload } from '@sdk/payload.types'\n\n/**\n * Dispatch iOS sharing dialog.\n *\n * @example\n * api.share({text: \"example text\", subject: \"example subject\"})\n */\nexport async function share(payload: SharePayload): Promise<ShareResponse> {\n return this.API.request('share', payload)\n}\n\n/**\n * Show peer session dialog with button coordinates, for local peer sharing feature.\n *\n * @example\n * api.showPeerSession({x: 100, y: 200})\n */\nexport async function showPeerSession(payload: ShowPeerSessionRequestPayload): Promise<void> {\n return this.API.request('show_peer_session', payload)\n}\n","import { type CanvasThemeRetrieve } from '@lib/types/canvasTheme'\nimport type { CanvasRetrieve } from '@openapi'\n\nexport function getThemes(payload: Partial<CanvasThemeRetrieve>): Promise<CanvasThemeRetrieve[]> {\n return this.API.request('get_themes', payload)\n}\n\nexport function assignCanvasTheme(payload: {\n canvas_id: CanvasRetrieve['id']\n theme_id: CanvasThemeRetrieve['id']\n}): Promise<{ canvas_id: CanvasRetrieve['id']; theme_id: CanvasThemeRetrieve['id'] }> {\n return this.API.request('assign_canvas_theme', payload)\n}\n","type EventMap = Record<string, any>\n\ntype EventKey<KeyMap extends EventMap> = string & keyof KeyMap\ntype EventReceiver<KeyMap> = (params: KeyMap) => void\n\nexport interface Emitter<KeyMap extends EventMap> {\n on<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void\n off<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void\n emit<Key extends EventKey<KeyMap>>(eventName: Key, params: KeyMap[Key]): void\n}\n\nexport class EventEmitter<KeyMap extends EventMap> implements Emitter<KeyMap> {\n listeners: {\n [Key in keyof EventMap]?: ((p: EventMap[Key]) => void)[]\n } = {}\n on<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void {\n this.listeners[eventName] = (this.listeners[eventName] ?? []).concat(fn)\n }\n off<Key extends EventKey<KeyMap>>(eventName: Key, fn: EventReceiver<KeyMap[Key]>): void {\n this.listeners[eventName] = (this.listeners[eventName] ?? []).filter((f) => f !== fn)\n }\n emit<Key extends EventKey<KeyMap>>(eventName: Key, data?: KeyMap[Key]): void {\n ;(this.listeners[eventName] ?? []).forEach((fn) => fn(data))\n }\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import type { Emitter } from './utils/eventEmitter'\nimport type { File, User, CanvasRetrieve, CanvasSection } from '@openapi'\nimport type { PitcherOrg } from '@lib/types/organization.types'\nimport type { PitcherInstance } from '@lib/types/instance.types'\nimport type { LaunchDarklyEnv } from '@lib/types/launchDarkly.types'\nimport type { CDP_EVENT_TYPE, CLIENT_TYPE } from '@lib/constants/cdp.const'\nimport type { PeerConnectivityEvent } from '@sdk/peer-connectivity'\n\nexport const PITCHER_EVENT = 'PITCHER_EVENT' as const\nexport enum PitcherMessageType {\n REQUEST = 'PITCHER_REQUEST',\n RESPONSE = 'PITCHER_RESPONSE',\n}\nexport enum PitcherResponseStatus {\n OK = 'ok',\n ERROR = 'error',\n}\n\nexport interface PitcherMessage {\n type: typeof PITCHER_EVENT\n request: {\n id: string\n type: string\n body?: Record<string, any>\n }\n}\n\ntype FetchMode =\n | 'postmessage' // the default mode where each platform is responsible to respond\n | 'prefer-online' // in this mode, the api will try to use the REST API directly if a handler is available in the onlineRestApiHandlers.ts file\n\nexport interface ApiOptions {\n errorLogger?: (p: any) => string | void\n logLevel?: 'off' | 'info' | 'debug'\n casing?: 'camel' | 'snake'\n fetchMode?: FetchMode\n}\n\nexport interface OrgConfigResponse {\n auth0: {\n domain: string\n issuer: string\n audience: string\n auth0_domain: string\n web_client_id: string\n region: 'us' | 'eu' | 'au'\n }\n segment: {\n web_write_key: string\n }\n region: 'us' | 'eu' | 'au'\n auth0_tenant_region: 'us' | 'eu' | 'au'\n datadog_region: 'us' | 'eu'\n segment_region: 'us' | 'eu'\n sentry_region: 'us' | 'eu'\n}\n\nexport interface PitcherEnv {\n mode: 'WEB' | 'IOS' | 'WINDOWS' | 'ANDROID'\n pitcher: {\n token_claims: Record<string, any>\n organization: PitcherOrg\n org_config?: OrgConfigResponse\n instance: PitcherInstance\n user: User\n access_token: string\n id_token: string\n impersonated_by?: string\n }\n launch_darkly?: LaunchDarklyEnv\n permissions?: string[]\n client_type?: (typeof CLIENT_TYPE)[keyof typeof CLIENT_TYPE]\n crm_shape?: Record<string, any>\n state?: {\n active_file?: {\n id: File['id']\n }\n active_section_id?: CanvasSection['id']\n active_canvas_id?: CanvasRetrieve['id']\n canvas_correlation_id?: string\n }\n device_locale?: string\n sync_badge_value?: number\n}\n\nexport interface PitcherAPI extends Emitter<ApiEventMap> {\n request(type: string, body: any, callback: () => any): Promise<PitcherResponse>\n}\n\nexport interface PitcherInterface extends Emitter<PitcherEventMap> {\n API: PitcherAPI\n}\n\nexport interface PitcherResponse {\n type: PitcherMessageType.RESPONSE\n request: {\n id: string\n type: string\n body?: Record<string, any>\n }\n response: {\n status: PitcherResponseStatus\n body?: Record<string, any>\n }\n}\n\nexport interface OpenCanvasPitcherEvent {\n account_id?: string\n account_name?: string\n canvas_id?: string\n edit_mode?: 'true' | 'false'\n}\n\nexport interface CreateAndOpenCanvasEvent {\n account_id?: string\n}\n\nexport interface StartCallPitcherEvent {\n account?: { id: string; name: string }\n contact_ids?: string[]\n /**\n * CRM meeting/event id. When provided, the host fetches the meeting through\n * its own CRM provider so the meeting bar shows the proper subject/time\n * instead of \"Unscheduled\".\n */\n meeting_id?: string\n canvas_id?: string\n edit_mode?: 'true' | 'false'\n post_action?: string\n post_action_path?: string\n}\n\n/**\n * Preselects an account in the meeting bar without starting a call.\n * Used by the SFDC passthrough Prepare flow.\n */\nexport interface SelectAccountPitcherEvent {\n account?: { id: string; name?: string }\n}\n\nexport interface RouteChangedPitcherEvent {\n route_name: string\n route_path: string\n}\n\nexport enum PitcherEventName {\n ENV_CHANGED = 'env_changed',\n ACCESS_TOKEN_RENEWED = 'access_token_renewed',\n PHOTOS_CAPTURED = 'photos_captured',\n GLOBAL_PHOTO_CAPTURED = 'global_photo_captured',\n FILE_DOWNLOADED = 'file_downloaded',\n FILE_UPLOAD_PROGRESS = 'file_upload_progress',\n UPDATE_LOCATION = 'update_location',\n CANVAS_UPDATED = 'canvas_updated',\n CANVAS_UPDATED_SUCCESS = 'canvas_updated_success',\n FILE_CLOSED = 'file_closed',\n FILE_OPENED = 'file_opened',\n APP_BACKGROUNDED = 'app_backgrounded',\n APP_FOREGROUNDED = 'app_foregrounded',\n NON_FILES_SYNC_FINISHED = 'non_files_sync_finished',\n CONTENT_LIST_REFRESH_REQUESTED = 'content_list_refresh_requested',\n NETWORK_CONNECTION_ESTABLISHED = 'network_connection_established',\n NETWORK_CONNECTION_LOST = 'network_connection_lost',\n ENTERED_FULLSCREEN = 'entered_fullscreen',\n EXITED_FULLSCREEN = 'exited_fullscreen',\n SUBMIT_POSTCALL_CLICKED = 'submit_postcall_clicked',\n ANALYTICS_CAPTURED = 'analytics_captured',\n OPEN_FOLDER_REQUESTED = 'open_folder_requested',\n CANVAS_PAGE_NEXT_REQUESTED = 'canvas_page_next_requested',\n CANVAS_PAGE_PREVIOUS_REQUESTED = 'canvas_page_previous_requested',\n CANVAS_OPEN_REQUESTED = 'canvas_open_requested',\n CANVAS_CLOSE_REQUESTED = 'canvas_close_requested',\n ROUTE_CHANGE_REQUESTED = 'route_change_requested',\n ITEM_SHAREBOX_STATUS_REQUESTED = 'item_sharebox_status_requested',\n ITEM_SHAREBOX_STATUS_UPDATED = 'item_sharebox_status_updated',\n ITEM_SHAREBOX_ADD_REQUESTED = 'item_sharebox_add_requested',\n ITEM_SHAREBOX_ADD_COMPLETED = 'item_sharebox_add_completed',\n SYNC_BADGE_VALUE_REPORTED = 'sync_badge_value_reported',\n SYNC_BOX_RESOLVE_ERROR_TAPPED = 'sync_box_resolve_error_tapped',\n PEER_CONNECTIVITY_EVENT = 'peer_connectivity_event',\n}\n\nexport enum PitcherBroadcastedEventName {\n UI_SHOW_MODAL = 'ui:show-modal',\n UI_HIDE_MODAL = 'ui:hide-modal',\n FILE_DOWNLOAD = 'file:download',\n CANVAS_NEXT_BUTTON_CLICKED = 'canvas_next_button_clicked', // NOTE: This event is separate from `CANVAS_PAGE_NEXT_REQUESTED`\n CANVAS_PREVIOUS_BUTTON_CLICKED = 'canvas_previous_button_clicked', // NOTE: This event is separate from `CANVAS_PAGE_PREVIOUS_REQUESTED`\n CANVAS_OPENED = 'canvas_opened',\n CANVAS_CLOSED = 'canvas_closed',\n ROUTE_CHANGED = 'route_changed',\n}\n\nexport enum PitcherExternalEventName {\n CREATE_AND_OPEN_CANVAS = 'create_and_open_canvas',\n OPEN_CANVAS = 'open_canvas',\n START_CALL = 'start_call',\n SELECT_ACCOUNT = 'select_account',\n}\n\n/**\n * Base interface for update location actions.\n */\ninterface UpdateLocation {\n /**\n * The action to be performed.\n */\n action: string\n}\n\n/**\n * Represents a route in the location.\n */\nexport interface LocationRoute {\n /**\n * The path of the route.\n */\n path: string\n /**\n * The query parameters of the route.\n */\n query: Record<string, any>\n /**\n * Indicates if the route is being restored.\n */\n is_restoring: boolean\n /**\n * Indicates if the route is mounted.\n */\n is_mounted: boolean\n /**\n * Indicates when application is still registered but not used right now.\n */\n is_inactive: boolean\n}\n\n/**\n * A record of location routes.\n */\nexport type LocationRoutes = Record<string, LocationRoute>\n\n/**\n * Interface for the 'register' update location action.\n */\nexport interface UpdateLocationOnRegister extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'register'\n /**\n * The child application identifier.\n */\n child_app: string\n /**\n * The parent application identifier (optional).\n */\n parent_app?: string\n /**\n * The path of the route (optional).\n */\n path?: string\n /**\n * The query parameters of the route (optional).\n */\n query?: Record<string, any>\n}\n\n/**\n * Interface for the 'unregister' update location action.\n */\nexport interface UpdateLocationOnUnregister extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'unregister'\n /**\n * The application identifier.\n */\n app: string\n}\n\n/**\n * Interface for the 'update' update location action.\n */\nexport interface UpdateLocationOnUpdate extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'update'\n /**\n * The routes to be updated.\n */\n routes: Record<string, Omit<LocationRoute, 'is_restoring' | 'is_mounted' | 'is_inactive'>>\n}\n\n/**\n * Interface for the 'mounted' update location action.\n */\nexport interface UpdateLocationOnMounted extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'mounted'\n /**\n * The application identifier.\n */\n app: string\n}\n\n/**\n * Interface for the 'restore' update location action.\n */\nexport interface UpdateLocationOnRestore extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'restore'\n /**\n * The routes to be restored.\n */\n routes: Record<string, Omit<LocationRoute, 'is_mounted'>>\n}\n\n/**\n * Interface for the 'restore_completed' update location action.\n */\nexport interface UpdateLocationOnRestoreCompleted extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'restore_completed'\n /**\n * The application identifier.\n */\n app: string\n /**\n * The path of the route.\n */\n path: string\n /**\n * The query parameters of the route.\n */\n query: Record<string, any>\n}\n\n/**\n * Interface for the 'get_routes_request' update location action.\n */\nexport interface UpdateLocationOnGetRoutesRequest extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'get_routes_request'\n /**\n * The application identifier.\n */\n app: string\n}\n\n/**\n * Interface for the 'get_routes_response' update location action.\n */\nexport interface UpdateLocationOnGetRoutesResponse extends UpdateLocation {\n /**\n * The action type.\n */\n action: 'get_routes_response'\n /**\n * The application identifier.\n */\n app: string\n /**\n * The routes in the response.\n */\n routes: LocationRoutes\n}\n\n/**\n * Union type for all update location pitcher events.\n */\nexport type UpdateLocationPitcherEvent =\n | UpdateLocationOnUnregister\n | UpdateLocationOnRestore\n | UpdateLocationOnUpdate\n | UpdateLocationOnRegister\n | UpdateLocationOnRestoreCompleted\n | UpdateLocationOnMounted\n | UpdateLocationOnGetRoutesRequest\n | UpdateLocationOnGetRoutesResponse\n\nexport interface PitcherEventMap {\n [PitcherEventName.ENV_CHANGED]: PitcherEnv\n /**\n * The shell renewed the Pitcher access token. Apps that cached `env.pitcher.access_token`\n * (instead of reading it lazily via `getEnv()`) should replace their copy with this one.\n *\n * @see web-only for now — Impact iOS does not emit this event yet; keep a pull fallback\n * (`getEnv()` / `refreshAccessToken()`) for cross-platform apps.\n */\n [PitcherEventName.ACCESS_TOKEN_RENEWED]: { access_token: string }\n /**\n * @see iOS-only\n */\n [PitcherEventName.PHOTOS_CAPTURED]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.GLOBAL_PHOTO_CAPTURED]: { url: string; section_id?: string }\n /**\n * @see iOS-only\n */\n [PitcherEventName.NON_FILES_SYNC_FINISHED]: { user_triggered: boolean }\n /**\n * @see iOS-only\n */\n [PitcherEventName.CONTENT_LIST_REFRESH_REQUESTED]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.FILE_DOWNLOADED]: File\n /**\n * @see iOS-only\n */\n [PitcherEventName.NETWORK_CONNECTION_ESTABLISHED]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.NETWORK_CONNECTION_LOST]: void\n /**\n * @see iOS-only\n */\n [PitcherEventName.FILE_UPLOAD_PROGRESS]: { upload_uid: string; progress: number }\n /**\n * @see iOS-only\n */\n [PitcherEventName.ANALYTICS_CAPTURED]: {\n type: (typeof CDP_EVENT_TYPE)[keyof typeof CDP_EVENT_TYPE]\n payload: any\n }\n /**\n * @see WEB-only\n */\n [PitcherEventName.ENTERED_FULLSCREEN]: void\n /**\n * @see WEB-only\n */\n [PitcherEventName.EXITED_FULLSCREEN]: void\n\n [PitcherEventName.CANVAS_UPDATED]: Record<string, any>\n [PitcherEventName.CANVAS_UPDATED_SUCCESS]: Partial<CanvasRetrieve>\n [PitcherEventName.UPDATE_LOCATION]: UpdateLocationPitcherEvent\n [PitcherEventName.FILE_CLOSED]: { file_id?: string; view_id?: string }\n [PitcherEventName.FILE_OPENED]: { file_id?: string; view_id?: string }\n [PitcherEventName.SUBMIT_POSTCALL_CLICKED]: void\n [PitcherEventName.CANVAS_PAGE_NEXT_REQUESTED]: { canvas_id?: string; current_page_index?: number }\n [PitcherEventName.CANVAS_PAGE_PREVIOUS_REQUESTED]: { canvas_id?: string; current_page_index?: number }\n [PitcherEventName.CANVAS_OPEN_REQUESTED]: { canvas_id?: string }\n [PitcherEventName.CANVAS_CLOSE_REQUESTED]: { canvas_id?: string }\n /**\n * @see iOS-only\n */\n [PitcherEventName.ROUTE_CHANGE_REQUESTED]: RouteChangedPitcherEvent\n [PitcherEventName.ITEM_SHAREBOX_STATUS_REQUESTED]: {\n item_id: string\n }\n [PitcherEventName.ITEM_SHAREBOX_STATUS_UPDATED]: {\n item_id: string\n is_in_sharebox: boolean\n }\n [PitcherEventName.ITEM_SHAREBOX_ADD_REQUESTED]: {\n item_id: string\n }\n [PitcherEventName.ITEM_SHAREBOX_ADD_COMPLETED]: {\n item_id: string\n success: boolean\n is_in_sharebox: boolean\n error?: string\n }\n /**\n * @see iOS-only\n */\n [PitcherEventName.SYNC_BADGE_VALUE_REPORTED]: {\n count: number\n }\n /**\n * @see iOS-only\n * Fired when user taps \"Fix\" on a failed SFDC sync error in the Syncbox.\n * The id may be a Salesforce ID, external ID, or locally-generated temp ID.\n */\n [PitcherEventName.SYNC_BOX_RESOLVE_ERROR_TAPPED]: {\n /** Record ID that failed to sync (SF ID, external ID, or temp ID like PIT_...) */\n id: string\n /** SFDC object/soup name (e.g. \"Event\", \"Call2_vod__c\") */\n table_name: string\n /** Salesforce sync error message */\n last_error: string\n }\n [PitcherEventName.PEER_CONNECTIVITY_EVENT]: PeerConnectivityEvent\n // broadcasted requests\n [PitcherBroadcastedEventName.UI_SHOW_MODAL]: void\n [PitcherBroadcastedEventName.UI_HIDE_MODAL]: void\n [PitcherBroadcastedEventName.FILE_DOWNLOAD]: { body: File['id'] }\n [PitcherBroadcastedEventName.CANVAS_NEXT_BUTTON_CLICKED]: { body: { current_page_index: number; canvas_id?: string } }\n [PitcherBroadcastedEventName.CANVAS_PREVIOUS_BUTTON_CLICKED]: {\n body: { current_page_index: number; canvas_id?: string }\n }\n [PitcherBroadcastedEventName.CANVAS_OPENED]: {\n body: { canvas_id: string }\n }\n [PitcherBroadcastedEventName.CANVAS_CLOSED]: {\n body: { canvas_id: string }\n }\n [PitcherBroadcastedEventName.ROUTE_CHANGED]: {\n body: { route_name: string; route_path: string }\n }\n // external link events\n [PitcherExternalEventName.OPEN_CANVAS]: OpenCanvasPitcherEvent\n [PitcherExternalEventName.START_CALL]: StartCallPitcherEvent\n [PitcherExternalEventName.CREATE_AND_OPEN_CANVAS]: CreateAndOpenCanvasEvent\n [PitcherExternalEventName.SELECT_ACCOUNT]: SelectAccountPitcherEvent\n}\n\nexport interface PitcherEvent {\n type: keyof PitcherEventMap\n body: PitcherEventMap[keyof PitcherEventMap]\n}\n\nexport interface ApiEventMap {\n event: PitcherEvent\n}\n","export class AssertionError extends Error {}\n\nexport function assert(exp: boolean, message: string) {\n if (!exp) {\n throw new AssertionError(message)\n }\n}\n","import { snakeCase, camelCase, startCase } from 'lodash-es'\n\nconst defaultSkipKeys = [\n 'id__in',\n 'tags__in',\n 'tags__not_in',\n 'template__id',\n 'template__id__in',\n 'modified_at__gtr',\n 'created_at__gtr',\n 'end_at__lt',\n 'start_at__gt',\n 'account__id',\n 'end_at__gt',\n 'end_at__range',\n 'start_at__lt',\n 'start_at__range',\n 'external_objects__connection_id',\n 'external_objects__content_type',\n 'external_objects__external_content_type',\n 'external_objects__external_object_id',\n 'owned_by__name__icontains',\n 'template__name__icontains',\n]\n\nconst defaultSkipObjectKeys = ['context', 'overrides', 'filters', 'metadata', 'style', 'hidden']\n\nconst shouldSkipObjectKey = (key: string, skipObjectKeys: string[]): boolean => {\n return skipObjectKeys.includes(key) || key.endsWith('style')\n}\n\nexport const camelCaseKeys = <T>(obj: T, skipKeys = defaultSkipKeys, skipObjectKeys = defaultSkipObjectKeys): T => {\n if (Array.isArray(obj)) {\n return obj.map((v) => camelCaseKeys(v, skipKeys, skipObjectKeys)) as T\n } else if (obj != null && obj.constructor === Object) {\n return Object.keys(obj).reduce((result, key) => {\n const skip = shouldSkipObjectKey(key, skipObjectKeys)\n const newKey = skipKeys.includes(key) || skip ? key : camelCase(key)\n const value = skip ? (obj as any)[key] : camelCaseKeys((obj as any)[key], skipKeys, skipObjectKeys)\n return { ...result, [newKey]: value }\n }, {}) as T\n }\n\n return obj\n}\n\nexport const snakeCaseKeys = <T>(obj: T, skipKeys = defaultSkipKeys, skipObjectKeys = defaultSkipObjectKeys): T => {\n if (Array.isArray(obj)) {\n return obj.map((v) => snakeCaseKeys(v, skipKeys, skipObjectKeys)) as T\n } else if (obj != null && obj.constructor === Object) {\n return Object.keys(obj).reduce((result, key) => {\n const skip = shouldSkipObjectKey(key, skipObjectKeys)\n const newKey = skipKeys.includes(key) || skip ? key : snakeCase(key)\n const value = skip ? (obj as any)[key] : snakeCaseKeys((obj as any)[key], skipKeys, skipObjectKeys)\n return { ...result, [newKey]: value }\n }, {}) as T\n }\n\n return obj\n}\n\nexport const pascalCaseKeys = <T>(obj: T, skipKeys = defaultSkipKeys, skipObjectKeys = defaultSkipObjectKeys): T => {\n if (Array.isArray(obj)) {\n return obj.map((v) => pascalCaseKeys(v, skipKeys, skipObjectKeys)) as T\n } else if (obj != null && obj.constructor === Object) {\n return Object.keys(obj).reduce((result, key) => {\n const skip = shouldSkipObjectKey(key, skipObjectKeys)\n const newKey = skipKeys.includes(key) || skip ? key : titleCase(key).replace(/ /g, '')\n const value = skip ? (obj as any)[key] : pascalCaseKeys((obj as any)[key], skipKeys, skipObjectKeys)\n return { ...result, [newKey]: value }\n }, {}) as T\n }\n\n return obj\n}\n\nexport const titleCase = (s?: string) => startCase(camelCase(s))\n","export function truncateObject(obj: any, currentDepth: number = 1, lengthTrigger = 20): any {\n if (typeof obj !== 'object' || obj === null) {\n return obj\n }\n\n if (Array.isArray(obj)) {\n if (obj.length > lengthTrigger && currentDepth <= 0) {\n return `[Truncated - ${obj.length} length array]`\n }\n return obj.map((item) => truncateObject(item, currentDepth - 1, lengthTrigger))\n }\n\n const keys = Object.keys(obj)\n if (keys.length > lengthTrigger && currentDepth <= 0) {\n return `{Truncated - ${keys.length} properties obj}`\n }\n\n return keys.reduce(\n (acc, key) => {\n acc[key] = truncateObject(obj[key], currentDepth - 1, lengthTrigger)\n return acc\n },\n {} as Record<string, any>,\n )\n}\n","export function isOriginValid(\n event: MessageEvent,\n allowedOrigins: string[] = [],\n isDev: boolean = ['development', 'test'].includes(process.env.NODE_ENV ?? ''),\n): boolean {\n if (isDev) {\n // In development mode, always return true to bypass origin checks\n return true\n }\n\n if (!event || !event.origin) {\n return false\n }\n\n // If allowedOrigins is empty, use the current window's origin\n const validOrigins = [...allowedOrigins, window.location.origin, 'pitcher.com']\n\n const isValid = validOrigins.includes(event.origin) || validOrigins.some((origin) => event.origin.endsWith(origin))\n\n if (!isValid) {\n console.warn(\n `The message origin ${event.origin} is not the same as the current origin ${window.location.origin}. Bailing...`,\n )\n }\n\n return isValid\n}\n","import { setEnv } from '@sdk/api/onlineRestApiHandlers'\nimport { highLevelApi } from '@sdk/main'\n\ntype FetchOptions = {\n method?: string\n headers?: Record<string, string>\n body?: string\n credentials?: RequestCredentials\n params?: Record<string, any>\n}\n\nconst MAX_RETRIES = 5\nconst BASE_DELAY = 1000 // 1 second\nlet refreshPromise: Promise<string> | null = null\n\nasync function refreshToken(): Promise<string> {\n if (refreshPromise) return refreshPromise\n\n console.info('Refreshing access token...')\n refreshPromise = (async () => {\n try {\n return await highLevelApi.refreshAccessToken().then((accessTokenResponse: { access_token: string }) =>\n highLevelApi.getEnv().then((env) => {\n setEnv(env)\n return accessTokenResponse.access_token\n }),\n )\n } catch (error) {\n console.error('Failed to refresh token:', error)\n throw error\n } finally {\n refreshPromise = null\n }\n })()\n\n return refreshPromise\n}\n\n// Custom parameter serializer function with 'repeat' format for arrays\nfunction paramsSerializer(params: Record<string, any>): string {\n const searchParams = new URLSearchParams()\n\n function addParam(key: string, value: any) {\n if (value === undefined || value === null) {\n return\n }\n if (Array.isArray(value)) {\n value.forEach((val) => addParam(key, val))\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n for (const subKey in value) {\n addParam(`${key}[${subKey}]`, value[subKey])\n }\n } else {\n searchParams.append(key, value)\n }\n }\n\n for (const key in params) {\n addParam(key, params[key])\n }\n\n return searchParams.toString()\n}\n\nasync function fetchWithRetry(url: string, options: FetchOptions, remainingRetries = MAX_RETRIES): Promise<any> {\n try {\n const response = await fetch(url, options)\n if (!response.ok) {\n if (response.status === 401) {\n const newToken = await refreshToken()\n options.headers = options.headers || {}\n options.headers.Authorization = `Bearer ${newToken}`\n return fetchWithRetry(url, options, remainingRetries)\n } else if (response.status >= 500 && response.status < 600 && remainingRetries > 0) {\n // Handle server errors with retries\n const delay = BASE_DELAY * Math.pow(2, MAX_RETRIES - remainingRetries)\n await new Promise((resolve) => setTimeout(resolve, delay))\n return fetchWithRetry(url, options, remainingRetries - 1)\n } else {\n // Handle non-2xx and non-5xx status codes without retry\n const errorData = await response.json()\n const error = new Error(\n `HTTP error! status: ${response.status}, message: ${errorData.message || response.statusText}`,\n )\n ;(error as Error & { status?: number }).status = response.status\n throw error\n }\n }\n\n if (response.status === 204 || response.status === 205) {\n return\n }\n return response.json()\n } catch (error) {\n if (\n remainingRetries > 0 &&\n !(error instanceof TypeError) &&\n (error as Error & { status?: number }).status !== 404\n ) {\n // Handle network errors with retries, but not 404s\n const delay = BASE_DELAY * Math.pow(2, MAX_RETRIES - remainingRetries)\n await new Promise((resolve) => setTimeout(resolve, delay))\n return fetchWithRetry(url, options, remainingRetries - 1)\n }\n throw error\n }\n}\n\nexport function createHttpClient(origin: string, token: string) {\n const headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n }\n const apiPath = '/api/v1'\n const baseCommon = { credentials: 'include' as RequestCredentials }\n\n return {\n get: async (endpoint: string, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'GET',\n headers,\n })\n return data\n },\n post: async (endpoint: string, body?: object, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'POST',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n put: async (endpoint: string, body: object, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'PUT',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n delete: async (endpoint: string, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'DELETE',\n headers,\n })\n return data\n },\n patch: async (endpoint: string, body: object, options: FetchOptions = {}) => {\n const url = new URL(`${origin}${apiPath}${endpoint}`)\n if (options.params) {\n url.search = paramsSerializer(options.params)\n }\n const data = await fetchWithRetry(url.toString(), {\n ...baseCommon,\n ...options,\n method: 'PATCH',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n /** PATCH with a full absolute URL (bypasses /api/v1 prefix). */\n patchUrl: async (absoluteUrl: string, body: object, options: FetchOptions = {}) => {\n const data = await fetchWithRetry(absoluteUrl, {\n ...baseCommon,\n ...options,\n method: 'PATCH',\n headers,\n body: JSON.stringify(body),\n })\n return data\n },\n }\n}\n","import { mapKeys, pickBy } from 'lodash-es'\nimport { parseISO, isValid, format } from 'date-fns'\nimport { METADATA_FILTER_DATE_FORMAT } from './filter.const'\n\nimport { deepToRaw } from '@lib/util/reactive'\n\nexport function normalizeFilterParams(params: Record<string, any>) {\n let normalizedParams = deepToRaw(params)\n\n // remove all 'system:xxxx' filterParams\n normalizedParams = pickBy(normalizedParams, (value, key) => {\n return !key.includes('system:')\n })\n\n normalizedParams = mapKeys(normalizedParams, (_, key) => {\n const isDateRange =\n Array.isArray(normalizedParams[key]) &&\n normalizedParams[key].length === 2 &&\n normalizedParams[key].every((date: string) => {\n const parsedDate = parseISO(date)\n return (\n typeof date === 'string' && isValid(parsedDate) && format(parsedDate, METADATA_FILTER_DATE_FORMAT) === date\n )\n })\n return `metadata__${key}${isDateRange ? '__range' : ''}`\n })\n\n return normalizedParams\n}\n\nexport function normalizeNetworkFilterParams(params?: Record<string, any> | null) {\n if (!params) return {}\n\n return Object.entries(params).reduce(\n (acc, [key, value]) => {\n acc[key] = key.endsWith('__range') && Array.isArray(value) ? value.join(',') : value\n\n return acc\n },\n {} as Record<string, any>,\n )\n}\n","import { pickBy, merge } from 'lodash-es'\n\nimport { createHttpClient } from '@sdk/utils/httpFetch'\nimport type { PitcherEnv } from '@sdk/interfaces'\nimport type { GetCanvasesParams } from '@lib/types/canvases'\nimport type { CanvasCreateRequest, CanvasRetrieve } from '@openapi'\nimport { normalizeNetworkFilterParams } from '@lib/components/filters/filter.util'\n\ntype ApiBaseUrlOverride = {\n api_base_url?: string\n}\n\nlet env: PitcherEnv\nlet http: ReturnType<typeof createHttpClient>\n\nfunction check() {\n if (!env) throw new Error('Missing env')\n if (!http) throw new Error('Missing http')\n}\n\nfunction pickNonNullish(data?: Record<string, any>) {\n return pickBy(data ?? {}, (v) => v !== undefined && v !== null)\n}\n\nexport const setEnv = (e: PitcherEnv) => {\n if (!e?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain) {\n console.warn('No custom domain found in token claims', e?.pitcher?.token_claims)\n typeof window !== 'undefined' &&\n window.Sentry?.captureMessage?.('No custom domain found in token claims', {\n extra: { env: e },\n level: 'warning',\n })\n }\n\n const newCustomDomain = e?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain\n const shouldRefreshHttpClient =\n e?.pitcher?.access_token !== env?.pitcher?.access_token ||\n (newCustomDomain &&\n newCustomDomain !== env?.pitcher?.token_claims?.['https://pitcher.com/claims/urls']?.custom_domain)\n\n env = merge({}, env, e)\n\n if (shouldRefreshHttpClient) {\n http = createHttpClient(\n env.pitcher.token_claims['https://pitcher.com/claims/urls'].custom_domain,\n env.pitcher.access_token,\n )\n }\n}\n\nexport const onlineRestApiHandlers: Record<string, any> = {\n get_canvases: async (\n params: GetCanvasesParams & { filters?: Record<string, any>; fields?: string } & ApiBaseUrlOverride,\n ) => {\n check()\n const { api_base_url, filters = {}, ...restParams } = params\n const res = await http.get('/canvases', {\n params: {\n instance_id: env.pitcher.instance.id,\n ...normalizeNetworkFilterParams(filters),\n ...pickNonNullish(restParams),\n },\n })\n\n return res\n },\n get_canvas: async (params: { id: CanvasRetrieve['id']; fields?: string; lazy_sections?: boolean }) => {\n check()\n const { id, ...restParams } = params\n const res = await http.get(`/canvases/${params.id}`, { params: restParams })\n return res\n },\n // Lazy section loading companion: batch-hydrate section bodies for a canvas\n // that was fetched as a shell (`?lazy_sections=true`). Hits the same Django\n // /api/v1 base as get_canvas. Returns { sections: CanvasSection[] }.\n get_canvas_sections_by_ids: async (params: {\n canvas_id: CanvasRetrieve['id']\n section_ids: string[]\n // Forwarded so hydration filters identically to the shell that advertised\n // the IDs (admin shells are fetched with exclude_drafts:false + expired/\n // pending on). Only sent when provided; the endpoint applies rep defaults\n // and role-gates expired/pending otherwise.\n exclude_drafts?: boolean\n include_expired_files?: boolean\n include_pending_files?: boolean\n }) => {\n check()\n const res = await http.post('/canvases/sections/by-ids', {\n canvas_id: params.canvas_id,\n section_ids: params.section_ids,\n ...(params.exclude_drafts !== undefined && { exclude_drafts: params.exclude_drafts }),\n ...(params.include_expired_files !== undefined && { include_expired_files: params.include_expired_files }),\n ...(params.include_pending_files !== undefined && { include_pending_files: params.include_pending_files }),\n })\n return res\n },\n create_canvas: async (params: CanvasCreateRequest) => {\n check()\n const res = await http.post('/canvases', { ...params, instance_id: env.pitcher.instance.id })\n return res\n },\n update_canvas: async (params: { id: CanvasRetrieve['id']; fields?: string } & Record<string, any>) => {\n check()\n const { id, fields, ...canvasData } = params\n const useCoreEndpoint = (env as any)?.launch_darkly?.enable_canvas_core_patch === true\n if (useCoreEndpoint) {\n const origin = env.pitcher.token_claims['https://pitcher.com/claims/urls'].custom_domain\n const fieldsQs = fields ? `?fields=${encodeURIComponent(fields)}` : ''\n const url = `${origin}/core/api/protected/v1/canvases/${id}${fieldsQs}`\n // Use http.patchUrl for Core path (bypasses /api/v1 prefix)\n const res = await http.patchUrl(url, canvasData)\n return res\n }\n const res = await http.patch(`/canvases/${id}`, { fields, ...canvasData })\n return res\n },\n delete_canvas: async (params: { id: CanvasRetrieve['id'] }) => {\n check()\n const res = await http.delete(`/canvases/${params.id}`)\n return res\n },\n share_canvas: async (params: { id: CanvasRetrieve['id'] }) => {\n check()\n let link\n\n try {\n link = await http.get(`/shared-links/canvas/${params.id}`)\n } catch (e) {\n if ((e as Error & { status?: number })?.status === 404) {\n link = await http.post('/shared-links', {\n canvas_id: params.id,\n })\n } else {\n throw e\n }\n }\n\n return link\n },\n get_canvas_recommended_files: async (params: {\n canvas_id: CanvasRetrieve['id']\n match?: ('tags' | 'metadata')[]\n }) => {\n check()\n const { canvas_id, ...restParams } = params\n const res = await http.get(`/canvases/${canvas_id}/recommended_files`, { params: restParams })\n return res\n },\n get_collaborations: async (params: Record<string, any>) => {\n check()\n const res = await http.get('/collaborations', { params: pickNonNullish(params) })\n return res\n },\n create_collaboration: async (params: Record<string, any>) => {\n check()\n const res = await http.post('/collaborations', params)\n return res\n },\n delete_collaboration: async (params: { collaboration_id: number | string }) => {\n check()\n const { collaboration_id } = params\n const res = await http.delete(`/collaborations/${collaboration_id}`)\n return res\n },\n get_instance_memberships: async (params: Record<string, any>) => {\n check()\n const res = await http.get('/instance-memberships', { params: pickNonNullish(params) })\n return res\n },\n get_content_distribution_groups: async (params: Record<string, any>) => {\n check()\n const res = await http.get('/content-distribution-groups', { params: pickNonNullish(params) })\n return res\n },\n}\n","type WindowType = Window & typeof globalThis\n\nexport function getTopPitcherWindow(current: WindowType = window): WindowType {\n try {\n if (current.location.protocol === 'file:') {\n return window.top as WindowType\n }\n if (\n current.parent !== current &&\n (current.parent.location.href.includes('pitcher.com') || current.parent.location.href.includes('localhost'))\n ) {\n return getTopPitcherWindow(current.parent as WindowType)\n }\n } catch (e) {\n // Cross-origin hit, stop here\n }\n return current\n}\n","import { v4 as uuid } from 'uuid'\nimport { cloneDeep } from 'lodash-es'\n\nimport type { ApiEventMap, PitcherAPI, PitcherEvent, PitcherResponse, ApiOptions, PitcherEnv } from '@sdk/interfaces'\nimport { PitcherResponseStatus, PitcherMessageType } from '@sdk/interfaces'\nimport { EventEmitter } from '@sdk/utils/eventEmitter'\nimport { assert } from '@sdk/utils/assert'\nimport { snakeCaseKeys, camelCaseKeys } from '@lib/util/casing'\nimport { truncateObject } from '@sdk/utils/object'\nimport { isOriginValid } from '@lib/util/message-event'\nimport { setEnv, onlineRestApiHandlers } from '@sdk/api/onlineRestApiHandlers'\nimport { getTopPitcherWindow } from '@sdk/utils/window'\n\nconst TRUNCATE_LENGTH_TRIGGER = 10\n// Responses returned verbatim even for `casing: 'camel'` consumers: AppsDB\n// entries embed the opaque app-owned `data` blob, and camelizing would rewrite\n// its keys — corrupting values consumers round-trip back into upserts and\n// diverging from the REST path, which never transforms bodies.\nconst RAW_RESPONSE_METHODS: string[] = ['appsdb_get_entries', 'appsdb_upsert_entry', 'appsdb_delete_entry']\nconst RAW_PAYLOAD_METHODS: string[] = [\n // AppsDB `data` is an opaque app-owned blob — snake-casing its keys would corrupt stored payloads\n 'appsdb_upsert_entry',\n 'crm_create',\n 'crm_upsert',\n 'crm_describe',\n 'crm_layout',\n 'crm_smart_query',\n 'crm_smart_object_metadata',\n 'crm_smart_object_validation_rules',\n 'crm_smart_object_layout',\n 'crm_smart_upsert_objects',\n 'crm_smart_delete_objects',\n]\n\nfunction updateOnlineHandlersEnv(env?: PitcherEnv) {\n env && setEnv(env)\n}\nexport class LowLevelApi extends EventEmitter<ApiEventMap> implements PitcherAPI {\n constructor(options?: ApiOptions) {\n super()\n this.callbacks = {}\n this.options = options ?? {\n casing: 'snake',\n logLevel: 'off',\n errorLogger: () => {},\n fetchMode: 'postmessage',\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('message', (event) => {\n if (!isOriginValid(event)) return\n\n this.options.logLevel === 'debug' && console.log('message received', event)\n if (event.data.type === 'PITCHER_RESPONSE') {\n assert(event.data.request.id, 'event id is required')\n this.handleCallbackMessage(event.data.request.id, event.data)\n } else if (event.data.type === 'PITCHER_EVENT') {\n this.handleEventMessage(this.options.casing === 'camel' ? camelCaseKeys(event.data.event) : event.data.event)\n }\n })\n\n this.request('subscribe') // subscribe to events\n }\n }\n\n callbacks: {\n [k: string]: { callback: (res: PitcherResponse) => void; dispatched_at: number; type: string; payload: object }\n }\n\n private options: ApiOptions\n\n private handleCallbackMessage(id: string, body: PitcherResponse) {\n if (this.callbacks[id]) {\n this.callbacks[id].callback(body)\n // metrics\n this.options.logLevel &&\n ['info', 'debug'].includes(this.options.logLevel) &&\n console.log(\n `It took ${Date.now() - this.callbacks[id].dispatched_at} ms for the event ${this.callbacks[id].type}`,\n )\n // cleanup\n delete this.callbacks[id]\n }\n }\n\n private handleEventMessage(event: PitcherEvent) {\n this.emit('event', event)\n }\n\n public request(type: string, body: object | null = null): Promise<any> {\n const fetchMode: ApiOptions['fetchMode'] = this.options.fetchMode ?? 'postmessage'\n return new Promise((resolve, reject) => {\n const id = uuid()\n const callback = (res: PitcherResponse) => {\n this.options.logLevel === 'debug' && console.log(`Callback ${id} response:`, res)\n if (res.response.status === 'ok') {\n resolve(\n (this.options.casing === 'camel' && !RAW_RESPONSE_METHODS.includes(type)\n ? camelCaseKeys(res.response.body)\n : res.response.body) as PitcherResponse,\n )\n\n if (type === 'get_env') updateOnlineHandlersEnv(res.response.body as PitcherEnv | undefined)\n } else if (res.response.status === 'error') {\n if (this.options.errorLogger) {\n this.options.errorLogger({\n type: res.request.type,\n message: `Pitcher JS API call failure: ${res.request.type}`,\n js_api_response: JSON.stringify(truncateObject(res, 3, TRUNCATE_LENGTH_TRIGGER)),\n })\n }\n reject(\n this.options.casing === 'camel' && !RAW_RESPONSE_METHODS.includes(type)\n ? camelCaseKeys(res.response.body)\n : res.response.body,\n )\n } else {\n throw new Error('unsupported response status')\n }\n }\n const shouldSkipSnakeCase = RAW_PAYLOAD_METHODS.includes(type)\n const payload = shouldSkipSnakeCase ? cloneDeep(body) : cloneDeep(snakeCaseKeys(body)) // default: snake case for impact / cloneDeep to create serializable object\n\n this.callbacks[id] = {\n dispatched_at: Date.now(),\n type,\n payload: payload ?? {},\n callback,\n }\n\n if (fetchMode === 'prefer-online' && type && onlineRestApiHandlers[type]) {\n onlineRestApiHandlers[type](payload)\n .then((data: any) => {\n if (this.callbacks[id]) {\n this.callbacks[id].callback({\n type: PitcherMessageType.RESPONSE,\n request: { id, type },\n response: { status: PitcherResponseStatus.OK, body: data },\n } satisfies PitcherResponse)\n delete this.callbacks[id]\n }\n })\n .catch((error: any) => {\n if (this.callbacks[id]) {\n this.callbacks[id].callback({\n type: PitcherMessageType.RESPONSE,\n request: { id, type },\n response: { status: PitcherResponseStatus.ERROR, body: error },\n } satisfies PitcherResponse)\n delete this.callbacks[id]\n }\n })\n } else {\n // Post message to top ancestor window\n const targetWindow = getTopPitcherWindow(window)\n if (typeof targetWindow !== 'undefined' && targetWindow) {\n targetWindow.postMessage(\n {\n type: 'PITCHER_REQUEST',\n request: {\n type,\n id,\n body: payload,\n },\n },\n '*',\n )\n }\n }\n })\n }\n}\n","import * as modules from '@sdk/api/modules'\nimport { EventEmitter } from '@sdk/utils/eventEmitter'\nimport { LowLevelApi } from '@sdk/api/LowLevelApi'\nimport type { PitcherEvent, ApiOptions } from '@sdk/interfaces'\n\n/**\n * Creates a high-level API instance and caches it. Reterns a new instance only if new options are provided.\n */\nexport function createHighLevelApi(options?: ApiOptions) {\n const API = new LowLevelApi(options)\n const eventEmitter = new EventEmitter()\n\n API.on('event', (event: PitcherEvent) => {\n eventEmitter.emit(event.type, event.body)\n })\n\n return {\n API,\n ...modules,\n /**\n * Subscribe to a given event type by its key.\n *\n * @param {string} type - The event type to subscribe to.\n * @param {(payload: PitcherEvent) => void} callback - The callback function to handle the event.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event. * @example\n *\n * @example\n * const unsubscribeFromSectionListUpdate = usePitcherApi().on('entered_fullscreen', (event: object) => {\n * // handle event\n * })\n * // later\n * unsubscribeFromSectionListUpdate()\n */\n on: (type: string, callback: (payload: PitcherEvent) => void) => eventEmitter.on(type, callback),\n\n /**\n * Unsubscribe from a given event type by its key and the attached callback reference.\n * @param {string} type - The event type to unsubscribe from.\n * @param {(payload: PitcherEvent) => void} callback - The callback function reference to remove.\n *\n * @example\n * const callback = (event: object) => {\n * // handle event\n * }\n * usePitcherApi().on('entered_fullscreen', callback)\n * // later\n * usePitcherApi().off('entered_fullscreen', callback)\n */\n off: (type: string, callback: (payload: PitcherEvent) => void) => eventEmitter.off(type, callback),\n\n /**\n * Make the entire CatalogIQ fullscreen.\n *\n * @example\n * usePitcherApi().enterFullscreen()\n */\n enterFullscreen: () => API.request('enter_fullscreen'),\n\n /**\n * Exit fullscreen mode.\n *\n * @example\n * usePitcherApi().exitFullscreen()\n */\n exitFullscreen: () => API.request('exit_fullscreen'),\n\n /**\n * Return is CatalogIQ in fullscreen.\n *\n * @example\n * usePitcherApi().isFullscreen()\n */\n isFullscreen: () => API.request('is_fullscreen'),\n\n /**\n * Log out the current user.\n *\n * @example\n * usePitcherApi().logout()\n */\n logout: () => API.request('logout'),\n\n /**\n * Quit the current instance and go to the instance selection screen.\n *\n * @example\n * usePitcherApi().quitInstance()\n */\n quitInstance: () => API.request('quit_instance'),\n\n /**\n * Get the request types.\n *\n * @returns {Promise<any>}\n */\n getRequestTypes: () => API.request('get_request_types'),\n\n /**\n * Broadcast an event to CatalogIQ.\n * @param {PitcherEvent} event - The event to broadcast.\n *\n * @example\n * usePitcherApi()\n * .broadcast({\n * type: \"canvas_updated\",\n * body: { context: { myContextProperty: 'test' } },\n * })\n * .then(function (result) {\n * useUi().toast({\n * message: \"Canvas Populated.\",\n * type: \"info\",\n * })\n * })\n */\n broadcast: (event: PitcherEvent) => API.request('broadcast', event),\n\n /**\n * Broadcast an event to webviews only (iOS only).\n * @param {PitcherEvent} event - The event to broadcast.\n *\n * @example\n * usePitcherApi()\n * .broadcastToWebviews({\n * type: \"canvas_updated\",\n * body: { context: { myContextProperty: 'test' } },\n * })\n * .then(function (result) {\n * useUi().toast({\n * message: \"Canvas Populated.\",\n * type: \"info\",\n * })\n * })\n */\n broadcastToWebviews: (event: PitcherEvent) => API.request('broadcast_to_webviews', event),\n\n /**\n * Subscribe to updates.\n *\n * @returns {Promise<void>}\n */\n subscribe: () => API.request('subscribe'),\n\n /**\n * Unsubscribe from updates.\n *\n * @returns {Promise<void>}\n */\n unsubscribe: () => API.request('unsubscribe'),\n }\n}\n","export function usePostRobot() {\n if (window.postRobot) return window.postRobot\n\n return import('post-robot').then((m) => m.default || m)\n}\n","import type {\n SelectedPage as ContentSelectorSelectedPage,\n SelectedFile as ContentSelectorSelectedFile,\n SelectorType,\n} from '@content-selector/stores/app'\nimport type { Selection } from '@lib/types/selections'\nimport type { CanvasSelection } from '@canvas-selector/appTypes'\nimport type { ComponentNode, EmbeddableProps } from '@canvas-builder/types/canvas'\nimport type { SfEvent } from '@lib/types/sfdc'\nimport type { Mutable } from '@lib/types/ts'\nimport type { CanvasRetrieve, File, User, Canvas, CanvasSection, FileContentTypeEnum } from '@openapi'\nimport type { OpenRequestPayload } from '@sdk/payload.types'\nimport type { Range } from '@lib/util/tsHelpers'\nimport type { Agenda, AgendaSelectorProps } from '@agenda-selector/types/agenda.type'\nimport type { CollectionSelectorProps } from '@collection-selector/types/collection-selector.type'\nimport type { CollectionPlayer } from '@collection-player/types/collection-player.type'\nimport type { EmbedLocation } from '@lib/types/app'\n\nexport const UI_MESSAGE = 'UI_MESSAGE' as const\n\nexport const UI_API_METHOD_TYPES = {\n UI_BROADCAST: 'ui_broadcast',\n UI_SELECT_CONTENT: 'ui_select_content',\n UI_SELECT_CANVASES: 'ui_select_canvases',\n UI_OPEN: 'ui_open',\n UI_EMBEDDABLE_READY: 'ui_embeddable_ready',\n UI_TOAST: 'ui_toast',\n UI_CAPTURE_APP_ERROR: 'ui_capture_app_error',\n UI_UPDATE_CANVAS: 'ui_update_canvas',\n UI_PRINT_CANVAS: 'ui_print_canvas',\n UI_OPEN_CANVAS_OVERLAY: 'ui_open_canvas_overlay',\n UI_OPEN_COLLECTION_PLAYER_OVERLAY: 'ui_open_collection_player_overlay',\n UI_SELECT_COLLECTION_PLAYER_CONTENT: 'ui_select_collection_player_content',\n UI_SELECT_AGENDA_CONTENT: 'ui_select_agenda_content',\n UI_UPDATE_LOCATION: 'ui_update_location',\n UI_PRESELECT_SFDC_MEETING_ID: 'ui_preselect_sfdc_meeting_id',\n UI_SET_POSTCALL_STYLE: 'ui_set_postcall_style',\n UI_ENABLE_POSTCALL_SUBMIT: 'ui_enable_postcall_submit',\n UI_DISABLE_POSTCALL_SUBMIT: 'ui_disable_postcall_submit',\n UI_COMPLETE_POSTCALL: 'ui_complete_postcall',\n UI_STOP_MEETING: 'ui_stop_meeting',\n UI_CANCEL_MEETING: 'ui_cancel_meeting',\n UI_RESUME_MEETING: 'ui_resume_meeting',\n UI_PROMPT_PIA: 'ui_prompt_pia',\n\n UI_CANVAS_NAVIGATE_NEXT_PAGE: 'ui_canvas_navigate_next_page',\n UI_CANVAS_NAVIGATE_PREVIOUS_PAGE: 'ui_canvas_navigate_previous_page',\n UI_CANVAS_NAVIGATE_PAGE: 'ui_canvas_navigate_page',\n\n UI_APP_LOADED: 'ui_app_loaded',\n UI_APP_RESIZE: 'ui_app_resize',\n\n UI_CLOSE_CANVAS_SECTION_EXECUTION: 'ui_close_canvas_section_execution',\n UI_CLOSE_CANVAS_DRAWER: 'ui_close_canvas_drawer',\n UI_OPEN_GLOBAL_POPUP: 'ui_open_global_popup',\n UI_CLOSE_GLOBAL_POPUP: 'ui_close_global_popup',\n UI_OPEN_SHARING_SETTINGS: 'ui_open_sharing_settings',\n} as const\n\nexport const UI_MESSAGE_TYPES = {\n UI_MEETING_CANCELED: 'ui_meeting_canceled',\n UI_CANVAS_UPDATED: 'ui_canvas_updated',\n UI_SECTION_LIST_UPDATED: 'ui_section_list_updated',\n UI_APP_SET_DATA: 'ui_app_set_data',\n UI_APP_UPDATE_DATA: 'ui_app_update_data',\n UI_PROMPT_PIA_RESPONSE_STREAMED: 'ui_prompt_pia_response_streamed',\n} as const\n\nexport const UI_NATIVE_MESSAGE_TYPES = [\n UI_MESSAGE_TYPES.UI_APP_SET_DATA,\n UI_MESSAGE_TYPES.UI_APP_UPDATE_DATA,\n UI_MESSAGE_TYPES.UI_CANVAS_UPDATED,\n] as const\n\n// UI API METHOD TYPES\nexport type UiBroadcastRequest = Record<string, any>\n\nexport type UiSelectContentRequest = {\n /** Array of selections */\n selections?: Selection[]\n content_type?: 'file' | 'slide' | 'content'\n allowed_selector_types?: SelectorType[]\n allowed_content_types?: FileContentTypeEnum[]\n allowed_asset_content_types?: FileContentTypeEnum[]\n max_selections?: number\n min_selections?: Range<0, 999>\n allowed_ids?: File['id'][]\n initial_metadata_filters?: Record<string, any>\n /**\n * Array of file extensions to scope out list of the results (optional). Only files with these extensions will be shown.\n */\n allowed_original_extensions?: string[]\n /**\n * Disables files from selection which are not sharable (optional).\n */\n disable_no_sharable?: boolean\n /**\n * Disables files from selection which do not have pptx_data in metadata object (optional).\n */\n disable_no_pptx_data?: boolean\n /**\n * Only allow content pdf pages (optional). User will be forced to select a page from the pdf.\n */\n only_allow_content_pdf_pages?: boolean\n}\n\nexport type UiSelectContentResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected content */\n content?: (ContentSelectorSelectedFile | ContentSelectorSelectedPage)[]\n}\n\nexport type UiSelectCollectionPlayerRequest = {\n initial_data?: CollectionSelectorProps['initialData']\n attach_to?: CollectionSelectorProps['attachTo']\n open_settings?: CollectionSelectorProps['openSettings']\n readonly_name?: CollectionSelectorProps['readonlyName']\n close_on_settings?: CollectionSelectorProps['closeOnSettings']\n translations?: CollectionSelectorProps['translations']\n initial_metadata_filters?: CollectionSelectorProps['initialMetadataFilters']\n hide_close?: CollectionSelectorProps['hideClose']\n}\n\nexport type UiSelectCollectionPlayerResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected' | 'settings'\n /** Selected content */\n content?: CollectionPlayer\n}\n\nexport type UiSelectAgendaRequest = {\n initial_agenda?: AgendaSelectorProps['initialAgenda']\n attach_to?: AgendaSelectorProps['attachTo']\n}\n\nexport type UiSelectAgendaResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected content */\n content?: Agenda\n}\n\nexport type UiSelectCanvasesRequest = {\n /** Array of selections */\n selections?: CanvasSelection[]\n allowed_types?: ('canvas' | 'canvas-template' | 'section' | 'section-template')[]\n allowed_ids?: Canvas['id'][]\n initial_metadata_filters?: Record<string, any>\n}\n\nexport type UiSelectCanvasesResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected canvases */\n canvases?: Canvas[]\n}\n\nexport type UiPromptPiaRequest = {\n /** Unique identifier of this prompt (needed for streaming event) */\n id: string\n /** Prompt to send to PIA */\n prompt: string\n}\n\nexport type UiPromptPiaResponse = {\n /** Unique identifier of this prompt (needed for streaming event) */\n id: string\n /** PIA response */\n response: string\n}\n\n/**\n * Error object to send to Pitcher sentry instance\n */\nexport type UiCaptureAppErrorRequest = Record<string, any>\n\nexport type UiUpdateCanvasRequest = Mutable<CanvasRetrieve> & {\n /** Comma-separated list of field keys to return from the server */\n fields?: string\n}\n\nexport type UiPrintCanvasRequest = {\n /** Canvas ID to print */\n id: CanvasRetrieve['id']\n /** Optional HTTPS URL for async download notifications */\n notify_url?: string\n}\n\nexport type UiPrintCanvasResponse = {\n /** Job ID for tracking the async download */\n job_id?: string\n /** Indicates if the request was successful */\n success: boolean\n}\n\nexport type UiOpenRequest = OpenRequestPayload & {\n /** Name of the app to open */\n app_name?: string\n /** Context to pass to the app */\n app_context?: Record<string, any>\n /** Embed location of the app */\n app_embed_location?: EmbedLocation\n}\n\nexport type UiCompletePostcallRequest = {\n /** Indicates if the postcall was successfully submitted */\n was_successfully_submitted?: boolean\n}\n\nexport type UiSetPostcallStyleRequest = Record<string, any>\n\nexport type UiAppResizeRequest = {\n /** Requested height as the number of pixels */\n height: number\n}\n\nexport type UiCanvasNavigatePageRequest = {\n /** The id of the component we want to navigate to */\n page: ComponentNode['id']\n}\n\nexport interface UiToastRequest {\n /**\n * Type of the toast, influences the default icon\n * @defaultValue **REQUIRED**\n */\n type: 'info' | 'error' | 'warning' | 'success' | 'loading'\n\n /**\n * Text to show inside the toast\n * @defaultValue **REQUIRED**\n */\n message: string\n\n /**\n * Optional, value in milliseconds\n * @defaultValue 3500\n */\n duration?: number\n\n /**\n * Visibility of the close button, default is true\n * @defaultValue true\n */\n closable?: boolean\n\n /**\n * Toast won't be hidden as long as it is hovered\n * @defaultValue true\n */\n keepAliveOnHover?: boolean\n\n /**\n * Set to `false` to hide the icon\n * @defaultValue true\n */\n showIcon?: boolean\n}\n\nexport interface UiPreselectSfdcMeetingIdRequest {\n /** Salesforce Meeting ID */\n eventId: string\n}\n\nexport interface UiPreselectSfdcMeetingIdResponse {\n /** Salesforce Event */\n event: SfEvent | null\n}\n\nexport interface UiOpenCollectionPlayerOverlayGroup {\n /** File ID */\n id: string\n /** File name */\n name: string\n /** Optional: specific slides/pages to show from the file */\n slides?: Array<{\n /** The file ID (same as parent group.id) */\n file_id: string\n /** Zero-based page/slide index to show */\n slide_index: number\n }>\n}\n\nexport interface UiOpenCollectionPlayerOverlayRequest {\n /** Array of files/slides to be played in the collection */\n groups: UiOpenCollectionPlayerOverlayGroup[]\n /** The display name for the collection */\n name: string\n}\n\n// UI API EVENT MESSAGE TYPES\nexport type UiMessagePayloads = {\n [UI_MESSAGE_TYPES.UI_MEETING_CANCELED]: UiMeetingCanceledPayload\n [UI_MESSAGE_TYPES.UI_APP_SET_DATA]: UiAppSetDataPayload\n [UI_MESSAGE_TYPES.UI_APP_UPDATE_DATA]: UiAppUpdateDataPayload\n [UI_MESSAGE_TYPES.UI_CANVAS_UPDATED]: UiCanvasUpdatedPayload\n [UI_MESSAGE_TYPES.UI_SECTION_LIST_UPDATED]: UiSectionListUpdatedPayload\n [UI_MESSAGE_TYPES.UI_PROMPT_PIA_RESPONSE_STREAMED]: UiPromptPiaResponseStreamedPayload\n}\n\nexport type UiMessageEnvelope<\n T extends\n (typeof UI_MESSAGE_TYPES)[keyof typeof UI_MESSAGE_TYPES] = (typeof UI_MESSAGE_TYPES)[keyof typeof UI_MESSAGE_TYPES],\n> = {\n /** Message type */\n type: T\n /** Message body */\n body: UiMessagePayloads[T]\n}\n\nexport type UiMeetingCanceledPayload = {\n /** Account ID */\n accountId?: string\n /** Event ID */\n eventId?: string\n}\n\nexport type UiAppSetDataPayload = {\n /** Client name */\n client: string | null\n /** Platform name */\n platform: string | undefined\n /** User information */\n user: User | null\n /** Edit mode status */\n is_edit_mode: boolean\n /** Call status */\n in_call: boolean\n /** Canvas data */\n canvas: CanvasRetrieve\n /** Section used in canvas */\n used_in_section: CanvasSection | null\n /** Component ID */\n component_id: string\n /** Embeddable settings */\n settings: EmbeddableProps['settings'] | null\n /** Width of the canvas */\n width: string | undefined\n /** Height of the canvas */\n height: string | undefined\n /** Full screen mode status */\n full_screen_mode: boolean | undefined\n /** Display mode */\n display_mode: string | undefined\n /** Section index in section list */\n section_index: number | null\n /** Section list ID */\n section_list_id: string | null\n /** Canvas correlation ID for tracking */\n canvas_correlation_id: string | undefined\n}\n\nexport type UiAppUpdateDataPayload = {\n /** Call status */\n in_call: boolean\n /** Edit mode status */\n is_edit_mode: boolean\n}\n\nexport type UiCanvasUpdatedPayload = {\n /** Canvas data */\n canvas: CanvasRetrieve\n}\n\nexport type UiSectionListUpdatedPayload = {\n /** List of section IDs */\n section_list_ids: string[]\n /** Section list component ID */\n section_list_component_id: string\n /** Canvas data */\n canvas: CanvasRetrieve | null\n}\n\nexport type UiPromptPiaResponseStreamedPayload = {\n /** Unique identifier of this prompt */\n id: string\n /** PIA response so far */\n partial_response: string\n /** Current chunk of the response */\n chunk: string\n}\n\nexport interface UiOpenGlobalPopupRequest {\n /** Name of the app to open */\n app_name: string\n /** Extra context to pass to the app */\n extra_context?: Record<string, any>\n}\n\nexport interface UiOpenGlobalPopupResponse {\n /** Whether the popup was successfully opened */\n success: boolean\n}\n\nexport interface UiOpenSharingSettingsRequest {\n files: Array<{\n id: string\n name: string\n thumbnail_url?: string\n content_type?: string\n }>\n default_auth_strategy?: string\n}\n\nexport interface UiOpenSharingSettingsResponse {\n user_action: 'confirmed' | 'cancelled'\n settings?: {\n auth_strategy:\n | 'none'\n | 'any_email'\n | 'specified_emails'\n | 'specified_domains'\n | 'verified_emails'\n | 'verified_domains'\n allowed_emails?: string[]\n allowed_domains?: string[]\n valid_until_days?: number | null\n allow_download?: boolean\n }\n}\n","import { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport {\n type UiSelectAgendaRequest,\n type UiSelectAgendaResponse,\n type UiSelectCollectionPlayerRequest,\n type UiSelectCollectionPlayerResponse,\n type UiSelectContentRequest,\n type UiSelectContentResponse,\n type UiOpenRequest,\n type UiToastRequest,\n type UiPreselectSfdcMeetingIdRequest,\n type UiPreselectSfdcMeetingIdResponse,\n type UiOpenGlobalPopupRequest,\n type UiOpenGlobalPopupResponse,\n UI_API_METHOD_TYPES,\n} from '@sdk/api/modules/ui/types.ui'\n\n/**\n * @hidden\n * @deprecated\n */\nexport async function ui_select_content(payload: UiSelectContentRequest = {}): Promise<UiSelectContentResponse> {\n const pr = await usePostRobot()\n console.warn(\n '[content.ui.ts]: ui_select_content is deprecated and might get removed in future versions, please use select_content instead.',\n )\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_CONTENT, payload)\n return <UiSelectContentResponse>response.data\n}\n\n/**\n * Allows the user to select (and preselect) content from the instance.\n *\n * Opens the content selector dialog to allow the user to select content and handle the outcome. This method allows you to\n * prompt the user to select content from the CatalogIQ instance and use that content in your application.\n *\n * @example\n * const api = useApi() // or useUi() if you know that you 're in UI context\n * api\n * .selectContent({\n * selections: [\n * { fileId: \"01HCZ623YYRFJQ0F7B69VWE510\", type: \"file\" },\n * {\n * fileId: \"01HD3XGZ5FN90QJGK7CH8TBZDF\",\n * type: \"page\",\n * pageIndex: 2,\n * },\n * ],\n * })\n *\n * @param payload optional payload to preselect specific content\n * @returns Promise with the user action and selected content\n */\nexport async function selectContent(payload: UiSelectContentRequest = {}): Promise<UiSelectContentResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_CONTENT, payload)\n return <UiSelectContentResponse>response.data\n}\n\n/**\n * Open a file in the CatalogIQ instance.\n */\nexport async function open(payload: UiOpenRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN, payload)\n}\n\n/**\n * Show a toast message to the user.\n *\n * @example\n * useUi().toast({ type: 'info', message: 'Hello, world!' })\n */\nexport async function toast(payload: UiToastRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_TOAST, payload)\n}\n\n/**\n * Preselect a meeting in the top meeting bar by Salesforce Meeting ID. From there, the user can easily start the meeting\n * with a single click.\n *\n * @example\n * const objectFetchedFromSalesforce = {\n * // fetch dynamically from Salesforce or provide in another way\n * EventId: '00U1r00000D1J1zEAF',\n * }\n * ui.preselectSfdcMeetingId({ eventId: objectFetchedFromSalesforce.EventId }).then((response) => {\n * // e.g. display advanced meeting details inside your app\n * console.log(response.event)\n * })\n */\nexport async function preselectSfdcMeetingId(\n payload: UiPreselectSfdcMeetingIdRequest,\n): Promise<UiPreselectSfdcMeetingIdResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_PRESELECT_SFDC_MEETING_ID, payload)\n return <UiPreselectSfdcMeetingIdResponse>response.data\n}\n\n/**\n * Opens the collection player selector modal to allow the user to select collection player content and handle the outcome.\n * ```\n * const api = useApi() // or useUi() if you know that you 're in UI context\n *\n * uiApi.selectCollectionContent({\n * // optional payload\n * initial_data: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectCollectionContent(\n payload: UiSelectCollectionPlayerRequest = {},\n): Promise<UiSelectCollectionPlayerResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_COLLECTION_PLAYER_CONTENT, payload)\n\n return <UiSelectCollectionPlayerResponse>response.data\n}\n\n/**\n * Opens the agenda selector modal to allow the user to select agenda content and handle the outcome.\n * ```\n * const api = useApi() // or useUi() if you know that you 're in UI context\n *\n * uiApi.selectAgendaContent({\n * // optional payload\n * initial_agenda: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectAgendaContent(payload: UiSelectAgendaRequest = {}): Promise<UiSelectAgendaResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_AGENDA_CONTENT, payload)\n\n return <UiSelectAgendaResponse>response.data\n}\n\n/**\n * Opens a global popup app by name.\n *\n * @example\n * const api = useApi()\n * api.openGlobalPopup('my-popup-app')\n * api.openGlobalPopup('my-popup-app', { customData: 'value' })\n *\n * @param appName - The name of the app to open (must have app_type: 'ui-global-popup')\n * @param extraContext - Extra context to pass to the app\n * @returns Promise with the result of the operation\n */\nexport async function openGlobalPopup(\n appName: string,\n extraContext?: Record<string, any>,\n): Promise<UiOpenGlobalPopupResponse> {\n const pr = await usePostRobot()\n const payload: UiOpenGlobalPopupRequest = {\n app_name: appName,\n extra_context: extraContext,\n }\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN_GLOBAL_POPUP, payload)\n return <UiOpenGlobalPopupResponse>response.data\n}\n\n/**\n * Closes the currently open global popup app.\n *\n * @example\n * const api = useApi()\n * api.closeGlobalPopup()\n */\nexport async function closeGlobalPopup(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_CLOSE_GLOBAL_POPUP, {})\n}\n","import { UI_API_METHOD_TYPES } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * This event is used for appJson.module.canvas.start_in_loading_mode: true apps.\n * A loading curtain is displayed until you call this event.\n *\n * @example\n * useUi().embeddableReady()\n *\n */\nexport async function embeddableReady(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_EMBEDDABLE_READY)\n}\n","import { UI_API_METHOD_TYPES } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type { UpdateLocationPitcherEvent } from '@sdk/interfaces'\nimport { getTopPitcherWindow } from '@sdk/utils/window'\n\n/**\n * Navigate to another page in the CatalogIQ instance.\n *\n * [//]: # 'TODO: This is a very powerful event, we need to expand documentation here'\n *\n * @example\n * const canvasId = '1234567890abcdef12345678' // obtain target canvasId\n * useUi().updateLocation({\n * action: 'restore',\n * routes: {\n * 'slotty-ui': {\n * path: '/canvases/saved-canvases/' + canvasId + '/build/present',\n * query: {},\n * },\n * },\n * })\n */\n\nexport async function updateLocation(payload: UpdateLocationPitcherEvent): Promise<any> {\n const pr = await usePostRobot()\n return pr.send(getTopPitcherWindow(), UI_API_METHOD_TYPES.UI_UPDATE_LOCATION, payload)\n}\n","import { UI_API_METHOD_TYPES, type UiCaptureAppErrorRequest } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Send an app error to Pitcher sentry instance.\n *\n * @example\n * try {\n * throw new Error('This is an error')\n * } catch (error) {\n * useUi().captureAppError(error)\n * }\n *\n * @param payload error object to send to Pitcher sentry instance\n */\nexport async function captureAppError(payload: UiCaptureAppErrorRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CAPTURE_APP_ERROR, payload)\n}\n","import { type CanvasRetrieve } from '@openapi'\nimport type {\n UiAppResizeRequest,\n UiCanvasNavigatePageRequest,\n UiUpdateCanvasRequest,\n UiPrintCanvasRequest,\n UiPrintCanvasResponse,\n UiSelectCanvasesRequest,\n UiSelectCanvasesResponse,\n UiOpenCollectionPlayerOverlayRequest,\n} from '@sdk/api/modules/ui/types.ui'\nimport { UI_API_METHOD_TYPES } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Modify the currently loaded canvas. On the web it sends\n * an [update_canvas](https://pitcher.readme.io/reference/update_canvas) request to the server.\n *\n * @param payload parts of the canvas object to update with fields to return\n */\nexport async function updateCanvas(payload: UiUpdateCanvasRequest): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n return pr\n .send(window.parent, UI_API_METHOD_TYPES.UI_UPDATE_CANVAS, payload)\n .then((response) => response.data as CanvasRetrieve)\n}\n\n/**\n * Trigger async print/download of a canvas with optional notification URL.\n * Calls the downloader-test endpoint to convert the canvas to PDF.\n *\n * @param payload Canvas ID and optional notify URL for async notifications\n * @returns Promise with job ID and success status\n *\n * @example\n * useUi().printCanvas({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * notify_url: 'https://my-webhook.example.com/canvas-ready'\n * })\n */\nexport async function printCanvas(payload: UiPrintCanvasRequest): Promise<UiPrintCanvasResponse> {\n const pr = await usePostRobot()\n return pr\n .send(window.parent, UI_API_METHOD_TYPES.UI_PRINT_CANVAS, payload)\n .then((response) => response.data as UiPrintCanvasResponse)\n}\n\n/**\n * Notify the CatalogIQ instance that the app is loaded and ready to get the data. Triggering this method will trigger\n * the `on_app_set_data` event.\n *\n * @example\n * @example\n * useUi().appLoaded()\n */\nexport async function appLoaded(): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_APP_LOADED, body: {} }, '*')\n}\n\n/**\n * Resize the app iframe to a given height.\n *\n * Note that initial iframe height comes from the `app.json` manifest file. It can also be adjusted by the user when adding\n * app component to the canvas. In case when the app must be temporarily resized to show larger ui elements it can read the\n * user-set height from the [on_app_set_data](#on-app-set-data) event.\n * @param payload object containing requested height of the iframe as the number of pixels\n */\nexport async function appResize(payload: UiAppResizeRequest): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_APP_RESIZE, body: payload }, '*')\n}\n\n/**\n * Close the Canvas Section Execution modal. Only takes effect for `canvas_section_execution` app modules\n *\n * Note that this method simply closes the modal and will result in the app calling it being unmounted from the DOM and\n * destroyed. Make sure your app has finished updating data before you call this method.\n *\n * @example\n * useUi().closeCanvasSectionExecution()\n */\nexport async function closeCanvasSectionExecution(): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_CLOSE_CANVAS_SECTION_EXECUTION, body: {} }, '*')\n}\n\n/**\n * Close the Canvas Drawer modal. Only takes effect for apps running in `canvas_drawer` embed location\n *\n * Note that this method simply closes the drawer and will result in the app calling it being unmounted from the DOM and\n * destroyed. Make sure your app has finished updating data before you call this method.\n *\n * @example\n * useUi().closeCanvasDrawer()\n */\nexport async function closeCanvasDrawer(): Promise<void> {\n window.parent.postMessage({ type: UI_API_METHOD_TYPES.UI_CLOSE_CANVAS_DRAWER, body: {} }, '*')\n}\n\n/**\n * Navigate to the next page in the current canvas. Noop if the current page is the last one.\n *\n * @example\n * useUi().canvasNavigateNextPage()\n */\nexport async function canvasNavigateNextPage(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANVAS_NAVIGATE_NEXT_PAGE)\n}\n\n/**\n * Navigate to the previous page in the current canvas. Noop if the current page is the first one.\n *\n * @example\n * useUi().canvasNavigatePreviousPage()\n */\nexport async function canvasNavigatePreviousPage(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANVAS_NAVIGATE_PREVIOUS_PAGE)\n}\n\n/**\n * Navigate to a specific canvas place in the current canvas. Despite the event and parameter name, it takes the component\n * id that we want to put in view.\n *\n * @example\n * const uiApi = useUi() // our useApi()\n *\n * let activeCanvas = null\n * const unsubscribe = uiApi.on_app_set_data((data) => {\n * activeCanvas = data?.canvas\n * })\n *\n * document.getElementById('my-button').addEventListener('click', () => {\n * const target = activeCanvas?.content?.data?.find((i: any) => i.data.app_name === 'my-target-app-id') || null\n * if (target) {\n * uiApi.canvasNavigatePage({ page: target.id })\n * }\n * })\n */\nexport async function canvasNavigatePage(payload: UiCanvasNavigatePageRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANVAS_NAVIGATE_PAGE, payload)\n}\n\n/**\n * Opens a modal to view a canvas by ID.\n *\n * ```\n * onMounted(() => {\n * uiApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * edit_mode: false,\n * fullscreen: true,\n * })\n * })\n * ```\n *\n * You can also specify a position for the canvas overlay:\n *\n * ```\n * uiApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * position: {\n * top: '10px',\n * left: '20px',\n * right: '20px',\n * bottom: '10px'\n * }\n * })\n * ```\n */\nexport async function openCanvasOverlay(payload: {\n id: CanvasRetrieve['id']\n edit_mode?: boolean\n fullscreen?: boolean\n component_id?: string\n section_id?: string\n position?: {\n left?: number | string\n right?: number | string\n top?: number | string\n bottom?: number | string\n }\n}): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN_CANVAS_OVERLAY, payload)\n}\n\n/**\n * Opens the collection player overlay to view a collection of files/slides.\n *\n * This method opens the native Pitcher collection player interface with the specified\n * files and slides. You can show entire files or specific pages from files.\n *\n * @example\n * // Open collection with full files\n * useUi().openCollectionPlayerOverlay({\n * groups: [\n * { id: 'file-123-abc', name: 'Product Overview' },\n * { id: 'file-456-def', name: 'Pricing Slides' }\n * ],\n * name: 'Sales Deck'\n * })\n *\n * // Open collection with specific slides/pages\n * useUi().openCollectionPlayerOverlay({\n * groups: [\n * {\n * id: 'file-123-abc',\n * name: 'Product Overview',\n * slides: [\n * { file_id: 'file-123-abc', slide_index: 0 },\n * { file_id: 'file-123-abc', slide_index: 2 }\n * ]\n * }\n * ],\n * name: 'Custom Sales Presentation'\n * })\n *\n * @param payload Object containing groups array and collection name\n */\nexport async function openCollectionPlayerOverlay(payload: UiOpenCollectionPlayerOverlayRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN_COLLECTION_PLAYER_OVERLAY, payload)\n}\n\n/**\n * Allows the user to select (and preselect) canvases from the instance.\n *\n * This method allows you to prompt the user to select canvases from the CatalogIQ\n * instance and use that canvas selection in your application.\n *\n * @example\n * const api = useApi() // or useUi() if you know that you 're in UI context\n * api\n * .selectCanvases({\n * allowed_types: ['canvas','canvas-template','section','section-template'] // default ['canvas']\n * selections: [\n * { id: \"01HCZ623YYRFJQ0F7B69VWE510\" },\n * { id: \"02HCZ623YYRFJQ0F7B69VWE510\" },\n * ], // default []\n * })\n *\n * @param payload optional payload to preselect specific canvases\n * @returns Promise with the user action and selected canvases\n */\nexport async function selectCanvases(payload: UiSelectCanvasesRequest = {}): Promise<UiSelectCanvasesResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_CANVASES, payload)\n return <UiSelectCanvasesResponse>response.data\n}\n","import {\n UI_API_METHOD_TYPES,\n type UiCompletePostcallRequest,\n type UiSetPostcallStyleRequest,\n} from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Completes the postcall stage (with successful submission or not)\n *\n * @example\n * useUi().completePostcall({ was_successfully_submitted: true })\n */\nexport async function completePostcall(payload: UiCompletePostcallRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_COMPLETE_POSTCALL, payload)\n}\n\n/**\n * Cancels current meeting and the event remains unrealized (like it never happened).\n *\n * @example\n * useUi().cancelMeeting()\n */\nexport async function cancelMeeting(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_CANCEL_MEETING)\n}\n\n/**\n * Resumes the meeting and attempts to go at the last presented route / component.\n *\n * @example\n * useUi().resumeMeeting()\n */\nexport async function resumeMeeting(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_RESUME_MEETING)\n}\n\n/**\n * Ends current meeting and shows postcall form.\n *\n * @example\n * useUi().stopMeeting()\n */\nexport async function stopMeeting(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_STOP_MEETING)\n}\n\n/**\n * Mark the postcall form as possible to submit by the user.\n *\n * @deprecated\n * @example\n * useUi().enablePostcallSubmit()\n */\nexport async function enablePostcallSubmit(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_ENABLE_POSTCALL_SUBMIT)\n}\n\n/**\n * Mark the postcall form as **not** possible to submit by the user. Useful while processing the form data.\n *\n * @deprecated\n * @example\n * useUi().disablePostcallSubmit()\n */\nexport async function disablePostcallSubmit(): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_DISABLE_POSTCALL_SUBMIT)\n}\n\n/**\n * Change the height of the postcall form.\n *\n * @example\n * useUi().setPostcallStyle({ height: 100 })\n */\nexport async function setPostcallStyle(payload: UiSetPostcallStyleRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_SET_POSTCALL_STYLE, payload)\n}\n","import { UI_API_METHOD_TYPES, type UiPromptPiaRequest, type UiPromptPiaResponse } from '@sdk/api/modules/ui/types.ui'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Sends a query to the Pitcher Intelligent Assistant (PIA) and handles the streamed response.\n *\n * @example\n * // Subscribe to PIA's streamed responses\n * const cleanup = await useUi().on(\n * UI_MESSAGE_TYPES.UI_PROMPT_PIA_RESPONSE_STREAMED,\n * async ({ chunk, partial_response, id }) => {\n * console.log(`PIA response chunk for stream ${id}: ${chunk}`);\n * console.log(`PIA response so far for stream ${id}: ${partial_response}`);\n * }\n * );\n * // Prompt PIA with a question and ensure cleanup is called afterwards\n * useUi().promptPia({ prompt: \"What's my most presented file?\", id: 'my-prompt-id-to-discern-with-stream-event' })\n * .finally(cleanup);\n */\nexport async function promptPia(payload: UiPromptPiaRequest): Promise<UiPromptPiaResponse> {\n const pr = await usePostRobot()\n const r = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_PROMPT_PIA, payload)\n return r.data as UiPromptPiaResponse\n}\n","import { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport {\n UI_API_METHOD_TYPES,\n type UiOpenSharingSettingsRequest,\n type UiOpenSharingSettingsResponse,\n} from './types.ui'\n\nexport async function openSharingSettings(\n payload: UiOpenSharingSettingsRequest,\n): Promise<UiOpenSharingSettingsResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(\n window.parent,\n UI_API_METHOD_TYPES.UI_OPEN_SHARING_SETTINGS,\n payload,\n )\n return response.data as UiOpenSharingSettingsResponse\n}\n","import { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type {\n UiMessageEnvelope,\n UiMeetingCanceledPayload,\n UiCanvasUpdatedPayload,\n UiSectionListUpdatedPayload,\n UiAppSetDataPayload,\n UiAppUpdateDataPayload,\n UiBroadcastRequest,\n UiMessagePayloads,\n} from './types.ui'\nimport { UI_API_METHOD_TYPES, UI_MESSAGE_TYPES, UI_NATIVE_MESSAGE_TYPES } from './types.ui'\nimport * as contentUi from './content.ui'\nimport * as loadingUi from './loading.ui'\nimport * as locationUi from './location.ui'\nimport * as appErrorsUi from './app-errors.ui'\nimport * as canvasUi from './canvas.ui'\nimport * as postCallUi from './post-call.ui'\nimport * as piaUi from './pia.ui'\nimport * as sharingUi from './sharing.ui'\n\nasync function onNative<T extends keyof UiMessagePayloads>(\n type: T,\n handler: (data: UiMessagePayloads[T]) => Promise<void>,\n) {\n const messageListener = (event: MessageEvent<UiMessageEnvelope<typeof type>>) => {\n if (event.data.type === type) {\n handler(event.data.body)\n }\n }\n window.addEventListener('message', messageListener)\n\n return () => window.removeEventListener('message', messageListener)\n}\n\nasync function onPostRobot<T extends keyof UiMessagePayloads>(\n type: T,\n handler: (data: UiMessagePayloads[T]) => Promise<void>,\n) {\n const pr = await usePostRobot()\n const listener = pr.on(type, (e) => handler(e.data))\n\n // return the cleanup function\n return listener.cancel\n}\n\n/**\n * Subscribe to a given event type by its key.\n *\n * @example\n * const unsubscribeFromSectionListUpdate = useUi().on('ui_section_list_updated', (event: object) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribeFromSectionListUpdate.then(unsubscribe => unsubscribe())\n *\n * @param type The event type/key to subscribe to.\n * @param handler The handler function to call when the event is emitted.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction on<T extends keyof UiMessagePayloads>(type: T, handler: (data: UiMessagePayloads[T]) => Promise<void>) {\n if (UI_NATIVE_MESSAGE_TYPES.includes(type as (typeof UI_NATIVE_MESSAGE_TYPES)[number])) {\n return onNative(type, handler)\n }\n\n return onPostRobot(type, handler)\n}\n\n/**\n * Subscribe to the meeting canceled event.\n *\n * @example\n * const unsubscribeFromMeetingCanceled = useUi().onMeetingCanceled((event: {\n * accountId?: string;\n * eventId?: string;\n * }) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribeFromMeetingCanceled.then(cancel => cancel())\n *\n * @param handler\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onMeetingCanceled(handler: (data: UiMeetingCanceledPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_MEETING_CANCELED, handler)\n}\n\n/**\n * Subscribe to the canvas updated event. It is triggered when the current canvas of the app is updated.\n *\n * @example\n * const unsubscribePromise = useUi().onCanvasUpdated((event: { canvas }) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onCanvasUpdated(handler: (data: UiCanvasUpdatedPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_CANVAS_UPDATED, handler)\n}\n\n/**\n * Subscribe to the section list updated event. It is triggered when the list of sections (products) in the current canvas\n * is updated.\n *\n * @example\n * const unsubscribePromise = useUi().onSectionListUpdated((event: { canvas }) => {\n * // handle event\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onSectionListUpdated(handler: (data: UiSectionListUpdatedPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_SECTION_LIST_UPDATED, handler)\n}\n\n/**\n * Subscribe to the app set data event. It is triggered when the app data is set. This event is triggered when the app is\n * loaded and in certain other cases after loading.\n *\n * This is the main event for the canvas app to receive data from the CatalogIQ instance and know about its environment.\n *\n * @example\n * let user = null\n * let isEditMode = null\n * let activeCanvas = null\n * let isPrintMode = false\n * const unsubscribePromise = useUi().onAppSetData((data) => {\n * user = data?.user\n * isEditMode = data?.is_edit_mode\n * activeCanvas = data?.canvas\n * isPrintMode = data?.display_mode === 'print' || data?.client === 'dsr'\n * // ...mode logic...\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onAppSetData(handler: (data: UiAppSetDataPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_APP_SET_DATA, handler)\n}\n\n/**\n * Subscribe to the app update data event. It is triggered when the user changes from edit mode to view mode or vice versa\n * and when the call is started or ended.\n *\n * @example\n * let inCall = false\n * let isEditMode = false\n * const unsubscribePromise = useUi().onAppUpdateData((data) => {\n * isEditMode = data?.is_edit_mode\n * inCall = data?.in_call\n * // ...mode logic...\n * })\n *\n * // later\n * unsubscribePromise.then(unsubscribe => unsubscribe())\n *\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nfunction onAppUpdateData(handler: (data: UiAppUpdateDataPayload) => Promise<void>) {\n return on(UI_MESSAGE_TYPES.UI_APP_UPDATE_DATA, handler)\n}\n\n/**\n * Broadcast event to the UI. Hidden from the documentation.\n *\n * @hidden\n */\nasync function uiBroadcast(payload: UiBroadcastRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, UI_API_METHOD_TYPES.UI_BROADCAST, payload)\n}\n\nexport default {\n on,\n onMeetingCanceled,\n onCanvasUpdated,\n onSectionListUpdated,\n onAppSetData,\n onAppUpdateData,\n uiBroadcast,\n ...contentUi,\n ...loadingUi,\n ...locationUi,\n ...appErrorsUi,\n ...canvasUi,\n ...postCallUi,\n ...piaUi,\n ...sharingUi,\n}\n","import type { PitcherEnv } from '@sdk/interfaces'\nimport type {\n SelectedPage as ContentSelectorSelectedPage,\n SelectedFile as ContentSelectorSelectedFile,\n SelectorType,\n} from '@content-selector/stores/app'\nimport type { Selection as ContentSelectorSelection } from '@lib/types/selections'\nimport type { Canvas, File } from '@openapi'\nimport type { CanvasSelection } from '@canvas-selector/appTypes'\nimport type { CLIENT_TYPE } from '@lib/constants/cdp.const'\nimport type { LaunchDarklyEnv } from '@lib/types/launchDarkly.types'\nimport type { CollectionSelectorProps } from '@collection-selector/types/collection-selector.type'\nimport type { CollectionPlayer } from '@collection-player/types/collection-player.type'\nimport type { Agenda, AgendaSelectorProps } from '@agenda-selector/types/agenda.type'\n\nexport const ADMIN_MESSAGE = 'ADMIN_MESSAGE' as const\n\nexport const ADMIN_MESSAGE_TYPES = {\n ENV_CHANGED: 'admin_env_changed',\n} as const\n\nexport const ADMIN_API_TYPES = {\n ADMIN_REQUEST: 'ADMIN_REQUEST',\n ADMIN_RESPONSE: 'ADMIN_RESPONSE',\n} as const\n\nexport const ADMIN_API_METHOD_TYPES = {\n CAPTURE_APP_ERROR: 'admin_capture_app_error',\n CREATE_CANVAS: 'admin_create_canvas',\n GET_APP_CONFIG: 'admin_get_app_config',\n GET_CANVAS: 'admin_get_canvas',\n GET_CANVASES: 'admin_get_canvases',\n OPEN_CANVAS_OVERLAY: 'admin_open_canvas_overlay',\n OPEN_COLLECTION_PLAYER_OVERLAY: 'admin_open_collection_player_overlay',\n GET_ENV: 'admin_get_env',\n GET_FILE: 'admin_get_file',\n OPEN: 'admin_open_file_overlay',\n CLOSE: 'admin_close_file_overlay',\n GET_FILES: 'admin_get_files',\n GET_INSTANCE_METADATA_TEMPLATES: 'admin_get_instance_metadata_templates',\n GET_USERS: 'admin_get_users',\n TOAST: 'admin_toast',\n UPDATE_CANVAS: 'admin_update_canvas',\n SELECT_COLLECTION_PLAYER_CONTENT: 'admin_select_collection_player_content',\n SELECT_AGENDA_CONTENT: 'admin_select_agenda_content',\n SELECT_CONTENT: 'admin_select_content',\n SELECT_CANVASES: 'admin_select_canvases',\n} as const\n\nexport type AdminMessagePayloads = {\n [ADMIN_MESSAGE_TYPES.ENV_CHANGED]: AdminEnv\n}\n\n/**\n * Error object to send to Pitcher sentry instance\n */\nexport type AdminCaptureAppErrorRequest = Record<string, any>\n\n/**\n * Represents an admin request with a specific payload.\n * @template Payload - The type of the payload data.\n */\nexport type AdminRequest<Payload = any> = {\n /**\n * Unique identifier for the request.\n */\n id: string\n /**\n * Type of the admin API request.\n */\n type: (typeof ADMIN_API_TYPES)['ADMIN_REQUEST']\n /**\n * Body of the request containing the method type and payload data.\n */\n body: {\n /**\n * Type of the admin API method.\n */\n type: (typeof ADMIN_API_METHOD_TYPES)[keyof typeof ADMIN_API_METHOD_TYPES]\n /**\n * Payload data for the request.\n */\n data: Payload\n }\n}\n\n/**\n * Represents a request to show a toast notification.\n */\nexport interface AdminToastRequest {\n /**\n * Type of the toast notification.\n */\n type: 'info' | 'error' | 'warning' | 'success' | 'loading'\n /**\n * Message to be displayed in the toast.\n */\n message: string\n /**\n * Duration for which the toast should be displayed (optional).\n */\n duration?: number\n /**\n * Indicates if the toast can be closed manually (optional).\n */\n closable?: boolean\n /**\n * Indicates if the toast should remain visible when hovered over (optional).\n */\n keepAliveOnHover?: boolean\n /**\n * Indicates if an icon should be shown in the toast (optional).\n */\n showIcon?: boolean\n}\n\n/**\n * Represents a request to select content.\n */\nexport type AdminSelectContentRequest = {\n /**\n * List of selections to hydrate the picker with.\n */\n selections?: ContentSelectorSelection[]\n /**\n * Maximum number of selections allowed (optional).\n */\n max_selections?: number\n /**\n * Minimum number of selections allowed (optional).\n */\n min_selections?: number\n /**\n * Type of content to allow selection for (optional).\n * file: Files only\n * slide: Slides only\n * content: Files and slides\n * @default 'content'\n */\n content_type?: 'file' | 'slide' | 'content'\n /**\n * CSS style to apply to the picker (optional).\n */\n style?: Record<string, any>\n /**\n * Array of file ids to include in the picker (optional).\n */\n allowed_ids?: File['id'][]\n /**\n * Array of file extensions to scope out list of the results (optional). Only files with these extensions will be shown.\n */\n allowed_original_extensions?: string[]\n /**\n * Initial metadata filters to apply to the picker (optional).\n */\n initial_metadata_filters?: Record<string, any>\n /**\n * Array of selector types to include in the picker (optional).\n */\n allowed_selector_types?: SelectorType[]\n /**\n * Disables files from selection which are not sharable (optional).\n */\n disable_no_sharable?: boolean\n /**\n * Disables files from selection which do not have pptx_data in metadata object (optional).\n */\n disable_no_pptx_data?: boolean\n /**\n * Only allow content pdf pages (optional). User will be forced to select a page from the pdf.\n */\n only_allow_content_pdf_pages?: boolean\n}\n\n/**\n * Represents a response to a content selection request.\n */\nexport type AdminSelectContentResponse = {\n /**\n * Action taken by the user.\n */\n user_action: 'cancelled' | 'selected'\n /**\n * Selected content, if any.\n */\n content?: (ContentSelectorSelectedFile | ContentSelectorSelectedPage)[]\n}\n\nexport type AdminSelectCanvasesRequest = {\n /**\n * Array of selections.\n */\n selections?: CanvasSelection[]\n /**\n * Array of canvas types to include in the picker (optional).\n */\n allowed_types?: ('canvas' | 'canvas-template' | 'section' | 'section-template')[]\n /**\n * Array of canvas ids to include in the picker (optional).\n */\n allowed_ids?: Canvas['id'][]\n /**\n * Initial metadata filters to apply to the picker (optional).\n */\n initial_metadata_filters?: Record<string, any>\n /**\n * The sequencing key to use for ordering the canvases (optional).\n */\n sequencing_key?: string\n}\n\nexport type AdminSelectCanvasesResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected canvases */\n canvases?: Canvas[]\n}\n\n/**\n * Represents an admin response with a specific payload.\n * @template Response - The type of the response data.\n */\nexport type AdminResponse<Response = any> = {\n /**\n * Unique identifier for the response.\n */\n id: string\n /**\n * Type of the admin API response.\n */\n type: (typeof ADMIN_API_TYPES)['ADMIN_RESPONSE']\n /**\n * Body of the response containing the response data.\n */\n body: Response\n}\n\n/**\n * Represents an admin message with a specific payload.\n * @template Payload - The type of the message data.\n */\nexport type AdminMessage<Payload = any> = {\n /**\n * Unique identifier for the message.\n */\n id: string\n /**\n * Type of the admin message.\n */\n type: typeof ADMIN_MESSAGE\n /**\n * Body of the message containing the message type and payload data.\n */\n body: {\n /**\n * Type of the admin message.\n */\n type: (typeof ADMIN_MESSAGE_TYPES)[keyof typeof ADMIN_MESSAGE_TYPES]\n /**\n * Payload data for the message.\n */\n data: Payload\n }\n}\n\n/**\n * Represents the admin environment.\n */\nexport type AdminEnv = {\n /**\n * Pitcher environment settings.\n */\n mode?: PitcherEnv['mode']\n pitcher: PitcherEnv['pitcher']\n launch_darkly?: LaunchDarklyEnv\n client_type?: (typeof CLIENT_TYPE)[keyof typeof CLIENT_TYPE]\n crm_shape?: Record<string, any>\n state?: PitcherEnv['state']\n}\n\nexport type AdminOpenCollectionPlayerOverlayGroup = {\n id: string\n name: string\n slides?: Array<{\n file_id: string\n slide_index: number\n }>\n}\n\nexport type AdminOpenCollectionPlayerOverlayRequest = {\n groups: AdminOpenCollectionPlayerOverlayGroup[]\n name: string\n}\n\nexport type AdminSelectCollectionPlayerRequest = {\n initial_data?: CollectionSelectorProps['initialData']\n attach_to?: CollectionSelectorProps['attachTo']\n open_settings?: CollectionSelectorProps['openSettings']\n readonly_name?: CollectionSelectorProps['readonlyName']\n close_on_settings?: CollectionSelectorProps['closeOnSettings']\n translations?: CollectionSelectorProps['translations']\n initial_metadata_filters?: CollectionSelectorProps['initialMetadataFilters']\n hide_close?: CollectionSelectorProps['hideClose']\n}\n\nexport type AdminSelectCollectionPlayerResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected' | 'settings'\n /** Selected content */\n content?: CollectionPlayer\n}\n\nexport type AdminSelectAgendaRequest = {\n initial_agenda?: AgendaSelectorProps['initialAgenda']\n attach_to?: AgendaSelectorProps['attachTo']\n}\n\nexport type AdminSelectAgendaResponse = {\n /** User action result */\n user_action: 'cancelled' | 'selected'\n /** Selected content */\n content?: Agenda\n}\n","import { ADMIN_API_METHOD_TYPES, type AdminCaptureAppErrorRequest } from '@sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Send an app error to Pitcher sentry instance.\n *\n * @example\n * try {\n * throw new Error('This is an error')\n * } catch (error) {\n * useAdmin().captureAppError({\n * error,\n * message: 'This is an app error',\n * })\n * }\n *\n * @param payload error object to send to Pitcher sentry instance\n */\nexport async function captureAppError(payload: AdminCaptureAppErrorRequest): Promise<void> {\n const pr = await usePostRobot()\n pr.send(window.parent, ADMIN_API_METHOD_TYPES.CAPTURE_APP_ERROR, payload)\n}\n","import { omit } from 'lodash-es'\n\nimport { ADMIN_API_METHOD_TYPES, type AdminEnv } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n/**\n * Fetches the necessary info for the app to know where it is embedded.\n *\n * Check out [usePitcherApi().getEnv()](../internal/functions/createHighLevelApi.md#getenv) for more information.\n *\n * @example\n * adminApi.getEnv()\n */\nexport async function getEnv(): Promise<AdminEnv> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_ENV)\n const env = <AdminEnv>response.data\n return omit(env, 'pitcher.org_config.segment')\n}\n","import type { CanvasRetrieve, PatchedCanvasUpdateRequest, Instance, CanvasCreateRequest } from '@openapi'\nimport type { GetCanvasesParams } from '@lib/types/canvases'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type {\n AdminSelectCanvasesRequest,\n AdminSelectCanvasesResponse,\n AdminOpenCollectionPlayerOverlayRequest,\n} from '@lib/sdk/api/modules/admin/types.admin'\nimport { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Creates a new canvas.\n *\n * @example\n * adminApi.createCanvas({\n * name: 'my new canvas';\n * })\n */\nexport async function createCanvas(payload: CanvasCreateRequest): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.CREATE_CANVAS, payload)\n return <CanvasRetrieve>response.data\n}\n\n/**\n * Fetches a list of canvases to use in your app.\n *\n * @example\n * // The `filters` object is a reserved payload key to transfer the metadata dict over the wire.\n * adminApi.getCanvases({\n * search: 'my search query',\n * ordering: '-created_at',\n * filters: {\n * metadata__mydaterangefiltername__range: ['2023-12-10', '2023-12-22'],\n * metadata__mymultiselectfiltername: ['optionAValue', 'optionCValue'],\n * },\n * fields: 'id,name,metadata',\n * })\n */\nexport async function getCanvases(\n payload: GetCanvasesParams & { filters?: Record<string, any>; fields?: string },\n): Promise<PaginatedData<CanvasRetrieve>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_CANVASES, payload)\n return <PaginatedData<CanvasRetrieve>>response.data\n}\n\n/**\n * Fetches a canvas by id with the defined fields or all of them.\n *\n * @example\n * // The `filters` object is a reserved payload key to transfer the metadata dict over the wire.\n * adminApi.getCanvas({\n * fields: 'id,name,metadata',\n * })\n */\nexport async function getCanvas(payload: { id: CanvasRetrieve['id']; fields?: string }): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_CANVAS, payload)\n return <CanvasRetrieve>response.data\n}\n\n/**\n * Updates a canvas by ID and returns the defined fields or all of them.\n *\n * @example\n * // The fields param is appended to the URL as a query param.\n * onMounted(() => {\n * adminApi.updateCanvas({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * fields: 'id,name',\n * name: 'To 3!',\n * }).then((res) => {\n * console.log(res) // logs: { id: '01HH4RCBH631K4JDHWAQB0RPR6', name: 'To 3!' }\n * })\n * })\n */\nexport async function updateCanvas(\n payload: PatchedCanvasUpdateRequest & { id: CanvasRetrieve['id']; instance_id?: Instance['id']; fields?: string },\n): Promise<CanvasRetrieve> {\n const pr = await usePostRobot()\n const r = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.UPDATE_CANVAS, payload)\n return <CanvasRetrieve>r.data\n}\n\n/**\n * Opens a modal to view a canvas by ID.\n *\n * ```\n * onMounted(() => {\n * adminApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * edit_mode: false,\n * fullscreen: true,\n * })\n * })\n * ```\n *\n * You can also specify a position for the canvas overlay:\n *\n * ```\n * adminApi.openCanvasOverlay({\n * id: '01HH4RCBH631K4JDHWAQB0RPR6',\n * position: {\n * top: '10px',\n * left: '20px',\n * right: '20px',\n * bottom: '10px'\n * }\n * })\n * ```\n */\nexport async function openCanvasOverlay(payload: {\n id: CanvasRetrieve['id']\n edit_mode?: boolean\n fullscreen?: boolean\n component_id?: string\n section_id?: string\n position?: {\n left?: number | string\n right?: number | string\n top?: number | string\n bottom?: number | string\n }\n}): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.OPEN_CANVAS_OVERLAY, payload)\n}\n\n/**\n * Opens a modal to display collection player content.\n *\n * @example\n * adminApi.openCollectionPlayerOverlay({\n * name: 'My Collection',\n * groups: [\n * {\n * id: 'file-id-1',\n * name: 'Group 1',\n * },\n * {\n * id: 'group-2',\n * name: 'Group 2',\n * slides: [\n * { file_id: 'file-id-2', slide_index: 0 },\n * { file_id: 'file-id-3', slide_index: 1 },\n * ],\n * },\n * ],\n * })\n */\nexport async function openCollectionPlayerOverlay(payload: AdminOpenCollectionPlayerOverlayRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.OPEN_COLLECTION_PLAYER_OVERLAY, payload)\n}\n\n/**\n * Allows the user to select (and preselect) canvases from the instance.\n *\n * This method allows you to prompt the user to select canvases from the CatalogIQ\n * instance and use that canvas selection in your application.\n *\n * @example\n * const api = useApi() // or useAdmin() if you know that you 're in Admin context\n * api\n * .selectCanvases({\n * allowed_types: ['canvas','canvas-template','section','section-template'] // default ['canvas']\n * selections: [\n * { id: \"01HCZ623YYRFJQ0F7B69VWE510\" },\n * { id: \"02HCZ623YYRFJQ0F7B69VWE510\" },\n * ], // default []\n * })\n *\n * @param payload optional payload to preselect specific canvases\n * @returns Promise with the user action and selected canvases\n */\nexport async function selectCanvases(payload: AdminSelectCanvasesRequest = {}): Promise<AdminSelectCanvasesResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_CANVASES, payload)\n return <AdminSelectCanvasesResponse>response.data\n}\n","import type { PaginatedMetadataTemplateList } from '@openapi'\nimport type { GetInstanceMetadataTemplatesPayload } from '@sdk/payload.types'\nimport { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Fetches a list of metadata templates to use in your app. Instance is auto-injected by admin app if in instance scope.\n *\n * @example\n * adminApi.getInstanceMetadataTemplates()\n **/\nexport async function getInstanceMetadataTemplates(\n payload?: GetInstanceMetadataTemplatesPayload,\n): Promise<PaginatedMetadataTemplateList> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_INSTANCE_METADATA_TEMPLATES, payload)\n return <PaginatedMetadataTemplateList>response.data\n}\n","import { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type { File, PaginatedFileList } from '@openapi'\n\n/**\n * Get the metadata object of an app with a given name.\n *\n * @param {object} payload - The payload object.\n * @param {string} payload.app_name - `name` value from `app.json` of the app you want to get the metadata of.\n *\n * @example\n * useAdmin().getAppConfig({ app_name: 'my-app' })\n */\nexport async function getAppConfig(payload: { app_name: string }): Promise<Record<string, any>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_APP_CONFIG, payload)\n return <Record<string, any>>response.data\n}\n\n/**\n * Fetches a file by ID.\n *\n * @example\n * adminApi.getFile({ id: 'my-file-id' })\n */\nexport async function getFile(payload: { id: File['id'] }): Promise<File> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_FILE, payload)\n return response.data as File\n}\n\n/**\n * Lists available files.\n *\n * @example\n * adminApi.getFiles()\n */\nexport async function getFiles(payload: Record<string, any>): Promise<PaginatedFileList> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_FILES, payload)\n return response.data as PaginatedFileList\n}\n\n/**\n * Opens a file by id.\n *\n * @example\n * adminApi.open({ id: 'my-file-id' })\n */\nexport async function open(payload: { id: File['id'] }): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.OPEN, payload)\n}\n\n/**\n * Closes the already open file that was opened via api or by the user.\n *\n * @example\n * adminApi.close()\n */\nexport async function close(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.CLOSE)\n}\n","import type {\n AdminSelectAgendaRequest,\n AdminSelectAgendaResponse,\n AdminSelectCollectionPlayerRequest,\n AdminSelectCollectionPlayerResponse,\n AdminSelectContentRequest,\n AdminSelectContentResponse,\n} from '@sdk/api/modules/admin/types.admin'\nimport { ADMIN_API_METHOD_TYPES } from '@sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@sdk/utils/postrobot'\n\n/**\n * Opens the collection player selector modal to allow the user to select collection player content and handle the outcome.\n * ```\n * const api = useApi() // or useAdmin() if you know that you 're in Admin context\n *\n * adminApi.selectCollectionContent({\n * // optional payload\n * initial_data: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectCollectionContent(\n payload: AdminSelectCollectionPlayerRequest = {},\n): Promise<AdminSelectCollectionPlayerResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_COLLECTION_PLAYER_CONTENT, payload)\n\n return <AdminSelectCollectionPlayerResponse>response.data\n}\n\n/**\n * Opens the agenda selector modal to allow the user to select agenda content and handle the outcome.\n * ```\n * const api = useApi() // or useAdmin() if you know that you 're in Admin context\n *\n * adminApi.selectAgendaContent({\n * // optional payload\n * initial_agenda: {\n * name: 'test',\n * groups: []\n * }\n * })\n * ```\n */\nexport async function selectAgendaContent(payload: AdminSelectAgendaRequest = {}): Promise<AdminSelectAgendaResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_AGENDA_CONTENT, payload)\n\n return <AdminSelectAgendaResponse>response.data\n}\n\n/**\n * Opens a selector that allows you to select (and preselect) from your Pitcher uploaded content.\n *\n * @example\n * const api = useApi() // or useAdmin() if you know that you 're in Admin app context\n * api\n * .select_content({\n * selections: [\n * { fileId: \"01HCZ623YYRFJQ0F7B69VWE510\", type: \"file\" },\n * {\n * fileId: \"01HD3XGZ5FN90QJGK7CH8TBZDF\",\n * type: \"page\",\n * pageIndex: 2,\n * },\n * ],\n * })\n */\nexport async function selectContent(payload: AdminSelectContentRequest): Promise<AdminSelectContentResponse> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.SELECT_CONTENT, payload)\n return response.data as AdminSelectContentResponse\n}\n","import type { GetUsersParams } from '@lib/types/users'\nimport type { PaginatedData } from '@lib/types/paginatedData'\nimport type { User } from '@openapi'\nimport { ADMIN_API_METHOD_TYPES } from '@lib/sdk/api/modules/admin/types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Fetches a list of users from the admin API.\n *\n * @param payload - Optional parameters for filtering users\n * @returns Promise resolving to a paginated list of users\n *\n * @example\n * const adminApi = useAdmin()\n * const users = await adminApi.getUsers({ page_size: 100 })\n */\nexport async function getUsers(payload?: GetUsersParams): Promise<PaginatedData<User>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, ADMIN_API_METHOD_TYPES.GET_USERS, payload)\n return response.data as PaginatedData<User>\n}\n","import {\n ADMIN_API_METHOD_TYPES,\n type AdminToastRequest,\n type ADMIN_MESSAGE_TYPES,\n type AdminMessagePayloads,\n} from './types.admin'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport * as appErrorsAdmin from './app-errors.admin'\nimport * as envAdmin from './env.admin'\nimport * as canvasAdmin from './canvas.admin'\nimport * as metadataTemplatesAdmin from './metadataTemplates.admin'\nimport * as filesAdmin from './files.admin'\nimport * as contentAdmin from './content.admin'\nimport * as usersAdmin from './users.admin'\n/**\n * Subscribe to a given event type by its key.\n *\n * @param type The event type/key to subscribe to.\n * @param handler The handler function to call when the event is emitted.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\n\nasync function on(\n type: (typeof ADMIN_MESSAGE_TYPES)[keyof typeof ADMIN_MESSAGE_TYPES],\n handler: (data: AdminMessagePayloads[typeof type]) => Promise<void>,\n) {\n const pr = await usePostRobot()\n const listener = pr.on(type, (e) => handler(e.data))\n\n // return the cleanup function\n return listener.cancel\n}\n\n/**\n * Show a toast message to the user. Compatible with the UI API version of this method.\n *\n * @example\n * useAdmin().toast({ type: 'info', message: 'Hello, world!' })\n */\nasync function toast(payload: AdminToastRequest): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, ADMIN_API_METHOD_TYPES.TOAST, payload)\n}\n\nexport default {\n on,\n toast,\n ...appErrorsAdmin,\n ...contentAdmin,\n ...envAdmin,\n ...canvasAdmin,\n ...metadataTemplatesAdmin,\n ...filesAdmin,\n ...usersAdmin,\n}\n","import type { PitcherEnv } from '@sdk/interfaces'\n\nexport const DSR_MESSAGE = 'DSR_MESSAGE' as const\n\nexport const DSR_MESSAGE_TYPES = {\n ENV_CHANGED: 'dsr_env_changed',\n} as const\n\nexport const DSR_API_TYPES = {\n DSR_REQUEST: 'DSR_REQUEST',\n DSR_RESPONSE: 'DSR_RESPONSE',\n} as const\n\nexport const DSR_API_METHOD_TYPES = {\n GET_ENV: 'dsr_get_env',\n GET_FILE: 'dsr_get_file',\n GET_APP_CONFIG: 'dsr_get_app_config',\n CLOSE: 'dsr_close',\n DSR_EMBEDDABLE_READY: 'dsr_embeddable_ready',\n} as const\n\nexport type DsrMessagePayloads = {\n [DSR_MESSAGE_TYPES.ENV_CHANGED]: DsrEnv\n}\n\nexport type DsrRequest<Payload = any> = {\n id: string\n type: (typeof DSR_API_TYPES)['DSR_REQUEST']\n body: {\n type: (typeof DSR_API_METHOD_TYPES)[keyof typeof DSR_API_METHOD_TYPES]\n data: Payload\n }\n}\n\nexport type DsrResponse<Response = any> = {\n id: string\n type: (typeof DSR_API_TYPES)['DSR_RESPONSE']\n body: Response\n}\n\nexport type DsrMessage<Payload = any> = {\n id: string\n type: typeof DSR_MESSAGE\n body: {\n type: (typeof DSR_MESSAGE_TYPES)[keyof typeof DSR_MESSAGE_TYPES]\n data: Payload\n }\n}\n\n// TODO: Request / message payloads to the dsr via embeddable's iframe\n\n// Responses / message payloads from the dsr\nexport type DsrEnv = Pick<PitcherEnv, 'mode' | 'launch_darkly' | 'client_type' | 'state'> & {\n pitcher?: {\n access_token?: string\n }\n}\n","import { omit } from 'lodash-es'\n\nimport { DSR_API_METHOD_TYPES, type DsrEnv } from '@lib/sdk/api/modules/dsr/types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Fetches the necessary info for the app to know where it is embedded.\n *\n * Check out [usePitcherApi().getEnv()](../internal/functions/createHighLevelApi.md#getenv) for more information.\n *\n * @example\n * useDsr().getEnv()\n */\nexport async function getEnv(): Promise<DsrEnv> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, DSR_API_METHOD_TYPES.GET_ENV)\n const env = <DsrEnv>response.data\n return omit(env, 'pitcher.org_config.segment')\n}\n","import { DSR_API_METHOD_TYPES } from '@sdk/api/modules/dsr/types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\n\n/**\n * Signal to DSR that the app is ready to be shown.\n *\n * @example\n * useDsr().embeddableReady()\n */\nexport async function embeddableReady(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, DSR_API_METHOD_TYPES.DSR_EMBEDDABLE_READY)\n}\n","import { DSR_API_METHOD_TYPES } from '@lib/sdk/api/modules/dsr/types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport type { File } from '@openapi'\n/**\n * Closes the already open file that was opened via api or by the user.\n *\n * @example\n * dsrApi.close()\n */\nexport async function close(): Promise<void> {\n const pr = await usePostRobot()\n await pr.send(window.parent, DSR_API_METHOD_TYPES.CLOSE)\n}\n\n/**\n * Fetches a file by ID.\n *\n * @example\n * dsrApi.getFile({ id: 'my-file-id' })\n */\nexport async function getFile(payload: { id: File['id'] }): Promise<File> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, DSR_API_METHOD_TYPES.GET_FILE, payload)\n return response.data as File\n}\n\n/**\n * Retrieves the configuration for the calling app.\n * App name can be optionally provided, otherwise it will be derived from the caller's URL.\n *\n * @example\n * dsrApi.getAppConfig() // for self config\n * // or with explicit app name\n * dsrApi.getAppConfig({ app_name: 'my-app' })\n */\nexport async function getAppConfig(payload?: { app_name?: string }): Promise<Record<string, any>> {\n const pr = await usePostRobot()\n const response = await pr.send(window.parent, DSR_API_METHOD_TYPES.GET_APP_CONFIG, payload ?? {})\n return response.data as Record<string, any>\n}\n","import type { DSR_MESSAGE_TYPES, DsrMessagePayloads } from './types.dsr'\nimport { usePostRobot } from '@lib/sdk/utils/postrobot'\nimport * as envDsr from './env.dsr'\nimport * as loadingDsr from './loading.dsr'\nimport * as filesDsr from './files.dsr'\n\n/**\n * Subscribe to a given event type by its key.\n *\n * @param type The event type/key to subscribe to.\n * @param handler The handler function to call when the event is emitted.\n * @returns A Promise resolving to a cleanup function to unsubscribe from the event.\n */\nasync function on(\n type: (typeof DSR_MESSAGE_TYPES)[keyof typeof DSR_MESSAGE_TYPES],\n handler: (data: DsrMessagePayloads[typeof type]) => Promise<void>,\n) {\n const pr = await usePostRobot()\n const listener = pr.on(type, (e) => handler(e.data))\n\n // return the cleanup function\n return listener.cancel\n}\n\nexport default {\n on,\n ...envDsr,\n ...loadingDsr,\n ...filesDsr,\n}\n","export const PEER_CONNECTIVITY_EVENT = 'peer_connectivity_event'\n\nexport const PeerConnectivityActions = {\n CANVAS_PAGE_NEXT: 'canvas.navigate.next',\n CANVAS_PAGE_PREVIOUS: 'canvas.navigate.previous',\n CANVAS_OPEN: 'canvas.open',\n CANVAS_CLOSE: 'canvas.close',\n ROUTE_CHANGE: 'route.change',\n FILE_OPEN: 'file.open',\n FILE_CLOSE: 'file.close',\n BROWSER_FOLDER_OPEN: 'browser.folder.open',\n} as const\n\nexport const DEFAULT_PEER_CONNECTIVITY_VERSION = 1\nexport const PEER_CONNECTIVITY_HANDLER_MATCH_ALL = '*'\n","import { PitcherEventName, usePitcherApi } from '@sdk/main'\n\nimport { DEFAULT_PEER_CONNECTIVITY_VERSION, PEER_CONNECTIVITY_HANDLER_MATCH_ALL } from './peerConnectivity.constants'\nimport type {\n PeerConnectivityDispatchOptions,\n PeerConnectivityEvent,\n PeerConnectivityEventHandler,\n PeerConnectivityEventPayload,\n} from './peerConnectivity.types'\n\ntype HandlerMap = Map<string, Set<PeerConnectivityEventHandler>>\n\nconst handlers: HandlerMap = new Map()\nlet unsubscribeNativeListener: (() => void) | null = null\nlet peerConnectivitySupportPromise: Promise<boolean> | null = null\n\nfunction generateCorrelationId(): string {\n const cryptoApi = globalThis.crypto\n if (cryptoApi?.randomUUID) {\n return cryptoApi.randomUUID()\n }\n return `peer-${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`\n}\n\nfunction normalizeEventPayload(\n payload: PeerConnectivityEventPayload,\n defaults?: Partial<PeerConnectivityEvent>,\n): PeerConnectivityEvent {\n const metadata = payload.metadata ?? {}\n const normalized: PeerConnectivityEvent = {\n version: payload.version ?? defaults?.version ?? DEFAULT_PEER_CONNECTIVITY_VERSION,\n action: payload.action,\n context: payload.context ?? defaults?.context,\n data: payload.data ?? defaults?.data,\n metadata: {\n correlationId: metadata.correlationId ?? defaults?.metadata?.correlationId ?? generateCorrelationId(),\n source: metadata.source ?? defaults?.metadata?.source ?? 'web',\n timestamp: metadata.timestamp ?? defaults?.metadata?.timestamp ?? Date.now(),\n extras: {\n ...(defaults?.metadata?.extras ?? {}),\n ...(metadata.extras ?? {}),\n },\n },\n }\n\n return normalized\n}\n\nfunction addHandler(action: string, handler: PeerConnectivityEventHandler) {\n const key = action || PEER_CONNECTIVITY_HANDLER_MATCH_ALL\n const handlerSet = handlers.get(key) ?? new Set<PeerConnectivityEventHandler>()\n handlerSet.add(handler)\n handlers.set(key, handlerSet)\n}\n\nfunction removeHandler(action: string, handler: PeerConnectivityEventHandler) {\n const handlerSet = handlers.get(action)\n if (!handlerSet) {\n return\n }\n handlerSet.delete(handler)\n if (!handlerSet.size) {\n handlers.delete(action)\n }\n if (!handlers.size) {\n teardownNativeListener()\n }\n}\n\nasync function ensureNativeListener() {\n if (unsubscribeNativeListener) {\n return\n }\n\n const api = usePitcherApi()\n const listener = (event: PeerConnectivityEventPayload) => {\n try {\n const normalized = normalizeEventPayload(event, {\n metadata: {\n correlationId: generateCorrelationId(),\n source: 'native',\n timestamp: Date.now(),\n extras: {},\n },\n })\n dispatchEvent(normalized)\n } catch (error) {\n console.error('[peer-connectivity] Failed to handle native event:', error)\n }\n }\n\n api.on(PitcherEventName.PEER_CONNECTIVITY_EVENT, listener as any)\n unsubscribeNativeListener = () => {\n api.off(PitcherEventName.PEER_CONNECTIVITY_EVENT, listener as any)\n unsubscribeNativeListener = null\n }\n}\n\nfunction teardownNativeListener() {\n if (unsubscribeNativeListener) {\n unsubscribeNativeListener()\n unsubscribeNativeListener = null\n }\n}\n\nfunction dispatchEvent(event: PeerConnectivityEvent) {\n const specificHandlers = handlers.get(event.action)\n const wildcardHandlers = handlers.get(PEER_CONNECTIVITY_HANDLER_MATCH_ALL)\n\n if (!specificHandlers && !wildcardHandlers) {\n return\n }\n\n const payload = Object.freeze(event)\n specificHandlers?.forEach((handler) => {\n try {\n handler(payload)\n } catch (error) {\n console.error(`[peer-connectivity] Handler error for action \"${event.action}\":`, error)\n }\n })\n wildcardHandlers?.forEach((handler) => {\n try {\n handler(payload)\n } catch (error) {\n console.error('[peer-connectivity] Handler error for wildcard action:', error)\n }\n })\n}\n\nasync function isPeerConnectivitySupported(): Promise<boolean> {\n if (!peerConnectivitySupportPromise) {\n const api = usePitcherApi()\n peerConnectivitySupportPromise = api\n .getEnv()\n .then((env) => env.mode === 'IOS')\n .catch((error) => {\n console.error('[peer-connectivity] Failed to determine environment support:', error)\n return false\n })\n }\n\n return peerConnectivitySupportPromise\n}\n\nfunction normalizeActions(actionOrActions: string | string[]): string[] {\n return Array.isArray(actionOrActions) ? actionOrActions : [actionOrActions]\n}\n\nexport function registerPeerConnectivityHandler(\n actionOrActions: string | string[],\n handler: PeerConnectivityEventHandler,\n): () => void {\n normalizeActions(actionOrActions).forEach((action) => {\n addHandler(action, handler)\n })\n\n ensureNativeListener().catch((error) => {\n console.error('[peer-connectivity] Failed to register native listener:', error)\n })\n\n return () => {\n normalizeActions(actionOrActions).forEach((action) => {\n removeHandler(action, handler)\n })\n }\n}\n\nexport async function sendPeerConnectivityEvent(\n payload: PeerConnectivityEventPayload,\n options?: PeerConnectivityDispatchOptions,\n): Promise<void> {\n if (!payload?.action) {\n console.warn('[peer-connectivity] Attempted to send an event without action')\n return\n }\n\n if (options?.isFeatureEnabled === false) {\n return\n }\n\n const isSupported = await isPeerConnectivitySupported()\n if (!isSupported) {\n return\n }\n\n const api = usePitcherApi()\n const normalizedPayload = normalizeEventPayload(payload, {\n metadata: {\n correlationId: generateCorrelationId(),\n source: 'web',\n timestamp: Date.now(),\n extras: {},\n },\n })\n\n try {\n await api.broadcast({\n type: PitcherEventName.PEER_CONNECTIVITY_EVENT,\n body: normalizedPayload,\n })\n } catch (error) {\n console.error('[peer-connectivity] Failed to send event:', error)\n }\n}\n","import { isEqual, snakeCase } from 'lodash-es'\n\nimport type { ApiOptions } from './interfaces'\nimport { createHighLevelApi } from '@sdk/api/HighLevelApi'\nimport ui from '@sdk/api/modules/ui'\nimport admin from '@sdk/api/modules/admin'\nimport dsr from '@sdk/api/modules/dsr'\n\nexport * from '@sdk/interfaces'\nexport * from '@sdk/payload.types'\nexport * from '@sdk/api/modules/ui/types.ui'\nexport * from '@sdk/api/modules/admin/types.admin'\nexport * from '@sdk/api/modules/dsr/types.dsr'\nexport * from '@sdk/peer-connectivity'\n\nexport let highLevelApi: ReturnType<typeof createHighLevelApi>\n\nlet prevOptions: ApiOptions | undefined\n\n/**\n * Check out the returned object documentation for the list of available methods.\n */\nexport function usePitcherApi(options?: ApiOptions): ReturnType<typeof createHighLevelApi> {\n if (!highLevelApi || !isEqual(options, prevOptions)) {\n highLevelApi = createHighLevelApi(options)\n prevOptions = options\n }\n\n return highLevelApi\n}\n\nfunction enhanceWithSnakeCase<T extends Record<string, any>>(api: T): T {\n Object.entries(api).forEach(([key, value]) => {\n const newKey = snakeCase(key)\n if (newKey && !api[newKey]) {\n ;(api as any)[newKey] = value\n }\n })\n return api\n}\n\nconst uiApi = enhanceWithSnakeCase(ui)\nconst adminApi = enhanceWithSnakeCase(admin)\nconst dsrApi = enhanceWithSnakeCase(dsr)\n\n/**\n * API methods available in the CatalogIQ default UI.\n *\n * You can store the API object in a variable and call the methods directly.\n *\n * Most methods have a `snake_case` and `camelCase` version of their name available.\n *\n * ```ts\n * const uiApi = useUi()\n * ```\n *\n * @returns UI API object with methods described below.\n */\nexport function useUi() {\n return uiApi\n}\n\n/**\n * API methods available in the CatalogIQ Admin.\n *\n * You can store the API object in a variable and call the methods directly.\n *\n * Most methods have a `snake_case` and `camelCase` version of their name available.\n *\n * ```ts\n * import { useAdmin } from '@pitcher/js-api'\n *\n * const adminApi = useAdmin()\n * ```\n */\nexport function useAdmin() {\n return adminApi\n}\n\n/**\n * API methods available in the CatalogIQ default UI.\n *\n * You can store the API object in a variable and call the methods directly.\n *\n * Most methods have a `snake_case` and `camelCase` version of their name available.\n *\n * ```ts\n * import { useDsr } from '@pitcher/js-api'\n *\n * const dsrApi = useDsr()\n * ```\n */\nexport function useDsr() {\n return dsrApi\n}\n\nexport type JsApiLocation = 'ui' | 'admin' | 'dsr' | 'impact'\n\nexport function getAvailableApis(): JsApiLocation[] {\n if (typeof window === 'undefined') throw new Error('getAvailableApis: window is not defined')\n const location = window.parent.jsApiLocation\n return location === 'ui' ? ['ui', 'impact'] : [location ?? 'impact']\n}\n\n/**\n * This method returns an object containing the API methods that are available to you in a given environment, whether that be the Canvas, UI, Admin or DSR.\n *\n * - CatalogIQ UI - the method will return an object containing methods available in both `usePitcherApi` and `useUi`\n * - CatalogIQ DSR - the method will return the same result as `useDsr`\n * - CatalogIQ Admin - the method will return the same result as `useAdmin`\n *\n * ```ts\n * import { useApi } from '@pitcher/js-api'\n *\n * const api = useApi()\n * ```\n */\nexport function useApi(options?: ApiOptions) {\n if (typeof window === 'undefined') throw new Error('useApi: window is not defined')\n const location = window.parent.jsApiLocation\n switch (location) {\n case 'ui':\n return { ...usePitcherApi(), ...useUi(), ui: useUi(), impact: usePitcherApi() } // merge, but also expose as separate keys to avoid collisions\n case 'admin':\n return useAdmin()\n case 'dsr':\n return { ...useDsr(), broadcast: usePitcherApi().broadcast }\n case 'impact':\n return usePitcherApi(options) // first level (slotty and custom UIs)\n default:\n return usePitcherApi(options)\n }\n}\n","import pr from 'post-robot'\nwindow.postRobot = pr\nexport * from './main'\n"],"names":["root","factory","module","this","modules","installedModules","__webpack_require__","moduleId","exports","name","getter","value","mode","ns","key","object","property","__webpack_exports__","promise_ZalgoPromise","src_types_TYPES_0","window_ProxyWindow","setup","destroy","setup_serializeMessage","setup_deserializeMessage","createProxyWindow","setup_toProxyWindow","on_on","on_once","send_send","markWindowKnown","cleanUpWindow","isRegex","item","IE_WIN_ACCESS_ERROR","getActualProtocol","win","getProtocol","protocol","isAboutProtocol","getParent","getOpener","canReadFromWindow","getActualDomain","location","parent","host","getDomain","domain","isSameDomain","desc","assertSameDomain","isAncestorParent","child","childParent","result","getFrames","frames","len","i","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","err","iframeIndex","collection","doc","getAncestor","matchDomain","pattern","origin","subpattern","isWindow","obj","getFrameForWindow","_i21","_document$querySelect2","closeWindow","utils_isPromise","_toString","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","startActive","endActive","ZalgoPromise","handler","_this","_result","_error","resolved","rejected","isAsync","res","_proto","error","_this2","_err","j","handlers","chain","firstPromise","secondPromise","_handlers$i","onSuccess","onError","_result2","promiseResult","onFinally","time","_this3","timeout","resolve","reject","promises","count","results","prom","awaitPromises","_loop","items","method","context","args","_delay","Zalgo","util_safeIndexOf","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","testWeakMap","testKey","weakmap","keys","entry","values","index","getFunctionName","fn","setFunctionName","uniqueID","chars","str","m","p1","objectIDs","serializeArgs","subkey","val","uid","getEmptyObject","memoizeGlobalIndex","memoizeGlobalIndexValidFrom","memoize","options","_options$thisNamespac","thisNamespace","cacheTime","simpleCache","thisCache","memoizeIndex","memoizedFunction","_len","_key","cache","cacheKey","cacheResult","memoizePromise","memoizedPromiseFunction","_arguments","_len2","_key2","src_util_noop","stringifyError","level","stack","message","newErr","stringify","util_isRegex","util_getOrSet","getBody","body","isDocumentReady","isDocumentInteractive","interval","currentScript","getCurrentScript","stackDetails","scriptLocation","_i22","_Array$prototype$slic2","script","currentUID","hashedString","hash","total","global_getGlobal","globalKey","getObj","globalStore","defStore","store","storeKey","defVal","WildCard","getWildcard","global","windowStore","winStore","getStore","getInstanceID","resolveHelloPromise","_ref","helloPromises","existingPromise","newPromise","sayHello","_ref4","_ref5","instanceID","getWindowInstanceID","_ref6","send","_ref7","isSerializedType","determineType","serializeType","type","_SERIALIZER","SERIALIZER","defaultSerializers","_DESERIALIZER","DESERIALIZER","_ref2","code","data","defaultDeserializers","cleanupProxyWindows","idToProxyWindow","_i2","_idToProxyWindow$keys2","id","getSerializedWindow","winPromise","_ref$id","windowNamePromise","windowTypePromise","window","getName","href","opts","_opts$method","_ref3","url","target","_ref3$method","form","_i24","_Object$keys4","_body$key","input","sameDomain","ProxyWindow","serializedWindow","_this4","isPopupPromise","getNamePromise","reopenPromise","focusPromise","_this5","match","_ref8","_ref9","actualWindow","addMethod","source","methodStore","proxyWindowMethods","lookupMethod","function_serializeFunction","destination","on","meth","methodSource","arg","serializeMessage","_serialize","serializers","serializer","deserializeMessage","_deserialize","deserializers","deserializer","serializedPromise","serializedFunction","getDeserializedFunction","crossDomainFunctionWrapper","_args","SEND_MESSAGE_STRATEGIES","serializedMessage","send_sendMessage","domainBuffer","strategies","errors","strategyName","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","requestListeners","_i4","winQualifier","nameListeners","domainListeners","_i6","_domainListeners$__DO2","_domainListeners$__DO3","listener","handleRequest","logName","sendResponse","ack","handleAck","handleResponse","receive_receiveMessage","event","receivedMessages","messages","parsedMessage","parseMessages","requestListener","addRequestListener","winCandidate","requestListenerPromise","actualWin","listenersCollection","_i8","_win2","_i10","_listenersCollection","_i12","_domain2","_i14","existingListener","strDomain","winNameListeners","winNameDomainListeners","winNameDomainRegexListeners","winNameDomainRegexListener","winOrProxyWin","domainMatcher","responseTimeout","childTimeout","fireAndForget","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","_i15","_getFrames8","_temp","targetDomain","actualDomain","normalizedDomain","responseListener","reqPromises","totalAckTimeout","totalResTimeout","ackTimeout","resTimeout","loop","responseListeners","_responseListeners$ke2","_requestPromises$get2","require$$0","freeGlobal","freeSelf","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","length","isArray","symbolProto","symbolToString","baseToString","isObject","identity","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","getValue","getNative","WeakMap","objectCreate","baseCreate","proto","apply","thisArg","copyArray","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","lastCalled","stamp","remaining","constant","defineProperty","baseSetToString","string","setToString","arrayEach","MAX_SAFE_INTEGER","reIsUint","isIndex","baseAssignValue","eq","other","assignValue","objValue","copyObject","props","customizer","isNew","newValue","nativeMax","overRest","start","transform","otherArgs","baseRest","isLength","isArrayLike","isIterateeCall","createAssigner","assigner","sources","guard","isPrototype","Ctor","baseTimes","n","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","nativeKeys","baseKeys","nativeKeysIn","baseKeysIn","isProto","keysIn","reIsDeepProp","reIsPlainProp","isKey","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","entries","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","size","MapCache","FUNC_ERROR_TEXT","resolver","memoized","MAX_MEMOIZE_SIZE","memoizeCapped","rePropName","reEscapeChar","stringToPath","number","quote","subString","toString","castPath","toKey","baseGet","path","get","defaultValue","arrayPush","offset","spreadableSymbol","isFlattenable","baseFlatten","depth","predicate","isStrict","flatten","flatRest","getPrototype","objectCtorString","isPlainObject","baseSlice","end","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","stringToArray","createCaseFirst","methodName","strSymbols","chr","trailing","upperFirst","capitalize","arrayReduce","accumulator","initAccum","basePropertyOf","deburredLetters","deburrLetter","reLatin","reComboMark","deburr","reAsciiWord","asciiWords","reHasUnicodeWord","hasUnicodeWord","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","words","reApos","createCompounder","callback","camelCase","word","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","baseAssign","baseAssignIn","allocUnsafe","cloneBuffer","buffer","isDeep","arrayFilter","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","copySymbols","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","Promise","Set","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","initCloneArray","Uint8Array","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","reFlags","cloneRegExp","regexp","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","stacked","subValue","cloneDeep","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","set","equalByTag","convert","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","matchData","srcValue","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseHasIn","hasPath","hasFunc","hasIn","baseMatchesProperty","baseProperty","basePropertyDeep","baseIteratee","createBaseFor","fromRight","iterable","baseFor","assignMergeValue","isArrayLikeObject","safeGet","toPlainObject","baseMergeDeep","srcIndex","mergeFunc","isCommon","isTyped","baseMerge","last","isEqual","merge","baseUnset","customOmitClone","omit","paths","baseSet","nested","basePickBy","pickBy","prop","snakeCase","resolvePiaSearchMode","config","PIA_SEARCH_ROUTE","CAPABILITIES_TIMEOUT_MS","ON_DEVICE_MAX_TOKENS","ONLINE_TIMEOUT_MS","WEB_CAPABILITIES","withTimeout","ms","label","timer","normalizeOrigin","apiOriginFromEnv","env","claimDomain","orgDomain","buildOnDevicePrompt","query","contextText","aiGetCapabilities","highLevelApi","aiComplete","payload","piaSearchAnswer","instanceId","controller","response","output","APPS_DB_BASE_PATH","fetchAppsDbContext","claimsDomain","metadataDomain","CONTEXT_TTL_MS","contextCache","getAppsDbContext","appsDbRestFetch","ctx","init","base","errorBody","text","hasErrorCode","isTypeNotSyncedError","isBridgeUnsupportedError","parsePsqlLiteral","raw","stripQuotedLiterals","where","splitTopLevelAnd","parts","current","inQuote","char","separator","parseSimplePsql","rawConditions","conditions","part","condition","entryMatches","actual","acc","appsDbGetEntries","appsDbUpsertEntry","appsDbDeleteEntry","isDeviceOffline","MIRROR_PAGE_LIMIT","psqlFromMirror","parsed","hasMore","page","matched","appsDbPsql","mirrorUnavailable","local","open","openExternalUrl","getEnv","updateMyUser","isOffline","getLanguages","getCanvases","createCanvas","deleteCanvas","updateCanvas","shouldDebug","updateCanvasIndicators","getCanvas","getSectionsByIds","shareCanvas","getCanvasRecommendedFiles","getCanvasTheme","unassignCanvasTheme","getFiles","p","downloadFile","getAppConfig","fileId","file","getFile","file_id","getFileRevisionData","updateFile","deleteFile","createFile","selectDeviceFile","deleteLocalFile","getFileRevisions","search","getUsers","refreshServiceToken","refreshAccessToken","fetchDocumentInfo","renderPageAsImage","toast","SQL_KEYWORDS","AGGREGATE_FUNCTIONS","isSqlKeyword","isLiteralValue","trimmed","isDateTimeLiteral","token","convertFieldToSmartStore","field","primaryObject","objectAliases","alias","fieldPath","convertAggregateFunction","expr","regex","_match","innerField","trimmedInner","fieldPart","smartField","parseSelectFields","selectClause","fields","currentField","convertSelectFields","aliasMatch","expression","converted","convertNullComparisons","clause","convertWhereClause","whereClause","identifier","parseOrderByClause","orderByClause","direction","convertOrderByFields","orderByParts","hasAggregate","convertedField","parseGroupByClause","groupByClause","f","convertGroupByFields","inner","parseFromClause","fromClause","joins","primaryMatch","primary","joinRegex","joinMatch","removeSubqueries","subqueries","cleanQuery","currentSubquery","inSubquery","findMainFromClause","fromMatch","convertSoqlToSmartQuery","soqlQuery","normalizedQuery","selectMatch","fromParsed","whereMatch","groupByMatch","havingMatch","orderByMatch","limitMatch","offsetMatch","selectFields","smartSelectFields","whereConditions","smartWhere","groupByFields","smartGroupBy","smartHaving","smartOrderBy","crmQuery","extractFieldsFromSoql","extractObjectFromSoql","setNestedProperty","isAllFieldsSelector","transformSmartStoreResults","smartStoreResults","objectName","row","record","recordId","crmQueryAdaptive","useSmartStore","isIos","isSfdcSyncEnabled","smartQuery","filter","_","rest","crmSmartQuery","records","crmSmartObjectMetadata","crmSmartUpsertObjects","crmSmartObjectValidationRules","crmSmartObjectLayout","crmSmartDeleteObjects","crmCreate","crmUpsert","crmDescribe","crmLayout","getFolders","getFolder","createFolder","updateFolder","deleteFolder","moveFolderItems","getCoreFolders","patchCoreFolder","notify","track","getInstanceMetadataTemplates","triggerNonFilesSync","submitUserFeedback","close","openWebViewAlwaysOnTop","showSyncbox","share","showPeerSession","getThemes","assignCanvasTheme","EventEmitter","eventName","byteToHex","unsafeStringify","arr","rnds8","rng","v4","buf","_v4","rnds","PITCHER_EVENT","PitcherMessageType","PitcherResponseStatus","PitcherEventName","PitcherBroadcastedEventName","PitcherExternalEventName","AssertionError","assert","exp","defaultSkipKeys","defaultSkipObjectKeys","shouldSkipObjectKey","skipObjectKeys","camelCaseKeys","skipKeys","v","skip","newKey","snakeCaseKeys","truncateObject","currentDepth","lengthTrigger","isOriginValid","allowedOrigins","isDev","validOrigins","isValid","MAX_RETRIES","BASE_DELAY","refreshPromise","refreshToken","accessTokenResponse","setEnv","paramsSerializer","params","searchParams","addParam","subKey","fetchWithRetry","remainingRetries","newToken","delay","errorData","createHttpClient","headers","apiPath","baseCommon","endpoint","absoluteUrl","normalizeNetworkFilterParams","http","check","pickNonNullish","newCustomDomain","shouldRefreshHttpClient","onlineRestApiHandlers","api_base_url","filters","restParams","canvasData","fieldsQs","link","e","canvas_id","collaboration_id","getTopPitcherWindow","TRUNCATE_LENGTH_TRIGGER","RAW_RESPONSE_METHODS","RAW_PAYLOAD_METHODS","updateOnlineHandlersEnv","LowLevelApi","fetchMode","uuid","shouldSkipSnakeCase","targetWindow","createHighLevelApi","API","eventEmitter","usePostRobot","UI_MESSAGE","UI_API_METHOD_TYPES","UI_MESSAGE_TYPES","UI_NATIVE_MESSAGE_TYPES","ui_select_content","pr","selectContent","preselectSfdcMeetingId","selectCollectionContent","selectAgendaContent","openGlobalPopup","appName","extraContext","closeGlobalPopup","embeddableReady","updateLocation","captureAppError","printCanvas","appLoaded","appResize","closeCanvasSectionExecution","closeCanvasDrawer","canvasNavigateNextPage","canvasNavigatePreviousPage","canvasNavigatePage","openCanvasOverlay","openCollectionPlayerOverlay","selectCanvases","completePostcall","cancelMeeting","resumeMeeting","stopMeeting","enablePostcallSubmit","disablePostcallSubmit","setPostcallStyle","promptPia","openSharingSettings","onNative","messageListener","onPostRobot","onMeetingCanceled","onCanvasUpdated","onSectionListUpdated","onAppSetData","onAppUpdateData","uiBroadcast","ui","contentUi","loadingUi","locationUi","appErrorsUi","canvasUi","postCallUi","piaUi","sharingUi","ADMIN_MESSAGE","ADMIN_MESSAGE_TYPES","ADMIN_API_TYPES","ADMIN_API_METHOD_TYPES","admin","appErrorsAdmin","contentAdmin","envAdmin","canvasAdmin","metadataTemplatesAdmin","filesAdmin","usersAdmin","DSR_MESSAGE","DSR_MESSAGE_TYPES","DSR_API_TYPES","DSR_API_METHOD_TYPES","dsr","envDsr","loadingDsr","filesDsr","PEER_CONNECTIVITY_EVENT","PeerConnectivityActions","DEFAULT_PEER_CONNECTIVITY_VERSION","PEER_CONNECTIVITY_HANDLER_MATCH_ALL","unsubscribeNativeListener","peerConnectivitySupportPromise","generateCorrelationId","cryptoApi","normalizeEventPayload","defaults","metadata","addHandler","action","handlerSet","removeHandler","teardownNativeListener","ensureNativeListener","api","usePitcherApi","normalized","dispatchEvent","specificHandlers","wildcardHandlers","isPeerConnectivitySupported","normalizeActions","actionOrActions","registerPeerConnectivityHandler","sendPeerConnectivityEvent","normalizedPayload","prevOptions","enhanceWithSnakeCase","uiApi","adminApi","dsrApi","useUi","useAdmin","useDsr","getAvailableApis","useApi"],"mappings":"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,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,GAC5B,EAUIC,GAAeF,GAAeC,EAAe,EChE7CE,GAAU,8CAGVrC,GAAoB,kBACpBC,GAAwB,kBACxBC,GAAsB,kBACtBC,GAAeH,GAAoBC,GAAwBC,GAG3DQ,GAAU,IAAMP,GAAe,IAM/BmC,GAAc,OAAO5B,GAAS,GAAG,EAoBrC,SAAS6B,GAAOnM,EAAQ,CACtB,OAAAA,EAASoI,GAASpI,CAAM,EACjBA,GAAUA,EAAO,QAAQiM,GAASD,EAAY,EAAE,QAAQE,GAAa,EAAE,CAChF,CCzCA,IAAIE,GAAc,4CASlB,SAASC,GAAWrM,EAAQ,CAC1B,OAAOA,EAAO,MAAMoM,EAAW,GAAK,CAAA,CACtC,CCXA,IAAIE,GAAmB,qEASvB,SAASC,GAAevM,EAAQ,CAC9B,OAAOsM,GAAiB,KAAKtM,CAAM,CACrC,CCXA,IAAI2J,GAAgB,kBAChBC,GAAoB,kBACpBC,GAAwB,kBACxBC,GAAsB,kBACtBC,GAAeH,GAAoBC,GAAwBC,GAC3D0C,GAAiB,kBACjBC,GAAe,4BACfC,GAAgB,uBAChBC,GAAiB,+CACjBC,GAAqB,kBACrBC,GAAe,+JACfC,GAAe,4BACf9C,GAAa,iBACb+C,GAAeL,GAAgBC,GAAiBC,GAAqBC,GAGrEG,GAAS,OACTC,GAAU,IAAMF,GAAe,IAC/BzC,GAAU,IAAMP,GAAe,IAC/BmD,GAAW,OACXC,GAAY,IAAMX,GAAiB,IACnCY,GAAU,IAAMX,GAAe,IAC/BY,GAAS,KAAO1D,GAAgBoD,GAAeG,GAAWV,GAAiBC,GAAeK,GAAe,IACzGvC,GAAS,2BACTC,GAAa,MAAQF,GAAU,IAAMC,GAAS,IAC9CE,GAAc,KAAOd,GAAgB,IACrCe,GAAa,kCACbC,GAAa,qCACb2C,GAAU,IAAMR,GAAe,IAC/B7C,GAAQ,UAGRsD,GAAc,MAAQH,GAAU,IAAMC,GAAS,IAC/CG,GAAc,MAAQF,GAAU,IAAMD,GAAS,IAC/CI,GAAkB,MAAQT,GAAS,yBACnCU,GAAkB,MAAQV,GAAS,yBACnCpC,GAAWJ,GAAa,IACxBK,GAAW,IAAMb,GAAa,KAC9Bc,GAAY,MAAQb,GAAQ,MAAQ,CAACQ,GAAaC,GAAYC,EAAU,EAAE,KAAK,GAAG,EAAI,IAAME,GAAWD,GAAW,KAClH+C,GAAa,mDACbC,GAAa,mDACb7C,GAAQF,GAAWD,GAAWE,GAC9B+C,GAAU,MAAQ,CAACV,GAAWzC,GAAYC,EAAU,EAAE,KAAK,GAAG,EAAI,IAAMI,GAGxE+C,GAAgB,OAAO,CACzBR,GAAU,IAAMF,GAAU,IAAMK,GAAkB,MAAQ,CAACR,GAASK,GAAS,GAAG,EAAE,KAAK,GAAG,EAAI,IAC9FE,GAAc,IAAME,GAAkB,MAAQ,CAACT,GAASK,GAAUC,GAAa,GAAG,EAAE,KAAK,GAAG,EAAI,IAChGD,GAAU,IAAMC,GAAc,IAAME,GACpCH,GAAU,IAAMI,GAChBE,GACAD,GACAT,GACAW,EACF,EAAE,KAAK,GAAG,EAAG,GAAG,EAShB,SAASE,GAAa/N,EAAQ,CAC5B,OAAOA,EAAO,MAAM8N,EAAa,GAAK,CAAA,CACxC,CC1CA,SAASE,GAAMhO,EAAQxX,EAASoZ,EAAO,CAIrC,OAHA5B,EAASoI,GAASpI,CAAM,EACxBxX,EAA8BA,EAE1BA,IAAY,OACP+jB,GAAevM,CAAM,EAAI+N,GAAa/N,CAAM,EAAIqM,GAAWrM,CAAM,EAEnEA,EAAO,MAAMxX,CAAO,GAAK,CAAA,CAClC,CC3BA,IAAIwkB,GAAS,OAGTiB,GAAS,OAAOjB,GAAQ,GAAG,EAS/B,SAASkB,GAAiBC,EAAU,CAClC,OAAO,SAASnO,EAAQ,CACtB,OAAO2L,GAAYqC,GAAM7B,GAAOnM,CAAM,EAAE,QAAQiO,GAAQ,EAAE,CAAC,EAAGE,EAAU,EAAE,CAC5E,CACF,CCEA,IAAIC,GAAYF,GAAiB,SAAS5mB,EAAQ+mB,EAAMxhB,EAAO,CAC7D,OAAAwhB,EAAOA,EAAK,YAAW,EAChB/mB,GAAUuF,EAAQ6e,GAAW2C,CAAI,EAAIA,EAC9C,CAAC,ECjBD,SAASC,IAAa,CACpB,KAAK,SAAW,IAAIzH,GACpB,KAAK,KAAO,CACd,CCHA,SAAS0H,GAAY1pB,EAAK,CACxB,IAAIoO,EAAO,KAAK,SACZ3L,EAAS2L,EAAK,OAAUpO,CAAG,EAE/B,YAAK,KAAOoO,EAAK,KACV3L,CACT,CCNA,SAASknB,GAAS3pB,EAAK,CACrB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CCFA,SAAS4pB,GAAS5pB,EAAK,CACrB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CCNA,IAAI6pB,GAAmB,IAYvB,SAASC,GAAS9pB,EAAKH,EAAO,CAC5B,IAAIuO,EAAO,KAAK,SAChB,GAAIA,aAAgB4T,GAAW,CAC7B,IAAI+H,EAAQ3b,EAAK,SACjB,GAAI,CAAC6T,IAAQ8H,EAAM,OAASF,GAAmB,EAC7C,OAAAE,EAAM,KAAK,CAAC/pB,EAAKH,CAAK,CAAC,EACvB,KAAK,KAAO,EAAEuO,EAAK,KACZ,KAETA,EAAO,KAAK,SAAW,IAAIuU,GAASoH,CAAK,CAC3C,CACA,OAAA3b,EAAK,IAAIpO,EAAKH,CAAK,EACnB,KAAK,KAAOuO,EAAK,KACV,IACT,CCjBA,SAAS4b,GAAM1I,EAAS,CACtB,IAAIlT,EAAO,KAAK,SAAW,IAAI4T,GAAUV,CAAO,EAChD,KAAK,KAAOlT,EAAK,IACnB,CAGA4b,GAAM,UAAU,MAAQP,GACxBO,GAAM,UAAU,OAAYN,GAC5BM,GAAM,UAAU,IAAML,GACtBK,GAAM,UAAU,IAAMJ,GACtBI,GAAM,UAAU,IAAMF,GCZtB,SAASG,GAAWhqB,EAAQ2Q,EAAQ,CAClC,OAAO3Q,GAAU6b,GAAWlL,EAAQ/I,GAAK+I,CAAM,EAAG3Q,CAAM,CAC1D,CCFA,SAASiqB,GAAajqB,EAAQ2Q,EAAQ,CACpC,OAAO3Q,GAAU6b,GAAWlL,EAAQ8P,GAAO9P,CAAM,EAAG3Q,CAAM,CAC5D,CCXA,IAAIwd,GAAc,OAAO/d,GAAW,UAAYA,GAAW,CAACA,EAAQ,UAAYA,EAG5Ege,GAAaD,IAAe,OAAO,QAAU,UAAY,QAAU,CAAC,OAAO,UAAY,OAGvFE,GAAgBD,IAAcA,GAAW,UAAYD,GAGrDG,GAASD,GAAgBze,GAAK,OAAS,OACvCirB,GAAcvM,GAASA,GAAO,YAAc,OAUhD,SAASwM,GAAYC,EAAQC,EAAQ,CACnC,GAAIA,EACF,OAAOD,EAAO,MAAK,EAErB,IAAI5R,EAAS4R,EAAO,OAChB5nB,EAAS0nB,GAAcA,GAAY1R,CAAM,EAAI,IAAI4R,EAAO,YAAY5R,CAAM,EAE9E,OAAA4R,EAAO,KAAK5nB,CAAM,EACXA,CACT,CCvBA,SAAS8nB,GAAYhS,EAAO6L,EAAW,CAMrC,QALIpc,EAAQ,GACRyQ,EAASF,GAAS,KAAO,EAAIA,EAAM,OACnCiS,EAAW,EACX/nB,EAAS,CAAA,EAEN,EAAEuF,EAAQyQ,GAAQ,CACvB,IAAI5Y,EAAQ0Y,EAAMvQ,CAAK,EACnBoc,EAAUvkB,EAAOmI,EAAOuQ,CAAK,IAC/B9V,EAAO+nB,GAAU,EAAI3qB,EAEzB,CACA,OAAO4C,CACT,CCJA,SAASgoB,IAAY,CACnB,MAAO,CAAA,CACT,CChBA,IAAIlT,GAAc,OAAO,UAGrB+F,GAAuB/F,GAAY,qBAGnCmT,GAAmB,OAAO,sBAS1BC,GAAcD,GAA+B,SAASzqB,EAAQ,CAChE,OAAIA,GAAU,KACL,CAAA,GAETA,EAAS,OAAOA,CAAM,EACfsqB,GAAYG,GAAiBzqB,CAAM,EAAG,SAAS2qB,EAAQ,CAC5D,OAAOtN,GAAqB,KAAKrd,EAAQ2qB,CAAM,CACjD,CAAC,EACH,EARqCH,GCRrC,SAASI,GAAYja,EAAQ3Q,EAAQ,CACnC,OAAO6b,GAAWlL,EAAQ+Z,GAAW/Z,CAAM,EAAG3Q,CAAM,CACtD,CCPA,IAAIyqB,GAAmB,OAAO,sBAS1BI,GAAgBJ,GAA+B,SAASzqB,EAAQ,CAElE,QADIwC,EAAS,CAAA,EACNxC,GACL6jB,GAAUrhB,EAAQkoB,GAAW1qB,CAAM,CAAC,EACpCA,EAASukB,GAAavkB,CAAM,EAE9B,OAAOwC,CACT,EAPuCgoB,GCJvC,SAASM,GAAcna,EAAQ3Q,EAAQ,CACrC,OAAO6b,GAAWlL,EAAQka,GAAala,CAAM,EAAG3Q,CAAM,CACxD,CCCA,SAAS+qB,GAAe/qB,EAAQgrB,EAAUC,EAAa,CACrD,IAAIzoB,EAASwoB,EAAShrB,CAAM,EAC5B,OAAOyY,GAAQzY,CAAM,EAAIwC,EAASqhB,GAAUrhB,EAAQyoB,EAAYjrB,CAAM,CAAC,CACzE,CCNA,SAASkrB,GAAWlrB,EAAQ,CAC1B,OAAO+qB,GAAe/qB,EAAQ4H,GAAM8iB,EAAU,CAChD,CCDA,SAASS,GAAanrB,EAAQ,CAC5B,OAAO+qB,GAAe/qB,EAAQygB,GAAQoK,EAAY,CACpD,CCVA,IAAIO,GAAWpR,GAAU/a,GAAM,UAAU,ECArCosB,GAAUrR,GAAU/a,GAAM,SAAS,ECAnCqsB,GAAMtR,GAAU/a,GAAM,KAAK,ECK3Bif,GAAS,eACTE,GAAY,kBACZmN,GAAa,mBACbjN,GAAS,eACTE,GAAa,mBAEbE,GAAc,oBAGd8M,GAAqB9R,GAAS0R,EAAQ,EACtCK,GAAgB/R,GAASsI,EAAG,EAC5B0J,GAAoBhS,GAAS2R,EAAO,EACpCM,GAAgBjS,GAAS4R,EAAG,EAC5BM,GAAoBlS,GAASO,EAAO,EASpC4R,GAAS5T,IAGRmT,IAAYS,GAAO,IAAIT,GAAS,IAAI,YAAY,CAAC,CAAC,CAAC,GAAK1M,IACxDsD,IAAO6J,GAAO,IAAI7J,EAAG,GAAK9D,IAC1BmN,IAAWQ,GAAOR,GAAQ,QAAO,CAAE,GAAKE,IACxCD,IAAOO,GAAO,IAAIP,EAAG,GAAKhN,IAC1BrE,IAAW4R,GAAO,IAAI5R,EAAO,GAAKuE,MACrCqN,GAAS,SAASjsB,EAAO,CACvB,IAAI4C,EAASyV,GAAWrY,CAAK,EACzBod,EAAOxa,GAAU4b,GAAYxe,EAAM,YAAc,OACjDksB,EAAa9O,EAAOtD,GAASsD,CAAI,EAAI,GAEzC,GAAI8O,EACF,OAAQA,EAAU,CAChB,KAAKN,GAAoB,OAAO9M,GAChC,KAAK+M,GAAe,OAAOvN,GAC3B,KAAKwN,GAAmB,OAAOH,GAC/B,KAAKI,GAAe,OAAOrN,GAC3B,KAAKsN,GAAmB,OAAOpN,EACvC,CAEI,OAAOhc,CACT,GCrDF,IAAI8U,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eASjC,SAASyU,GAAezT,EAAO,CAC7B,IAAIE,EAASF,EAAM,OACf9V,EAAS,IAAI8V,EAAM,YAAYE,CAAM,EAGzC,OAAIA,GAAU,OAAOF,EAAM,CAAC,GAAK,UAAYf,GAAe,KAAKe,EAAO,OAAO,IAC7E9V,EAAO,MAAQ8V,EAAM,MACrB9V,EAAO,MAAQ8V,EAAM,OAEhB9V,CACT,CCpBA,IAAIwpB,GAAa/sB,GAAK,WCMtB,SAASgtB,GAAiBC,EAAa,CACrC,IAAI1pB,EAAS,IAAI0pB,EAAY,YAAYA,EAAY,UAAU,EAC/D,WAAIF,GAAWxpB,CAAM,EAAE,IAAI,IAAIwpB,GAAWE,CAAW,CAAC,EAC/C1pB,CACT,CCHA,SAAS2pB,GAAcC,EAAU/B,EAAQ,CACvC,IAAID,EAASC,EAAS4B,GAAiBG,EAAS,MAAM,EAAIA,EAAS,OACnE,OAAO,IAAIA,EAAS,YAAYhC,EAAQgC,EAAS,WAAYA,EAAS,UAAU,CAClF,CCZA,IAAIC,GAAU,OASd,SAASC,GAAYC,EAAQ,CAC3B,IAAI/pB,EAAS,IAAI+pB,EAAO,YAAYA,EAAO,OAAQF,GAAQ,KAAKE,CAAM,CAAC,EACvE,OAAA/pB,EAAO,UAAY+pB,EAAO,UACnB/pB,CACT,CCXA,IAAIkW,GAAcrB,GAASA,GAAO,UAAY,OAC1CmV,GAAgB9T,GAAcA,GAAY,QAAU,OASxD,SAAS+T,GAAY9B,EAAQ,CAC3B,OAAO6B,GAAgB,OAAOA,GAAc,KAAK7B,CAAM,CAAC,EAAI,CAAA,CAC9D,CCLA,SAAS+B,GAAgBC,EAAYtC,EAAQ,CAC3C,IAAID,EAASC,EAAS4B,GAAiBU,EAAW,MAAM,EAAIA,EAAW,OACvE,OAAO,IAAIA,EAAW,YAAYvC,EAAQuC,EAAW,WAAYA,EAAW,MAAM,CACpF,CCNA,IAAI5O,GAAU,mBACVC,GAAU,gBACVE,GAAS,eACTC,GAAY,kBACZE,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZpG,GAAY,kBAEZsG,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAchB,SAASyN,GAAe5sB,EAAQ4X,EAAKyS,EAAQ,CAC3C,IAAIrN,EAAOhd,EAAO,YAClB,OAAQ4X,EAAG,CACT,KAAK6G,GACH,OAAOwN,GAAiBjsB,CAAM,EAEhC,KAAK+d,GACL,KAAKC,GACH,OAAO,IAAIhB,EAAK,CAAChd,CAAM,EAEzB,KAAK0e,GACH,OAAOyN,GAAcnsB,EAAQqqB,CAAM,EAErC,KAAK1L,GAAY,KAAKC,GACtB,KAAKC,GAAS,KAAKC,GAAU,KAAKC,GAClC,KAAKC,GAAU,KAAKC,GAAiB,KAAKC,GAAW,KAAKC,GACxD,OAAOuN,GAAgB1sB,EAAQqqB,CAAM,EAEvC,KAAKnM,GACH,OAAO,IAAIlB,EAEb,KAAKmB,GACL,KAAKI,GACH,OAAO,IAAIvB,EAAKhd,CAAM,EAExB,KAAKqe,GACH,OAAOiO,GAAYtsB,CAAM,EAE3B,KAAKse,GACH,OAAO,IAAItB,EAEb,KAAK7E,GACH,OAAOsU,GAAYzsB,CAAM,CAC/B,CACA,CC/DA,SAAS6sB,GAAgB7sB,EAAQ,CAC/B,OAAQ,OAAOA,EAAO,aAAe,YAAc,CAAC+c,GAAY/c,CAAM,EAClEma,GAAWoK,GAAavkB,CAAM,CAAC,EAC/B,CAAA,CACN,CCXA,IAAIke,GAAS,eASb,SAAS4O,GAAUltB,EAAO,CACxB,OAAOsY,GAAatY,CAAK,GAAKisB,GAAOjsB,CAAK,GAAKse,EACjD,CCVA,IAAI6O,GAAYvN,IAAYA,GAAS,MAmBjCwN,GAAQD,GAAYzN,GAAUyN,EAAS,EAAID,GCpB3CxO,GAAS,eASb,SAAS2O,GAAUrtB,EAAO,CACxB,OAAOsY,GAAatY,CAAK,GAAKisB,GAAOjsB,CAAK,GAAK0e,EACjD,CCVA,IAAI4O,GAAY1N,IAAYA,GAAS,MAmBjC2N,GAAQD,GAAY5N,GAAU4N,EAAS,EAAID,GCA3CG,GAAkB,EAClBC,GAAkB,EAClBC,GAAqB,EAGrBnQ,GAAU,qBACVW,GAAW,iBACXC,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACXjF,GAAU,oBACVC,GAAS,6BACTiF,GAAS,eACTC,GAAY,kBACZC,GAAY,kBACZC,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZpG,GAAY,kBACZqG,GAAa,mBAEbC,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAGZoO,EAAgB,CAAA,EACpBA,EAAcpQ,EAAO,EAAIoQ,EAAczP,EAAQ,EAC/CyP,EAAc9O,EAAc,EAAI8O,EAAc7O,EAAW,EACzD6O,EAAcxP,EAAO,EAAIwP,EAAcvP,EAAO,EAC9CuP,EAAc5O,EAAU,EAAI4O,EAAc3O,EAAU,EACpD2O,EAAc1O,EAAO,EAAI0O,EAAczO,EAAQ,EAC/CyO,EAAcxO,EAAQ,EAAIwO,EAAcrP,EAAM,EAC9CqP,EAAcpP,EAAS,EAAIoP,EAAcnP,EAAS,EAClDmP,EAAclP,EAAS,EAAIkP,EAAcjP,EAAM,EAC/CiP,EAAchP,EAAS,EAAIgP,EAAcpV,EAAS,EAClDoV,EAAcvO,EAAQ,EAAIuO,EAActO,EAAe,EACvDsO,EAAcrO,EAAS,EAAIqO,EAAcpO,EAAS,EAAI,GACtDoO,EAActP,EAAQ,EAAIsP,EAAcvU,EAAO,EAC/CuU,EAAc/O,EAAU,EAAI,GAkB5B,SAASgP,GAAU5tB,EAAO6tB,EAAS1R,EAAYhc,EAAKC,EAAQsK,EAAO,CACjE,IAAI9H,EACA6nB,EAASoD,EAAUL,GACnBM,EAASD,EAAUJ,GACnBM,EAASF,EAAUH,GAKvB,GAHIvR,IACFvZ,EAASxC,EAAS+b,EAAWnc,EAAOG,EAAKC,EAAQsK,CAAK,EAAIyR,EAAWnc,CAAK,GAExE4C,IAAW,OACb,OAAOA,EAET,GAAI,CAACqW,GAASjZ,CAAK,EACjB,OAAOA,EAET,IAAIkgB,EAAQrH,GAAQ7Y,CAAK,EACzB,GAAIkgB,GAEF,GADAtd,EAASupB,GAAensB,CAAK,EACzB,CAACyqB,EACH,OAAO9P,GAAU3a,EAAO4C,CAAM,MAE3B,CACL,IAAIoV,EAAMiU,GAAOjsB,CAAK,EAClBguB,EAAShW,GAAOoB,IAAWpB,GAAOqB,GAEtC,GAAI4E,GAASje,CAAK,EAChB,OAAOuqB,GAAYvqB,EAAOyqB,CAAM,EAElC,GAAIzS,GAAOwG,IAAaxG,GAAOuF,IAAYyQ,GAAU,CAAC5tB,GAEpD,GADAwC,EAAUkrB,GAAUE,EAAU,CAAA,EAAKf,GAAgBjtB,CAAK,EACpD,CAACyqB,EACH,OAAOqD,EACH5C,GAAclrB,EAAOqqB,GAAaznB,EAAQ5C,CAAK,CAAC,EAChDgrB,GAAYhrB,EAAOoqB,GAAWxnB,EAAQ5C,CAAK,CAAC,MAE7C,CACL,GAAI,CAAC2tB,EAAc3V,CAAG,EACpB,OAAO5X,EAASJ,EAAQ,CAAA,EAE1B4C,EAASoqB,GAAehtB,EAAOgY,EAAKyS,CAAM,CAC5C,CACF,CAEA/f,IAAUA,EAAQ,IAAIyf,IACtB,IAAI8D,EAAUvjB,EAAM,IAAI1K,CAAK,EAC7B,GAAIiuB,EACF,OAAOA,EAETvjB,EAAM,IAAI1K,EAAO4C,CAAM,EAEnB2qB,GAAMvtB,CAAK,EACbA,EAAM,QAAQ,SAASkuB,EAAU,CAC/BtrB,EAAO,IAAIgrB,GAAUM,EAAUL,EAAS1R,EAAY+R,EAAUluB,EAAO0K,CAAK,CAAC,CAC7E,CAAC,EACQ0iB,GAAMptB,CAAK,GACpBA,EAAM,QAAQ,SAASkuB,EAAU/tB,EAAK,CACpCyC,EAAO,IAAIzC,EAAKytB,GAAUM,EAAUL,EAAS1R,EAAYhc,EAAKH,EAAO0K,CAAK,CAAC,CAC7E,CAAC,EAGH,IAAI0gB,EAAW2C,EACVD,EAASvC,GAAeD,GACxBwC,EAASjN,GAAS7Y,GAEnBkU,EAAQgE,EAAQ,OAAYkL,EAASprB,CAAK,EAC9C,OAAAwb,GAAUU,GAASlc,EAAO,SAASkuB,EAAU/tB,EAAK,CAC5C+b,IACF/b,EAAM+tB,EACNA,EAAWluB,EAAMG,CAAG,GAGtB4b,GAAYnZ,EAAQzC,EAAKytB,GAAUM,EAAUL,EAAS1R,EAAYhc,EAAKH,EAAO0K,CAAK,CAAC,CACtF,CAAC,EACM9H,CACT,CChKA,IAAI4qB,GAAkB,EAClBE,GAAqB,EAoBzB,SAASS,GAAUnuB,EAAO,CACxB,OAAO4tB,GAAU5tB,EAAOwtB,GAAkBE,EAAkB,CAC9D,CCzBA,IAAItM,GAAiB,4BAYrB,SAASgN,GAAYpuB,EAAO,CAC1B,YAAK,SAAS,IAAIA,EAAOohB,EAAc,EAChC,IACT,CCPA,SAASiN,GAAYruB,EAAO,CAC1B,OAAO,KAAK,SAAS,IAAIA,CAAK,CAChC,CCCA,SAASsuB,GAASpmB,EAAQ,CACxB,IAAIC,EAAQ,GACRyQ,EAAS1Q,GAAU,KAAO,EAAIA,EAAO,OAGzC,IADA,KAAK,SAAW,IAAI4a,GACb,EAAE3a,EAAQyQ,GACf,KAAK,IAAI1Q,EAAOC,CAAK,CAAC,CAE1B,CAGAmmB,GAAS,UAAU,IAAMA,GAAS,UAAU,KAAOF,GACnDE,GAAS,UAAU,IAAMD,GCdzB,SAASE,GAAU7V,EAAO6L,EAAW,CAInC,QAHIpc,EAAQ,GACRyQ,EAASF,GAAS,KAAO,EAAIA,EAAM,OAEhC,EAAEvQ,EAAQyQ,GACf,GAAI2L,EAAU7L,EAAMvQ,CAAK,EAAGA,EAAOuQ,CAAK,EACtC,MAAO,GAGX,MAAO,EACT,CCZA,SAAS8V,GAASzkB,EAAO5J,EAAK,CAC5B,OAAO4J,EAAM,IAAI5J,CAAG,CACtB,CCLA,IAAIsuB,GAAuB,EACvBC,GAAyB,EAe7B,SAASC,GAAYjW,EAAOoD,EAAO+R,EAAS1R,EAAYyS,EAAWlkB,EAAO,CACxE,IAAImkB,EAAYhB,EAAUY,GACtBK,EAAYpW,EAAM,OAClBqW,EAAYjT,EAAM,OAEtB,GAAIgT,GAAaC,GAAa,EAAEF,GAAaE,EAAYD,GACvD,MAAO,GAGT,IAAIE,EAAatkB,EAAM,IAAIgO,CAAK,EAC5BuW,EAAavkB,EAAM,IAAIoR,CAAK,EAChC,GAAIkT,GAAcC,EAChB,OAAOD,GAAclT,GAASmT,GAAcvW,EAE9C,IAAIvQ,EAAQ,GACRvF,EAAS,GACTssB,EAAQrB,EAAUa,GAA0B,IAAIJ,GAAW,OAM/D,IAJA5jB,EAAM,IAAIgO,EAAOoD,CAAK,EACtBpR,EAAM,IAAIoR,EAAOpD,CAAK,EAGf,EAAEvQ,EAAQ2mB,GAAW,CAC1B,IAAIK,EAAWzW,EAAMvQ,CAAK,EACtBinB,EAAWtT,EAAM3T,CAAK,EAE1B,GAAIgU,EACF,IAAIkT,EAAWR,EACX1S,EAAWiT,EAAUD,EAAUhnB,EAAO2T,EAAOpD,EAAOhO,CAAK,EACzDyR,EAAWgT,EAAUC,EAAUjnB,EAAOuQ,EAAOoD,EAAOpR,CAAK,EAE/D,GAAI2kB,IAAa,OAAW,CAC1B,GAAIA,EACF,SAEFzsB,EAAS,GACT,KACF,CAEA,GAAIssB,GACF,GAAI,CAACX,GAAUzS,EAAO,SAASsT,EAAUE,EAAU,CAC7C,GAAI,CAACd,GAASU,EAAMI,CAAQ,IACvBH,IAAaC,GAAYR,EAAUO,EAAUC,EAAUvB,EAAS1R,EAAYzR,CAAK,GACpF,OAAOwkB,EAAK,KAAKI,CAAQ,CAE7B,CAAC,EAAG,CACN1sB,EAAS,GACT,KACF,UACS,EACLusB,IAAaC,GACXR,EAAUO,EAAUC,EAAUvB,EAAS1R,EAAYzR,CAAK,GACzD,CACL9H,EAAS,GACT,KACF,CACF,CACA,OAAA8H,EAAM,OAAUgO,CAAK,EACrBhO,EAAM,OAAUoR,CAAK,EACdlZ,CACT,CC1EA,SAAS2sB,GAAW/M,EAAK,CACvB,IAAIra,EAAQ,GACRvF,EAAS,MAAM4f,EAAI,IAAI,EAE3B,OAAAA,EAAI,QAAQ,SAASxiB,EAAOG,EAAK,CAC/ByC,EAAO,EAAEuF,CAAK,EAAI,CAAChI,EAAKH,CAAK,CAC/B,CAAC,EACM4C,CACT,CCRA,SAAS4sB,GAAWC,EAAK,CACvB,IAAItnB,EAAQ,GACRvF,EAAS,MAAM6sB,EAAI,IAAI,EAE3B,OAAAA,EAAI,QAAQ,SAASzvB,EAAO,CAC1B4C,EAAO,EAAEuF,CAAK,EAAInI,CACpB,CAAC,EACM4C,CACT,CCPA,IAAI6rB,GAAuB,EACvBC,GAAyB,EAGzBvQ,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACXC,GAAS,eACTC,GAAY,kBACZE,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZpG,GAAY,kBAEZsG,GAAiB,uBACjBC,GAAc,oBAGdhG,GAAcrB,GAASA,GAAO,UAAY,OAC1CmV,GAAgB9T,GAAcA,GAAY,QAAU,OAmBxD,SAAS4W,GAAWtvB,EAAQ0b,EAAO9D,EAAK6V,EAAS1R,EAAYyS,EAAWlkB,EAAO,CAC7E,OAAQsN,EAAG,CACT,KAAK8G,GACH,GAAK1e,EAAO,YAAc0b,EAAM,YAC3B1b,EAAO,YAAc0b,EAAM,WAC9B,MAAO,GAET1b,EAASA,EAAO,OAChB0b,EAAQA,EAAM,OAEhB,KAAK+C,GACH,MAAK,EAAAze,EAAO,YAAc0b,EAAM,YAC5B,CAAC8S,EAAU,IAAIxC,GAAWhsB,CAAM,EAAG,IAAIgsB,GAAWtQ,CAAK,CAAC,GAK9D,KAAKqC,GACL,KAAKC,GACL,KAAKG,GAGH,OAAO1C,GAAG,CAACzb,EAAQ,CAAC0b,CAAK,EAE3B,KAAKuC,GACH,OAAOje,EAAO,MAAQ0b,EAAM,MAAQ1b,EAAO,SAAW0b,EAAM,QAE9D,KAAK2C,GACL,KAAKE,GAIH,OAAOve,GAAW0b,EAAQ,GAE5B,KAAKwC,GACH,IAAIqR,EAAUJ,GAEhB,KAAK7Q,GACH,IAAImQ,EAAYhB,EAAUY,GAG1B,GAFAkB,IAAYA,EAAUH,IAElBpvB,EAAO,MAAQ0b,EAAM,MAAQ,CAAC+S,EAChC,MAAO,GAGT,IAAIZ,EAAUvjB,EAAM,IAAItK,CAAM,EAC9B,GAAI6tB,EACF,OAAOA,GAAWnS,EAEpB+R,GAAWa,GAGXhkB,EAAM,IAAItK,EAAQ0b,CAAK,EACvB,IAAIlZ,EAAS+rB,GAAYgB,EAAQvvB,CAAM,EAAGuvB,EAAQ7T,CAAK,EAAG+R,EAAS1R,EAAYyS,EAAWlkB,CAAK,EAC/F,OAAAA,EAAM,OAAUtK,CAAM,EACfwC,EAET,KAAK2V,GACH,GAAIqU,GACF,OAAOA,GAAc,KAAKxsB,CAAM,GAAKwsB,GAAc,KAAK9Q,CAAK,CAErE,CACE,MAAO,EACT,CC1GA,IAAI2S,GAAuB,EAGvB/W,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAejC,SAASkY,GAAaxvB,EAAQ0b,EAAO+R,EAAS1R,EAAYyS,EAAWlkB,EAAO,CAC1E,IAAImkB,EAAYhB,EAAUY,GACtBoB,EAAWvE,GAAWlrB,CAAM,EAC5B0vB,EAAYD,EAAS,OACrBE,EAAWzE,GAAWxP,CAAK,EAC3BiT,EAAYgB,EAAS,OAEzB,GAAID,GAAaf,GAAa,CAACF,EAC7B,MAAO,GAGT,QADI1mB,EAAQ2nB,EACL3nB,KAAS,CACd,IAAIhI,EAAM0vB,EAAS1nB,CAAK,EACxB,GAAI,EAAE0mB,EAAY1uB,KAAO2b,EAAQnE,GAAe,KAAKmE,EAAO3b,CAAG,GAC7D,MAAO,EAEX,CAEA,IAAI6vB,EAAatlB,EAAM,IAAItK,CAAM,EAC7B6uB,EAAavkB,EAAM,IAAIoR,CAAK,EAChC,GAAIkU,GAAcf,EAChB,OAAOe,GAAclU,GAASmT,GAAc7uB,EAE9C,IAAIwC,EAAS,GACb8H,EAAM,IAAItK,EAAQ0b,CAAK,EACvBpR,EAAM,IAAIoR,EAAO1b,CAAM,EAGvB,QADI6vB,EAAWpB,EACR,EAAE1mB,EAAQ2nB,GAAW,CAC1B3vB,EAAM0vB,EAAS1nB,CAAK,EACpB,IAAI6T,EAAW5b,EAAOD,CAAG,EACrBivB,EAAWtT,EAAM3b,CAAG,EAExB,GAAIgc,EACF,IAAIkT,GAAWR,EACX1S,EAAWiT,EAAUpT,EAAU7b,EAAK2b,EAAO1b,EAAQsK,CAAK,EACxDyR,EAAWH,EAAUoT,EAAUjvB,EAAKC,EAAQ0b,EAAOpR,CAAK,EAG9D,GAAI,EAAE2kB,KAAa,OACVrT,IAAaoT,GAAYR,EAAU5S,EAAUoT,EAAUvB,EAAS1R,EAAYzR,CAAK,EAClF2kB,IACD,CACLzsB,EAAS,GACT,KACF,CACAqtB,IAAaA,EAAW9vB,GAAO,cACjC,CACA,GAAIyC,GAAU,CAACqtB,EAAU,CACvB,IAAIC,GAAU9vB,EAAO,YACjB+vB,GAAUrU,EAAM,YAGhBoU,IAAWC,IACV,gBAAiB/vB,GAAU,gBAAiB0b,GAC7C,EAAE,OAAOoU,IAAW,YAAcA,cAAmBA,IACnD,OAAOC,IAAW,YAAcA,cAAmBA,MACvDvtB,EAAS,GAEb,CACA,OAAA8H,EAAM,OAAUtK,CAAM,EACtBsK,EAAM,OAAUoR,CAAK,EACdlZ,CACT,CC7EA,IAAI6rB,GAAuB,EAGvBlR,GAAU,qBACVW,GAAW,iBACXM,GAAY,kBAGZ9G,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAgBjC,SAAS0Y,GAAgBhwB,EAAQ0b,EAAO+R,EAAS1R,EAAYyS,EAAWlkB,EAAO,CAC7E,IAAI2lB,EAAWxX,GAAQzY,CAAM,EACzBkwB,EAAWzX,GAAQiD,CAAK,EACxByU,EAASF,EAAWnS,GAAW+N,GAAO7rB,CAAM,EAC5CowB,EAASF,EAAWpS,GAAW+N,GAAOnQ,CAAK,EAE/CyU,EAASA,GAAUhT,GAAUiB,GAAY+R,EACzCC,EAASA,GAAUjT,GAAUiB,GAAYgS,EAEzC,IAAIC,EAAWF,GAAU/R,GACrBkS,EAAWF,GAAUhS,GACrBmS,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa1S,GAAS7d,CAAM,EAAG,CACjC,GAAI,CAAC6d,GAASnC,CAAK,EACjB,MAAO,GAETuU,EAAW,GACXI,EAAW,EACb,CACA,GAAIE,GAAa,CAACF,EAChB,OAAA/lB,IAAUA,EAAQ,IAAIyf,IACdkG,GAAYtQ,GAAa3f,CAAM,EACnCuuB,GAAYvuB,EAAQ0b,EAAO+R,EAAS1R,EAAYyS,EAAWlkB,CAAK,EAChEglB,GAAWtvB,EAAQ0b,EAAOyU,EAAQ1C,EAAS1R,EAAYyS,EAAWlkB,CAAK,EAE7E,GAAI,EAAEmjB,EAAUY,IAAuB,CACrC,IAAImC,EAAeH,GAAY9Y,GAAe,KAAKvX,EAAQ,aAAa,EACpEywB,EAAeH,GAAY/Y,GAAe,KAAKmE,EAAO,aAAa,EAEvE,GAAI8U,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAexwB,EAAO,MAAK,EAAKA,EAC/C2wB,EAAeF,EAAe/U,EAAM,MAAK,EAAKA,EAElD,OAAApR,IAAUA,EAAQ,IAAIyf,IACfyE,EAAUkC,EAAcC,EAAclD,EAAS1R,EAAYzR,CAAK,CACzE,CACF,CACA,OAAKimB,GAGLjmB,IAAUA,EAAQ,IAAIyf,IACfyF,GAAaxvB,EAAQ0b,EAAO+R,EAAS1R,EAAYyS,EAAWlkB,CAAK,GAH/D,EAIX,CC/DA,SAASsmB,GAAYhxB,EAAO8b,EAAO+R,EAAS1R,EAAYzR,EAAO,CAC7D,OAAI1K,IAAU8b,EACL,GAEL9b,GAAS,MAAQ8b,GAAS,MAAS,CAACxD,GAAatY,CAAK,GAAK,CAACsY,GAAawD,CAAK,EACzE9b,IAAUA,GAAS8b,IAAUA,EAE/BsU,GAAgBpwB,EAAO8b,EAAO+R,EAAS1R,EAAY6U,GAAatmB,CAAK,CAC9E,CCrBA,IAAI+jB,GAAuB,EACvBC,GAAyB,EAY7B,SAASuC,GAAY7wB,EAAQ2Q,EAAQmgB,EAAW/U,EAAY,CACvD,IAAChU,EAAQ+oB,EAAU,OAClBtY,EAASzQ,EAGb,GAAI/H,GAAU,KACZ,MAAO,CAACwY,EAGV,IADAxY,EAAS,OAAOA,CAAM,EACf+H,KAAS,CACd,IAAIoG,EAAO2iB,EAAU/oB,CAAK,EAC1B,GAAqBoG,EAAK,CAAC,EACnBA,EAAK,CAAC,IAAMnO,EAAOmO,EAAK,CAAC,CAAC,EAC1B,EAAEA,EAAK,CAAC,IAAKnO,GAEnB,MAAO,EAEX,CACA,KAAO,EAAE+H,EAAQyQ,GAAQ,CACvBrK,EAAO2iB,EAAU/oB,CAAK,EACtB,IAAIhI,EAAMoO,EAAK,CAAC,EACZyN,EAAW5b,EAAOD,CAAG,EACrBgxB,EAAW5iB,EAAK,CAAC,EAErB,GAAoBA,EAAK,CAAC,GACxB,GAAIyN,IAAa,QAAa,EAAE7b,KAAOC,GACrC,MAAO,OAEJ,CACL,IAAIsK,EAAQ,IAAIyf,GACtBvnB,EAGM,GAAI,EAAEA,IAAW,OACTouB,GAAYG,EAAUnV,EAAUyS,GAAuBC,GAAwBvS,EAAYzR,CAAK,EAChG9H,GAEN,MAAO,EAEX,CACF,CACA,MAAO,EACT,CCjDA,SAASwuB,GAAmBpxB,EAAO,CACjC,OAAOA,IAAUA,GAAS,CAACiZ,GAASjZ,CAAK,CAC3C,CCFA,SAASqxB,GAAajxB,EAAQ,CAI5B,QAHIwC,EAASoF,GAAK5H,CAAM,EACpBwY,EAAShW,EAAO,OAEbgW,KAAU,CACf,IAAIzY,EAAMyC,EAAOgW,CAAM,EACnB5Y,EAAQI,EAAOD,CAAG,EAEtByC,EAAOgW,CAAM,EAAI,CAACzY,EAAKH,EAAOoxB,GAAmBpxB,CAAK,CAAC,CACzD,CACA,OAAO4C,CACT,CCZA,SAAS0uB,GAAwBnxB,EAAKgxB,EAAU,CAC9C,OAAO,SAAS/wB,EAAQ,CACtB,OAAIA,GAAU,KACL,GAEFA,EAAOD,CAAG,IAAMgxB,IACpBA,IAAa,QAAchxB,KAAO,OAAOC,CAAM,EACpD,CACF,CCNA,SAASmxB,GAAYxgB,EAAQ,CAC3B,IAAImgB,EAAYG,GAAatgB,CAAM,EACnC,OAAImgB,EAAU,QAAU,GAAKA,EAAU,CAAC,EAAE,CAAC,EAClCI,GAAwBJ,EAAU,CAAC,EAAE,CAAC,EAAGA,EAAU,CAAC,EAAE,CAAC,CAAC,EAE1D,SAAS9wB,EAAQ,CACtB,OAAOA,IAAW2Q,GAAUkgB,GAAY7wB,EAAQ2Q,EAAQmgB,CAAS,CACnE,CACF,CCXA,SAASM,GAAUpxB,EAAQD,EAAK,CAC9B,OAAOC,GAAU,MAAQD,KAAO,OAAOC,CAAM,CAC/C,CCMA,SAASqxB,GAAQrxB,EAAQ0jB,EAAM4N,EAAS,CACtC5N,EAAOH,GAASG,EAAM1jB,CAAM,EAM5B,QAJI+H,EAAQ,GACRyQ,EAASkL,EAAK,OACdlhB,EAAS,GAEN,EAAEuF,EAAQyQ,GAAQ,CACvB,IAAIzY,EAAMyjB,GAAME,EAAK3b,CAAK,CAAC,EAC3B,GAAI,EAAEvF,EAASxC,GAAU,MAAQsxB,EAAQtxB,EAAQD,CAAG,GAClD,MAEFC,EAASA,EAAOD,CAAG,CACrB,CACA,OAAIyC,GAAU,EAAEuF,GAASyQ,EAChBhW,GAETgW,EAASxY,GAAU,KAAO,EAAIA,EAAO,OAC9B,CAAC,CAACwY,GAAUgE,GAAShE,CAAM,GAAK+C,GAAQxb,EAAKyY,CAAM,IACvDC,GAAQzY,CAAM,GAAKsd,GAAYtd,CAAM,GAC1C,CCPA,SAASuxB,GAAMvxB,EAAQ0jB,EAAM,CAC3B,OAAO1jB,GAAU,MAAQqxB,GAAQrxB,EAAQ0jB,EAAM0N,EAAS,CAC1D,CCtBA,IAAI/C,GAAuB,EACvBC,GAAyB,EAU7B,SAASkD,GAAoB9N,EAAMqN,EAAU,CAC3C,OAAInQ,GAAM8C,CAAI,GAAKsN,GAAmBD,CAAQ,EACrCG,GAAwB1N,GAAME,CAAI,EAAGqN,CAAQ,EAE/C,SAAS/wB,EAAQ,CACtB,IAAI4b,EAAW+H,GAAI3jB,EAAQ0jB,CAAI,EAC/B,OAAQ9H,IAAa,QAAaA,IAAamV,EAC3CQ,GAAMvxB,EAAQ0jB,CAAI,EAClBkN,GAAYG,EAAUnV,EAAUyS,GAAuBC,EAAsB,CACnF,CACF,CCvBA,SAASmD,GAAa1xB,EAAK,CACzB,OAAO,SAASC,EAAQ,CACtB,OAAoCA,IAAOD,CAAG,CAChD,CACF,CCFA,SAAS2xB,GAAiBhO,EAAM,CAC9B,OAAO,SAAS1jB,EAAQ,CACtB,OAAOyjB,GAAQzjB,EAAQ0jB,CAAI,CAC7B,CACF,CCcA,SAASzjB,GAASyjB,EAAM,CACtB,OAAO9C,GAAM8C,CAAI,EAAI+N,GAAajO,GAAME,CAAI,CAAC,EAAIgO,GAAiBhO,CAAI,CACxE,CChBA,SAASiO,GAAa/xB,EAAO,CAG3B,OAAI,OAAOA,GAAS,WACXA,EAELA,GAAS,KACJkZ,GAEL,OAAOlZ,GAAS,SACX6Y,GAAQ7Y,CAAK,EAChB4xB,GAAoB5xB,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EACtCuxB,GAAYvxB,CAAK,EAEhBK,GAASL,CAAK,CACvB,CCrBA,SAASgyB,GAAcC,EAAW,CAChC,OAAO,SAAS7xB,EAAQuY,EAAUyS,EAAU,CAM1C,QALIjjB,EAAQ,GACR+pB,EAAW,OAAO9xB,CAAM,EACxB8b,EAAQkP,EAAShrB,CAAM,EACvBwY,EAASsD,EAAM,OAEZtD,KAAU,CACf,IAAIzY,EAAM+b,EAA2B,EAAE/T,CAAK,EAC5C,GAAIwQ,EAASuZ,EAAS/xB,CAAG,EAAGA,EAAK+xB,CAAQ,IAAM,GAC7C,KAEJ,CACA,OAAO9xB,CACT,CACF,CCTA,IAAI+xB,GAAUH,GAAa,ECD3B,SAASI,GAAiBhyB,EAAQD,EAAKH,EAAO,EACvCA,IAAU,QAAa,CAAC6b,GAAGzb,EAAOD,CAAG,EAAGH,CAAK,GAC7CA,IAAU,QAAa,EAAEG,KAAOC,KACnCwb,GAAgBxb,EAAQD,EAAKH,CAAK,CAEtC,CCWA,SAASqyB,GAAkBryB,EAAO,CAChC,OAAOsY,GAAatY,CAAK,GAAK6c,GAAY7c,CAAK,CACjD,CCtBA,SAASsyB,GAAQlyB,EAAQD,EAAK,CAC5B,GAAI,EAAAA,IAAQ,eAAiB,OAAOC,EAAOD,CAAG,GAAM,aAIhDA,GAAO,YAIX,OAAOC,EAAOD,CAAG,CACnB,CCSA,SAASoyB,GAAcvyB,EAAO,CAC5B,OAAOic,GAAWjc,EAAO6gB,GAAO7gB,CAAK,CAAC,CACxC,CCEA,SAASwyB,GAAcpyB,EAAQ2Q,EAAQ5Q,EAAKsyB,EAAUC,EAAWvW,EAAYzR,EAAO,CAClF,IAAIsR,EAAWsW,GAAQlyB,EAAQD,CAAG,EAC9BgxB,EAAWmB,GAAQvhB,EAAQ5Q,CAAG,EAC9B8tB,EAAUvjB,EAAM,IAAIymB,CAAQ,EAEhC,GAAIlD,EAAS,CACXmE,GAAiBhyB,EAAQD,EAAK8tB,CAAO,EACrC,MACF,CACA,IAAI5R,EAAWF,EACXA,EAAWH,EAAUmV,EAAWhxB,EAAM,GAAKC,EAAQ2Q,EAAQrG,CAAK,EAChE,OAEAioB,EAAWtW,IAAa,OAE5B,GAAIsW,EAAU,CACZ,IAAIzS,EAAQrH,GAAQsY,CAAQ,EACxB/Q,EAAS,CAACF,GAASjC,GAASkT,CAAQ,EACpCyB,EAAU,CAAC1S,GAAS,CAACE,GAAUL,GAAaoR,CAAQ,EAExD9U,EAAW8U,EACPjR,GAASE,GAAUwS,EACjB/Z,GAAQmD,CAAQ,EAClBK,EAAWL,EAEJqW,GAAkBrW,CAAQ,EACjCK,EAAW1B,GAAUqB,CAAQ,EAEtBoE,GACPuS,EAAW,GACXtW,EAAWkO,GAAY4G,EAAU,EAAI,GAE9ByB,GACPD,EAAW,GACXtW,EAAWyQ,GAAgBqE,EAAU,EAAI,GAGzC9U,EAAW,CAAA,EAGNwI,GAAcsM,CAAQ,GAAKzT,GAAYyT,CAAQ,GACtD9U,EAAWL,EACP0B,GAAY1B,CAAQ,EACtBK,EAAWkW,GAAcvW,CAAQ,GAE1B,CAAC/C,GAAS+C,CAAQ,GAAKzC,GAAWyC,CAAQ,KACjDK,EAAW4Q,GAAgBkE,CAAQ,IAIrCwB,EAAW,EAEf,CACIA,IAEFjoB,EAAM,IAAIymB,EAAU9U,CAAQ,EAC5BqW,EAAUrW,EAAU8U,EAAUsB,EAAUtW,EAAYzR,CAAK,EACzDA,EAAM,OAAUymB,CAAQ,GAE1BiB,GAAiBhyB,EAAQD,EAAKkc,CAAQ,CACxC,CCxEA,SAASwW,GAAUzyB,EAAQ2Q,EAAQ0hB,EAAUtW,EAAYzR,EAAO,CAC1DtK,IAAW2Q,GAGfohB,GAAQphB,EAAQ,SAASogB,EAAUhxB,EAAK,CAEtC,GADAuK,IAAUA,EAAQ,IAAIyf,IAClBlR,GAASkY,CAAQ,EACnBqB,GAAcpyB,EAAQ2Q,EAAQ5Q,EAAKsyB,EAAUI,GAAW1W,EAAYzR,CAAK,MAEtE,CACH,IAAI2R,EAAWF,EACXA,EAAWmW,GAAQlyB,EAAQD,CAAG,EAAGgxB,EAAWhxB,EAAM,GAAKC,EAAQ2Q,EAAQrG,CAAK,EAC5E,OAEA2R,IAAa,SACfA,EAAW8U,GAEbiB,GAAiBhyB,EAAQD,EAAKkc,CAAQ,CACxC,CACF,EAAGwE,EAAM,CACX,CCzBA,SAASiS,GAAKpa,EAAO,CACnB,IAAIE,EAASF,GAAS,KAAO,EAAIA,EAAM,OACvC,OAAOE,EAASF,EAAME,EAAS,CAAC,EAAI,MACtC,CCNA,SAAS1W,GAAO9B,EAAQ0jB,EAAM,CAC5B,OAAOA,EAAK,OAAS,EAAI1jB,EAASyjB,GAAQzjB,EAAQ0kB,GAAUhB,EAAM,EAAG,EAAE,CAAC,CAC1E,CCiBA,SAASiP,GAAQ/yB,EAAO8b,EAAO,CAC7B,OAAOkV,GAAYhxB,EAAO8b,CAAK,CACjC,CCEA,IAAIkX,GAAQjW,GAAe,SAAS3c,EAAQ2Q,EAAQ0hB,EAAU,CAC5DI,GAAUzyB,EAAQ2Q,EAAQ0hB,CAAQ,CACpC,CAAC,EC9BG/a,GAAc,OAAO,UAGrBC,GAAiBD,GAAY,eAUjC,SAASub,GAAU7yB,EAAQ0jB,EAAM,CAC/BA,EAAOH,GAASG,EAAM1jB,CAAM,EAK5B,IAAI+H,EAAQ,GACRyQ,EAASkL,EAAK,OAElB,GAAI,CAAClL,EACH,MAAO,GAGT,KAAO,EAAEzQ,EAAQyQ,GAAQ,CACvB,IAAIzY,EAAMyjB,GAAME,EAAK3b,CAAK,CAAC,EAS3B,GANIhI,IAAQ,aAAe,CAACwX,GAAe,KAAKvX,EAAQ,WAAW,IAM9DD,IAAQ,eAAiBA,IAAQ,cAAgBgI,EAAQyQ,EAAS,EACrE,MAAO,EAEX,CAEA,IAAI1U,EAAMhC,GAAO9B,EAAQ0jB,CAAI,EAC7B,OAAO5f,GAAO,MAAQ,OAAOA,EAAI0f,GAAMkP,GAAKhP,CAAI,CAAC,CAAC,CACpD,CCtCA,SAASoP,GAAgBlzB,EAAO,CAC9B,OAAO6kB,GAAc7kB,CAAK,EAAI,OAAYA,CAC5C,CCHA,IAAIwtB,GAAkB,EAClBC,GAAkB,EAClBC,GAAqB,EAsBrByF,GAAOzO,GAAS,SAAStkB,EAAQgzB,EAAO,CAC1C,IAAIxwB,EAAS,CAAA,EACb,GAAIxC,GAAU,KACZ,OAAOwC,EAET,IAAI6nB,EAAS,GACb2I,EAAQ3a,GAAS2a,EAAO,SAAStP,EAAM,CACrC,OAAAA,EAAOH,GAASG,EAAM1jB,CAAM,EAC5BqqB,IAAWA,EAAS3G,EAAK,OAAS,GAC3BA,CACT,CAAC,EACD7H,GAAW7b,EAAQmrB,GAAanrB,CAAM,EAAGwC,CAAM,EAC3C6nB,IACF7nB,EAASgrB,GAAUhrB,EAAQ4qB,GAAkBC,GAAkBC,GAAoBwF,EAAe,GAGpG,QADIta,EAASwa,EAAM,OACZxa,KACLqa,GAAUrwB,EAAQwwB,EAAMxa,CAAM,CAAC,EAEjC,OAAOhW,CACT,CAAC,ECtCD,SAASywB,GAAQjzB,EAAQ0jB,EAAM9jB,EAAOmc,EAAY,CAChD,GAAI,CAAClD,GAAS7Y,CAAM,EAClB,OAAOA,EAET0jB,EAAOH,GAASG,EAAM1jB,CAAM,EAO5B,QALI+H,EAAQ,GACRyQ,EAASkL,EAAK,OACd/B,EAAYnJ,EAAS,EACrB0a,EAASlzB,EAENkzB,GAAU,MAAQ,EAAEnrB,EAAQyQ,GAAQ,CACzC,IAAIzY,EAAMyjB,GAAME,EAAK3b,CAAK,CAAC,EACvBkU,EAAWrc,EAEf,GAAIG,IAAQ,aAAeA,IAAQ,eAAiBA,IAAQ,YAC1D,OAAOC,EAGT,GAAI+H,GAAS4Z,EAAW,CACtB,IAAI/F,EAAWsX,EAAOnzB,CAAG,EACzBkc,EAA4D,OACxDA,IAAa,SACfA,EAAWpD,GAAS+C,CAAQ,EACxBA,EACCL,GAAQmI,EAAK3b,EAAQ,CAAC,CAAC,EAAI,CAAA,EAAK,GAEzC,CACA4T,GAAYuX,EAAQnzB,EAAKkc,CAAQ,EACjCiX,EAASA,EAAOnzB,CAAG,CACrB,CACA,OAAOC,CACT,CCnCA,SAASmzB,GAAWnzB,EAAQgzB,EAAO7O,EAAW,CAK5C,QAJIpc,EAAQ,GACRyQ,EAASwa,EAAM,OACfxwB,EAAS,CAAA,EAEN,EAAEuF,EAAQyQ,GAAQ,CACvB,IAAIkL,EAAOsP,EAAMjrB,CAAK,EAClBnI,EAAQ6jB,GAAQzjB,EAAQ0jB,CAAI,EAE5BS,EAAUvkB,EAAO8jB,CAAI,GACvBuP,GAAQzwB,EAAQ+gB,GAASG,EAAM1jB,CAAM,EAAGJ,CAAK,CAEjD,CACA,OAAO4C,CACT,CCJA,SAAS4wB,GAAOpzB,EAAQmkB,EAAW,CACjC,GAAInkB,GAAU,KACZ,MAAO,CAAA,EAET,IAAI8b,EAAQzD,GAAS8S,GAAanrB,CAAM,EAAG,SAASqzB,EAAM,CACxD,MAAO,CAACA,CAAI,CACd,CAAC,EACD,OAAAlP,EAAYwN,GAAaxN,CAAS,EAC3BgP,GAAWnzB,EAAQ8b,EAAO,SAASlc,EAAO8jB,EAAM,CACrD,OAAOS,EAAUvkB,EAAO8jB,EAAK,CAAC,CAAC,CACjC,CAAC,CACH,CCXA,IAAI4P,GAAYlK,GAAiB,SAAS5mB,EAAQ+mB,EAAMxhB,EAAO,CAC7D,OAAOvF,GAAUuF,EAAQ,IAAM,IAAMwhB,EAAK,YAAW,CACvD,CAAC,EC4KM,SAASgK,GAAqBC,EAA2D,CAC9F,OAAIA,GAAQ,OAAS,OAASA,GAAQ,OAAS,aAAeA,GAAQ,OAAS,SAAiBA,EAAO,KAChG,KACT,CC7KA,MAAMC,GAAmB,6CAInBC,GAA0B,IAC1BC,GAAuB,IAKvBC,GAAoB,IAEpBC,GAA0C,CAC9C,UAAW,GACX,QAAS,GACT,QAAS,gBACX,EAEA,SAASC,GAAepvB,EAAqBqvB,EAAYC,EAA2B,CAClF,OAAO,IAAI,QAAW,CAACxtB,EAASC,IAAW,CACzC,MAAMwtB,EAAQ,WAAW,IAAMxtB,EAAO,IAAI,MAAM,GAAGutB,CAAK,oBAAoBD,CAAE,IAAI,CAAC,EAAGA,CAAE,EACxFrvB,EAAQ,KACL9E,GAAU,CACT,aAAaq0B,CAAK,EAClBztB,EAAQ5G,CAAK,CACf,EACC2F,GAAU,CACT,aAAa0uB,CAAK,EAClBxtB,EAAOlB,CAAK,CACd,CAAA,CAEJ,CAAC,CACH,CAEA,SAAS2uB,GAAgBjyB,EAAwB,CAC/C,OAAOA,EAAO,WAAW,MAAM,EAAIA,EAAS,WAAWA,CAAM,EAC/D,CAIA,SAASkyB,GAAiBC,EAAyB,CACjD,MAAMC,EAAcD,GAAK,SAAS,eAAe,iCAAiC,GAAG,cACrF,GAAI,OAAOC,GAAgB,UAAYA,EAAY,OAAS,EAAG,OAAOH,GAAgBG,CAAW,EACjG,MAAMC,EAAYF,GAAK,SAAS,cAAc,UAAU,cACxD,GAAI,OAAOE,GAAc,UAAYA,EAAU,OAAS,EAAG,OAAOJ,GAAgBI,CAAS,EAC3F,MAAM,IAAI,MAAM,yFAAyF,CAC3G,CAEA,SAASC,GAAoBC,EAAeC,EAA8B,CAKxE,MAAO;AAAA;AAAA;AAAA,EAHL,OAAOA,GAAgB,UAAYA,EAAY,OAAO,OAAS,EAC3DA,EAAY,KAAA,EACZ,kCAIC;AAAA;AAAA,YAEGD,CAAK;AAAA;AAAA,gIAGjB,CAeA,eAAsBE,IAAoD,CAExE,OADwB,MAAMC,EAAAA,aAAa,IAAI,QAAQ,SAAS,IACvD,OAAS,MACTA,eAAa,IAAI,QAAQ,qBAAqB,EAEhD,CAAE,GAAGd,EAAA,CACd,CAiBO,SAASe,GAAWC,EAAuD,CAChF,MAAI,CAACA,GAAW,OAAOA,EAAQ,QAAW,UAAYA,EAAQ,OAAO,KAAA,IAAW,GACvE,QAAQ,OAAO,IAAI,MAAM,mDAAmD,CAAC,EAE/EF,EAAAA,aAAa,IAAI,QAAQ,cAAeE,CAAO,CACxD,CAsBA,eAAsBC,GAAgBD,EAAiE,CACrG,GAAI,CAACA,GAAW,OAAOA,EAAQ,OAAU,UAAYA,EAAQ,MAAM,KAAA,IAAW,GAC5E,OAAO,QAAQ,OAAO,IAAI,MAAM,kDAAkD,CAAC,EAGrF,MAAMT,EAAkB,MAAMO,EAAAA,aAAa,IAAI,QAAQ,SAAS,EAC1D90B,EAAO0zB,GAAqBa,GAAK,eAAe,iBAAiB,EACvE,GAAIv0B,IAAS,MACX,MAAM,IAAI,MAAM,+DAA+D,EAMjF,GAAIA,IAAS,aAAeu0B,GAAK,OAAS,MACxC,GAAI,CAMF,IALqB,MAAMN,GACzBa,eAAa,IAAI,QAAQ,qBAAqB,EAC9CjB,GACA,qBAAA,IAEgB,UAKhB,MAAO,CAAE,QAJU,MAAMkB,GAAW,CAClC,OAAQL,GAAoBM,EAAQ,MAAOA,EAAQ,YAAY,EAC/D,WAAYA,EAAQ,YAAclB,EAAA,CACnC,GAC2B,KAAM,OAAQ,WAAA,CAE9C,OAASpuB,EAAO,CACd,QAAQ,KAAK,wEAAyEA,CAAK,CAC7F,CAGF,MAAMwvB,EAAaF,EAAQ,aAAeT,GAAK,SAAS,UAAU,GAClE,GAAI,CAACW,EACH,MAAM,IAAI,MAAM,4EAA4E,EAG9F,MAAMC,EAAa,IAAI,gBACjBf,EAAQ,WAAW,IAAMe,EAAW,MAAA,EAASpB,EAAiB,EACpE,GAAI,CACF,MAAMqB,EAAW,MAAM,MAAM,GAAGd,GAAiBC,CAAG,CAAC,GAAGX,EAAgB,GAAI,CAC1E,OAAQ,OACR,OAAQuB,EAAW,OACnB,QAAS,CACP,eAAgB,mBAChB,cAAe,UAAUZ,EAAI,QAAQ,YAAY,EAAA,EAEnD,KAAM,KAAK,UAAU,CACnB,MAAOS,EAAQ,MACf,YAAaE,EACb,GAAI,MAAM,QAAQF,EAAQ,QAAQ,GAAKA,EAAQ,SAAS,OAAS,GAAK,CAAE,SAAUA,EAAQ,QAAA,CAAS,CACpG,CAAA,CACF,EACD,GAAI,CAACI,EAAS,GACZ,MAAM,IAAI,MAAM,cAAcA,EAAS,MAAM,EAAE,EASjD,MAAMC,GAHQ,MAAMD,EAAS,KAAA,IAGR,YAAc,CAAA,EACnC,MAAO,CACL,OAAQ,OAAOC,EAAO,QAAW,SAAWA,EAAO,OAAS,GAC5D,eAAgB,MAAM,QAAQA,EAAO,cAAc,EAAIA,EAAO,eAAiB,CAAA,EAC/E,GAAIA,EAAO,YAAc,CAAE,WAAYA,EAAO,UAAA,EAC9C,OAAQ,QAAA,CAEZ,OAAS3vB,EAAO,CAEd,MAAKA,GAA6B,OAAS,aACnC,IAAI,MAAM,6CAA6CquB,EAAiB,IAAI,EAE9EruB,CACR,QAAA,CACE,aAAa0uB,CAAK,CACpB,CACF,CC/NA,MAAMkB,GAAoB,6BAS1B,eAAeC,IAA6C,CAC1D,MAAMhB,EAAW,MAAMO,EAAAA,aAAa,IAAI,QAAQ,SAAS,EACnDU,EAAejB,GAAK,SAAS,eAAe,iCAAiC,GAAG,cAChFkB,EAAiBlB,GAAK,SAAS,cAAc,UAAU,cAC7D,IAAIzwB,EAAS0xB,GAAgBC,GAAkB,GAC/C,OAAI3xB,GAAU,CAACA,EAAO,WAAW,MAAM,IAAGA,EAAS,WAAWA,CAAM,IAE7D,CACL,OAAQywB,GAAK,MAAQA,GAAK,SAAS,QAAU,MAC7C,OAAAzwB,EACA,YAAaywB,GAAK,SAAS,cAAgB,GAC3C,WAAYA,GAAK,SAAS,UAAU,EAAA,CAExC,CAMA,MAAMmB,GAAiB,IACvB,IAAIC,GAA8E,KAElF,SAASC,IAA2C,CAClD,GAAID,IAAgB,KAAK,IAAA,EAAQA,GAAa,UAAYD,GACxD,OAAOC,GAAa,QAEtB,MAAM9wB,EAAU0wB,GAAA,EAChB,OAAAI,GAAe,CAAE,QAAA9wB,EAAS,UAAW,KAAK,KAAI,EAC9CA,EAAQ,MAAM,IAAM,CACd8wB,IAAc,UAAY9wB,IAAS8wB,GAAe,KACxD,CAAC,EACM9wB,CACT,CAEA,eAAegxB,GACbC,EACAjS,EACAkS,EACc,CAId,MAAMC,EAAOF,EAAI,SAAW,OAAO,OAAW,IAAc,OAAO,SAAS,OAAS,IAC/EtmB,EAAM,IAAI,IAAI,GAAGwmB,CAAI,GAAGV,EAAiB,GAAGzR,CAAI,EAAE,EACxD,OAAO,QAAQkS,EAAK,QAAU,CAAA,CAAE,EAAE,QAAQ,CAAC,CAAC71B,EAAKH,CAAK,IAAM,CAC/BA,GAAU,MAAMyP,EAAI,aAAa,IAAItP,EAAK,OAAOH,CAAK,CAAC,CACpF,CAAC,EAED,MAAMq1B,EAAW,MAAM,MAAM5lB,EAAI,WAAY,CAC3C,OAAQumB,EAAK,OACb,YAAa,UACb,QAAS,CACP,eAAgB,mBAChB,cAAe,UAAUD,EAAI,WAAW,GACxC,GAAIA,EAAI,WAAa,CAAE,gBAAiBA,EAAI,UAAA,EAAe,CAAA,CAAC,EAE9D,GAAIC,EAAK,OAAS,OAAY,CAAE,KAAM,KAAK,UAAUA,EAAK,IAAI,GAAM,CAAA,CAAC,CACtE,EAED,GAAI,CAACX,EAAS,GAAI,CAChB,IAAIa,EACJ,GAAI,CACFA,EAAY,MAAMb,EAAS,KAAA,CAC7B,MAAQ,CACNa,EAAY,MACd,CACA,MAAMvwB,EAAQ,IAAI,MAChB,0BAA0B0vB,EAAS,MAAM,GAAGa,GAAW,MAAQ,MAAMA,EAAU,KAAK,GAAK,EAAE,EAAA,EAE3F,MAAAvwB,EAAsC,OAAS0vB,EAAS,OACpD1vB,CACR,CAEA,GAAI0vB,EAAS,SAAW,KAAOA,EAAS,SAAW,IAAK,OAExD,MAAMc,EAAO,MAAMd,EAAS,KAAA,EAC5B,OAAOc,EAAO,KAAK,MAAMA,CAAI,EAAI,MACnC,CAKA,SAASC,GAAazwB,EAAY2I,EAAuB,CACvD,OACE3I,GAAO,aAAe2I,GACtB3I,GAAO,YAAc2I,GACrB3I,GAAO,OAAS2I,GACf,OAAO3I,GAAO,QAAW,UAAYA,EAAM,OAAO,SAAS2I,CAAI,GAC/D,OAAO3I,GAAO,SAAY,UAAYA,EAAM,QAAQ,SAAS2I,CAAI,CAEtE,CAEA,SAAS+nB,GAAqB1wB,EAAqB,CACjD,OAAOywB,GAAazwB,EAAO,iBAAiB,CAC9C,CAOA,SAAS2wB,GAAyB3wB,EAAqB,CACrD,OAAOywB,GAAazwB,EAAO,0BAA0B,CACvD,CAIA,SAAS4wB,GAAiBC,EAA2D,CACnF,GAAI,SAAS,KAAKA,CAAG,EAAG,OAAOA,EAAI,MAAM,EAAG,EAAE,EAAE,QAAQ,MAAO,GAAG,EAClE,GAAI,kBAAkB,KAAKA,CAAG,EAAG,OAAO,OAAOA,CAAG,EAClD,GAAI,UAAU,KAAKA,CAAG,EAAG,MAAO,GAChC,GAAI,WAAW,KAAKA,CAAG,EAAG,MAAO,GACjC,GAAI,UAAU,KAAKA,CAAG,EAAG,OAAO,IAElC,CAGA,SAASC,GAAoBC,EAAuB,CAClD,OAAOA,EAAM,QAAQ,kBAAmB,IAAI,CAC9C,CAGA,SAASC,GAAiBD,EAAgC,CACxD,MAAME,EAAkB,CAAA,EACxB,IAAIC,EAAU,GACVC,EAAU,GACV,EAAI,EACR,KAAO,EAAIJ,EAAM,QAAQ,CACvB,MAAMK,EAAOL,EAAM,CAAC,EACpB,GAAIK,IAAS,IAAK,CAChB,GAAID,GAAWJ,EAAM,EAAI,CAAC,IAAM,IAAK,CACnCG,GAAW,KACX,GAAK,EACL,QACF,CACAC,EAAU,CAACA,EACXD,GAAWE,EACX,GAAK,EACL,QACF,CACA,GAAI,CAACD,EAAS,CACZ,MAAME,EAAYN,EAAM,MAAM,CAAC,EAAE,MAAM,SAAS,EAChD,GAAIM,EAAW,CACbJ,EAAM,KAAKC,CAAO,EAClBA,EAAU,GACV,GAAKG,EAAU,CAAC,EAAE,OAClB,QACF,CACF,CACAH,GAAWE,EACX,GAAK,CACP,CACA,OAAID,EAAgB,MACpBF,EAAM,KAAKC,CAAO,EACXD,EACT,CAUA,SAASK,GAAgBrC,EAAqE,CAE5F,MAAMlkB,EADakkB,EAAM,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACrB,MAAM,iDAAiD,EAChF,GAAI,CAAClkB,EAAO,OAAO,KAEnB,MAAM3C,EAAO2C,EAAM,CAAC,EACdgmB,EAAQhmB,EAAM,CAAC,EACrB,GAAI,CAACgmB,EAAO,MAAO,CAAE,KAAA3oB,EAAM,WAAY,CAAA,CAAC,EACxC,GAAI,0CAA0C,KAAK0oB,GAAoBC,CAAK,CAAC,EAAG,OAAO,KAEvF,MAAMQ,EAAgBP,GAAiBD,CAAK,EAC5C,GAAI,CAACQ,EAAe,OAAO,KAE3B,MAAMC,EAA8B,CAAA,EACpC,UAAWC,KAAQF,EAAe,CAChC,MAAMG,EAAYD,EAAK,KAAA,EAAO,MAAM,6BAA6B,EACjE,GAAI,CAACC,EAAW,OAAO,KACvB,MAAMr3B,EAAQu2B,GAAiBc,EAAU,CAAC,EAAE,MAAM,EAClD,GAAIr3B,IAAU,OAAW,OAAO,KAChCm3B,EAAW,KAAK,CAAE,KAAME,EAAU,CAAC,EAAG,MAAAr3B,EAAO,CAC/C,CACA,MAAO,CAAE,KAAA+N,EAAM,WAAAopB,CAAA,CACjB,CAEA,SAASG,GAAarvB,EAAoBkvB,EAAsC,CAC9E,OAAOA,EAAW,MAAM,CAAC,CAAE,KAAArT,EAAM,MAAA9jB,KAAY,CAC3C,MAAMu3B,EAASzT,EAAK,MAAM,GAAG,EAAE,OAAO,CAAC0T,EAAUr3B,IAA2Cq3B,IAAIr3B,CAAG,EAAI8H,CAAK,EAC5G,OAAIjI,IAAU,KAAau3B,GAAW,KAClCA,GAAW,KAAqC,GAC7C,OAAOA,CAAM,IAAM,OAAOv3B,CAAK,CACxC,CAAC,CACH,CAYA,eAAsBy3B,GAAiBxC,EAAgE,CACrG,GAAI,CAACA,GAAS,MAAQ,OAAOA,EAAQ,MAAS,SAC5C,OAAO,QAAQ,OAAO,IAAI,MAAM,iDAAiD,CAAC,EAGpF,MAAMc,EAAM,MAAMF,GAAA,EAClB,GAAIE,EAAI,MACN,GAAI,CACF,OAAO,MAAMhB,EAAAA,aAAa,IAAI,QAAQ,qBAAsBE,CAAO,CACrE,OAAStvB,EAAY,CACnB,GAAI,CAAC0wB,GAAqB1wB,CAAK,GAAK,CAAC2wB,GAAyB3wB,CAAK,EAAG,MAAMA,CAC9E,CAEF,OAAOmwB,GAAgBC,EAAK,GAAI,CAAE,OAAQ,MAAO,OAAQd,EAAS,CACpE,CAgBA,eAAsByC,GAAkBzC,EAAyD,CAC/F,GAAI,CAACA,GAAS,MAAQ,OAAOA,EAAQ,MAAS,SAC5C,OAAO,QAAQ,OAAO,IAAI,MAAM,wCAAwC,CAAC,EAE3E,GAAI,CAACA,EAAQ,IAAM,CAACA,EAAQ,KAC1B,OAAO,QAAQ,OAAO,IAAI,MAAM,0DAA0D,CAAC,EAG7F,MAAMc,EAAM,MAAMF,GAAA,EAClB,GAAIE,EAAI,MACN,GAAI,CACF,OAAO,MAAMhB,EAAAA,aAAa,IAAI,QAAQ,sBAAuBE,CAAO,CACtE,OAAStvB,EAAY,CACnB,GAAI,CAAC2wB,GAAyB3wB,CAAK,EAAG,MAAMA,CAC9C,CAEF,OAAIsvB,EAAQ,GACHa,GAAgBC,EAAK,IAAI,mBAAmBd,EAAQ,EAAE,CAAC,GAAI,CAAE,OAAQ,MAAO,KAAM,CAAE,KAAMA,EAAQ,IAAA,EAAQ,EAE5Ga,GAAgBC,EAAK,GAAI,CAAE,OAAQ,OAAQ,KAAMd,EAAS,CACnE,CAYA,eAAsB0C,GAAkB1C,EAAkD,CACxF,GAAI,CAACA,GAAS,IAAM,OAAOA,EAAQ,IAAO,SACxC,OAAO,QAAQ,OAAO,IAAI,MAAM,+CAA+C,CAAC,EAGlF,MAAMc,EAAM,MAAMF,GAAA,EAClB,GAAIE,EAAI,MACN,GAAI,CACF,OAAO,MAAMhB,EAAAA,aAAa,IAAI,QAAQ,sBAAuBE,CAAO,CACtE,OAAStvB,EAAY,CACnB,GAAI,CAAC2wB,GAAyB3wB,CAAK,EAAG,MAAMA,CAC9C,CAEF,MAAMmwB,GAAgBC,EAAK,IAAI,mBAAmBd,EAAQ,EAAE,CAAC,GAAI,CAAE,OAAQ,QAAA,CAAU,CACvF,CAEA,eAAe2C,IAAoC,CACjD,GAAI,CACF,MAAO,EAAQ,MAAM7C,EAAAA,aAAa,IAAI,QAAQ,YAAY,CAC5D,MAAQ,CAGN,MAAO,EACT,CACF,CAKA,MAAM8C,GAAoB,IAY1B,eAAeC,GAAeC,EAGU,CACtC,GAAI,CACF,MAAMtW,EAAyB,CAAA,EAC/B,IAAIuW,EAAU,GACd,KAAOA,GAAS,CACd,MAAMp1B,EAA8B,MAAMmyB,EAAAA,aAAa,IAAI,QAAQ,qBAAsB,CACvF,KAAMgD,EAAO,KACb,MAAOF,GACP,OAAQpW,EAAQ,MAAA,CACjB,EACKwW,EAAOr1B,GAAQ,SAAW,CAAA,EAChC6e,EAAQ,KAAK,GAAGwW,CAAI,EAIpBD,EAAU,EAAQp1B,GAAQ,SAAYq1B,EAAK,OAAS,CACtD,CACA,MAAMC,EAAUzW,EAAQ,OAAQxZ,GAAUqvB,GAAarvB,EAAO8vB,EAAO,UAAU,CAAC,EAChF,MAAO,CAAE,QAASG,EAAS,WAAYA,EAAQ,OAAQ,QAAS,EAAA,CAClE,OAASvyB,EAAY,CACnB,GAAI0wB,GAAqB1wB,CAAK,GAAK2wB,GAAyB3wB,CAAK,EAAG,OAAO,KAC3E,MAAMA,CACR,CACF,CAoBA,eAAsBwyB,GAAWlD,EAA0D,CACzF,GAAI,CAACA,GAAS,OAAS,OAAOA,EAAQ,OAAU,SAC9C,OAAO,QAAQ,OAAO,IAAI,MAAM,kDAAkD,CAAC,EAGrF,MAAMc,EAAM,MAAMF,GAAA,EAClB,GAAIE,EAAI,MAAO,CACb,MAAMgC,EAASd,GAAgBhC,EAAQ,KAAK,EAC5C,IAAImD,EAAoB,GACxB,GAAIL,GAAW,MAAMH,KAAoB,CACvC,MAAMS,EAAQ,MAAMP,GAAeC,CAAM,EACzC,GAAIM,EAAO,OAAOA,EAClBD,EAAoB,EACtB,CACA,GAAI,CACF,OAAO,MAAMtC,GAAgBC,EAAK,QAAS,CAAE,OAAQ,OAAQ,KAAMd,EAAS,CAC9E,OAAStvB,EAAY,CAInB,GAAIoyB,GAAU,CAACK,GAAqBzyB,aAAiB,UAAW,CAC9D,MAAM0yB,EAAQ,MAAMP,GAAeC,CAAM,EACzC,GAAIM,EAAO,OAAOA,CACpB,CACA,MAAM1yB,CACR,CACF,CACA,OAAOmwB,GAAgBC,EAAK,QAAS,CAAE,OAAQ,OAAQ,KAAMd,EAAS,CACxE,CC/YO,SAASqD,GAAKrD,EAA8B,GAAqB,CACtE,OAAO,KAAK,IAAI,QAAQ,OAAQA,CAAO,CACzC,CAKO,SAASsD,GAAgBtD,EAAuD,CACrF,OAAO,KAAK,IAAI,QAAQ,oBAAqBA,CAAO,CACtD,CCOO,SAASuD,IAA8B,CAC5C,OAAO,KAAK,IAAI,QAAQ,SAAS,EAAE,KAAMhE,GAAoBrB,GAAKqB,EAAK,4BAA4B,CAAC,CACtG,CAIO,SAASiE,GAAaxD,EAAyC,CACpE,OAAO,KAAK,IAAI,QAAQ,iBAAkBA,CAAO,CACnD,CAEO,SAASyD,IAA8B,CAC5C,OAAO,KAAK,IAAI,QAAQ,YAAY,CACtC,CCzBO,SAASC,IAAoC,CAClD,OAAO,KAAK,IAAI,QAAQ,eAAe,CACzC,CCiBO,SAASC,GACd3D,EACwC,CACxC,OAAO,KAAK,IAAI,QAAQ,eAAgBA,CAAO,CACjD,CAEO,SAAS4D,GAAa5D,EAA4E,CACvG,OAAO,KAAK,IAAI,QAAQ,gBAAiBA,CAAO,CAClD,CAEO,SAAS6D,GAAa7D,EAAgE,CAC3F,OAAO,KAAK,IAAI,QAAQ,gBAAiBA,CAAO,CAClD,CAiBO,SAAS8D,GACd9D,EACyB,CACzB,IAAI+D,EAAc,GAClB,OAAI,OAAO,OAAW,MAEpBA,EADkB,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACpC,IAAI,OAAO,IAAM,QAAU,CAAC,CAAE,OAAe,OAEvEA,GAAe,QAAQ,KAAK,uBAAwB/D,CAAO,EAEpD,KAAK,IAAI,QAAQ,gBAAiBA,CAAO,EAAE,KAAMxvB,IACtDuzB,GAAe,QAAQ,KAAK,gCAAiCvzB,CAAG,EACzDA,EACR,CACH,CAsBO,SAASwzB,GAAuBhE,EAIX,CAC1B,OAAO,KAAK,IAAI,QAAQ,2BAA4BA,CAAO,CAC7D,CAWO,SAASiE,GAAUjE,EAIE,CAC1B,OAAO,KAAK,IAAI,QAAQ,aAAcA,CAAO,CAC/C,CAwBO,SAASkE,GAAiBlE,EAMU,CACzC,OAAO,KAAK,IAAI,QAAQ,6BAA8BA,CAAO,CAC/D,CAEO,SAASmE,GAAYnE,EAA4D,CACtF,OAAO,KAAK,IAAI,QAAQ,eAAgBA,CAAO,CACjD,CAEO,SAASoE,GAA0BpE,EAGN,CAClC,OAAO,KAAK,IAAI,QAAQ,+BAAgCA,CAAO,CACjE,CAEO,SAASqE,GAAerE,EAAmF,CAChH,OAAO,KAAK,IAAI,QAAQ,mBAAoBA,CAAO,CACrD,CAEO,SAASsE,GAAoBtE,EAA6D,CAC/F,OAAO,KAAK,IAAI,QAAQ,wBAAyBA,CAAO,CAC1D,CClKO,SAASuE,GACdvE,EAC4B,CAC5B,MAAMwE,EAAI,CAAE,GAAGxE,CAAA,EAEf,OAAIwE,EAAE,OACJA,EAAE,KAAO,MAAM,QAAQA,EAAE,IAAI,EAAIA,EAAE,KAAO,CAACA,EAAE,IAAI,GAG/CA,EAAE,eACJA,EAAE,aACA,MAAM,QAAQA,EAAE,YAAY,EAAIA,EAAE,aAAe,CAACA,EAAE,YAAY,GAI7D,KAAK,IAAI,QAAQ,YAAaA,CAAC,CACxC,CAEO,SAASC,GAAazE,EAAiD,CAC5E,OAAO,KAAK,IAAI,QAAQ,gBAAiBA,CAAO,CAClD,CAEO,SAAS0E,GAAa1E,EAA+D,CAC1F,IAAI2E,EAEJ,MAAI,CAAC3E,GAAS,UAAY,OAAO,OAAW,KAAe,OAAO,SAAS,KAAK,WAAW,SAAS,IAElG2E,EADc,OAAO,SAAS,KAAK,MAAM,8CAA8C,IACtE,CAAC,GAGbA,EACH,KAAK,IAAI,QAAQ,WAAY,CAAE,QAASA,CAAA,CAAQ,EAAE,KAAMC,GAAuBA,GAAM,UAAY,EAAE,EACnG,KAAK,IAAI,QAAQ,iBAAkB5E,CAAO,CAChD,CAEO,SAAS6E,GAAQ7E,EAA2F,CACjH,KAAM,CAAE,GAAApmB,EAAI,QAAAkrB,CAAA,EAAY9E,EACxB,OAAO,KAAK,IAAI,QAAQ,WAAY,CAAE,GAAGA,EAAS,QAASpmB,GAAMkrB,EAAS,CAC5E,CAEO,SAASC,GAAoB/E,EAGV,CACxB,OAAO,KAAK,IAAI,QAAQ,yBAA0BA,CAAO,CAC3D,CAEO,SAASgF,GAAWhF,EAAwE,CACjG,OAAO,KAAK,IAAI,QAAQ,cAAeA,CAAO,CAChD,CAEO,SAASiF,GAAWjF,EAAuD,CAChF,OAAO,KAAK,IAAI,QAAQ,cAAeA,CAAO,CAChD,CAEO,SAASkF,GAAWlF,EAA2E,CACpG,OAAO,KAAK,IAAI,QAAQ,cAAeA,CAAO,CAChD,CASO,SAASmF,IAAwC,CACtD,OAAO,KAAK,IAAI,QAAQ,oBAAoB,CAC9C,CASO,SAASC,GAAgBpF,EAAyC,CACvE,OAAO,KAAK,IAAI,QAAQ,oBAAqBA,CAAO,CACtD,CCjFO,SAASqF,GAAiBrF,EAGL,CAC1B,KAAM,CAAE,GAAApmB,EAAI,QAAAkrB,CAAA,EAAY9E,EACxB,OAAO,KAAK,IAAI,QAAQ,qBAAsB,CAAE,QAASpmB,GAAMkrB,EAAS,CAC1E,CCRO,SAASQ,GAAOtF,EAAoE,CACzF,OAAO,KAAK,IAAI,QAAQ,SAAUA,CAAO,CAC3C,CCEO,SAASuF,GAASvF,EAAwD,CAC/E,OAAO,KAAK,IAAI,QAAQ,YAAaA,CAAO,CAC9C,CAMO,SAASwF,GAAoBxF,EAA4E,CAC9G,OAAO,KAAK,IAAI,QAAQ,wBAAyBA,GAAW,CAAA,CAAE,CAChE,CAEO,SAASyF,IAAqB,CACnC,OAAO,KAAK,IAAI,QAAQ,sBAAsB,CAChD,CCbO,SAASC,GAAkB1F,EAG/B,CACD,OAAO,KAAK,IAAI,QAAQ,sBAAuBA,CAAO,CACxD,CAeO,SAAS2F,GAAkB3F,EAiBT,CACvB,OAAO,KAAK,IAAI,QAAQ,uBAAwBA,CAAO,CACzD,CC5CO,SAAS4F,GAAM5F,EAA2D,CAC/E,OAAO,KAAK,IAAI,QAAQ,QAASA,CAAO,CAC1C,CCMA,MAAM6F,OAAmB,IAAI,CAC3B,SACA,OACA,QACA,MACA,KACA,MACA,KACA,OACA,QACA,KACA,QACA,SACA,QACA,SACA,MACA,OACA,QACA,QACA,OACA,OACA,OACA,QACA,QACA,MACA,MACA,MACA,MACA,iBACA,iBACA,mBACA,gBACA,eACA,cACA,cACA,WACA,eACA,iBACA,cACA,cACA,gBACA,eACA,WACA,WACA,QACA,QACA,iBACA,KACA,SACA,OACA,OACA,OACA,MACA,QACA,QACA,OACA,WACA,SACA,OACA,SACA,kBACA,UACA,WACA,aACF,CAAC,EAGKC,GAAsB,CAAC,QAAS,MAAO,MAAO,MAAO,MAAO,gBAAgB,EAKlF,SAASC,GAAarR,EAAuB,CAC3C,OAAOmR,GAAa,IAAInR,EAAK,YAAA,CAAa,CAC5C,CAKA,SAASsR,GAAej7B,EAAwB,CAC9C,MAAMk7B,EAAUl7B,EAAM,KAAA,EA4BtB,MAzBK,GAAAk7B,EAAQ,WAAW,GAAG,GAAKA,EAAQ,SAAS,GAAG,GAAOA,EAAQ,WAAW,GAAG,GAAKA,EAAQ,SAAS,GAAG,GAKtG,kBAAkB,KAAKA,CAAO,GAK9B,kBAAkB,KAAKA,CAAO,GAK9B,UAAU,KAAKA,CAAO,GAKtB,yEAAyE,KAAKA,CAAO,GAMvF,6dAA6d,KAC3dA,CAAA,EAON,CAKA,SAASC,GAAkBC,EAAwB,CACjD,MAAO,yEAAyE,KAAKA,CAAK,CAC5F,CAUA,SAASC,GAAyBC,EAAeC,EAAuBC,EAA4C,CAClH,MAAMN,EAAUI,EAAM,KAAA,EAGtB,GAAIN,GAAaE,CAAO,GAAKD,GAAeC,CAAO,EACjD,OAAOA,EAKT,GAAIA,IAAY,6BACd,MAAO,IAAIK,CAAa,UAI1B,GAAIL,IAAY,IACd,MAAO,IAIT,GAAIA,EAAQ,WAAW,GAAG,GAAKA,EAAQ,SAAS,GAAG,EACjD,OAAOA,EAMT,GAAIA,EAAQ,SAAS,GAAG,EAAG,CAEzB,MAAMtE,EAAQsE,EAAQ,MAAM,GAAG,EACzBO,EAAQ7E,EAAM,CAAC,EACrB,GAAI4E,EAAc,IAAIC,EAAM,YAAA,CAAa,GAAKD,EAAc,IAAIC,EAAM,YAAA,CAAa,IAAMF,EAAe,CAEtG,MAAMG,EAAY9E,EAAM,MAAM,CAAC,EAAE,KAAK,GAAG,EACzC,MAAO,IAAI2E,CAAa,IAAIG,CAAS,GACvC,CAEA,MAAO,IAAIH,CAAa,IAAIL,CAAO,GACrC,CAGA,MAAO,IAAIK,CAAa,IAAIL,CAAO,GACrC,CAMA,SAASS,GAAyBC,EAAcL,EAAuBC,EAA4C,CACjH,UAAW7hB,KAAQohB,GAAqB,CACtC,MAAMc,EAAQ,IAAI,OAAO,MAAMliB,CAAI,oBAAqB,IAAI,EAC5DiiB,EAAOA,EAAK,QAAQC,EAAO,CAACC,EAAQC,IAAe,CACjD,MAAMC,EAAeD,EAAW,KAAA,EAEhC,GAAIC,IAAiB,IACnB,MAAO,GAAGriB,CAAI,MAGhB,GAAIqiB,EAAa,YAAA,EAAc,WAAW,WAAW,EAAG,CACtD,MAAMC,EAAYD,EAAa,UAAU,CAAC,EAAE,KAAA,EACtCE,EAAab,GAAyBY,EAAWV,EAAeC,CAAa,EACnF,MAAO,GAAG7hB,CAAI,aAAauiB,CAAU,GACvC,CACA,MAAMA,EAAab,GAAyBW,EAAcT,EAAeC,CAAa,EACtF,MAAO,GAAG7hB,CAAI,IAAIuiB,CAAU,GAC9B,CAAC,CACH,CACA,OAAON,CACT,CAKA,SAASO,GAAkBC,EAAgC,CACzD,MAAMC,EAAmB,CAAA,EACzB,IAAI/X,EAAQ,EACRgY,EAAe,GAEnB,QAAS,EAAI,EAAG,EAAIF,EAAa,OAAQ,IAAK,CAC5C,MAAMrF,EAAOqF,EAAa,CAAC,EAEvBrF,IAAS,KACXzS,IACAgY,GAAgBvF,GACPA,IAAS,KAClBzS,IACAgY,GAAgBvF,GACPA,IAAS,KAAOzS,IAAU,GAC/BgY,EAAa,QACfD,EAAO,KAAKC,EAAa,MAAM,EAEjCA,EAAe,IAEfA,GAAgBvF,CAEpB,CAEA,OAAIuF,EAAa,QACfD,EAAO,KAAKC,EAAa,MAAM,EAG1BD,CACT,CAKA,SAASE,GAAoBF,EAAkBd,EAAuBC,EAA8C,CAClH,OAAOa,EAAO,IAAKf,GAAU,CAE3B,MAAMkB,EAAalB,EAAM,MAAM,+CAA+C,EAC9E,IAAImB,EAAanB,EACbG,EAAQ,GAUZ,GARIe,IACFC,EAAaD,EAAW,CAAC,EAAE,KAAA,EAC3Bf,EAAQe,EAAW,CAAC,GAIDzB,GAAoB,KAAMphB,GAAS,IAAI,OAAO,MAAMA,CAAI,UAAW,GAAG,EAAE,KAAK8iB,CAAU,CAAC,EAE3F,CAChB,MAAMC,EAAYf,GAAyBc,EAAYlB,EAAeC,CAAa,EACnF,OAAOC,EAAQ,GAAGiB,CAAS,IAAIjB,CAAK,GAAKiB,CAC3C,CAGA,MAAMA,EAAYrB,GAAyBoB,EAAYlB,EAAeC,CAAa,EACnF,OAAOC,EAAQ,GAAGiB,CAAS,IAAIjB,CAAK,GAAKiB,CAC3C,CAAC,CACH,CASA,SAASC,GAAuBC,EAAwB,CAEtD,IAAIh6B,EAASg6B,EAAO,QAAQ,mBAAoB,cAAc,EAG9D,OAAAh6B,EAASA,EAAO,QAAQ,mBAAoB,cAAc,EAG1DA,EAASA,EAAO,QAAQ,kBAAmB,UAAU,EAE9CA,CACT,CAOA,SAASi6B,GAAmBC,EAAqBvB,EAAuBC,EAA4C,CAElH,IAAI54B,EAAS,GACT,EAAI,EACR,MAAMG,EAAM+5B,EAAY,OAExB,KAAO,EAAI/5B,GAAK,CACd,MAAMg0B,EAAO+F,EAAY,CAAC,EAG1B,GAAI,KAAK,KAAK/F,CAAI,EAAG,CACnBn0B,GAAUm0B,EACV,IACA,QACF,CAGA,GAAIA,IAAS,KAAOA,IAAS,IAAK,CAChC,MAAMvT,EAAQuT,EAGd,IAFAn0B,GAAUm0B,EACV,IACO,EAAIh0B,GAAO+5B,EAAY,CAAC,IAAMtZ,GAE/BsZ,EAAY,CAAC,IAAM,MAAQ,EAAI,EAAI/5B,GACrCH,GAAUk6B,EAAY,CAAC,EAAIA,EAAY,EAAI,CAAC,EAC5C,GAAK,IAELl6B,GAAUk6B,EAAY,CAAC,EACvB,KAGA,EAAI/5B,IACNH,GAAUk6B,EAAY,CAAC,EACvB,KAEF,QACF,CAGA,GAAI,YAAY,KAAK/F,CAAI,EAAG,CAC1Bn0B,GAAUm0B,EACV,KAEKA,IAAS,KAAOA,IAAS,KAAOA,IAAS,MAAQ,EAAIh0B,GAAO+5B,EAAY,CAAC,IAAM,MAClFl6B,GAAUk6B,EAAY,CAAC,EACvB,KAEF,QACF,CAGA,GAAI,YAAY,KAAK/F,CAAI,EAAG,CAC1B,IAAIgG,EAAa,GACjB,KAAO,EAAIh6B,GAAO,gBAAgB,KAAK+5B,EAAY,CAAC,CAAC,GACnDC,GAAcD,EAAY,CAAC,EAC3B,IAIE9B,GAAa+B,CAAU,GAAK9B,GAAe8B,CAAU,EACvDn6B,GAAUm6B,EAGVn6B,GAAUy4B,GAAyB0B,EAAYxB,EAAeC,CAAa,EAE7E,QACF,CAGA,GAAI,SAAS,KAAKzE,CAAI,EAAG,CACvB,IAAIqE,EAAQ,GASZ,IANIrE,IAAS,MACXqE,GAASrE,EACT,KAIK,EAAIh0B,GAAO,eAAe,KAAK+5B,EAAY,CAAC,CAAC,GAClD1B,GAAS0B,EAAY,CAAC,EACtB,IAIE3B,GAAkBC,CAAK,EACzBx4B,GAAU,IAAIw4B,CAAK,IAEnBx4B,GAAUw4B,EAEZ,QACF,CAGAx4B,GAAUm0B,EACV,GACF,CAGA,OAAAn0B,EAAS+5B,GAAuB/5B,CAAM,EAE/BA,CACT,CAKA,SAASo6B,GAAmBC,EAAoE,CAC9F,MAAMr6B,EAAsD,CAAA,EAGtDg0B,EAAQqG,EAAc,MAAM,eAAe,EAEjD,UAAW7F,KAAQR,EAAO,CACxB,MAAMsE,EAAU9D,EAAK,KAAA,EACrB,GAAI,CAAC8D,EAAS,SAGd,MAAMxqB,EAAQwqB,EAAQ,MAAM,oDAAoD,EAEhF,GAAIxqB,EAAO,CACT,MAAM4qB,EAAQ5qB,EAAM,CAAC,EAAE,KAAA,EACvB,IAAIwsB,EAAYxsB,EAAM,CAAC,EAAIA,EAAM,CAAC,EAAE,cAAgB,GAChDA,EAAM,CAAC,IACTwsB,IAAcA,EAAY,IAAM,IAAMxsB,EAAM,CAAC,EAAE,YAAA,GAEjD9N,EAAO,KAAK,CAAE,MAAA04B,EAAO,UAAA4B,CAAA,CAAW,CAClC,MACEt6B,EAAO,KAAK,CAAE,MAAOs4B,EAAS,UAAW,GAAI,CAEjD,CAEA,OAAOt4B,CACT,CAKA,SAASu6B,GACPC,EACA7B,EACAC,EACU,CACV,OAAO4B,EAAa,IAAI,CAAC,CAAE,MAAA9B,EAAO,UAAA4B,KAAgB,CAEhD,MAAMG,EAAetC,GAAoB,KAAMphB,GAAS,IAAI,OAAO,MAAMA,CAAI,UAAW,GAAG,EAAE,KAAK2hB,CAAK,CAAC,EAExG,IAAIgC,EACJ,OAAID,EACFC,EAAiB3B,GAAyBL,EAAOC,EAAeC,CAAa,EAE7E8B,EAAiBjC,GAAyBC,EAAOC,EAAeC,CAAa,EAGxE0B,EAAY,GAAGI,CAAc,IAAIJ,CAAS,GAAKI,CACxD,CAAC,CACH,CAKA,SAASC,GAAmBC,EAAiC,CAC3D,OAAOA,EACJ,MAAM,eAAe,EACrB,IAAKC,GAAMA,EAAE,KAAA,CAAM,EACnB,OAAO,OAAO,CACnB,CAKA,SAASC,GAAqBrB,EAAkBd,EAAuBC,EAA8C,CACnH,OAAOa,EAAO,IAAKf,GAEb,uBAAuB,KAAKA,CAAK,EAC5BA,EAAM,QAAQ,eAAgB,CAACQ,EAAQ6B,IAGrC,IAFaA,EAAM,MAAM,GAAG,EAAE,IAAKF,GAAcA,EAAE,MAAM,EAClC,IAAKA,GAAcpC,GAAyBoC,EAAGlC,EAAeC,CAAa,CAAC,EACrF,KAAK,IAAI,CAAC,GAChC,EAEIH,GAAyBC,EAAOC,EAAeC,CAAa,CACpE,CACH,CAMA,SAASoC,GAAgBC,EAIvB,CACA,MAAMC,EAA8E,CAAA,EAG9EC,EAAeF,EAAW,MAAM,6DAA6D,EAEnG,GAAI,CAACE,EACH,MAAO,CAAE,QAAS,GAAI,MAAAD,CAAA,EAGxB,MAAME,EAAUD,EAAa,CAAC,EACxBtC,EAAQsC,EAAa,CAAC,EAGtBE,EACJ,6JACF,IAAIC,EAEJ,MAAQA,EAAYD,EAAU,KAAKJ,CAAU,KAAO,MAClDC,EAAM,KAAK,CACT,KAAMI,EAAU,CAAC,EAAE,cAAc,QAAQ,OAAQ,GAAG,EACpD,OAAQA,EAAU,CAAC,EACnB,MAAOA,EAAU,CAAC,EAClB,GAAIA,EAAU,CAAC,GAAG,KAAA,CAAK,CACxB,EAGH,MAAO,CAAE,QAAAF,EAAS,MAAAvC,EAAO,MAAAqC,CAAA,CAC3B,CAOA,SAASK,GAAiBvJ,EAA6D,CACrF,MAAMwJ,EAAuB,CAAA,EAC7B,IAAIC,EAAa,GACb/Z,EAAQ,EACRga,EAAkB,GAClBC,EAAa,GAEjB,QAASv7B,EAAI,EAAGA,EAAI4xB,EAAM,OAAQ5xB,IAAK,CACrC,MAAM+zB,EAAOnC,EAAM5xB,CAAC,EAEpB,GAAI+zB,IAAS,IAAK,CAEhB,GADAzS,IACIA,IAAU,EAAG,CAIf,MAAMpJ,EAAY0Z,EAAM,UAAU5xB,EAAI,CAAC,EAAE,UAAA,EACzC,GAAI,aAAa,KAAKkY,CAAS,EAAG,CAChCqjB,EAAa,GACbD,EAAkBvH,EAClB,QACF,CACF,CACIwH,EACFD,GAAmBvH,EAEnBsH,GAActH,CAElB,MAAWA,IAAS,IACdwH,GACFD,GAAmBvH,EACnBzS,IACIA,IAAU,IAEZ8Z,EAAW,KAAKE,CAAe,EAC/BA,EAAkB,GAClBC,EAAa,MAGfja,IACA+Z,GAActH,GAGZwH,EACFD,GAAmBvH,EAEnBsH,GAActH,CAGpB,CAEA,MAAO,CAAE,WAAAsH,EAAY,WAAAD,CAAA,CACvB,CAOO,SAASI,GAAmB5J,EAAqE,CACtG,KAAM,CAAE,WAAAyJ,CAAA,EAAeF,GAAiBvJ,CAAK,EAEvC6J,EAAYJ,EAAW,MAC3B,6JAAA,EAIF,MAAO,CAAE,cADaI,EAAYA,EAAU,CAAC,EAAI,KACzB,WAAAJ,CAAA,CAC1B,CAuCO,SAASK,GAAwBC,EAA2B,CACjE,GAAI,CAACA,GAAa,OAAOA,GAAc,SACrC,MAAO,GAIT,IAAIC,EAAkBD,EAAU,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAGrD,KAAM,CAAE,cAAApD,EAAe,WAAA8C,GAAeG,GAAmBI,CAAe,EAExE,GAAI,CAACrD,EACH,OAAOoD,EAGTC,EAAkBP,EAMlBO,EAAkBA,EAAgB,QAChC,+CACA,4BAAA,EAIF,MAAMC,EAAcD,EAAgB,MAAM,gCAAgC,EAC1E,GAAI,CAACC,EACH,OAAOF,EAIT,MAAMF,EAAYG,EAAgB,MAChC,gHAAA,EAIIE,EAAaL,EAAYb,GAAgBa,EAAU,CAAC,EAAE,MAAM,EAAI,CAAoC,EAGpGM,EAAaH,EAAgB,MACjC,qGAAA,EAEII,EAAeJ,EAAgB,MACnC,yFAAA,EAEIK,EAAcL,EAAgB,MAAM,wEAAwE,EAC5GM,EAAeN,EAAgB,MAAM,2DAA2D,EAChGO,EAAaP,EAAgB,MAAM,gBAAgB,EACnDQ,EAAcR,EAAgB,MAAM,iBAAiB,EAKrDpD,MAAoB,IACtBsD,EAAW,OACbtD,EAAc,IAAIsD,EAAW,MAAM,YAAA,EAAevD,CAAa,EAEjEC,EAAc,IAAID,EAAc,YAAA,EAAeA,CAAa,EAG5D,MAAM3E,EAAkB,CAAA,EAGlByI,EAAelD,GAAkB0C,EAAY,CAAC,EAAE,MAAM,EACtDS,EAAoB/C,GAAoB8C,EAAc9D,EAAeC,CAAa,EACxF5E,EAAM,KAAK,UAAU0I,EAAkB,KAAK,IAAI,CAAC,EAAE,EAGnD1I,EAAM,KAAK,SAAS2E,CAAa,GAAG,EAGpC,MAAMgE,EAA4B,CAAA,EAGlC,GAAIR,EAAY,CACd,MAAMS,EAAa3C,GAAmBkC,EAAW,CAAC,EAAE,KAAA,EAAQxD,EAAeC,CAAa,EACxF+D,EAAgB,KAAKC,CAAU,CACjC,CAQA,GALID,EAAgB,OAAS,GAC3B3I,EAAM,KAAK,SAAS2I,EAAgB,KAAK,OAAO,CAAC,EAAE,EAIjDP,EAAc,CAChB,MAAMS,EAAgBlC,GAAmByB,EAAa,CAAC,EAAE,MAAM,EACzDU,GAAehC,GAAqB+B,EAAelE,EAAeC,CAAa,EACrF5E,EAAM,KAAK,YAAY8I,GAAa,KAAK,IAAI,CAAC,EAAE,CAClD,CAGA,GAAIT,EAAa,CACf,MAAMU,EAAc9C,GAAmBoC,EAAY,CAAC,EAAE,KAAA,EAAQ1D,EAAeC,CAAa,EAC1F5E,EAAM,KAAK,UAAU+I,CAAW,EAAE,CACpC,CAGA,GAAIT,EAAc,CAChB,MAAM9B,EAAeJ,GAAmBkC,EAAa,CAAC,EAAE,MAAM,EACxDU,GAAezC,GAAqBC,EAAc7B,EAAeC,CAAa,EACpF5E,EAAM,KAAK,YAAYgJ,GAAa,KAAK,IAAI,CAAC,EAAE,CAClD,CAGA,OAAIT,GACFvI,EAAM,KAAK,SAASuI,EAAW,CAAC,CAAC,EAAE,EAIjCC,GACFxI,EAAM,KAAK,UAAUwI,EAAY,CAAC,CAAC,EAAE,EAGhCxI,EAAM,KAAK,GAAG,CACvB,CChuBO,SAAShC,GAAMK,EAAuB,CAC3C,OAAOF,EAAAA,aAAa,IAAI,QAAQ,QAASE,CAAO,CAClD,CAEO,SAAS4K,GAAS5K,EAAwC,CAC/D,OAAOF,EAAAA,aAAa,IAAI,QAAQ,YAAaE,CAAO,CACtD,CAMA,SAAS6K,GAAsBnB,EAA6B,CAC1D,KAAM,CAAE,WAAAN,GAAeG,GAAmBG,EAAU,QAAQ,OAAQ,GAAG,EAAE,MAAM,EACzEE,EAAcR,EAAW,MAAM,gCAAgC,EACrE,GAAI,CAACQ,EAAa,MAAO,CAAA,EAEzB,MAAMzC,EAAeyC,EAAY,CAAC,EAC5BxC,EAAmB,CAAA,EACzB,IAAI/X,EAAQ,EACRgY,EAAe,GAEnB,QAASt5B,EAAI,EAAGA,EAAIo5B,EAAa,OAAQp5B,IAAK,CAC5C,MAAM+zB,EAAOqF,EAAap5B,CAAC,EAEvB+zB,IAAS,KACXzS,IACAgY,GAAgBvF,GACPA,IAAS,KAClBzS,IACAgY,GAAgBvF,GACPA,IAAS,KAAOzS,IAAU,GAC/BgY,EAAa,QACfD,EAAO,KAAKC,EAAa,MAAM,EAEjCA,EAAe,IAEfA,GAAgBvF,CAEpB,CAEA,OAAIuF,EAAa,QACfD,EAAO,KAAKC,EAAa,MAAM,EAI1BD,EAAO,IAAKf,GAAU,CAE3B,MAAMkB,EAAalB,EAAM,MAAM,+CAA+C,EAK9E,OAJkBkB,EAAaA,EAAW,CAAC,EAAE,KAAA,EAASlB,EAAM,KAAA,CAK9D,CAAC,CACH,CAKA,SAASyE,GAAsBpB,EAA2B,CACxD,KAAM,CAAE,cAAApD,GAAkBiD,GAAmBG,EAAU,QAAQ,OAAQ,GAAG,EAAE,MAAM,EAClF,OAAOpD,GAAiB,EAC1B,CAOA,SAASyE,GAAkB97B,EAA0B4f,EAAc9jB,EAAkB,CACnF,MAAM42B,EAAQ9S,EAAK,MAAM,GAAG,EAE5B,GAAI8S,EAAM,SAAW,EAAG,CAEtB1yB,EAAI4f,CAAI,EAAI9jB,EACZ,MACF,CAGA,IAAI62B,EAAU3yB,EACd,QAASlB,EAAI,EAAGA,EAAI4zB,EAAM,OAAS,EAAG5zB,IAAK,CACzC,MAAMo0B,EAAOR,EAAM5zB,CAAC,GAChB,CAAC6zB,EAAQO,CAAI,GAAK,OAAOP,EAAQO,CAAI,GAAM,YAC7CP,EAAQO,CAAI,EAAI,CAAA,GAElBP,EAAUA,EAAQO,CAAI,CACxB,CACAP,EAAQD,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAI52B,CACrC,CAMA,SAASigC,GAAoB3E,EAAwB,CACnD,MAAMJ,EAAUI,EAAM,KAAA,EACtB,OAAOJ,IAAY,KAAO,8CAA8C,KAAKA,CAAO,CACtF,CAkBA,SAASgF,GAA2BC,EAA4B9D,EAAkB+D,EAA2B,CAC3G,MAAI,CAACD,GAAqB,CAAC,MAAM,QAAQA,CAAiB,EACjD,CAAA,EAGFA,EAAkB,IAAKE,GAAQ,CACpC,MAAMC,EAA8B,CAAA,EAGpCjE,EAAO,QAAQ,CAACf,EAAOnzB,IAAU,CAC/B,GAAIA,EAAQk4B,EAAI,OAAQ,CACtB,MAAMrgC,EAAQqgC,EAAIl4B,CAAK,EAKnB83B,GAAoB3E,CAAK,EACvBt7B,GAAS,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,GAE5D,OAAO,OAAOsgC,EAAQtgC,CAAK,EAI7BggC,GAAkBM,EAAQhF,EAAOt7B,CAAK,CAE1C,CACF,CAAC,EAID,MAAMugC,EAAWD,EAAO,IAASA,EAAO,IAAS,GACjD,OAAAA,EAAO,WAAgB,CACrB,KAAMF,EACN,IAAKG,EAAW,iCAAiCH,CAAU,IAAIG,CAAQ,GAAK,EAAA,EAGvED,CACT,CAAC,CACH,CAiBA,eAAsBE,GAAiBvL,EAAwC,CAC7E,MAAML,EAAQK,EAAQ,MAEtB,GAAI,CAACL,GAAS,OAAOA,GAAU,SAC7B,OAAO,QAAQ,OAAO,IAAI,MAAM,wCAAwC,CAAC,EAI3E,IAAI6L,EAAgB,GACpB,GAAI,CACF,MAAMjM,EAAW,MAAMO,EAAAA,aAAa,IAAI,QAAQ,SAAS,EACnD2L,EAAQlM,GAAK,OAAS,MACtBmM,EAAoBnM,GAAK,eAAe,uBAAyB,GACvEiM,EAAgBC,GAASC,CAC3B,MAAQ,CACNF,EAAgB,EAClB,CAGA,GADA,QAAQ,IAAI,oCAAqC7L,CAAK,EAClD6L,EAAe,CAEjB,MAAMpE,EAASyD,GAAsBlL,CAAK,EACpCwL,EAAaL,GAAsBnL,CAAK,EAG9C,IAAIgM,EAAalC,GAAwB9J,CAAK,EAI9C,GAAI,CAACgM,EAAW,SAAS,qBAAqB,EAAG,CAE/C,MAAMrF,EADYqF,EAAW,MAAM,4BAA4B,IAC7B,CAAC,EACnC,GAAIrF,EAAe,CACjB,MAAMsF,EAAS,KAAKtF,CAAa,iCAAiCA,CAAa,uCAAuCA,CAAa,iCAC/HqF,EAAW,SAAS,SAAS,EAG/BA,EAAaA,EAAW,QACtB,yGACA,CAACE,EAAG3J,IAAe,WAAWA,CAAU,SAAS0J,CAAM,EAAA,EAIzDD,EAAaA,EAAW,QACtB,2FACA,CAACE,EAAGjD,EAAYkD,IAAS,GAAGlD,CAAU,UAAUgD,CAAM,GAAGE,CAAI,EAAA,CAGnE,CACF,CAEA,QAAQ,IAAI,iCAAkCH,CAAU,EAGxD,MAAMT,EAAoB,MAAMa,GAAc,CAAE,MAAOJ,EAAY,EAG7DK,EAAUf,GAA2BC,EAAmB9D,EAAQ+D,CAAU,EAChF,eAAQ,IAAI,yBAA0Ba,CAAO,EAEtC,CACL,QAAAA,EACA,UAAWA,EAAQ,MAAA,CAEvB,CAGA,OAAOpB,GAAS5K,CAAO,CACzB,CAeO,SAAS+L,GAAc/L,EAA+C,CAC3E,MAAML,EAAQK,EAAQ,MAGtB,MAAI,CAACL,GAAS,OAAOA,GAAU,SACtB,QAAQ,OAAO,IAAI,MAAM,wCAAwC,CAAC,EAGjD,iBACH,KAAKA,EAAM,KAAA,CAAM,EAQjCG,EAAAA,aAAa,IAAI,QAAQ,kBAAmBE,CAAO,EAPjD,QAAQ,OACb,IAAI,MACF,wGAAA,CACF,CAKN,CAcO,SAASiM,GAAuBjM,EAAsD,CAC3F,GAAI,CAACA,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC,EAGxD,MAAMmL,EAAanL,EAAQ,OAE3B,MAAI,CAACmL,GAAc,OAAOA,GAAe,UAAYA,EAAW,KAAA,IAAW,GAClE,QAAQ,OAAO,IAAI,MAAM,wDAAwD,CAAC,EAIzFnL,EAAQ,iBAAmB,SAC1B,OAAOA,EAAQ,gBAAmB,UAAYA,EAAQ,eAAe,KAAA,IAAW,IAE1E,QAAQ,OAAO,IAAI,MAAM,uDAAuD,CAAC,EAGnFF,EAAAA,aAAa,IAAI,QAAQ,4BAA6BE,CAAO,CACtE,CA4CO,SAASkM,GAAsBlM,EAAgD,CACpF,GAAI,CAACA,GAAW,CAACA,EAAQ,SAAW,CAAC,MAAM,QAAQA,EAAQ,OAAO,EAChE,OAAO,QAAQ,OAAO,IAAI,MAAM,0CAA0C,CAAC,EAG7E,GAAIA,EAAQ,QAAQ,SAAW,EAC7B,OAAO,QAAQ,OAAO,IAAI,MAAM,+BAA+B,CAAC,EAGlE,UAAW/wB,KAAO+wB,EAAQ,QAAS,CACjC,GAAI,CAAC/wB,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,yDAAyD,CAAC,EAG5F,GAAI,CAACA,EAAI,YAAc,OAAOA,EAAI,YAAe,UAAYA,EAAI,WAAW,KAAA,IAAW,GACrF,OAAO,QAAQ,OAAO,IAAI,MAAM,oDAAoD,CAAC,EAIvF,GAAIA,EAAI,mBAAqB,SACvB,OAAOA,EAAI,kBAAqB,UAAYA,EAAI,iBAAiB,KAAA,IAAW,IAC9E,OAAO,QAAQ,OACb,IAAI,MACF,oBAAoBA,EAAI,UAAU,4EAAA,CACpC,EAKN,GAAI,CAACA,EAAI,SAAW,CAAC,MAAM,QAAQA,EAAI,OAAO,GAAKA,EAAI,QAAQ,SAAW,EACxE,OAAO,QAAQ,OAAO,IAAI,MAAM,oBAAoBA,EAAI,UAAU,sCAAsC,CAAC,EAI3G,QAASlB,EAAI,EAAGA,EAAIkB,EAAI,QAAQ,OAAQlB,IAAK,CAC3C,MAAMs9B,EAASp8B,EAAI,QAAQlB,CAAC,EAC5B,GAAI,CAACs9B,GAAU,OAAOA,GAAW,UAAY,MAAM,QAAQA,CAAM,EAC/D,OAAO,QAAQ,OACb,IAAI,MACF,oBAAoBp8B,EAAI,UAAU,sCAAsClB,CAAC,sEAAA,CAC3E,CAGN,CACF,CAEA,eAAQ,IAAI,2CAA4C,KAAK,UAAUiyB,EAAS,KAAM,CAAC,CAAC,EAEjFF,EAAAA,aAAa,IAAI,QAAQ,2BAA4BE,CAAO,EAChE,KAAMryB,IACL,QAAQ,IAAI,mCAAoCA,CAAM,EAC/CA,EACR,EACA,MAAO+C,GAAU,CAChB,cAAQ,MAAM,iCAAkCA,CAAK,EAC/CA,CACR,CAAC,CACL,CAiBO,SAASy7B,GAA8BnM,EAA6D,CACzG,GAAI,CAACA,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC,EAGxD,MAAMmL,EAAanL,EAAQ,OAE3B,MAAI,CAACmL,GAAc,OAAOA,GAAe,UAAYA,EAAW,KAAA,IAAW,GAClE,QAAQ,OAAO,IAAI,MAAM,wDAAwD,CAAC,EAGpFrL,EAAAA,aAAa,IAAI,QAAQ,oCAAqCE,CAAO,CAC9E,CAkBO,SAASoM,GAAqBpM,EAAoD,CACvF,GAAI,CAACA,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC,EAGxD,MAAMmL,EAAanL,EAAQ,OAE3B,MAAI,CAACmL,GAAc,OAAOA,GAAe,UAAYA,EAAW,KAAA,IAAW,GAClE,QAAQ,OAAO,IAAI,MAAM,wDAAwD,CAAC,EAGpFrL,EAAAA,aAAa,IAAI,QAAQ,0BAA2BE,CAAO,CACpE,CA0BO,SAASqM,GAAsBrM,EAAqD,CACzF,GAAI,CAACA,GAAW,CAACA,EAAQ,SAAW,CAAC,MAAM,QAAQA,EAAQ,OAAO,EAChE,OAAO,QAAQ,OAAO,IAAI,MAAM,0CAA0C,CAAC,EAG7E,GAAIA,EAAQ,QAAQ,SAAW,EAC7B,OAAO,QAAQ,OAAO,IAAI,MAAM,+BAA+B,CAAC,EAGlE,UAAW/wB,KAAO+wB,EAAQ,QAAS,CACjC,GAAI,CAAC/wB,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,yDAAyD,CAAC,EAG5F,GAAI,CAACA,EAAI,YAAc,OAAOA,EAAI,YAAe,UAAYA,EAAI,WAAW,KAAA,IAAW,GACrF,OAAO,QAAQ,OAAO,IAAI,MAAM,oDAAoD,CAAC,EAGvF,GAAI,CAACA,EAAI,KAAO,CAAC,MAAM,QAAQA,EAAI,GAAG,GAAKA,EAAI,IAAI,SAAW,EAC5D,OAAO,QAAQ,OAAO,IAAI,MAAM,oBAAoBA,EAAI,UAAU,kCAAkC,CAAC,EAIvG,QAASlB,EAAI,EAAGA,EAAIkB,EAAI,IAAI,OAAQlB,IAAK,CACvC,MAAM6L,EAAK3K,EAAI,IAAIlB,CAAC,EACpB,GAAI,CAAC6L,GAAM,OAAOA,GAAO,UAAYA,EAAG,KAAA,IAAW,GACjD,OAAO,QAAQ,OACb,IAAI,MACF,oBAAoB3K,EAAI,UAAU,iCAAiClB,CAAC,sCAAA,CACtE,CAGN,CACF,CAEA,eAAQ,IAAI,2CAA4C,KAAK,UAAUiyB,EAAS,KAAM,CAAC,CAAC,EAEjFF,EAAAA,aAAa,IAAI,QAAQ,2BAA4BE,CAAO,EAChE,KAAMryB,IACL,QAAQ,IAAI,mCAAoCA,CAAM,EAC/CA,EACR,EACA,MAAO+C,GAAU,CAChB,cAAQ,MAAM,iCAAkCA,CAAK,EAC/CA,CACR,CAAC,CACL,CAoBO,SAAS47B,GAAUtM,EAAyC,CACjE,GAAI,CAACA,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC,EAGxD,GAAI,CAACA,EAAQ,SAAW,OAAOA,EAAQ,SAAY,UAAYA,EAAQ,QAAQ,KAAA,IAAW,GACxF,OAAO,QAAQ,OAAO,IAAI,MAAM,oDAAoD,CAAC,EAGvF,GAAI,CAACA,EAAQ,SAAW,CAAC,MAAM,QAAQA,EAAQ,OAAO,GAAKA,EAAQ,QAAQ,SAAW,EACpF,OAAO,QAAQ,OAAO,IAAI,MAAM,mDAAmD,CAAC,EAGtF,QAASjyB,EAAI,EAAGA,EAAIiyB,EAAQ,QAAQ,OAAQjyB,IAAK,CAC/C,MAAMs9B,EAASrL,EAAQ,QAAQjyB,CAAC,EAChC,GAAI,CAACs9B,GAAU,OAAOA,GAAW,UAAY,MAAM,QAAQA,CAAM,EAC/D,OAAO,QAAQ,OACb,IAAI,MAAM,6CAA6Ct9B,CAAC,sCAAsC,CAAA,CAGpG,CAEA,OAAO+xB,EAAAA,aAAa,IAAI,QAAQ,aAAcE,CAAO,CACvD,CAsBO,SAASuM,GAAUvM,EAAyC,CACjE,GAAI,CAACA,EACH,OAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC,EAGxD,GAAI,CAACA,EAAQ,SAAW,OAAOA,EAAQ,SAAY,UAAYA,EAAQ,QAAQ,KAAA,IAAW,GACxF,OAAO,QAAQ,OAAO,IAAI,MAAM,oDAAoD,CAAC,EAGvF,GAAI,CAACA,EAAQ,SAAW,CAAC,MAAM,QAAQA,EAAQ,OAAO,GAAKA,EAAQ,QAAQ,SAAW,EACpF,OAAO,QAAQ,OAAO,IAAI,MAAM,mDAAmD,CAAC,EAGtF,GACE,CAACA,EAAQ,mBACT,OAAOA,EAAQ,mBAAsB,UACrCA,EAAQ,kBAAkB,KAAA,IAAW,GAErC,OAAO,QAAQ,OAAO,IAAI,MAAM,8DAA8D,CAAC,EAGjG,QAASjyB,EAAI,EAAGA,EAAIiyB,EAAQ,QAAQ,OAAQjyB,IAAK,CAC/C,MAAMs9B,EAASrL,EAAQ,QAAQjyB,CAAC,EAChC,GAAI,CAACs9B,GAAU,OAAOA,GAAW,UAAY,MAAM,QAAQA,CAAM,EAC/D,OAAO,QAAQ,OACb,IAAI,MAAM,6CAA6Ct9B,CAAC,sCAAsC,CAAA,CAGpG,CAEA,OAAO+xB,EAAAA,aAAa,IAAI,QAAQ,aAAcE,CAAO,CACvD,CAqBO,SAASwM,GAAYxM,EAA2C,CACrE,OAAKA,EAID,CAACA,EAAQ,SAAW,OAAOA,EAAQ,SAAY,UAAYA,EAAQ,QAAQ,KAAA,IAAW,GACjF,QAAQ,OAAO,IAAI,MAAM,oDAAoD,CAAC,EAGhFF,EAAAA,aAAa,IAAI,QAAQ,eAAgBE,CAAO,EAP9C,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC,CAQ1D,CA2BO,SAASyM,GAAUzM,EAAyC,CACjE,OAAKA,EAID,CAACA,EAAQ,SAAW,OAAOA,EAAQ,SAAY,UAAYA,EAAQ,QAAQ,KAAA,IAAW,GACjF,QAAQ,OAAO,IAAI,MAAM,oDAAoD,CAAC,EAGhFF,EAAAA,aAAa,IAAI,QAAQ,aAAcE,CAAO,EAP5C,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC,CAQ1D,CC9rBO,SAAS0M,GAAW1M,EAA0D,CACnF,OAAO,KAAK,IAAI,QAAQ,cAAeA,CAAO,CAChD,CAQO,SAAS2M,GAAU3M,EAAwC,CAAE,GAAI,QAAmC,CACzG,OAAO,KAAK,IAAI,QAAQ,aAAcA,CAAO,CAC/C,CAOO,SAAS4M,GAAa5M,EAA4E,CACvG,OAAO,KAAK,IAAI,QAAQ,gBAAiBA,CAAO,CAClD,CASO,SAAS6M,GAAa7M,EAAuD,CAClF,OAAO,KAAK,IAAI,QAAQ,gBAAiBA,CAAO,CAClD,CAQO,SAAS8M,GAAa9M,EAA6D,CACxF,OAAO,KAAK,IAAI,QAAQ,gBAAiBA,CAAO,CAClD,CASO,SAAS+M,GAAgB/M,EAGJ,CAC1B,OAAO,KAAK,IAAI,QAAQ,oBAAqBA,CAAO,CACtD,CCrEO,SAASgN,GAAehN,EAIS,CACtC,OAAO,KAAK,IAAI,QAAQ,mBAAoBA,CAAO,CACrD,CAEO,SAASiN,GAAgBrzB,EAAYomB,EAA2E,CACrH,OAAO,KAAK,IAAI,QAAQ,oBAAqB,CAC3C,GAAApmB,EACA,QAAAomB,CAAA,CACD,CACH,CCZO,SAASkN,GAAOlN,EAA6C,CAClE,OAAKA,EAAQ,OACXA,EAAQ,KAAO,UAGVF,EAAAA,aAAa,IAAI,QAAQ,SAAUE,CAAO,CACnD,CCPO,SAASmN,GAAMnN,EAA+C,CACnE,OAAOF,EAAAA,aAAa,IAAI,QAAQ,QAASE,CAAO,CAClD,CCDO,SAASoN,GACdpN,EACwC,CACxC,OAAO,KAAK,IAAI,QAAQ,kCAAmCA,CAAO,CACpE,CCAO,SAASqN,IAAqC,CACnD,OAAO,KAAK,IAAI,QAAQ,wBAAwB,CAClD,CCFO,SAASC,GAAmBtN,EAAoC,CACrE,OAAOF,EAAAA,aAAa,IAAI,QAAQ,uBAAwBE,CAAO,CACjE,CCNO,SAASuN,IAAQ,CACtB,OAAOzN,eAAa,IAAI,QAAQ,OAAO,CACzC,CAEO,SAAS0N,GAAuBxN,EAAgD,CACrF,OAAO,KAAK,IAAI,QAAQ,8BAA+BA,CAAO,CAChE,CAEO,SAASyN,GAAYzN,EAAmD,CAC7E,OAAO,KAAK,IAAI,QAAQ,eAAgBA,CAAO,CACjD,CCLA,eAAsB0N,GAAM1N,EAA+C,CACzE,OAAO,KAAK,IAAI,QAAQ,QAASA,CAAO,CAC1C,CAQA,eAAsB2N,GAAgB3N,EAAuD,CAC3F,OAAO,KAAK,IAAI,QAAQ,oBAAqBA,CAAO,CACtD,CCjBO,SAAS4N,GAAU5N,EAAuE,CAC/F,OAAO,KAAK,IAAI,QAAQ,aAAcA,CAAO,CAC/C,CAEO,SAAS6N,GAAkB7N,EAGoD,CACpF,OAAO,KAAK,IAAI,QAAQ,sBAAuBA,CAAO,CACxD,y3CCDO,MAAM8N,EAAiE,CAC5E,UAEI,CAAA,EACJ,GAAiCC,EAAgB36B,EAAsC,CACrF,KAAK,UAAU26B,CAAS,GAAK,KAAK,UAAUA,CAAS,GAAK,CAAA,GAAI,OAAO36B,CAAE,CACzE,CACA,IAAkC26B,EAAgB36B,EAAsC,CACtF,KAAK,UAAU26B,CAAS,GAAK,KAAK,UAAUA,CAAS,GAAK,CAAA,GAAI,OAAQvF,GAAMA,IAAMp1B,CAAE,CACtF,CACA,KAAmC26B,EAAgBz0B,EAA0B,EACzE,KAAK,UAAUy0B,CAAS,GAAK,CAAA,GAAI,QAAS36B,GAAOA,EAAGkG,CAAI,CAAC,CAC7D,CACF,CCvBA,MAAM00B,EAAY,CAAA,EAClB,QAASjgC,EAAI,EAAGA,EAAI,IAAK,EAAEA,EACvBigC,EAAU,MAAMjgC,EAAI,KAAO,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,EAE7C,SAASkgC,GAAgBC,EAAKjf,EAAS,EAAG,CAC7C,OAAQ+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EAC7B+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB,IACA+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB,IACA+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB,IACA+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB+e,EAAUE,EAAIjf,EAAS,CAAC,CAAC,EACzB,IACA+e,EAAUE,EAAIjf,EAAS,EAAE,CAAC,EAC1B+e,EAAUE,EAAIjf,EAAS,EAAE,CAAC,EAC1B+e,EAAUE,EAAIjf,EAAS,EAAE,CAAC,EAC1B+e,EAAUE,EAAIjf,EAAS,EAAE,CAAC,EAC1B+e,EAAUE,EAAIjf,EAAS,EAAE,CAAC,EAC1B+e,EAAUE,EAAIjf,EAAS,EAAE,CAAC,GAAG,YAAW,CAChD,CC1BA,MAAMkf,GAAQ,IAAI,WAAW,EAAE,EAChB,SAASC,IAAM,CAC1B,OAAO,OAAO,gBAAgBD,EAAK,CACvC,CCDA,SAASE,GAAGj6B,EAASk6B,EAAKrf,EAAQ,CAC9B,OAAwB,OAAO,WACpB,OAAO,WAAU,EAErBsf,GAAIn6B,CAAoB,CACnC,CACA,SAASm6B,GAAIn6B,EAASk6B,EAAKrf,EAAQ,CAC/B7a,EAAUA,GAAW,CAAA,EACrB,MAAMo6B,EAAOp6B,EAAQ,QAAUA,EAAQ,MAAG,GAAQg6B,GAAG,EACrD,GAAII,EAAK,OAAS,GACd,MAAM,IAAI,MAAM,mCAAmC,EAEvD,OAAAA,EAAK,CAAC,EAAKA,EAAK,CAAC,EAAI,GAAQ,GAC7BA,EAAK,CAAC,EAAKA,EAAK,CAAC,EAAI,GAAQ,IAWtBP,GAAgBO,CAAI,CAC/B,CCnBO,MAAMC,GAAgB,gBACtB,IAAKC,IAAAA,IACVA,EAAA,QAAU,kBACVA,EAAA,SAAW,mBAFDA,IAAAA,IAAA,CAAA,CAAA,EAIAC,IAAAA,IACVA,EAAA,GAAK,KACLA,EAAA,MAAQ,QAFEA,IAAAA,IAAA,CAAA,CAAA,EAoIAC,IAAAA,IACVA,EAAA,YAAc,cACdA,EAAA,qBAAuB,uBACvBA,EAAA,gBAAkB,kBAClBA,EAAA,sBAAwB,wBACxBA,EAAA,gBAAkB,kBAClBA,EAAA,qBAAuB,uBACvBA,EAAA,gBAAkB,kBAClBA,EAAA,eAAiB,iBACjBA,EAAA,uBAAyB,yBACzBA,EAAA,YAAc,cACdA,EAAA,YAAc,cACdA,EAAA,iBAAmB,mBACnBA,EAAA,iBAAmB,mBACnBA,EAAA,wBAA0B,0BAC1BA,EAAA,+BAAiC,iCACjCA,EAAA,+BAAiC,iCACjCA,EAAA,wBAA0B,0BAC1BA,EAAA,mBAAqB,qBACrBA,EAAA,kBAAoB,oBACpBA,EAAA,wBAA0B,0BAC1BA,EAAA,mBAAqB,qBACrBA,EAAA,sBAAwB,wBACxBA,EAAA,2BAA6B,6BAC7BA,EAAA,+BAAiC,iCACjCA,EAAA,sBAAwB,wBACxBA,EAAA,uBAAyB,yBACzBA,EAAA,uBAAyB,yBACzBA,EAAA,+BAAiC,iCACjCA,EAAA,6BAA+B,+BAC/BA,EAAA,4BAA8B,8BAC9BA,EAAA,4BAA8B,8BAC9BA,EAAA,0BAA4B,4BAC5BA,EAAA,8BAAgC,gCAChCA,EAAA,wBAA0B,0BAlChBA,IAAAA,IAAA,CAAA,CAAA,EAqCAC,IAAAA,IACVA,EAAA,cAAgB,gBAChBA,EAAA,cAAgB,gBAChBA,EAAA,cAAgB,gBAChBA,EAAA,2BAA6B,6BAC7BA,EAAA,+BAAiC,iCACjCA,EAAA,cAAgB,gBAChBA,EAAA,cAAgB,gBAChBA,EAAA,cAAgB,gBARNA,IAAAA,IAAA,CAAA,CAAA,EAWAC,IAAAA,IACVA,EAAA,uBAAyB,yBACzBA,EAAA,YAAc,cACdA,EAAA,WAAa,aACbA,EAAA,eAAiB,iBAJPA,IAAAA,IAAA,CAAA,CAAA,ECjML,MAAMC,WAAuB,KAAM,CAAC,CAEpC,SAASC,GAAOC,EAAcv5B,EAAiB,CACpD,GAAI,CAACu5B,EACH,MAAM,IAAIF,GAAer5B,CAAO,CAEpC,CCJA,MAAMw5B,GAAkB,CACtB,SACA,WACA,eACA,eACA,mBACA,mBACA,kBACA,aACA,eACA,cACA,aACA,gBACA,eACA,kBACA,kCACA,iCACA,0CACA,uCACA,4BACA,2BACF,EAEMC,GAAwB,CAAC,UAAW,YAAa,UAAW,WAAY,QAAS,QAAQ,EAEzFC,GAAsB,CAAClkC,EAAamkC,IACjCA,EAAe,SAASnkC,CAAG,GAAKA,EAAI,SAAS,OAAO,EAGhDokC,GAAgB,CAAIrgC,EAAQsgC,EAAWL,GAAiBG,EAAiBF,KAChF,MAAM,QAAQlgC,CAAG,EACZA,EAAI,IAAKugC,GAAMF,GAAcE,EAAGD,EAAUF,CAAc,CAAC,EACvDpgC,GAAO,MAAQA,EAAI,cAAgB,OACrC,OAAO,KAAKA,CAAG,EAAE,OAAO,CAACtB,EAAQzC,IAAQ,CAC9C,MAAMukC,EAAOL,GAAoBlkC,EAAKmkC,CAAc,EAC9CK,EAASH,EAAS,SAASrkC,CAAG,GAAKukC,EAAOvkC,EAAMupB,GAAUvpB,CAAG,EAC7DH,EAAQ0kC,EAAQxgC,EAAY/D,CAAG,EAAIokC,GAAergC,EAAY/D,CAAG,EAAGqkC,EAAUF,CAAc,EAClG,MAAO,CAAE,GAAG1hC,EAAQ,CAAC+hC,CAAM,EAAG3kC,CAAA,CAChC,EAAG,CAAA,CAAE,EAGAkE,EAGI0gC,GAAgB,CAAI1gC,EAAQsgC,EAAWL,GAAiBG,EAAiBF,KAChF,MAAM,QAAQlgC,CAAG,EACZA,EAAI,IAAKugC,GAAMG,GAAcH,EAAGD,EAAUF,CAAc,CAAC,EACvDpgC,GAAO,MAAQA,EAAI,cAAgB,OACrC,OAAO,KAAKA,CAAG,EAAE,OAAO,CAACtB,EAAQzC,IAAQ,CAC9C,MAAMukC,EAAOL,GAAoBlkC,EAAKmkC,CAAc,EAC9CK,EAASH,EAAS,SAASrkC,CAAG,GAAKukC,EAAOvkC,EAAMuzB,GAAUvzB,CAAG,EAC7DH,EAAQ0kC,EAAQxgC,EAAY/D,CAAG,EAAIykC,GAAe1gC,EAAY/D,CAAG,EAAGqkC,EAAUF,CAAc,EAClG,MAAO,CAAE,GAAG1hC,EAAQ,CAAC+hC,CAAM,EAAG3kC,CAAA,CAChC,EAAG,CAAA,CAAE,EAGAkE,EC1DF,SAAS2gC,GAAe3gC,EAAU4gC,EAAuB,EAAGC,EAAgB,GAAS,CAC1F,GAAI,OAAO7gC,GAAQ,UAAYA,IAAQ,KACrC,OAAOA,EAGT,GAAI,MAAM,QAAQA,CAAG,EACnB,OAAIA,EAAI,OAAS6gC,GAAiBD,GAAgB,EACzC,gBAAgB5gC,EAAI,MAAM,iBAE5BA,EAAI,IAAK5C,GAASujC,GAAevjC,EAAMwjC,EAAe,EAAGC,CAAa,CAAC,EAGhF,MAAM/8B,EAAO,OAAO,KAAK9D,CAAG,EAC5B,OAAI8D,EAAK,OAAS+8B,GAAiBD,GAAgB,EAC1C,gBAAgB98B,EAAK,MAAM,mBAG7BA,EAAK,OACV,CAACwvB,EAAKr3B,KACJq3B,EAAIr3B,CAAG,EAAI0kC,GAAe3gC,EAAI/D,CAAG,EAAG2kC,EAAe,EAAGC,CAAa,EAC5DvN,GAET,CAAA,CAAC,CAEL,CCxBO,SAASwN,GACd/wB,EACAgxB,EAA2B,CAAA,EAC3BC,EAAiB,CAAC,cAAe,MAAM,EAAE,SAAS,YAA0B,EACnE,CACT,GAAIA,EAEF,MAAO,GAGT,GAAI,CAACjxB,GAAS,CAACA,EAAM,OACnB,MAAO,GAIT,MAAMkxB,EAAe,CAAC,GAAGF,EAAgB,OAAO,SAAS,OAAQ,aAAa,EAExEG,EAAUD,EAAa,SAASlxB,EAAM,MAAM,GAAKkxB,EAAa,KAAMphC,GAAWkQ,EAAM,OAAO,SAASlQ,CAAM,CAAC,EAElH,OAAKqhC,GACH,QAAQ,KACN,sBAAsBnxB,EAAM,MAAM,0CAA0C,OAAO,SAAS,MAAM,cAAA,EAI/FmxB,CACT,CCfA,MAAMC,GAAc,EACdC,GAAa,IACnB,IAAIC,GAAyC,KAE7C,eAAeC,IAAgC,CAC7C,OAAID,KAEJ,QAAQ,KAAK,4BAA4B,EACzCA,IAAkB,SAAY,CAC5B,GAAI,CACF,OAAO,MAAMxQ,EAAAA,aAAa,mBAAA,EAAqB,KAAM0Q,GACnD1Q,EAAAA,aAAa,SAAS,KAAMP,IAC1BkR,GAAOlR,CAAG,EACHiR,EAAoB,aAC5B,CAAA,CAEL,OAAS9/B,EAAO,CACd,cAAQ,MAAM,2BAA4BA,CAAK,EACzCA,CACR,QAAA,CACE4/B,GAAiB,IACnB,CACF,GAAA,EAEOA,GACT,CAGA,SAASI,GAAiBC,EAAqC,CAC7D,MAAMC,EAAe,IAAI,gBAEzB,SAASC,EAAS3lC,EAAaH,EAAY,CACzC,GAA2BA,GAAU,KAGrC,GAAI,MAAM,QAAQA,CAAK,EACrBA,EAAM,QAAS+I,GAAQ+8B,EAAS3lC,EAAK4I,CAAG,CAAC,UAChC,OAAO/I,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,EAC1D,UAAW+lC,KAAU/lC,EACnB8lC,EAAS,GAAG3lC,CAAG,IAAI4lC,CAAM,IAAK/lC,EAAM+lC,CAAM,CAAC,OAG7CF,EAAa,OAAO1lC,EAAKH,CAAK,CAElC,CAEA,UAAWG,KAAOylC,EAChBE,EAAS3lC,EAAKylC,EAAOzlC,CAAG,CAAC,EAG3B,OAAO0lC,EAAa,SAAA,CACtB,CAEA,eAAeG,GAAev2B,EAAapG,EAAuB48B,EAAmBZ,GAA2B,CAC9G,GAAI,CACF,MAAMhQ,EAAW,MAAM,MAAM5lB,EAAKpG,CAAO,EACzC,GAAI,CAACgsB,EAAS,GACZ,GAAIA,EAAS,SAAW,IAAK,CAC3B,MAAM6Q,EAAW,MAAMV,GAAA,EACvB,OAAAn8B,EAAQ,QAAUA,EAAQ,SAAW,CAAA,EACrCA,EAAQ,QAAQ,cAAgB,UAAU68B,CAAQ,GAC3CF,GAAev2B,EAAKpG,EAAS48B,CAAgB,CACtD,SAAW5Q,EAAS,QAAU,KAAOA,EAAS,OAAS,KAAO4Q,EAAmB,EAAG,CAElF,MAAME,EAAQb,GAAa,KAAK,IAAI,EAAGD,GAAcY,CAAgB,EACrE,aAAM,IAAI,QAASr/B,GAAY,WAAWA,EAASu/B,CAAK,CAAC,EAClDH,GAAev2B,EAAKpG,EAAS48B,EAAmB,CAAC,CAC1D,KAAO,CAEL,MAAMG,EAAY,MAAM/Q,EAAS,KAAA,EAC3B1vB,EAAQ,IAAI,MAChB,uBAAuB0vB,EAAS,MAAM,cAAc+Q,EAAU,SAAW/Q,EAAS,UAAU,EAAA,EAE5F,MAAA1vB,EAAsC,OAAS0vB,EAAS,OACpD1vB,CACR,CAGF,OAAI0vB,EAAS,SAAW,KAAOA,EAAS,SAAW,IACjD,OAEKA,EAAS,KAAA,CAClB,OAAS1vB,EAAO,CACd,GACEsgC,EAAmB,GACnB,EAAEtgC,aAAiB,YAClBA,EAAsC,SAAW,IAClD,CAEA,MAAMwgC,EAAQb,GAAa,KAAK,IAAI,EAAGD,GAAcY,CAAgB,EACrE,aAAM,IAAI,QAASr/B,GAAY,WAAWA,EAASu/B,CAAK,CAAC,EAClDH,GAAev2B,EAAKpG,EAAS48B,EAAmB,CAAC,CAC1D,CACA,MAAMtgC,CACR,CACF,CAEO,SAAS0gC,GAAiBtiC,EAAgBq3B,EAAe,CAC9D,MAAMkL,EAAU,CACd,eAAgB,mBAChB,cAAe,UAAUlL,CAAK,EAAA,EAE1BmL,EAAU,UACVC,EAAa,CAAE,YAAa,SAAA,EAElC,MAAO,CACL,IAAK,MAAOC,EAAkBp9B,EAAwB,KAAO,CAC3D,MAAMoG,EAAM,IAAI,IAAI,GAAG1L,CAAM,GAAGwiC,CAAO,GAAGE,CAAQ,EAAE,EACpD,OAAIp9B,EAAQ,SACVoG,EAAI,OAASk2B,GAAiBt8B,EAAQ,MAAM,GAEjC,MAAM28B,GAAev2B,EAAI,WAAY,CAChD,GAAG+2B,EACH,GAAGn9B,EACH,OAAQ,MACR,QAAAi9B,CAAA,CACD,CAEH,EACA,KAAM,MAAOG,EAAkBx7B,EAAe5B,EAAwB,CAAA,IAAO,CAC3E,MAAMoG,EAAM,IAAI,IAAI,GAAG1L,CAAM,GAAGwiC,CAAO,GAAGE,CAAQ,EAAE,EACpD,OAAIp9B,EAAQ,SACVoG,EAAI,OAASk2B,GAAiBt8B,EAAQ,MAAM,GAEjC,MAAM28B,GAAev2B,EAAI,WAAY,CAChD,GAAG+2B,EACH,GAAGn9B,EACH,OAAQ,OACR,QAAAi9B,EACA,KAAM,KAAK,UAAUr7B,CAAI,CAAA,CAC1B,CAEH,EACA,IAAK,MAAOw7B,EAAkBx7B,EAAc5B,EAAwB,CAAA,IAAO,CACzE,MAAMoG,EAAM,IAAI,IAAI,GAAG1L,CAAM,GAAGwiC,CAAO,GAAGE,CAAQ,EAAE,EACpD,OAAIp9B,EAAQ,SACVoG,EAAI,OAASk2B,GAAiBt8B,EAAQ,MAAM,GAEjC,MAAM28B,GAAev2B,EAAI,WAAY,CAChD,GAAG+2B,EACH,GAAGn9B,EACH,OAAQ,MACR,QAAAi9B,EACA,KAAM,KAAK,UAAUr7B,CAAI,CAAA,CAC1B,CAEH,EACA,OAAQ,MAAOw7B,EAAkBp9B,EAAwB,KAAO,CAC9D,MAAMoG,EAAM,IAAI,IAAI,GAAG1L,CAAM,GAAGwiC,CAAO,GAAGE,CAAQ,EAAE,EACpD,OAAIp9B,EAAQ,SACVoG,EAAI,OAASk2B,GAAiBt8B,EAAQ,MAAM,GAEjC,MAAM28B,GAAev2B,EAAI,WAAY,CAChD,GAAG+2B,EACH,GAAGn9B,EACH,OAAQ,SACR,QAAAi9B,CAAA,CACD,CAEH,EACA,MAAO,MAAOG,EAAkBx7B,EAAc5B,EAAwB,CAAA,IAAO,CAC3E,MAAMoG,EAAM,IAAI,IAAI,GAAG1L,CAAM,GAAGwiC,CAAO,GAAGE,CAAQ,EAAE,EACpD,OAAIp9B,EAAQ,SACVoG,EAAI,OAASk2B,GAAiBt8B,EAAQ,MAAM,GAEjC,MAAM28B,GAAev2B,EAAI,WAAY,CAChD,GAAG+2B,EACH,GAAGn9B,EACH,OAAQ,QACR,QAAAi9B,EACA,KAAM,KAAK,UAAUr7B,CAAI,CAAA,CAC1B,CAEH,EAEA,SAAU,MAAOy7B,EAAqBz7B,EAAc5B,EAAwB,CAAA,IAC7D,MAAM28B,GAAeU,EAAa,CAC7C,GAAGF,EACH,GAAGn9B,EACH,OAAQ,QACR,QAAAi9B,EACA,KAAM,KAAK,UAAUr7B,CAAI,CAAA,CAC1B,CAEH,CAEJ,CCvKO,SAAS07B,GAA6Bf,EAAqC,CAChF,OAAKA,EAEE,OAAO,QAAQA,CAAM,EAAE,OAC5B,CAACpO,EAAK,CAACr3B,EAAKH,CAAK,KACfw3B,EAAIr3B,CAAG,EAAIA,EAAI,SAAS,SAAS,GAAK,MAAM,QAAQH,CAAK,EAAIA,EAAM,KAAK,GAAG,EAAIA,EAExEw3B,GAET,CAAA,CAAC,EARiB,CAAA,CAUtB,CC7BA,IAAIhD,GACAoS,EAEJ,SAASC,IAAQ,CACf,GAAI,CAACrS,GAAK,MAAM,IAAI,MAAM,aAAa,EACvC,GAAI,CAACoS,EAAM,MAAM,IAAI,MAAM,cAAc,CAC3C,CAEA,SAASE,GAAev4B,EAA4B,CAClD,OAAOilB,GAAOjlB,GAAQ,GAAKk2B,GAAyBA,GAAM,IAAI,CAChE,CAEO,MAAMiB,GAAU,GAAkB,CAClC,GAAG,SAAS,eAAe,iCAAiC,GAAG,gBAClE,QAAQ,KAAK,yCAA0C,GAAG,SAAS,YAAY,EAC/E,OAAO,OAAW,KAChB,OAAO,QAAQ,iBAAiB,yCAA0C,CACxE,MAAO,CAAE,IAAK,CAAA,EACd,MAAO,SAAA,CACR,GAGL,MAAMqB,EAAkB,GAAG,SAAS,eAAe,iCAAiC,GAAG,cACjFC,EACJ,GAAG,SAAS,eAAiBxS,IAAK,SAAS,cAC1CuS,GACCA,IAAoBvS,IAAK,SAAS,eAAe,iCAAiC,GAAG,cAEzFA,GAAMxB,GAAM,GAAIwB,GAAK,CAAC,EAElBwS,IACFJ,EAAOP,GACL7R,GAAI,QAAQ,aAAa,iCAAiC,EAAE,cAC5DA,GAAI,QAAQ,YAAA,EAGlB,EAEayS,GAA6C,CACxD,aAAc,MACZrB,GACG,CACHiB,GAAA,EACA,KAAM,CAAE,aAAAK,EAAc,QAAAC,EAAU,CAAA,EAAI,GAAGC,GAAexB,EAStD,OARY,MAAMgB,EAAK,IAAI,YAAa,CACtC,OAAQ,CACN,YAAapS,GAAI,QAAQ,SAAS,GAClC,GAAGmS,GAA6BQ,CAAO,EACvC,GAAGL,GAAeM,CAAU,CAAA,CAC9B,CACD,CAGH,EACA,WAAY,MAAOxB,GAAmF,CACpGiB,GAAA,EACA,KAAM,CAAE,GAAAh4B,EAAI,GAAGu4B,CAAA,EAAexB,EAE9B,OADY,MAAMgB,EAAK,IAAI,aAAahB,EAAO,EAAE,GAAI,CAAE,OAAQwB,CAAA,CAAY,CAE7E,EAIA,2BAA4B,MAAOxB,IAWjCiB,GAAA,EACY,MAAMD,EAAK,KAAK,4BAA6B,CACvD,UAAWhB,EAAO,UAClB,YAAaA,EAAO,YACpB,GAAIA,EAAO,iBAAmB,QAAa,CAAE,eAAgBA,EAAO,cAAA,EACpE,GAAIA,EAAO,wBAA0B,QAAa,CAAE,sBAAuBA,EAAO,qBAAA,EAClF,GAAIA,EAAO,wBAA0B,QAAa,CAAE,sBAAuBA,EAAO,qBAAA,CAAsB,CACzG,GAGH,cAAe,MAAOA,IACpBiB,GAAA,EACY,MAAMD,EAAK,KAAK,YAAa,CAAE,GAAGhB,EAAQ,YAAapR,GAAI,QAAQ,SAAS,GAAI,GAG9F,cAAe,MAAOoR,GAAgF,CACpGiB,GAAA,EACA,KAAM,CAAE,GAAAh4B,EAAI,OAAAwtB,EAAQ,GAAGgL,GAAezB,EAEtC,GADyBpR,IAAa,eAAe,2BAA6B,GAC7D,CACnB,MAAMzwB,EAASywB,GAAI,QAAQ,aAAa,iCAAiC,EAAE,cACrE8S,EAAWjL,EAAS,WAAW,mBAAmBA,CAAM,CAAC,GAAK,GAC9D5sB,EAAM,GAAG1L,CAAM,mCAAmC8K,CAAE,GAAGy4B,CAAQ,GAGrE,OADY,MAAMV,EAAK,SAASn3B,EAAK43B,CAAU,CAEjD,CAEA,OADY,MAAMT,EAAK,MAAM,aAAa/3B,CAAE,GAAI,CAAE,OAAAwtB,EAAQ,GAAGgL,CAAA,CAAY,CAE3E,EACA,cAAe,MAAOzB,IACpBiB,GAAA,EACY,MAAMD,EAAK,OAAO,aAAahB,EAAO,EAAE,EAAE,GAGxD,aAAc,MAAOA,GAAyC,CAC5DiB,GAAA,EACA,IAAIU,EAEJ,GAAI,CACFA,EAAO,MAAMX,EAAK,IAAI,wBAAwBhB,EAAO,EAAE,EAAE,CAC3D,OAAS4B,EAAG,CACV,GAAKA,GAAmC,SAAW,IACjDD,EAAO,MAAMX,EAAK,KAAK,gBAAiB,CACtC,UAAWhB,EAAO,EAAA,CACnB,MAED,OAAM4B,CAEV,CAEA,OAAOD,CACT,EACA,6BAA8B,MAAO3B,GAG/B,CACJiB,GAAA,EACA,KAAM,CAAE,UAAAY,EAAW,GAAGL,CAAA,EAAexB,EAErC,OADY,MAAMgB,EAAK,IAAI,aAAaa,CAAS,qBAAsB,CAAE,OAAQL,CAAA,CAAY,CAE/F,EACA,mBAAoB,MAAOxB,IACzBiB,GAAA,EACY,MAAMD,EAAK,IAAI,kBAAmB,CAAE,OAAQE,GAAelB,CAAM,EAAG,GAGlF,qBAAsB,MAAOA,IAC3BiB,GAAA,EACY,MAAMD,EAAK,KAAK,kBAAmBhB,CAAM,GAGvD,qBAAsB,MAAOA,GAAkD,CAC7EiB,GAAA,EACA,KAAM,CAAE,iBAAAa,GAAqB9B,EAE7B,OADY,MAAMgB,EAAK,OAAO,mBAAmBc,CAAgB,EAAE,CAErE,EACA,yBAA0B,MAAO9B,IAC/BiB,GAAA,EACY,MAAMD,EAAK,IAAI,wBAAyB,CAAE,OAAQE,GAAelB,CAAM,EAAG,GAGxF,gCAAiC,MAAOA,IACtCiB,GAAA,EACY,MAAMD,EAAK,IAAI,+BAAgC,CAAE,OAAQE,GAAelB,CAAM,EAAG,EAGjG,EC5KO,SAAS+B,GAAoB9Q,EAAsB,OAAoB,CAC5E,GAAI,CACF,GAAIA,EAAQ,SAAS,WAAa,QAChC,OAAO,OAAO,IAEhB,GACEA,EAAQ,SAAWA,IAClBA,EAAQ,OAAO,SAAS,KAAK,SAAS,aAAa,GAAKA,EAAQ,OAAO,SAAS,KAAK,SAAS,WAAW,GAE1G,OAAO8Q,GAAoB9Q,EAAQ,MAAoB,CAE3D,MAAY,CAEZ,CACA,OAAOA,CACT,CCJA,MAAM+Q,GAA0B,GAK1BC,GAAiC,CAAC,qBAAsB,sBAAuB,qBAAqB,EACpGC,GAAgC,CAEpC,sBACA,aACA,aACA,eACA,aACA,kBACA,4BACA,oCACA,0BACA,2BACA,0BACF,EAEA,SAASC,GAAwBvT,EAAkB,CACjDA,GAAOkR,GAAOlR,CAAG,CACnB,CACO,MAAMwT,WAAoBjF,EAAgD,CAC/E,YAAY15B,EAAsB,CAChC,MAAA,EACA,KAAK,UAAY,CAAA,EACjB,KAAK,QAAUA,GAAW,CACxB,OAAQ,QACR,SAAU,MACV,YAAa,IAAM,CAAC,EACpB,UAAW,aAAA,EAGT,OAAO,OAAW,MACpB,OAAO,iBAAiB,UAAY4K,GAAU,CACvC+wB,GAAc/wB,CAAK,IAExB,KAAK,QAAQ,WAAa,SAAW,QAAQ,IAAI,mBAAoBA,CAAK,EACtEA,EAAM,KAAK,OAAS,oBACtBgwB,GAAOhwB,EAAM,KAAK,QAAQ,GAAI,sBAAsB,EACpD,KAAK,sBAAsBA,EAAM,KAAK,QAAQ,GAAIA,EAAM,IAAI,GACnDA,EAAM,KAAK,OAAS,iBAC7B,KAAK,mBAAmB,KAAK,QAAQ,SAAW,QAAUswB,GAActwB,EAAM,KAAK,KAAK,EAAIA,EAAM,KAAK,KAAK,EAEhH,CAAC,EAED,KAAK,QAAQ,WAAW,EAE5B,CAEA,UAIQ,QAEA,sBAAsBpF,EAAY5D,EAAuB,CAC3D,KAAK,UAAU4D,CAAE,IACnB,KAAK,UAAUA,CAAE,EAAE,SAAS5D,CAAI,EAEhC,KAAK,QAAQ,UACX,CAAC,OAAQ,OAAO,EAAE,SAAS,KAAK,QAAQ,QAAQ,GAChD,QAAQ,IACN,WAAW,KAAK,IAAA,EAAQ,KAAK,UAAU4D,CAAE,EAAE,aAAa,qBAAqB,KAAK,UAAUA,CAAE,EAAE,IAAI,EAAA,EAGxG,OAAO,KAAK,UAAUA,CAAE,EAE5B,CAEQ,mBAAmBoF,EAAqB,CAC9C,KAAK,KAAK,QAASA,CAAK,CAC1B,CAEO,QAAQlG,EAAc9C,EAAsB,KAAoB,CACrE,MAAMg9B,EAAqC,KAAK,QAAQ,WAAa,cACrE,OAAO,IAAI,QAAQ,CAACrhC,EAASC,IAAW,CACtC,MAAMgI,EAAKq5B,GAAA,EACLze,EAAYhkB,GAAyB,CAEzC,GADA,KAAK,QAAQ,WAAa,SAAW,QAAQ,IAAI,YAAYoJ,CAAE,aAAcpJ,CAAG,EAC5EA,EAAI,SAAS,SAAW,KAC1BmB,EACG,KAAK,QAAQ,SAAW,SAAW,CAACihC,GAAqB,SAAS95B,CAAI,EACnEw2B,GAAc9+B,EAAI,SAAS,IAAI,EAC/BA,EAAI,SAAS,IAAA,EAGfsI,IAAS,WAAWg6B,GAAwBtiC,EAAI,SAAS,IAA8B,UAClFA,EAAI,SAAS,SAAW,QAC7B,KAAK,QAAQ,aACf,KAAK,QAAQ,YAAY,CACvB,KAAMA,EAAI,QAAQ,KAClB,QAAS,gCAAgCA,EAAI,QAAQ,IAAI,GACzD,gBAAiB,KAAK,UAAUo/B,GAAep/B,EAAK,EAAGmiC,EAAuB,CAAC,CAAA,CAChF,EAEH/gC,EACE,KAAK,QAAQ,SAAW,SAAW,CAACghC,GAAqB,SAAS95B,CAAI,EAClEw2B,GAAc9+B,EAAI,SAAS,IAAI,EAC/BA,EAAI,SAAS,IAAA,MAGnB,OAAM,IAAI,MAAM,6BAA6B,CAEjD,EACM0iC,EAAsBL,GAAoB,SAAS/5B,CAAI,EACvDknB,EAAgC9G,GAAtBga,EAAgCl9B,EAAkB25B,GAAc35B,CAAI,CAAhC,EASpD,GAPA,KAAK,UAAU4D,CAAE,EAAI,CACnB,cAAe,KAAK,IAAA,EACpB,KAAAd,EACA,QAASknB,GAAW,CAAA,EACpB,SAAAxL,CAAA,EAGEwe,IAAc,iBAAmBl6B,GAAQk5B,GAAsBl5B,CAAI,EACrEk5B,GAAsBl5B,CAAI,EAAEknB,CAAO,EAChC,KAAM1mB,GAAc,CACf,KAAK,UAAUM,CAAE,IACnB,KAAK,UAAUA,CAAE,EAAE,SAAS,CAC1B,KAAM80B,GAAmB,SACzB,QAAS,CAAE,GAAA90B,EAAI,KAAAd,CAAA,EACf,SAAU,CAAE,OAAQ61B,GAAsB,GAAI,KAAMr1B,CAAA,CAAK,CAChC,EAC3B,OAAO,KAAK,UAAUM,CAAE,EAE5B,CAAC,EACA,MAAOlJ,GAAe,CACjB,KAAK,UAAUkJ,CAAE,IACnB,KAAK,UAAUA,CAAE,EAAE,SAAS,CAC1B,KAAM80B,GAAmB,SACzB,QAAS,CAAE,GAAA90B,EAAI,KAAAd,CAAA,EACf,SAAU,CAAE,OAAQ61B,GAAsB,MAAO,KAAMj+B,CAAA,CAAM,CACpC,EAC3B,OAAO,KAAK,UAAUkJ,CAAE,EAE5B,CAAC,MACE,CAEL,MAAMu5B,EAAeT,GAAoB,MAAM,EAC3C,OAAOS,EAAiB,KAAeA,GACzCA,EAAa,YACX,CACE,KAAM,kBACN,QAAS,CACP,KAAAr6B,EACA,GAAAc,EACA,KAAMomB,CAAA,CACR,EAEF,GAAA,CAGN,CACF,CAAC,CACH,CACF,CCnKO,SAASoT,GAAmBh/B,EAAsB,CACvD,MAAMi/B,EAAM,IAAIN,GAAY3+B,CAAO,EAC7Bk/B,EAAe,IAAIxF,GAEzB,OAAAuF,EAAI,GAAG,QAAUr0B,GAAwB,CACvCs0B,EAAa,KAAKt0B,EAAM,KAAMA,EAAM,IAAI,CAC1C,CAAC,EAEM,CACL,IAAAq0B,EACA,GAAG7oC,GAeH,GAAI,CAACsO,EAAc0b,IAA8C8e,EAAa,GAAGx6B,EAAM0b,CAAQ,EAe/F,IAAK,CAAC1b,EAAc0b,IAA8C8e,EAAa,IAAIx6B,EAAM0b,CAAQ,EAQjG,gBAAiB,IAAM6e,EAAI,QAAQ,kBAAkB,EAQrD,eAAgB,IAAMA,EAAI,QAAQ,iBAAiB,EAQnD,aAAc,IAAMA,EAAI,QAAQ,eAAe,EAQ/C,OAAQ,IAAMA,EAAI,QAAQ,QAAQ,EAQlC,aAAc,IAAMA,EAAI,QAAQ,eAAe,EAO/C,gBAAiB,IAAMA,EAAI,QAAQ,mBAAmB,EAmBtD,UAAYr0B,GAAwBq0B,EAAI,QAAQ,YAAar0B,CAAK,EAmBlE,oBAAsBA,GAAwBq0B,EAAI,QAAQ,wBAAyBr0B,CAAK,EAOxF,UAAW,IAAMq0B,EAAI,QAAQ,WAAW,EAOxC,YAAa,IAAMA,EAAI,QAAQ,aAAa,CAAA,CAEhD,CCrJO,SAASE,GAAe,CAC7B,OAAI,OAAO,UAAkB,OAAO,UAE7B,QAAA,QAAA,EAAA,KAAA,IAAArgC,EAAA,EAAqB,KAAMO,GAAMA,EAAE,SAAWA,CAAC,CACxD,CCcO,MAAM+/B,GAAa,aAEbC,EAAsB,CACjC,aAAc,eACd,kBAAmB,oBACnB,mBAAoB,qBACpB,QAAS,UACT,oBAAqB,sBACrB,SAAU,WACV,qBAAsB,uBACtB,iBAAkB,mBAClB,gBAAiB,kBACjB,uBAAwB,yBACxB,kCAAmC,oCACnC,oCAAqC,sCACrC,yBAA0B,2BAC1B,mBAAoB,qBACpB,6BAA8B,+BAC9B,sBAAuB,wBACvB,0BAA2B,4BAC3B,2BAA4B,6BAC5B,qBAAsB,uBACtB,gBAAiB,kBACjB,kBAAmB,oBACnB,kBAAmB,oBACnB,cAAe,gBAEf,6BAA8B,+BAC9B,iCAAkC,mCAClC,wBAAyB,0BAEzB,cAAe,gBACf,cAAe,gBAEf,kCAAmC,oCACnC,uBAAwB,yBACxB,qBAAsB,uBACtB,sBAAuB,wBACvB,yBAA0B,0BAC5B,EAEaC,GAAmB,CAC9B,oBAAqB,sBACrB,kBAAmB,oBACnB,wBAAyB,0BACzB,gBAAiB,kBACjB,mBAAoB,qBACpB,gCAAiC,iCACnC,EAEaC,GAA0B,CACrCD,GAAiB,gBACjBA,GAAiB,mBACjBA,GAAiB,iBACnB,ECnDA,eAAsBE,GAAkB5T,EAAkC,GAAsC,CAC9G,MAAM6T,EAAK,MAAMN,EAAA,EACjB,eAAQ,KACN,+HAAA,GAEe,MAAMM,EAAG,KAAK,OAAO,OAAQJ,EAAoB,kBAAmBzT,CAAO,GACnD,IAC3C,CAyBA,eAAsB8T,GAAc9T,EAAkC,GAAsC,CAG1G,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQE,EAAoB,kBAAmBzT,CAAO,GACnD,IAC3C,CAKA,eAAsBqD,GAAKrD,EAAuC,CAEhE,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQE,EAAoB,QAASzT,CAAO,CACnE,CAQA,eAAsB4F,GAAM5F,EAAwC,CAElE,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQE,EAAoB,SAAUzT,CAAO,CACpE,CAgBA,eAAsB+T,GACpB/T,EAC2C,CAG3C,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQE,EAAoB,6BAA8BzT,CAAO,GACrD,IACpD,CAgBA,eAAsBgU,GACpBhU,EAA2C,GACA,CAI3C,OAFiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQE,EAAoB,oCAAqCzT,CAAO,GAE5D,IACpD,CAgBA,eAAsBiU,GAAoBjU,EAAiC,GAAqC,CAI9G,OAFiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQE,EAAoB,yBAA0BzT,CAAO,GAE3D,IAC1C,CAcA,eAAsBkU,GACpBC,EACAC,EACoC,CACpC,MAAMP,EAAK,MAAMN,EAAA,EACXvT,EAAoC,CACxC,SAAUmU,EACV,cAAeC,CAAA,EAGjB,OADiB,MAAMP,EAAG,KAAK,OAAO,OAAQJ,EAAoB,qBAAsBzT,CAAO,GACpD,IAC7C,CASA,eAAsBqU,IAAkC,CAEtD,MADW,MAAMd,EAAA,GACR,KAAK,OAAO,OAAQE,EAAoB,sBAAuB,EAAE,CAC5E,+QCxKA,eAAsBa,IAAiC,CAErD,MADW,MAAMf,EAAA,GACR,KAAK,OAAO,OAAQE,EAAoB,mBAAmB,CACtE,wHCSA,eAAsBc,GAAevU,EAAmD,CAEtF,OADW,MAAMuT,EAAA,GACP,KAAKb,GAAA,EAAuBe,EAAoB,mBAAoBzT,CAAO,CACvF,uHCXA,eAAsBwU,GAAgBxU,EAAkD,EAC3E,MAAMuT,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,qBAAsBzT,CAAO,CAC1E,wHCEA,eAAsB8D,GAAa9D,EAAyD,CAE1F,OADW,MAAMuT,EAAA,GAEd,KAAK,OAAO,OAAQE,EAAoB,iBAAkBzT,CAAO,EACjE,KAAMI,GAAaA,EAAS,IAAsB,CACvD,CAeA,eAAsBqU,GAAYzU,EAA+D,CAE/F,OADW,MAAMuT,EAAA,GAEd,KAAK,OAAO,OAAQE,EAAoB,gBAAiBzT,CAAO,EAChE,KAAMI,GAAaA,EAAS,IAA6B,CAC9D,CAUA,eAAsBsU,IAA2B,CAC/C,OAAO,OAAO,YAAY,CAAE,KAAMjB,EAAoB,cAAe,KAAM,EAAC,EAAK,GAAG,CACtF,CAUA,eAAsBkB,GAAU3U,EAA4C,CAC1E,OAAO,OAAO,YAAY,CAAE,KAAMyT,EAAoB,cAAe,KAAMzT,CAAA,EAAW,GAAG,CAC3F,CAWA,eAAsB4U,IAA6C,CACjE,OAAO,OAAO,YAAY,CAAE,KAAMnB,EAAoB,kCAAmC,KAAM,EAAC,EAAK,GAAG,CAC1G,CAWA,eAAsBoB,IAAmC,CACvD,OAAO,OAAO,YAAY,CAAE,KAAMpB,EAAoB,uBAAwB,KAAM,EAAC,EAAK,GAAG,CAC/F,CAQA,eAAsBqB,IAAwC,EACjD,MAAMvB,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,4BAA4B,CACzE,CAQA,eAAsBsB,IAA4C,EACrD,MAAMxB,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,gCAAgC,CAC7E,CAqBA,eAAsBuB,GAAmBhV,EAAqD,EACjF,MAAMuT,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,wBAAyBzT,CAAO,CAC7E,CA6BA,eAAsBiV,GAAkBjV,EAYtB,CAEhB,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQE,EAAoB,uBAAwBzT,CAAO,CAClF,CAmCA,eAAsBkV,GAA4BlV,EAA8D,CAE9G,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQE,EAAoB,kCAAmCzT,CAAO,CAC7F,CAsBA,eAAsBmV,GAAenV,EAAmC,GAAuC,CAG7G,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQE,EAAoB,mBAAoBzT,CAAO,GACnD,IAC5C,sWC5OA,eAAsBoV,GAAiBpV,EAAmD,EAC7E,MAAMuT,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,qBAAsBzT,CAAO,CAC1E,CAQA,eAAsBqV,IAA+B,EACxC,MAAM9B,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,iBAAiB,CAC9D,CAQA,eAAsB6B,IAA+B,EACxC,MAAM/B,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,iBAAiB,CAC9D,CAQA,eAAsB8B,IAA6B,EACtC,MAAMhC,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,eAAe,CAC5D,CASA,eAAsB+B,IAAsC,EAC/C,MAAMjC,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,yBAAyB,CACtE,CASA,eAAsBgC,IAAuC,EAChD,MAAMlC,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,0BAA0B,CACvE,CAQA,eAAsBiC,GAAiB1V,EAAmD,EAC7E,MAAMuT,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,sBAAuBzT,CAAO,CAC3E,+OCjEA,eAAsB2V,GAAU3V,EAA2D,CAGzF,OADU,MADC,MAAMuT,EAAA,GACE,KAAK,OAAO,OAAQE,EAAoB,cAAezT,CAAO,GACxE,IACX,kHChBA,eAAsB4V,GACpB5V,EACwC,CAOxC,OALiB,MADN,MAAMuT,EAAA,GACS,KACxB,OAAO,OACPE,EAAoB,yBACpBzT,CAAA,GAEc,IAClB,4HCIA,eAAe6V,GACb/8B,EACA7I,EACA,CACA,MAAM6lC,EAAmB92B,GAAwD,CAC3EA,EAAM,KAAK,OAASlG,GACtB7I,EAAQ+O,EAAM,KAAK,IAAI,CAE3B,EACA,cAAO,iBAAiB,UAAW82B,CAAe,EAE3C,IAAM,OAAO,oBAAoB,UAAWA,CAAe,CACpE,CAEA,eAAeC,GACbj9B,EACA7I,EACA,CAKA,OAJW,MAAMsjC,EAAA,GACG,GAAGz6B,EAAOy5B,GAAMtiC,EAAQsiC,EAAE,IAAI,CAAC,EAGnC,MAClB,CAiBA,SAASn2B,GAAsCtD,EAAS7I,EAAwD,CAC9G,OAAI0jC,GAAwB,SAAS76B,CAAgD,EAC5E+8B,GAAS/8B,EAAM7I,CAAO,EAGxB8lC,GAAYj9B,EAAM7I,CAAO,CAClC,CAmBA,SAAS+lC,GAAkB/lC,EAA4D,CACrF,OAAOmM,GAAGs3B,GAAiB,oBAAqBzjC,CAAO,CACzD,CAeA,SAASgmC,GAAgBhmC,EAA0D,CACjF,OAAOmM,GAAGs3B,GAAiB,kBAAmBzjC,CAAO,CACvD,CAgBA,SAASimC,GAAqBjmC,EAA+D,CAC3F,OAAOmM,GAAGs3B,GAAiB,wBAAyBzjC,CAAO,CAC7D,CA0BA,SAASkmC,GAAalmC,EAAuD,CAC3E,OAAOmM,GAAGs3B,GAAiB,gBAAiBzjC,CAAO,CACrD,CAoBA,SAASmmC,GAAgBnmC,EAA0D,CACjF,OAAOmM,GAAGs3B,GAAiB,mBAAoBzjC,CAAO,CACxD,CAOA,eAAeomC,GAAYrW,EAA4C,EAC1D,MAAMuT,EAAA,GACd,KAAK,OAAO,OAAQE,EAAoB,aAAczT,CAAO,CAClE,CAEA,MAAAsW,GAAe,CAAA,GACbl6B,GACA,kBAAA45B,GACA,gBAAAC,GACA,qBAAAC,GACA,aAAAC,GACA,gBAAAC,GACA,YAAAC,GACA,GAAGE,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,EACL,EC1LaC,GAAgB,gBAEhBC,GAAsB,CACjC,YAAa,mBACf,EAEaC,GAAkB,CAC7B,cAAe,gBACf,eAAgB,gBAClB,EAEaC,EAAyB,CACpC,kBAAmB,0BACnB,cAAe,sBACf,eAAgB,uBAChB,WAAY,mBACZ,aAAc,qBACd,oBAAqB,4BACrB,+BAAgC,uCAChC,QAAS,gBACT,SAAU,iBACV,KAAM,0BACN,MAAO,2BACP,UAAW,kBACX,gCAAiC,wCACjC,UAAW,kBACX,MAAO,cACP,cAAe,sBACf,iCAAkC,yCAClC,sBAAuB,8BACvB,eAAgB,uBAChB,gBAAiB,uBACnB,EC7BA,eAAsB1C,GAAgBxU,EAAqD,EAC9E,MAAMuT,EAAA,GACd,KAAK,OAAO,OAAQ2D,EAAuB,kBAAmBlX,CAAO,CAC1E,wHCTA,eAAsBuD,IAA4B,CAGhD,MAAMhE,GADW,MADN,MAAMgU,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,OAAO,GAC7C,KAC/B,OAAOhZ,GAAKqB,EAAK,4BAA4B,CAC/C,+GCEA,eAAsBqE,GAAa5D,EAAuD,CAGxF,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,cAAelX,CAAO,GAC3D,IAClC,CAiBA,eAAsB2D,GACpB3D,EACwC,CAGxC,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,aAAclX,CAAO,GAC3C,IACjD,CAWA,eAAsBiE,GAAUjE,EAAiF,CAG/G,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,WAAYlX,CAAO,GACxD,IAClC,CAiBA,eAAsB8D,GACpB9D,EACyB,CAGzB,OADU,MADC,MAAMuT,EAAA,GACE,KAAK,OAAO,OAAQ2D,EAAuB,cAAelX,CAAO,GAC3D,IAC3B,CA6BA,eAAsBiV,GAAkBjV,EAYtB,CAEhB,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQ2D,EAAuB,oBAAqBlX,CAAO,CAClF,CAwBA,eAAsBkV,GAA4BlV,EAAiE,CAEjH,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQ2D,EAAuB,+BAAgClX,CAAO,CAC7F,CAsBA,eAAsBmV,GAAenV,EAAsC,GAA0C,CAGnH,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,gBAAiBlX,CAAO,GAChD,IAC/C,uOC1KA,eAAsBoN,GACpBpN,EACwC,CAGxC,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,gCAAiClX,CAAO,GAC9D,IACjD,qICJA,eAAsB0E,GAAa1E,EAA6D,CAG9F,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,eAAgBlX,CAAO,GACvD,IACvC,CAQA,eAAsB6E,GAAQ7E,EAA4C,CAGxE,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,SAAUlX,CAAO,GACtE,IAClB,CAQA,eAAsBuE,GAASvE,EAA0D,CAGvF,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,UAAWlX,CAAO,GACvE,IAClB,CAQA,eAAsBqD,GAAKrD,EAA4C,CAErE,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQ2D,EAAuB,KAAMlX,CAAO,CACnE,CAQA,eAAsBuN,IAAuB,CAE3C,MADW,MAAMgG,EAAA,GACR,KAAK,OAAO,OAAQ2D,EAAuB,KAAK,CAC3D,6JCtCA,eAAsBlD,GACpBhU,EAA8C,GACA,CAI9C,OAFiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,iCAAkClX,CAAO,GAEzD,IACvD,CAgBA,eAAsBiU,GAAoBjU,EAAoC,GAAwC,CAIpH,OAFiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,sBAAuBlX,CAAO,GAExD,IAC7C,CAmBA,eAAsB8T,GAAc9T,EAAyE,CAG3G,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,eAAgBlX,CAAO,GAC5E,IAClB,wKC5DA,eAAsBuF,GAASvF,EAAwD,CAGrF,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQ2D,EAAuB,UAAWlX,CAAO,GACvE,IAClB,iHCEA,eAAe5jB,GACbtD,EACA7I,EACA,CAKA,OAJW,MAAMsjC,EAAA,GACG,GAAGz6B,EAAOy5B,GAAMtiC,EAAQsiC,EAAE,IAAI,CAAC,EAGnC,MAClB,CAQA,eAAe3M,GAAM5F,EAA2C,CAE9D,MADW,MAAMuT,EAAA,GACR,KAAK,OAAO,OAAQ2D,EAAuB,MAAOlX,CAAO,CACpE,CAEA,MAAAmX,GAAe,CAAA,GACb/6B,GACA,MAAAwpB,GACA,GAAGwR,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,EACL,ECpDaC,GAAc,cAEdC,GAAoB,CAC/B,YAAa,iBACf,EAEaC,GAAgB,CAC3B,YAAa,cACb,aAAc,cAChB,EAEaC,GAAuB,CAClC,QAAS,cACT,SAAU,eACV,eAAgB,qBAChB,MAAO,YACP,qBAAsB,sBACxB,ECNA,eAAsBvU,IAA0B,CAG9C,MAAMhE,GADW,MADN,MAAMgU,EAAA,GACS,KAAK,OAAO,OAAQuE,GAAqB,OAAO,GAC7C,KAC7B,OAAO5Z,GAAKqB,EAAK,4BAA4B,CAC/C,+GCTA,eAAsB+U,IAAiC,CAErD,MADW,MAAMf,EAAA,GACR,KAAK,OAAO,OAAQuE,GAAqB,oBAAoB,CACxE,wHCHA,eAAsBvK,IAAuB,CAE3C,MADW,MAAMgG,EAAA,GACR,KAAK,OAAO,OAAQuE,GAAqB,KAAK,CACzD,CAQA,eAAsBjT,GAAQ7E,EAA4C,CAGxE,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQuE,GAAqB,SAAU9X,CAAO,GACpE,IAClB,CAWA,eAAsB0E,GAAa1E,EAA+D,CAGhG,OADiB,MADN,MAAMuT,EAAA,GACS,KAAK,OAAO,OAAQuE,GAAqB,eAAgB9X,GAAW,EAAE,GAChF,IAClB,yIC1BA,eAAe5jB,GACbtD,EACA7I,EACA,CAKA,OAJW,MAAMsjC,EAAA,GACG,GAAGz6B,EAAOy5B,GAAMtiC,EAAQsiC,EAAE,IAAI,CAAC,EAGnC,MAClB,CAEA,MAAAwF,GAAe,CACb,GAAA37B,GACA,GAAG47B,GACH,GAAGC,GACH,GAAGC,EACL,EC7BaC,GAA0B,0BAE1BC,GAA0B,CACrC,iBAAkB,uBAClB,qBAAsB,2BACtB,YAAa,cACb,aAAc,eACd,aAAc,eACd,UAAW,YACX,WAAY,aACZ,oBAAqB,qBACvB,EAEaC,GAAoC,EACpCC,GAAsC,ICF7CxnC,OAA2B,IACjC,IAAIynC,GAAiD,KACjDC,GAA0D,KAE9D,SAASC,IAAgC,CACvC,MAAMC,EAAY,WAAW,OAC7B,OAAIA,GAAW,WACNA,EAAU,WAAA,EAEZ,QAAQ,KAAK,IAAA,EAAM,SAAS,EAAE,CAAC,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,EAC/E,CAEA,SAASC,GACP3Y,EACA4Y,EACuB,CACvB,MAAMC,EAAW7Y,EAAQ,UAAY,CAAA,EAiBrC,MAhB0C,CACxC,QAASA,EAAQ,SAAW4Y,GAAU,SAAWP,GACjD,OAAQrY,EAAQ,OAChB,QAASA,EAAQ,SAAW4Y,GAAU,QACtC,KAAM5Y,EAAQ,MAAQ4Y,GAAU,KAChC,SAAU,CACR,cAAeC,EAAS,eAAiBD,GAAU,UAAU,eAAiBH,GAAA,EAC9E,OAAQI,EAAS,QAAUD,GAAU,UAAU,QAAU,MACzD,UAAWC,EAAS,WAAaD,GAAU,UAAU,WAAa,KAAK,IAAA,EACvE,OAAQ,CACN,GAAIA,GAAU,UAAU,QAAU,CAAA,EAClC,GAAIC,EAAS,QAAU,CAAA,CAAC,CAC1B,CACF,CAIJ,CAEA,SAASC,GAAWC,EAAgB9oC,EAAuC,CACzE,MAAM/E,EAAM6tC,GAAUT,GAChBU,EAAaloC,GAAS,IAAI5F,CAAG,OAAS,IAC5C8tC,EAAW,IAAI/oC,CAAO,EACtBa,GAAS,IAAI5F,EAAK8tC,CAAU,CAC9B,CAEA,SAASC,GAAcF,EAAgB9oC,EAAuC,CAC5E,MAAM+oC,EAAaloC,GAAS,IAAIioC,CAAM,EACjCC,IAGLA,EAAW,OAAO/oC,CAAO,EACpB+oC,EAAW,MACdloC,GAAS,OAAOioC,CAAM,EAEnBjoC,GAAS,MACZooC,GAAA,EAEJ,CAEA,eAAeC,IAAuB,CACpC,GAAIZ,GACF,OAGF,MAAMa,EAAMC,GAAA,EACN76B,EAAYQ,GAAwC,CACxD,GAAI,CACF,MAAMs6B,EAAaX,GAAsB35B,EAAO,CAC9C,SAAU,CACR,cAAey5B,GAAA,EACf,OAAQ,SACR,UAAW,KAAK,IAAA,EAChB,OAAQ,CAAA,CAAC,CACX,CACD,EACDc,GAAcD,CAAU,CAC1B,OAAS5oC,EAAO,CACd,QAAQ,MAAM,qDAAsDA,CAAK,CAC3E,CACF,EAEA0oC,EAAI,GAAGxK,GAAiB,wBAAyBpwB,CAAe,EAChE+5B,GAA4B,IAAM,CAChCa,EAAI,IAAIxK,GAAiB,wBAAyBpwB,CAAe,EACjE+5B,GAA4B,IAC9B,CACF,CAEA,SAASW,IAAyB,CAC5BX,KACFA,GAAA,EACAA,GAA4B,KAEhC,CAEA,SAASgB,GAAcv6B,EAA8B,CACnD,MAAMw6B,EAAmB1oC,GAAS,IAAIkO,EAAM,MAAM,EAC5Cy6B,EAAmB3oC,GAAS,IAAIwnC,EAAmC,EAEzE,GAAI,CAACkB,GAAoB,CAACC,EACxB,OAGF,MAAMzZ,EAAU,OAAO,OAAOhhB,CAAK,EACnCw6B,GAAkB,QAASvpC,GAAY,CACrC,GAAI,CACFA,EAAQ+vB,CAAO,CACjB,OAAStvB,EAAO,CACd,QAAQ,MAAM,iDAAiDsO,EAAM,MAAM,KAAMtO,CAAK,CACxF,CACF,CAAC,EACD+oC,GAAkB,QAASxpC,GAAY,CACrC,GAAI,CACFA,EAAQ+vB,CAAO,CACjB,OAAStvB,EAAO,CACd,QAAQ,MAAM,yDAA0DA,CAAK,CAC/E,CACF,CAAC,CACH,CAEA,eAAegpC,IAAgD,CAC7D,OAAKlB,KAEHA,GADYa,GAAA,EAET,OAAA,EACA,KAAM9Z,GAAQA,EAAI,OAAS,KAAK,EAChC,MAAO7uB,IACN,QAAQ,MAAM,+DAAgEA,CAAK,EAC5E,GACR,GAGE8nC,EACT,CAEA,SAASmB,GAAiBC,EAA8C,CACtE,OAAO,MAAM,QAAQA,CAAe,EAAIA,EAAkB,CAACA,CAAe,CAC5E,CAEO,SAASC,GACdD,EACA3pC,EACY,CACZ,OAAA0pC,GAAiBC,CAAe,EAAE,QAASb,GAAW,CACpDD,GAAWC,EAAQ9oC,CAAO,CAC5B,CAAC,EAEDkpC,GAAA,EAAuB,MAAOzoC,GAAU,CACtC,QAAQ,MAAM,0DAA2DA,CAAK,CAChF,CAAC,EAEM,IAAM,CACXipC,GAAiBC,CAAe,EAAE,QAASb,GAAW,CACpDE,GAAcF,EAAQ9oC,CAAO,CAC/B,CAAC,CACH,CACF,CAEA,eAAsB6pC,GACpB9Z,EACA5rB,EACe,CACf,GAAI,CAAC4rB,GAAS,OAAQ,CACpB,QAAQ,KAAK,+DAA+D,EAC5E,MACF,CAOA,GALI5rB,GAAS,mBAAqB,IAK9B,CADgB,MAAMslC,GAAA,EAExB,OAGF,MAAMN,EAAMC,GAAA,EACNU,EAAoBpB,GAAsB3Y,EAAS,CACvD,SAAU,CACR,cAAeyY,GAAA,EACf,OAAQ,MACR,UAAW,KAAK,IAAA,EAChB,OAAQ,CAAA,CAAC,CACX,CACD,EAED,GAAI,CACF,MAAMW,EAAI,UAAU,CAClB,KAAMxK,GAAiB,wBACvB,KAAMmL,CAAA,CACP,CACH,OAASrpC,EAAO,CACd,QAAQ,MAAM,4CAA6CA,CAAK,CAClE,CACF,CC7LWovB,EAAAA,aAAAA,OAEX,IAAIka,GAKG,SAASX,GAAcjlC,EAA6D,CACzF,OAAI,CAAC0rB,EAAAA,cAAgB,CAAChC,GAAQ1pB,EAAS4lC,EAAW,KAChDla,EAAAA,aAAesT,GAAmBh/B,CAAO,EACzC4lC,GAAc5lC,GAGT0rB,EAAAA,YACT,CAEA,SAASma,GAAoDb,EAAW,CACtE,cAAO,QAAQA,CAAG,EAAE,QAAQ,CAAC,CAACluC,EAAKH,CAAK,IAAM,CAC5C,MAAM2kC,EAASjR,GAAUvzB,CAAG,EACxBwkC,GAAU,CAAC0J,EAAI1J,CAAM,IACrB0J,EAAY1J,CAAM,EAAI3kC,EAE5B,CAAC,EACMquC,CACT,CAEA,MAAMc,GAAQD,GAAqB3D,EAAE,EAC/B6D,GAAWF,GAAqB9C,EAAK,EACrCiD,GAASH,GAAqBlC,EAAG,EAehC,SAASsC,IAAQ,CACtB,OAAOH,EACT,CAeO,SAASI,IAAW,CACzB,OAAOH,EACT,CAeO,SAASI,IAAS,CACvB,OAAOH,EACT,CAIO,SAASI,IAAoC,CAClD,GAAI,OAAO,OAAW,IAAa,MAAM,IAAI,MAAM,yCAAyC,EAC5F,MAAMxtC,EAAW,OAAO,OAAO,cAC/B,OAAOA,IAAa,KAAO,CAAC,KAAM,QAAQ,EAAI,CAACA,GAAY,QAAQ,CACrE,CAeO,SAASytC,GAAOrmC,EAAsB,CAC3C,GAAI,OAAO,OAAW,IAAa,MAAM,IAAI,MAAM,+BAA+B,EAElF,OADiB,OAAO,OAAO,cACvB,CACN,IAAK,KACH,MAAO,CAAE,GAAGilC,GAAA,EAAiB,GAAGgB,GAAA,EAAS,GAAIA,GAAA,EAAS,OAAQhB,IAAc,EAC9E,IAAK,QACH,OAAOiB,GAAA,EACT,IAAK,MACH,MAAO,CAAE,GAAGC,GAAA,EAAU,UAAWlB,GAAA,EAAgB,SAAA,EACnD,IAAK,SACH,OAAOA,GAAcjlC,CAAO,EAC9B,QACE,OAAOilC,GAAcjlC,CAAO,CAAA,CAElC,CCnIA,OAAO,UAAYy/B","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,226,227,228]}