{"version":3,"sources":["webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router/node_modules/resolve-pathname/index.js","webpack:///./node_modules/react-router/node_modules/value-equal/index.js","webpack:///./node_modules/react-router/node_modules/history/es/LocationUtils.js","webpack:///./node_modules/react-router/node_modules/history/es/PathUtils.js","webpack:///./node_modules/react-router/node_modules/history/es/DOMUtils.js","webpack:///./node_modules/react-router/node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/react-router/node_modules/history/es/createHashHistory.js","webpack:///./node_modules/react-router/node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/react-router/es/generatePath.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./app/javascript/mastodon/features/ui/components/column_loading.js","webpack:///./app/javascript/mastodon/features/ui/components/bundle_column_error.js","webpack:///./app/javascript/mastodon/features/ui/util/react_router_helpers.js","webpack:///./app/javascript/mastodon/features/ui/components/upload_area.js","webpack:///./app/javascript/mastodon/features/ui/components/drawer_loading.js","webpack:///./app/javascript/mastodon/components/server_banner.js","webpack:///./app/javascript/mastodon/features/ui/components/compose_panel.js","webpack:///./app/javascript/mastodon/components/logo.js","webpack:///./app/javascript/mastodon/features/ui/components/disabled_account_banner.js","webpack:///./app/javascript/mastodon/features/ui/components/follow_requests_column_link.js","webpack:///./app/javascript/mastodon/features/ui/components/list_panel.js","webpack:///./app/javascript/mastodon/features/ui/components/notifications_counter_icon.js","webpack:///./app/javascript/mastodon/features/ui/components/sign_in_banner.js","webpack:///./app/javascript/mastodon/features/account/components/featured_tags.js","webpack:///./app/javascript/mastodon/features/account/containers/featured_tags_container.js","webpack:///./app/javascript/mastodon/features/account/navigation.js","webpack:///./app/javascript/mastodon/components/navigation_portal.js","webpack:///./app/javascript/mastodon/features/ui/components/navigation_panel.js","webpack:///./app/javascript/mastodon/features/ui/components/columns_area.js","webpack:///./app/javascript/mastodon/features/ui/containers/columns_area_container.js","webpack:///./app/javascript/mastodon/features/picture_in_picture/components/header.js","webpack:///./app/javascript/mastodon/features/picture_in_picture/index.js","webpack:///./app/javascript/mastodon/actions/onboarding.js","webpack:///./app/javascript/mastodon/features/ui/components/header.js","webpack:///./app/javascript/mastodon/features/ui/index.js","webpack:///./app/javascript/mastodon/components/error_boundary.js","webpack:///./app/javascript/mastodon/containers/mastodon.js","webpack:///./app/javascript/mastodon/main.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/react-router/node_modules/history/node_modules/warning/browser.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/stacktrace-js/stacktrace.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-generator.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","webpack:///./node_modules/error-stack-parser/error-stack-parser.js","webpack:///./node_modules/stack-generator/stack-generator.js","webpack:///./node_modules/stacktrace-gps/stacktrace-gps.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/source-map.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/mapping-list.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-node.js","webpack:///./app/javascript/mastodon/performance.js"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_React$Component","Router","_temp","_this","this","_len","args","Array","_key","apply","concat","state","match","computeMatch","props","history","location","pathname","subClass","superClass","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","_inherits","getChildContext","router","context","route","path","url","params","isExact","componentWillMount","_this2","_props","children","Children","count","unlisten","listen","setState","componentWillReceiveProps","nextProps","componentWillUnmount","render","only","Component","propTypes","object","isRequired","node","contextTypes","childContextTypes","BrowserRouter","createElement","isAbsolute","charAt","spliceOne","list","index","k","n","pop","to","from","undefined","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","last","up","part","unshift","result","join","substr","_typeof","Symbol","iterator","obj","valueEqual","a","b","isArray","every","item","aType","aValue","valueOf","bValue","aKeys","keys","bKeys","currentLocation","search","hash","hashIndex","indexOf","searchIndex","parsePath","decodeURI","e","URIError","window","document","patternCache","cacheCount","pattern","cacheKey","cache","compiledGenerator","compile","generator","pretty","Redirect","isStatic","staticContext","perform","componentDidMount","componentDidUpdate","prevProps","prevTo","nextTo","computeTo","_ref","computedMatch","push","replace","bool","string","oneOfType","defaultProps","shape","func","ColumnLoading","ImmutablePureComponent","title","icon","multiColumn","focusable","placeholder","className","PropTypes","GIF","React","PureComponent","hovering","handleMouseEnter","animate","handleMouseLeave","src","staticSrc","alt","role","onMouseEnter","onMouseLeave","autoPlayGif","CopyButton","copied","handleClick","navigator","clipboard","writeText","timeout","setTimeout","clearTimeout","onClick","id","defaultMessage","BundleColumnError","injectIntl","handleRetry","onRetry","errorType","stacktrace","body","bindToDocument","Link","classNames","Helmet","name","content","WrappedSwitch","Switch","map","child","cloneElement","WrappedRoute","hasError","renderComponent","component","componentParams","fetchComponent","loading","renderLoading","error","renderError","componentDidCatch","StackTrace","fromError","then","stackframes","toString","frame","catch","err","console","rest","Route","UploadArea","handleKeyUp","keyCode","active","preventDefault","stopPropagation","onClose","addEventListener","removeEventListener","defaultStyle","backgroundOpacity","backgroundScale","style","spring","stiffness","damping","visibility","opacity","transform","DrawerLoading","defineMessages","aboutActiveUsers","ServerBanner","connect","server","getIn","dispatch","fetchServer","intl","isLoading","get","values","domain","mastodon","href","width","size","ComposePanel","onFocus","changeComposing","onBlur","mountCompose","unmountCompose","signedIn","identity","openInRoute","Fragment","singleColumn","Logo","viewBox","xlinkHref","messages","logoutMessage","logoutConfirm","DisabledAccountBanner","disabledAcct","disabledAccountId","movedToAcct","movedToAccountId","onLogout","openModal","message","formatMessage","confirm","closeWhenConfirm","onConfirm","logOut","handleLogOutClick","disabledAccountLink","disabledAccount","movedToAccount","includes","type","text","FollowRequestsColumnLink","ImmutableList","fetchFollowRequests","transparent","getOrderedLists","createSelector","lists","toList","filter","sort","localeCompare","take","ListPanel","withRouter","fetchLists","isEmpty","strict","ImmutablePropTypes","IconWithBadge","SignInBanner","useDispatch","openClosedRegistrationsModal","useCallback","signupButton","registrationsOpen","lastStatusAt","empty","FeaturedTags","account","featuredTags","dangerouslySetInnerHTML","__html","featuredTag","uses","withGraph","description","date","formatDate","month","day","tagged","getAccount","makeGetAccount","accountId","AccountNavigation","acct","normalizeForLookup","DefaultNavigation","showTrends","NavigationPortal","exact","home","notifications","explore","local","federated","direct","favourites","bookmarks","preferences","followsAndFollowers","about","NavigationPanel","timelinePreview","componentMap","Compose","HomeTimeline","Notifications","PublicTimeline","CommunityTimeline","HashtagTimeline","DirectTimeline","FavouritedStatuses","BookmarkedStatuses","ListTimeline","Directory","ColumnsArea","mediaQuery","matchMedia","renderComposePanel","matches","handleLayoutChange","handleWheel","_interruptScrollAnimation","setRef","columnId","supportsPassiveEvents","passive","addListener","isRtlLayout","getElementsByTagName","classList","contains","componentWillUpdate","removeListener","handleLayouteChange","handleChildrenContentChange","modifier","scrollRight","scrollWidth","innerWidth","columns","isModalOpen","ref","column","toJS","other","SpecificComponent","modalType","forwardRef","close","Header","statusId","PictureInPicture","handleClose","removePictureInPicture","currentTime","player","volume","muted","autoPlay","inline","alwaysVisible","poster","backgroundColor","foregroundColor","accentColor","INTRODUCTION_VERSION","Account","me","beforeUnload","keyMap","help","new","forceNew","toggleComposeSpoilers","focusColumn","reply","favourite","boost","mention","open","openProfile","moveDown","moveUp","back","goToHome","goToNotifications","goToLocal","goToFederated","goToDirect","goToStart","goToFavourites","goToPinned","goToProfile","goToBlocked","goToMuted","goToRequests","toggleHidden","toggleSensitive","openMedia","SwitchingColumnsArea","c","mobile","toggle","redirect","singleUserMode","owner","initialState","accounts","username","GettingStarted","KeyboardShortcuts","About","PrivacyPolicy","PinnedStatuses","FollowRecommendations","Explore","AccountTimeline","withReplies","Followers","Following","AccountGallery","Status","Reblogs","Favourites","FollowRequests","Blocks","DomainBlocks","Mutes","Lists","UI","layout","isComposing","hasComposingText","trim","hasMediaAttachments","canUploadMore","some","x","dropdownMenuIsOpen","firstLaunch","draggingOver","handleBeforeUnload","synchronouslySubmitMarkers","returnValue","handleWindowFocus","focusApp","submitMarkers","immediate","handleWindowBlur","unfocusApp","handleDragEnter","dragTargets","dataTransfer","types","handleDragOver","dataTransferIsText","dropEffect","handleDrop","files","uploadCompose","handleDragLeave","el","closeUploadModal","handleServiceWorkerPostMessage","data","warn","clearHeight","trailing","handleResize","layoutFromWindow","cancel","changeLayout","handleHotkeyNew","element","querySelector","focus","handleHotkeySearch","handleHotkeyForceNew","resetCompose","handleHotkeyToggleComposeSpoilers","changeComposeSpoilerness","handleHotkeyFocusColumn","container","status","scrollTop","offsetTop","scrollIntoView","handleHotkeyBack","goBack","setHotkeysRef","hotkeys","handleHotkeyToggleHelp","handleHotkeyGoToHome","handleHotkeyGoToNotifications","handleHotkeyGoToLocal","handleHotkeyGoToFederated","handleHotkeyGoToDirect","handleHotkeyGoToStart","handleHotkeyGoToFavourites","handleHotkeyGoToPinned","handleHotkeyGoToProfile","handleHotkeyGoToBlocked","handleHotkeyGoToMuted","handleHotkeyGoToRequests","handleDragEnd","serviceWorker","changeSetting","saveSettings","fetchMarkers","expandHomeTimeline","expandNotifications","__mousetrap__","stopCallback","tagName","handlers","attach","focused","pointerEvents","ErrorBoundary","errorMessage","stackTrace","mappedStackTrace","componentStack","handleCopyStackTrace","textarea","contents","textContent","position","appendChild","select","execCommand","removeChild","info","stack","sf","likelyBrowserAddonIssue","version","source_url","rel","localeData","getLocale","addLocaleData","siteTitle","store","configureStore","hydrateAction","hydrateStore","fetchCustomEmojis","Mastodon","meta","disabled_account_id","accessToken","access_token","permissions","disconnect","connectUserStream","shouldUpdateScroll","prevRouterProps","mastodonModalKey","locale","defaultTitle","titleTemplate","perf","require","main","start","ready","async","mountNode","getElementById","JSON","parse","getAttribute","ReactDOM","setupBrowserNotifications","Workbox","wb","registration","register","registerPushNotifications","stop","exports","getArg","aArgs","aName","aDefaultValue","Error","urlRegexp","dataUrlRegexp","urlParse","aUrl","scheme","auth","host","port","urlGenerate","aParsedUrl","normalize","aPath","parts","splice","aRoot","aPathUrl","aRootUrl","joined","relative","level","lastIndexOf","slice","supportsNullProto","s","isProtoString","charCodeAt","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","module","_isNumber","isNaN","parseFloat","isFinite","_capitalize","str","toUpperCase","substring","_getter","p","booleanProps","numericProps","stringProps","arrayProps","objectProps","StackFrame","getArgs","setArgs","v","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","locationString","exec","Boolean","j","Number","String","ErrorStackParser","StackGenerator","StackTraceGPS","_options","stackframe","sourceCache","_generateError","_merge","first","second","forEach","prop","_isShapedLikeParsableError","_filtered","opts","generateArtificially","getSync","backtrace","gps","Promise","resolve","all","resolveOriginal","pinpoint","bind","stackFrames","instrument","fn","callback","errback","thisArg","__stacktraceOriginalFn","instrumented","deinstrument","report","errorMsg","requestOptions","reject","req","XMLHttpRequest","onerror","onreadystatechange","readyState","responseText","setRequestHeader","headers","header","reportPayload","send","stringify","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","file","eachMapping","mapping","newMapping","generated","line","original","addMapping","sources","sourceFile","sourceContentFor","setSourceContent","_validateMapping","has","add","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","toArray","len","encode","_generateSourcesContent","aSources","aSourceRoot","toJSON","names","sourcesContent","base64","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","shift","_array","_set","fromArray","aArray","aAllowDuplicates","set","getOwnPropertyNames","sStr","isDuplicate","idx","at","aIdx","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","maxStackSize","curr","callee","test","RegExp","$1","caller","SourceMap","_xdr","_atob","b64str","atob","_parseJson","_findFunctionName","syntaxes","code","maxLines","Math","min","commentPos","m","_ensureSupportedEnvironment","defineProperty","_ensureStackFrameIsLegit","_findSourceMappingURL","lastSourceMappingUrl","matchSourceMappingUrl","sourceMappingUrlRegExp","_extractLocationInfoFromSourceMapSource","sourceMapConsumer","loc","mappedSource","sourceMapConsumerCache","ajax","_get","isDataUrl","offline","supportedEncodingRegexp","sourceMapStart","encodedSource","xhrPromise","method","_getSourceMapConsumer","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","SourceMapConsumer","getMappedLocation","mappedStackFrame","resolveMappedStackFrame","findFunctionName","guessedFunctionName","SourceNode","intToCharMap","number","charCode","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","binarySearch","quickSort","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","lastColumn","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","section","bias","generatedPosition","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","floor","swap","ary","y","doQuickSort","comparator","r","low","high","round","random","pivot","q","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","shiftNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","chunk","prepend","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","process"],"mappings":"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","file":"js/153-50cbdbe5799438b50105.chunk.js","sourcesContent":["var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n function Router() {\n var _temp, _this, _ret;\n _classCallCheck(this, Router);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n Router.prototype.render = function render() {\n var children = this.props.children;\n return children ? React.Children.only(children) : null;\n };\n return Router;\n}(React.Component);\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\nexport default Router;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n function BrowserRouter() {\n var _temp, _this, _ret;\n _classCallCheck(this, BrowserRouter);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n BrowserRouter.prototype.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n return BrowserRouter;\n}(React.Component);\nexport default BrowserRouter;","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n if (!fromParts.length) return '/';\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }\n if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n var result = fromParts.join('/');\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n return result;\n}\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nfunction valueEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n if (aType !== bType) return false;\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n return false;\n}\nexport default valueEqual;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n if (key) location.key = key;\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n return location;\n};\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n return path;\n};","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n invariant(canUseDOM, 'Browser history needs a DOM');\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n };\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n var transitionManager = createTransitionManager();\n var setState = function setState(nextState) {\n _extends(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n };\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n var forceNextPop = false;\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n };\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n window.location.href = href;\n }\n });\n };\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n window.location.replace(href);\n }\n });\n };\n var go = function go(n) {\n globalHistory.go(n);\n };\n var goBack = function goBack() {\n return go(-1);\n };\n var goForward = function goForward() {\n return go(1);\n };\n var listenerCount = 0;\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n var isBlocked = false;\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n };\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n};\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\nvar HashChangeEvent = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n invariant(canUseDOM, 'Hash history needs a DOM');\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n };\n var transitionManager = createTransitionManager();\n var setState = function setState(nextState) {\n _extends(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n var forceNextPop = false;\n var ignorePath = null;\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n };\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n };\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n setState();\n }\n });\n };\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n };\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n globalHistory.go(n);\n };\n var goBack = function goBack() {\n return go(-1);\n };\n var goForward = function goForward() {\n return go(1);\n };\n var listenerCount = 0;\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n var isBlocked = false;\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n };\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n};\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n var setState = function setState(nextState) {\n _extends(history, nextState);\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n };\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n var goBack = function goBack() {\n return go(-1);\n };\n var goForward = function goForward() {\n return go(1);\n };\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n};\nexport default createMemoryHistory;","import pathToRegexp from \"path-to-regexp\";\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n if (cache[pattern]) return cache[pattern];\n var compiledGenerator = pathToRegexp.compile(pattern);\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, {\n pretty: true\n });\n};\nexport default generatePath;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n function Redirect() {\n _classCallCheck(this, Redirect);\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n if (this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n this.perform();\n };\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n return to;\n };\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n var to = this.computeTo(this.props);\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n Redirect.prototype.render = function render() {\n return null;\n };\n return Redirect;\n}(React.Component);\nRedirect.propTypes = {\n computedMatch: PropTypes.object,\n // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\nexport default Redirect;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../components/column';\nimport ColumnHeader from '../../../components/column_header';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class ColumnLoading extends ImmutablePureComponent {\n\n static propTypes = {\n title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n icon: PropTypes.string,\n multiColumn: PropTypes.bool,\n };\n\n static defaultProps = {\n title: '',\n icon: '',\n };\n\n render() {\n let { title, icon, multiColumn } = this.props;\n\n return (\n \n \n
\n \n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport Column from 'mastodon/components/column';\nimport Button from 'mastodon/components/button';\nimport { Helmet } from 'react-helmet';\nimport { Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport { autoPlayGif } from 'mastodon/initial_state';\n\nclass GIF extends React.PureComponent {\n\n static propTypes = {\n src: PropTypes.string.isRequired,\n staticSrc: PropTypes.string.isRequired,\n className: PropTypes.string,\n animate: PropTypes.bool,\n };\n\n static defaultProps = {\n animate: autoPlayGif,\n };\n\n state = {\n hovering: false,\n };\n\n handleMouseEnter = () => {\n const { animate } = this.props;\n\n if (!animate) {\n this.setState({ hovering: true });\n }\n }\n\n handleMouseLeave = () => {\n const { animate } = this.props;\n\n if (!animate) {\n this.setState({ hovering: false });\n }\n }\n\n render () {\n const { src, staticSrc, className, animate } = this.props;\n const { hovering } = this.state;\n\n return (\n \n );\n }\n\n}\n\nclass CopyButton extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n state = {\n copied: false,\n };\n\n handleClick = () => {\n const { value } = this.props;\n navigator.clipboard.writeText(value);\n this.setState({ copied: true });\n this.timeout = setTimeout(() => this.setState({ copied: false }), 700);\n }\n\n componentWillUnmount () {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n render () {\n const { children } = this.props;\n const { copied } = this.state;\n\n return (\n \n );\n }\n\n}\n\nexport default @injectIntl\nclass BundleColumnError extends React.PureComponent {\n\n static propTypes = {\n errorType: PropTypes.oneOf(['routing', 'network', 'error']),\n onRetry: PropTypes.func,\n intl: PropTypes.object.isRequired,\n multiColumn: PropTypes.bool,\n stacktrace: PropTypes.string,\n };\n\n static defaultProps = {\n errorType: 'routing',\n };\n\n handleRetry = () => {\n const { onRetry } = this.props;\n\n if (onRetry) {\n onRetry();\n }\n }\n\n render () {\n const { errorType, multiColumn, stacktrace } = this.props;\n\n let title, body;\n\n switch(errorType) {\n case 'routing':\n title = ;\n body = ;\n break;\n case 'network':\n title = ;\n body = ;\n break;\n case 'error':\n title = ;\n body = ;\n break;\n }\n\n return (\n \n
\n \n\n
\n

{title}

\n

{body}

\n\n
\n {errorType === 'network' && }\n {errorType === 'error' && }\n \n
\n
\n
\n\n \n \n \n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Route } from 'react-router-dom';\nimport StackTrace from 'stacktrace-js';\nimport ColumnLoading from '../components/column_loading';\nimport BundleColumnError from '../components/bundle_column_error';\nimport BundleContainer from '../containers/bundle_container';\n\n// Small wrapper to pass multiColumn to the route components\nexport class WrappedSwitch extends React.PureComponent {\n\n render () {\n const { multiColumn, children } = this.props;\n\n return (\n \n {React.Children.map(children, child => React.cloneElement(child, { multiColumn }))}\n \n );\n }\n\n}\n\nWrappedSwitch.propTypes = {\n multiColumn: PropTypes.bool,\n children: PropTypes.node,\n};\n\n// Small Wrapper to extract the params from the route and pass\n// them to the rendered component, together with the content to\n// be rendered inside (the children)\nexport class WrappedRoute extends React.Component {\n\n static propTypes = {\n component: PropTypes.func.isRequired,\n content: PropTypes.node,\n multiColumn: PropTypes.bool,\n componentParams: PropTypes.object,\n };\n\n static defaultProps = {\n componentParams: {},\n };\n\n static getDerivedStateFromError () {\n return {\n hasError: true,\n };\n };\n\n state = {\n hasError: false,\n stacktrace: '',\n };\n\n componentDidCatch (error) {\n StackTrace.fromError(error).then(stackframes => {\n this.setState({ stacktrace: error.toString() + '\\n' + stackframes.map(frame => frame.toString()).join('\\n') });\n }).catch(err => {\n console.error(err);\n });\n }\n\n renderComponent = ({ match }) => {\n const { component, content, multiColumn, componentParams } = this.props;\n const { hasError, stacktrace } = this.state;\n\n if (hasError) {\n return (\n \n );\n }\n\n return (\n \n {Component => {content}}\n \n );\n }\n\n renderLoading = () => {\n const { multiColumn } = this.props;\n\n return ;\n }\n\n renderError = (props) => {\n return ;\n }\n\n render () {\n const { component: Component, content, ...rest } = this.props;\n\n return ;\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class UploadArea extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n onClose: PropTypes.func,\n };\n\n handleKeyUp = (e) => {\n const keyCode = e.keyCode;\n if (this.props.active) {\n switch(keyCode) {\n case 27:\n e.preventDefault();\n e.stopPropagation();\n this.props.onClose();\n break;\n }\n }\n }\n\n componentDidMount () {\n window.addEventListener('keyup', this.handleKeyUp, false);\n }\n\n componentWillUnmount () {\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n render () {\n const { active } = this.props;\n\n return (\n \n {({ backgroundOpacity, backgroundScale }) => (\n
\n
\n
\n
\n
\n
\n )}\n \n );\n }\n\n}\n","import React from 'react';\n\nconst DrawerLoading = () => (\n
\n
\n
\n
\n
\n);\n\nexport default DrawerLoading;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { fetchServer } from 'mastodon/actions/server';\nimport ShortNumber from 'mastodon/components/short_number';\nimport Skeleton from 'mastodon/components/skeleton';\nimport Account from 'mastodon/containers/account_container';\nimport { domain } from 'mastodon/initial_state';\nimport Image from 'mastodon/components/image';\nimport { Link } from 'react-router-dom';\n\nconst messages = defineMessages({\n aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' },\n});\n\nconst mapStateToProps = state => ({\n server: state.getIn(['server', 'server']),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass ServerBanner extends React.PureComponent {\n\n static propTypes = {\n server: PropTypes.object,\n dispatch: PropTypes.func,\n intl: PropTypes.object,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchServer());\n }\n\n render () {\n const { server, intl } = this.props;\n const isLoading = server.get('isLoading');\n\n/*[b00pg] 4.0-transition changed default message and values, removed server stats\n\t \n
\n

\n\n {isLoading ? (\n <>\n \n
\n \n \n ) : (\n <>\n \n
\n \n \n )}\n
\n\n\t- removed server thumbnail as it wasnt showing\n\n \n\n
\n {isLoading ? (\n\n\n\t\t*/\n\n\n return (\n
\n
\n {domain}, mastodon: Mastodon }} />\n
\n\n
\n {isLoading ? (\n <>\n \n
\n \n
\n \n \n ) : server.get('description')}\n
\n\n
\n
\n

\n\n \n
\n
\n\n\n
\n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport SearchContainer from 'mastodon/features/compose/containers/search_container';\nimport ComposeFormContainer from 'mastodon/features/compose/containers/compose_form_container';\nimport NavigationContainer from 'mastodon/features/compose/containers/navigation_container';\nimport LinkFooter from './link_footer';\nimport ServerBanner from 'mastodon/components/server_banner';\nimport { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose';\n\nexport default @connect()\nclass ComposePanel extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n };\n\n onFocus = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(true));\n }\n\n onBlur = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(false));\n }\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(mountCompose());\n }\n\n componentWillUnmount () {\n const { dispatch } = this.props;\n dispatch(unmountCompose());\n }\n\n render() {\n const { signedIn } = this.context.identity;\n\n return (\n
\n \n\n {!signedIn && (\n \n \n
\n \n )}\n\n {signedIn && (\n \n \n \n \n )}\n\n \n
\n );\n }\n\n}\n","import React from 'react';\n\n/*\n * //[b00pg] 4.0-transition\n \n*/\n\nconst Logo = () => (\n \n goonj\n \n \n);\n\nexport default Logo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\nimport { logOut } from 'mastodon/utils/log_out';\n\nconst messages = defineMessages({\n logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapStateToProps = (state) => ({\n disabledAcct: state.getIn(['accounts', disabledAccountId, 'acct']),\n movedToAcct: movedToAccountId ? state.getIn(['accounts', movedToAccountId, 'acct']) : undefined,\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onLogout () {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n closeWhenConfirm: false,\n onConfirm: () => logOut(),\n }));\n },\n});\n\nexport default @injectIntl\n@connect(mapStateToProps, mapDispatchToProps)\nclass DisabledAccountBanner extends React.PureComponent {\n\n static propTypes = {\n disabledAcct: PropTypes.string.isRequired,\n movedToAcct: PropTypes.string,\n onLogout: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleLogOutClick = e => {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.onLogout();\n\n return false;\n }\n\n render () {\n const { disabledAcct, movedToAcct } = this.props;\n\n const disabledAccountLink = (\n \n {disabledAcct}@{domain}\n \n );\n\n return (\n
\n

\n {movedToAcct ? (\n {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@${domain}`},\n }}\n />\n ) : (\n \n )}\n

\n \n \n \n \n
\n );\n }\n\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fetchFollowRequests } from 'mastodon/actions/accounts';\nimport { connect } from 'react-redux';\nimport ColumnLink from 'mastodon/features/ui/components/column_link';\nimport IconWithBadge from 'mastodon/components/icon_with_badge';\nimport { List as ImmutableList } from 'immutable';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n text: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n});\n\nconst mapStateToProps = state => ({\n count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,\n});\n\nexport default @injectIntl\n@connect(mapStateToProps)\nclass FollowRequestsColumnLink extends React.Component {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n count: PropTypes.number.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n\n dispatch(fetchFollowRequests());\n }\n\n render () {\n const { count, intl } = this.props;\n\n if (count === 0) {\n return null;\n }\n\n return (\n }\n text={intl.formatMessage(messages.text)}\n />\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createSelector } from 'reselect';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { fetchLists } from 'mastodon/actions/lists';\nimport ColumnLink from './column_link';\n\nconst getOrderedLists = createSelector([state => state.get('lists')], lists => {\n if (!lists) {\n return lists;\n }\n\n return lists.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title'))).take(4);\n});\n\nconst mapStateToProps = state => ({\n lists: getOrderedLists(state),\n});\n\nexport default @withRouter\n@connect(mapStateToProps)\nclass ListPanel extends ImmutablePureComponent {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n lists: ImmutablePropTypes.list,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchLists());\n }\n\n render () {\n const { lists } = this.props;\n\n if (!lists || lists.isEmpty()) {\n return null;\n }\n\n return (\n
\n
\n\n {lists.map(list => (\n \n ))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport IconWithBadge from 'mastodon/components/icon_with_badge';\n\nconst mapStateToProps = state => ({\n count: state.getIn(['notifications', 'unread']),\n id: 'bell',\n});\n\nexport default connect(mapStateToProps)(IconWithBadge);\n","import React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { registrationsOpen } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\n\nconst SignInBanner = () => {\n const dispatch = useDispatch();\n\n const openClosedRegistrationsModal = useCallback(\n () => dispatch(openModal('CLOSED_REGISTRATIONS')),\n [dispatch],\n );\n\n let signupButton;\n\n if (registrationsOpen) {\n signupButton = (\n \n \n \n );\n } else {\n signupButton = (\n \n );\n }\n\n return (\n
\n

\n \n {signupButton}\n
\n );\n};\n\nexport default SignInBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport Hashtag from 'mastodon/components/hashtag';\n\nconst messages = defineMessages({\n lastStatusAt: { id: 'account.featured_tags.last_status_at', defaultMessage: 'Last post on {date}' },\n empty: { id: 'account.featured_tags.last_status_never', defaultMessage: 'No posts' },\n});\n\nexport default @injectIntl\nclass FeaturedTags extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n featuredTags: ImmutablePropTypes.list,\n tagged: PropTypes.string,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, featuredTags, intl } = this.props;\n\n if (!account || account.get('suspended') || featuredTags.isEmpty()) {\n return null;\n }\n\n return (\n
\n

}} />

\n\n {featuredTags.take(3).map(featuredTag => (\n 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)}\n />\n ))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport FeaturedTags from '../components/featured_tags';\nimport { makeGetAccount } from 'mastodon/selectors';\nimport { List as ImmutableList } from 'immutable';\n\nconst mapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n return (state, { accountId }) => ({\n account: getAccount(state, accountId),\n featuredTags: state.getIn(['user_lists', 'featured_tags', accountId, 'items'], ImmutableList()),\n });\n};\n\nexport default connect(mapStateToProps)(FeaturedTags);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport FeaturedTags from 'mastodon/features/account/containers/featured_tags_container';\nimport { normalizeForLookup } from 'mastodon/reducers/accounts_map';\n\nconst mapStateToProps = (state, { match: { params: { acct } } }) => {\n const accountId = state.getIn(['accounts_map', normalizeForLookup(acct)]);\n\n if (!accountId) {\n return {\n isLoading: true,\n };\n }\n\n return {\n accountId,\n isLoading: false,\n };\n};\n\nexport default @connect(mapStateToProps)\nclass AccountNavigation extends React.PureComponent {\n\n static propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n acct: PropTypes.string,\n tagged: PropTypes.string,\n }).isRequired,\n }).isRequired,\n\n accountId: PropTypes.string,\n isLoading: PropTypes.bool,\n };\n\n render () {\n const { accountId, isLoading, match: { params: { tagged } } } = this.props;\n\n if (isLoading) {\n return null;\n }\n\n return (\n <>\n
\n \n \n );\n }\n\n}\n","import React from 'react';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport { showTrends } from 'mastodon/initial_state';\nimport Trends from 'mastodon/features/getting_started/containers/trends_container';\nimport AccountNavigation from 'mastodon/features/account/navigation';\n\nconst DefaultNavigation = () => (\n <>\n {showTrends && (\n <>\n
\n \n \n )}\n \n);\n\nexport default @withRouter\nclass NavigationPortal extends React.PureComponent {\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport Logo from 'mastodon/components/logo';\nimport { timelinePreview, showTrends } from 'mastodon/initial_state';\nimport ColumnLink from './column_link';\nimport DisabledAccountBanner from './disabled_account_banner';\nimport FollowRequestsColumnLink from './follow_requests_column_link';\nimport ListPanel from './list_panel';\nimport NotificationsCounterIcon from './notifications_counter_icon';\nimport SignInBanner from './sign_in_banner';\nimport NavigationPortal from 'mastodon/components/navigation_portal';\n\nconst messages = defineMessages({\n home: { id: 'tabs_bar.home', defaultMessage: 'Home' },\n notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },\n explore: { id: 'explore.title', defaultMessage: 'Explore' },\n local: { id: 'tabs_bar.local_timeline', defaultMessage: 'Local' },\n federated: { id: 'tabs_bar.federated_timeline', defaultMessage: 'Federated' },\n direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },\n bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' },\n about: { id: 'navigation_bar.about', defaultMessage: 'About' },\n search: { id: 'navigation_bar.search', defaultMessage: 'Search' },\n});\n\n/* [b00pg streamline] Removed following from NavigationPanel, check original for exact locations where these were replaced\n\n\n \n\n\n \n \n \n\n*/\n\nexport default @injectIntl\nclass NavigationPanel extends React.Component {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { intl } = this.props;\n const { signedIn, disabledAccountId } = this.context.identity;\n\n return (\n
\n
\n \n
\n
\n\n {signedIn && (\n \n \n } text={intl.formatMessage(messages.notifications)} />\n \n \n )}\n\n {showTrends ? (\n \n ) : (\n \n )}\n\n {(signedIn || timelinePreview) && (\n <>\n \n \n )}\n\n {!signedIn && (\n
\n
\n { disabledAccountId ? : }\n
\n )}\n\n {signedIn && (\n \n \n\n \n\n
\n\n \n
\n )}\n\n
\n
\n \n
\n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport BundleContainer from '../containers/bundle_container';\nimport ColumnLoading from './column_loading';\nimport DrawerLoading from './drawer_loading';\nimport BundleColumnError from './bundle_column_error';\nimport {\n Compose,\n Notifications,\n HomeTimeline,\n CommunityTimeline,\n PublicTimeline,\n HashtagTimeline,\n DirectTimeline,\n FavouritedStatuses,\n BookmarkedStatuses,\n ListTimeline,\n Directory,\n} from '../../ui/util/async-components';\nimport ComposePanel from './compose_panel';\nimport NavigationPanel from './navigation_panel';\nimport { supportsPassiveEvents } from 'detect-passive-events';\nimport { scrollRight } from '../../../scroll';\n\nconst componentMap = {\n 'COMPOSE': Compose,\n 'HOME': HomeTimeline,\n 'NOTIFICATIONS': Notifications,\n 'PUBLIC': PublicTimeline,\n 'REMOTE': PublicTimeline,\n 'COMMUNITY': CommunityTimeline,\n 'HASHTAG': HashtagTimeline,\n 'DIRECT': DirectTimeline,\n 'FAVOURITES': FavouritedStatuses,\n 'BOOKMARKS': BookmarkedStatuses,\n 'LIST': ListTimeline,\n 'DIRECTORY': Directory,\n};\n\nexport default class ColumnsArea extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n columns: ImmutablePropTypes.list.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n singleColumn: PropTypes.bool,\n children: PropTypes.node,\n };\n\n // Corresponds to (max-width: $no-gap-breakpoint + 285px - 1px) in SCSS\n mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 1174px)');\n\n state = {\n renderComposePanel: !(this.mediaQuery && this.mediaQuery.matches),\n }\n\n componentDidMount() {\n if (!this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.addEventListener) {\n this.mediaQuery.addEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.addListener(this.handleLayoutChange);\n }\n this.setState({ renderComposePanel: !this.mediaQuery.matches });\n }\n\n this.isRtlLayout = document.getElementsByTagName('body')[0].classList.contains('rtl');\n }\n\n componentWillUpdate(nextProps) {\n if (this.props.singleColumn !== nextProps.singleColumn && nextProps.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n }\n\n componentWillUnmount () {\n if (!this.props.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.removeEventListener) {\n this.mediaQuery.removeEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.removeListener(this.handleLayouteChange);\n }\n }\n }\n\n handleChildrenContentChange() {\n if (!this.props.singleColumn) {\n const modifier = this.isRtlLayout ? -1 : 1;\n this._interruptScrollAnimation = scrollRight(this.node, (this.node.scrollWidth - window.innerWidth) * modifier);\n }\n }\n\n handleLayoutChange = (e) => {\n this.setState({ renderComposePanel: !e.matches });\n }\n\n handleWheel = () => {\n if (typeof this._interruptScrollAnimation !== 'function') {\n return;\n }\n\n this._interruptScrollAnimation();\n }\n\n setRef = (node) => {\n this.node = node;\n }\n\n renderLoading = columnId => () => {\n return columnId === 'COMPOSE' ? : ;\n }\n\n renderError = (props) => {\n return ;\n }\n\n render () {\n const { columns, children, singleColumn, isModalOpen } = this.props;\n const { renderComposePanel } = this.state;\n\n if (singleColumn) {\n return (\n
\n
\n
\n {renderComposePanel && }\n
\n
\n\n
\n
\n
{children}
\n
\n\n
\n
\n \n
\n
\n
\n );\n }\n\n return (\n
\n {columns.map(column => {\n const params = column.get('params', null) === null ? null : column.get('params').toJS();\n const other = params && params.other ? params.other : {};\n\n return (\n \n {SpecificComponent => }\n \n );\n })}\n\n {React.Children.map(children, child => React.cloneElement(child, { multiColumn: true }))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport ColumnsArea from '../components/columns_area';\n\nconst mapStateToProps = state => ({\n columns: state.getIn(['settings', 'columns']),\n isModalOpen: !!state.get('modal').modalType,\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ColumnsArea);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport IconButton from 'mastodon/components/icon_button';\nimport { Link } from 'react-router-dom';\nimport Avatar from 'mastodon/components/avatar';\nimport DisplayName from 'mastodon/components/display_name';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n close: { id: 'lightbox.close', defaultMessage: 'Close' },\n});\n\nconst mapStateToProps = (state, { accountId }) => ({\n account: state.getIn(['accounts', accountId]),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass Header extends ImmutablePureComponent {\n\n static propTypes = {\n accountId: PropTypes.string.isRequired,\n statusId: PropTypes.string.isRequired,\n account: ImmutablePropTypes.map.isRequired,\n onClose: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, statusId, onClose, intl } = this.props;\n\n return (\n
\n \n \n \n \n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Video from 'mastodon/features/video';\nimport Audio from 'mastodon/features/audio';\nimport { removePictureInPicture } from 'mastodon/actions/picture_in_picture';\nimport Header from './components/header';\nimport Footer from './components/footer';\n\nconst mapStateToProps = state => ({\n ...state.get('picture_in_picture'),\n});\n\nexport default @connect(mapStateToProps)\nclass PictureInPicture extends React.Component {\n\n static propTypes = {\n statusId: PropTypes.string,\n accountId: PropTypes.string,\n type: PropTypes.string,\n src: PropTypes.string,\n muted: PropTypes.bool,\n volume: PropTypes.number,\n currentTime: PropTypes.number,\n poster: PropTypes.string,\n backgroundColor: PropTypes.string,\n foregroundColor: PropTypes.string,\n accentColor: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n };\n\n handleClose = () => {\n const { dispatch } = this.props;\n dispatch(removePictureInPicture());\n }\n\n render () {\n const { type, src, currentTime, accountId, statusId } = this.props;\n\n if (!currentTime) {\n return null;\n }\n\n let player;\n\n if (type === 'video') {\n player = (\n \n );\n } else if (type === 'audio') {\n player = (\n \n );\n }\n\n return (\n
\n
\n\n {player}\n\n
\n
\n );\n }\n\n}\n","import { changeSetting, saveSettings } from './settings';\n\nexport const INTRODUCTION_VERSION = 20181216044202;\n\nexport const closeOnboarding = () => dispatch => {\n dispatch(changeSetting(['introductionVersion'], INTRODUCTION_VERSION));\n dispatch(saveSettings());\n};\n","import React from 'react';\nimport Logo from 'mastodon/components/logo';\nimport { Link, withRouter } from 'react-router-dom';\nimport { FormattedMessage } from 'react-intl';\nimport { registrationsOpen, me } from 'mastodon/initial_state';\nimport Avatar from 'mastodon/components/avatar';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nconst Account = connect(state => ({\n account: state.getIn(['accounts', me]),\n}))(({ account }) => (\n \n \n \n));\n\nexport default @withRouter\nclass Header extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n location: PropTypes.object,\n };\n\n render () {\n const { signedIn } = this.context.identity;\n const { location } = this.props;\n\n let content;\n\n if (signedIn) {\n content = (\n <>\n {location.pathname !== '/publish' && }\n \n \n );\n } else {\n content = (\n <>\n \n \n \n );\n }\n\n return (\n
\n \n\n
\n {content}\n
\n
\n );\n }\n\n}\n","import classNames from 'classnames';\nimport React from 'react';\nimport { HotKeys } from 'react-hotkeys';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { Redirect, Route, withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport NotificationsContainer from './containers/notifications_container';\nimport LoadingBarContainer from './containers/loading_bar_container';\nimport ModalContainer from './containers/modal_container';\nimport { layoutFromWindow } from 'mastodon/is_mobile';\nimport { debounce } from 'lodash';\nimport { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';\nimport { expandHomeTimeline } from '../../actions/timelines';\nimport { expandNotifications } from '../../actions/notifications';\nimport { fetchServer } from '../../actions/server';\nimport { clearHeight } from '../../actions/height_cache';\nimport { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app';\nimport { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers';\nimport { WrappedSwitch, WrappedRoute } from './util/react_router_helpers';\nimport BundleColumnError from './components/bundle_column_error';\nimport UploadArea from './components/upload_area';\nimport ColumnsAreaContainer from './containers/columns_area_container';\nimport PictureInPicture from 'mastodon/features/picture_in_picture';\nimport {\n Compose,\n Status,\n GettingStarted,\n KeyboardShortcuts,\n PublicTimeline,\n CommunityTimeline,\n AccountTimeline,\n AccountGallery,\n HomeTimeline,\n Followers,\n Following,\n Reblogs,\n Favourites,\n DirectTimeline,\n HashtagTimeline,\n Notifications,\n FollowRequests,\n FavouritedStatuses,\n BookmarkedStatuses,\n ListTimeline,\n Blocks,\n DomainBlocks,\n Mutes,\n PinnedStatuses,\n Lists,\n Directory,\n Explore,\n FollowRecommendations,\n About,\n PrivacyPolicy,\n} from './util/async-components';\nimport initialState, { me, owner, singleUserMode, showTrends } from '../../initial_state';\nimport { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';\nimport Header from './components/header';\n\n// Dummy import, to make sure that ends up in the application bundle.\n// Without this it ends up in ~8 very commonly used bundles.\nimport '../../components/status';\n\nconst messages = defineMessages({\n beforeUnload: { id: 'ui.beforeunload', defaultMessage: 'Your draft will be lost if you leave Mastodon.' },\n});\n\nconst mapStateToProps = state => ({\n layout: state.getIn(['meta', 'layout']),\n isComposing: state.getIn(['compose', 'is_composing']),\n hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,\n hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,\n canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,\n dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,\n firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION,\n username: state.getIn(['accounts', me, 'username']),\n});\n\nconst keyMap = {\n help: '?',\n new: 'n',\n search: 's',\n forceNew: 'option+n',\n toggleComposeSpoilers: 'option+x',\n focusColumn: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],\n reply: 'r',\n favourite: 'f',\n boost: 'b',\n mention: 'm',\n open: ['enter', 'o'],\n openProfile: 'p',\n moveDown: ['down', 'j'],\n moveUp: ['up', 'k'],\n back: 'backspace',\n goToHome: 'g h',\n goToNotifications: 'g n',\n goToLocal: 'g l',\n goToFederated: 'g t',\n goToDirect: 'g d',\n goToStart: 'g s',\n goToFavourites: 'g f',\n goToPinned: 'g p',\n goToProfile: 'g u',\n goToBlocked: 'g b',\n goToMuted: 'g m',\n goToRequests: 'g r',\n toggleHidden: 'x',\n toggleSensitive: 'h',\n openMedia: 'e',\n};\n\nclass SwitchingColumnsArea extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n children: PropTypes.node,\n location: PropTypes.object,\n mobile: PropTypes.bool,\n };\n\n componentWillMount () {\n if (this.props.mobile) {\n document.body.classList.toggle('layout-single-column', true);\n document.body.classList.toggle('layout-multiple-columns', false);\n } else {\n document.body.classList.toggle('layout-single-column', false);\n document.body.classList.toggle('layout-multiple-columns', true);\n }\n }\n\n componentDidUpdate (prevProps) {\n if (![this.props.location.pathname, '/'].includes(prevProps.location.pathname)) {\n this.node.handleChildrenContentChange();\n }\n\n if (prevProps.mobile !== this.props.mobile) {\n document.body.classList.toggle('layout-single-column', this.props.mobile);\n document.body.classList.toggle('layout-multiple-columns', !this.props.mobile);\n }\n }\n\n setRef = c => {\n if (c) {\n this.node = c;\n }\n }\n\n render () {\n const { children, mobile } = this.props;\n const { signedIn } = this.context.identity;\n\n let redirect;\n\n if (signedIn) {\n if (mobile) {\n redirect = ;\n } else {\n redirect = ;\n }\n } else if (singleUserMode && owner && initialState?.accounts[owner]) {\n redirect = ;\n } else if (showTrends) {\n redirect = ;\n } else {\n redirect = ;\n }\n\n return (\n \n \n {redirect}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n {/* Legacy routes, cannot be easily factored with other routes because they share a param name */}\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n );\n }\n\n}\n\nexport default @connect(mapStateToProps)\n@injectIntl\n@withRouter\nclass UI extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n children: PropTypes.node,\n isComposing: PropTypes.bool,\n hasComposingText: PropTypes.bool,\n hasMediaAttachments: PropTypes.bool,\n canUploadMore: PropTypes.bool,\n location: PropTypes.object,\n intl: PropTypes.object.isRequired,\n dropdownMenuIsOpen: PropTypes.bool,\n layout: PropTypes.string.isRequired,\n firstLaunch: PropTypes.bool,\n username: PropTypes.string,\n };\n\n state = {\n draggingOver: false,\n };\n\n handleBeforeUnload = e => {\n const { intl, dispatch, isComposing, hasComposingText, hasMediaAttachments } = this.props;\n\n dispatch(synchronouslySubmitMarkers());\n\n if (isComposing && (hasComposingText || hasMediaAttachments)) {\n e.preventDefault();\n // Setting returnValue to any string causes confirmation dialog.\n // Many browsers no longer display this text to users,\n // but we set user-friendly message for other browsers, e.g. Edge.\n e.returnValue = intl.formatMessage(messages.beforeUnload);\n }\n }\n\n handleWindowFocus = () => {\n this.props.dispatch(focusApp());\n this.props.dispatch(submitMarkers({ immediate: true }));\n }\n\n handleWindowBlur = () => {\n this.props.dispatch(unfocusApp());\n }\n\n handleDragEnter = (e) => {\n e.preventDefault();\n\n if (!this.dragTargets) {\n this.dragTargets = [];\n }\n\n if (this.dragTargets.indexOf(e.target) === -1) {\n this.dragTargets.push(e.target);\n }\n\n if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore && this.context.identity.signedIn) {\n this.setState({ draggingOver: true });\n }\n }\n\n handleDragOver = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return false;\n\n e.preventDefault();\n e.stopPropagation();\n\n try {\n e.dataTransfer.dropEffect = 'copy';\n } catch (err) {\n\n }\n\n return false;\n }\n\n handleDrop = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return;\n\n e.preventDefault();\n\n this.setState({ draggingOver: false });\n this.dragTargets = [];\n\n if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore && this.context.identity.signedIn) {\n this.props.dispatch(uploadCompose(e.dataTransfer.files));\n }\n }\n\n handleDragLeave = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n this.dragTargets = this.dragTargets.filter(el => el !== e.target && this.node.contains(el));\n\n if (this.dragTargets.length > 0) {\n return;\n }\n\n this.setState({ draggingOver: false });\n }\n\n dataTransferIsText = (dataTransfer) => {\n return (dataTransfer && Array.from(dataTransfer.types).filter((type) => type === 'text/plain').length === 1);\n }\n\n closeUploadModal = () => {\n this.setState({ draggingOver: false });\n }\n\n handleServiceWorkerPostMessage = ({ data }) => {\n if (data.type === 'navigate') {\n this.context.router.history.push(data.path);\n } else {\n console.warn('Unknown message type:', data.type);\n }\n }\n\n handleLayoutChange = debounce(() => {\n this.props.dispatch(clearHeight()); // The cached heights are no longer accurate, invalidate\n }, 500, {\n trailing: true,\n });\n\n handleResize = () => {\n const layout = layoutFromWindow();\n\n if (layout !== this.props.layout) {\n this.handleLayoutChange.cancel();\n this.props.dispatch(changeLayout(layout));\n } else {\n this.handleLayoutChange();\n }\n }\n\n componentDidMount () {\n const { signedIn } = this.context.identity;\n\n window.addEventListener('focus', this.handleWindowFocus, false);\n window.addEventListener('blur', this.handleWindowBlur, false);\n window.addEventListener('beforeunload', this.handleBeforeUnload, false);\n window.addEventListener('resize', this.handleResize, { passive: true });\n\n document.addEventListener('dragenter', this.handleDragEnter, false);\n document.addEventListener('dragover', this.handleDragOver, false);\n document.addEventListener('drop', this.handleDrop, false);\n document.addEventListener('dragleave', this.handleDragLeave, false);\n document.addEventListener('dragend', this.handleDragEnd, false);\n\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerPostMessage);\n }\n\n // On first launch, redirect to the follow recommendations page\n if (signedIn && this.props.firstLaunch) {\n this.context.router.history.replace('/start');\n this.props.dispatch(closeOnboarding());\n }\n\n if (signedIn) {\n this.props.dispatch(fetchMarkers());\n this.props.dispatch(expandHomeTimeline());\n this.props.dispatch(expandNotifications());\n\n setTimeout(() => this.props.dispatch(fetchServer()), 3000);\n }\n\n this.hotkeys.__mousetrap__.stopCallback = (e, element) => {\n return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName);\n };\n }\n\n componentWillUnmount () {\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('beforeunload', this.handleBeforeUnload);\n window.removeEventListener('resize', this.handleResize);\n\n document.removeEventListener('dragenter', this.handleDragEnter);\n document.removeEventListener('dragover', this.handleDragOver);\n document.removeEventListener('drop', this.handleDrop);\n document.removeEventListener('dragleave', this.handleDragLeave);\n document.removeEventListener('dragend', this.handleDragEnd);\n }\n\n setRef = c => {\n this.node = c;\n }\n\n handleHotkeyNew = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.compose-form__autosuggest-wrapper textarea');\n\n if (element) {\n element.focus();\n }\n }\n\n handleHotkeySearch = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.search__input');\n\n if (element) {\n element.focus();\n }\n }\n\n handleHotkeyForceNew = e => {\n this.handleHotkeyNew(e);\n this.props.dispatch(resetCompose());\n }\n\n handleHotkeyToggleComposeSpoilers = e => {\n e.preventDefault();\n this.props.dispatch(changeComposeSpoilerness());\n }\n\n handleHotkeyFocusColumn = e => {\n const index = (e.key * 1) + 1; // First child is drawer, skip that\n const column = this.node.querySelector(`.column:nth-child(${index})`);\n if (!column) return;\n const container = column.querySelector('.scrollable');\n\n if (container) {\n const status = container.querySelector('.focusable');\n\n if (status) {\n if (container.scrollTop > status.offsetTop) {\n status.scrollIntoView(true);\n }\n status.focus();\n }\n }\n }\n\n handleHotkeyBack = () => {\n if (window.history && window.history.length === 1) {\n this.context.router.history.push('/');\n } else {\n this.context.router.history.goBack();\n }\n }\n\n setHotkeysRef = c => {\n this.hotkeys = c;\n }\n\n handleHotkeyToggleHelp = () => {\n if (this.props.location.pathname === '/keyboard-shortcuts') {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/keyboard-shortcuts');\n }\n }\n\n handleHotkeyGoToHome = () => {\n this.context.router.history.push('/home');\n }\n\n handleHotkeyGoToNotifications = () => {\n this.context.router.history.push('/notifications');\n }\n\n handleHotkeyGoToLocal = () => {\n this.context.router.history.push('/public/local');\n }\n\n handleHotkeyGoToFederated = () => {\n this.context.router.history.push('/public');\n }\n\n handleHotkeyGoToDirect = () => {\n this.context.router.history.push('/conversations');\n }\n\n handleHotkeyGoToStart = () => {\n this.context.router.history.push('/getting-started');\n }\n\n handleHotkeyGoToFavourites = () => {\n this.context.router.history.push('/favourites');\n }\n\n handleHotkeyGoToPinned = () => {\n this.context.router.history.push('/pinned');\n }\n\n handleHotkeyGoToProfile = () => {\n this.context.router.history.push(`/@${this.props.username}`);\n }\n\n handleHotkeyGoToBlocked = () => {\n this.context.router.history.push('/blocks');\n }\n\n handleHotkeyGoToMuted = () => {\n this.context.router.history.push('/mutes');\n }\n\n handleHotkeyGoToRequests = () => {\n this.context.router.history.push('/follow_requests');\n }\n\n render () {\n const { draggingOver } = this.state;\n const { children, isComposing, location, dropdownMenuIsOpen, layout } = this.props;\n\n const handlers = {\n help: this.handleHotkeyToggleHelp,\n new: this.handleHotkeyNew,\n search: this.handleHotkeySearch,\n forceNew: this.handleHotkeyForceNew,\n toggleComposeSpoilers: this.handleHotkeyToggleComposeSpoilers,\n focusColumn: this.handleHotkeyFocusColumn,\n back: this.handleHotkeyBack,\n goToHome: this.handleHotkeyGoToHome,\n goToNotifications: this.handleHotkeyGoToNotifications,\n goToLocal: this.handleHotkeyGoToLocal,\n goToFederated: this.handleHotkeyGoToFederated,\n goToDirect: this.handleHotkeyGoToDirect,\n goToStart: this.handleHotkeyGoToStart,\n goToFavourites: this.handleHotkeyGoToFavourites,\n goToPinned: this.handleHotkeyGoToPinned,\n goToProfile: this.handleHotkeyGoToProfile,\n goToBlocked: this.handleHotkeyGoToBlocked,\n goToMuted: this.handleHotkeyGoToMuted,\n goToRequests: this.handleHotkeyGoToRequests,\n };\n\n return (\n \n
\n
\n\n \n {children}\n \n\n {layout !== 'mobile' && }\n \n \n \n \n
\n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport { version, source_url } from 'mastodon/initial_state';\nimport StackTrace from 'stacktrace-js';\nimport { Helmet } from 'react-helmet';\n\nexport default class ErrorBoundary extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node,\n };\n\n state = {\n hasError: false,\n errorMessage: undefined,\n stackTrace: undefined,\n mappedStackTrace: undefined,\n componentStack: undefined,\n };\n\n componentDidCatch (error, info) {\n this.setState({\n hasError: true,\n errorMessage: error.toString(),\n stackTrace: error.stack,\n componentStack: info && info.componentStack,\n mappedStackTrace: undefined,\n });\n\n StackTrace.fromError(error).then((stackframes) => {\n this.setState({\n mappedStackTrace: stackframes.map((sf) => sf.toString()).join('\\n'),\n });\n }).catch(() => {\n this.setState({\n mappedStackTrace: undefined,\n });\n });\n }\n\n handleCopyStackTrace = () => {\n const { errorMessage, stackTrace, mappedStackTrace } = this.state;\n const textarea = document.createElement('textarea');\n\n let contents = [errorMessage, stackTrace];\n if (mappedStackTrace) {\n contents.push(mappedStackTrace);\n }\n\n textarea.textContent = contents.join('\\n\\n\\n');\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n\n this.setState({ copied: true });\n setTimeout(() => this.setState({ copied: false }), 700);\n }\n\n render() {\n const { hasError, copied, errorMessage } = this.state;\n\n if (!hasError) {\n return this.props.children;\n }\n\n const likelyBrowserAddonIssue = errorMessage && errorMessage.includes('NotFoundError');\n\n return (\n
\n
\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

Mastodon v{version} · ·

\n
\n\n \n \n \n
\n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { IntlProvider, addLocaleData } from 'react-intl';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { BrowserRouter, Route } from 'react-router-dom';\nimport { ScrollContext } from 'react-router-scroll-4';\nimport configureStore from 'mastodon/store/configureStore';\nimport UI from 'mastodon/features/ui';\nimport { fetchCustomEmojis } from 'mastodon/actions/custom_emojis';\nimport { hydrateStore } from 'mastodon/actions/store';\nimport { connectUserStream } from 'mastodon/actions/streaming';\nimport ErrorBoundary from 'mastodon/components/error_boundary';\nimport initialState, { title as siteTitle } from 'mastodon/initial_state';\nimport { getLocale } from 'mastodon/locales';\n\nconst { localeData, messages } = getLocale();\naddLocaleData(localeData);\n\nconst title = process.env.NODE_ENV === 'production' ? siteTitle : `${siteTitle} (Dev)`;\n\nexport const store = configureStore();\nconst hydrateAction = hydrateStore(initialState);\n\nstore.dispatch(hydrateAction);\nstore.dispatch(fetchCustomEmojis());\n\nconst createIdentityContext = state => ({\n signedIn: !!state.meta.me,\n accountId: state.meta.me,\n disabledAccountId: state.meta.disabled_account_id,\n accessToken: state.meta.access_token,\n permissions: state.role ? state.role.permissions : 0,\n});\n\nexport default class Mastodon extends React.PureComponent {\n\n static propTypes = {\n locale: PropTypes.string.isRequired,\n };\n\n static childContextTypes = {\n identity: PropTypes.shape({\n signedIn: PropTypes.bool.isRequired,\n accountId: PropTypes.string,\n disabledAccountId: PropTypes.string,\n accessToken: PropTypes.string,\n }).isRequired,\n };\n\n identity = createIdentityContext(initialState);\n\n getChildContext() {\n return {\n identity: this.identity,\n };\n }\n\n componentDidMount() {\n if (this.identity.signedIn) {\n this.disconnect = store.dispatch(connectUserStream());\n }\n }\n\n componentWillUnmount () {\n if (this.disconnect) {\n this.disconnect();\n this.disconnect = null;\n }\n }\n\n shouldUpdateScroll (prevRouterProps, { location }) {\n return !(location.state?.mastodonModalKey && location.state?.mastodonModalKey !== prevRouterProps?.location?.state?.mastodonModalKey);\n }\n\n render () {\n const { locale } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n \n );\n }\n\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { setupBrowserNotifications } from 'mastodon/actions/notifications';\nimport Mastodon, { store } from 'mastodon/containers/mastodon';\nimport { me } from 'mastodon/initial_state';\nimport ready from 'mastodon/ready';\n\nconst perf = require('mastodon/performance');\n\n/**\n * @returns {Promise}\n */\nfunction main() {\n perf.start('main()');\n\n return ready(async () => {\n const mountNode = document.getElementById('mastodon');\n const props = JSON.parse(mountNode.getAttribute('data-props'));\n\n ReactDOM.render(, mountNode);\n store.dispatch(setupBrowserNotifications());\n\n if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) {\n const { Workbox } = await import('workbox-window');\n const wb = new Workbox('/sw.js');\n /** @type {ServiceWorkerRegistration} */\n let registration;\n\n try {\n registration = await wb.register();\n } catch (err) {\n console.error(err);\n }\n\n if (registration) {\n const registerPushNotifications = await import('mastodon/actions/push_notifications');\n\n store.dispatch(registerPushNotifications.register());\n }\n }\n\n perf.stop('main()');\n });\n}\n\nexport default main;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port;\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\nvar supportsNullProto = function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}();\nfunction identity(s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n var length = s.length;\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ || s.charCodeAt(length - 2) !== 95 /* '_' */ || s.charCodeAt(length - 3) !== 111 /* 'o' */ || s.charCodeAt(length - 4) !== 116 /* 't' */ || s.charCodeAt(length - 5) !== 111 /* 'o' */ || s.charCodeAt(length - 6) !== 114 /* 'r' */ || s.charCodeAt(length - 7) !== 112 /* 'p' */ || s.charCodeAt(length - 8) !== 95 /* '_' */ || s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n if (aStr1 > aStr2) {\n return 1;\n }\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\nvar warning = function () {};\nif (process.env.NODE_ENV !== 'production') {\n warning = function (condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error('The warning format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + format);\n }\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n };\n}\nmodule.exports = warning;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n return StackFrame;\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n})(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function (stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 && (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 && (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 && (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n [first, second].forEach(function (obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n return target;\n }\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function (resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function (sf) {\n return new Promise(function (resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n return instrumented;\n },\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n var reportPayload = {\n stack: stackframes\n };\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n});","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n};\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n};\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n};\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + 'or the source map\\'s \"file\" property. Both were omitted.');\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source);\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n};\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {\n // Cases 2 and 3.\n return;\n } else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n};\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = '';\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n } else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n result += next;\n }\n return result;\n};\nSourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;\n }, this);\n};\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n return map;\n};\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n};\nexports.SourceMapGenerator = SourceMapGenerator;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative ? -shifted : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n var vlq = toVLQSigned(aValue);\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\nexports.ArraySet = ArraySet;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n})(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n})(this, function (SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 300 || url.substr(0, 7) === 'file://' && req.responseText) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n function _findFunctionName(source, lineNumber /*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' || stackframe.lineNumber % 1 !== 0 || stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' || stackframe.columnNumber % 1 !== 0 || stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function (resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n this.ajax = opts.ajax || _xdr;\n this._atob = opts.atob || _atob;\n this._get = function _get(location) {\n return new Promise(function (resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp = /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {\n method: 'get'\n });\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function (resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function (resolve, reject) {\n return this._get(sourceMappingURL).then(function (sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }, reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function (resolve, reject) {\n this.getMappedLocation(stackframe).then(function (mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n this.findFunctionName(mappedStackFrame).then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function (source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !/^https?:\\/\\/|^\\/\\//i.test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot).then(function (sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache).then(resolve)['catch'](function () {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n});","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return charCode - bigA;\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return charCode - littleA + littleOffset;\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return charCode - zero + numberOffset;\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {\n generatedLine: -1,\n generatedColumn: 0\n };\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n};\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\nexports.MappingList = MappingList;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap) : new BasicSourceMapConsumer(sourceMap);\n}\nSourceMapConsumer.fromSourceMap = function (aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__generatedMappings;\n }\n});\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__originalMappings;\n }\n});\nSourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n};\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n};\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n var mappings = [];\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n }\n }\n return mappings;\n};\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n sources = sources.map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping();\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n destOriginalMappings.push(destMapping);\n }\n destGeneratedMappings.push(destMapping);\n }\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n return smc;\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n } else if (aStr.charAt(index) === ',') {\n index++;\n } else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n};\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]);\n }\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n};\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n};\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._generatedMappings, \"generatedLine\", \"generatedColumn\", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function (sc) {\n return sc == null;\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n var url;\n if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\" && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];\n }\n if ((!url.path || url.path == \"/\") && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n};\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n this._sources = new ArraySet();\n this._names = new ArraySet();\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n };\n });\n}\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections, function (needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n return needle.generatedColumn - section.generatedOffset.generatedColumn;\n });\n var section = this._sections[sectionIndex];\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n return section.consumer.originalPositionFor({\n line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n bias: aArgs.bias\n });\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)\n };\n return ret;\n }\n }\n return {\n line: null,\n column: null\n };\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n};\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n } else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n } else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n return index;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + Math.random() * (high - low));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function () {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1,\n lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n return node;\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source;\n node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name));\n }\n }\n};\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length - 1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n } else {\n if (chunk !== '') {\n aFn(chunk, {\n source: this.source,\n line: this.line,\n column: this.column,\n name: this.name\n });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len - 1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n } else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n } else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n};\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n};\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null && original.line !== null && original.column !== null) {\n if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n return {\n code: generated.code,\n map: map\n };\n};\nexports.SourceNode = SourceNode;","//\n// Tools for performance debugging, only enabled in development mode.\n// Open up Chrome Dev Tools, then Timeline, then User Timing to see output.\n// Also see config/webpack/loaders/mark.js for the webpack loader marks.\n//\n\nlet marky;\n\nif (process.env.NODE_ENV === 'development') {\n if (typeof performance !== 'undefined' && performance.setResourceTimingBufferSize) {\n // Increase Firefox's performance entry limit; otherwise it's capped to 150.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135\n performance.setResourceTimingBufferSize(Infinity);\n }\n marky = require('marky');\n // allows us to easily do e.g. ReactPerf.printWasted() while debugging\n //window.ReactPerf = require('react-addons-perf');\n //window.ReactPerf.start();\n}\n\nexport function start(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.mark(name);\n }\n}\n\nexport function stop(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.stop(name);\n }\n}\n"],"sourceRoot":""}