All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.builtins.98d2b3fc81e4ad9e3499.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.0
Show newest version
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/util/History.js","webpack:///./src/stores/users/CurrentUserStore.jsx","webpack:///./src/actions/messages/MessagesActions.js","webpack:///delegated ./node_modules/d3/d3.js from dll-reference __vendor","webpack:///./src/logic/message/MessageFormatter.js","webpack:///./src/stores/streams/StreamRulesStore.js","webpack:///./src/stores/users/StartpageStore.js","webpack:///./src/legacy/Rickshaw.Fixtures.Graylog2Time.js","webpack:///./src/actions/extractors/ExtractorsActions.js","webpack:///./src/injection/StoreProvider.jsx","webpack:///./node_modules/urijs/src/IPv6.js","webpack:///./src/actions/content-packs/CatalogActions.jsx","webpack:///./src/injection/CombinedProvider.js","webpack:///./src/views/logic/SearchResult.js","webpack:///./src/stores/messages/MessageCountsStore.js","webpack:///delegated ./node_modules/moment/moment.js from dll-reference __vendor","webpack:///./node_modules/graylog-web-plugin/lib/PluginManifest.js","webpack:///./src/actions/event-definitions/FilterPreviewActions.js","webpack:///./src/views/logic/queries/Query.js","webpack:///./src/stores/event-notifications/EventNotificationsStore.js","webpack:///./src/util/EventHandlersThrottler.js","webpack:///delegated ./node_modules/reflux/src/index.js from dll-reference __vendor","webpack:///./src/stores/dashboards/DashboardsStore.js","webpack:///./src/actions/search/SavedSearchesActions.js","webpack:///./node_modules/qs/lib/formats.js","webpack:///./src/stores/search/UniversalSearchStore.js","webpack:///./src/actions/event-notifications/EventNotificationsActions.js","webpack:///./src/stores/extractors/ExtractorsStore.js","webpack:///delegated ./node_modules/timers-browserify/main.js from dll-reference __vendor","webpack:///./src/logic/content-packs/ContentPack.js","webpack:///./src/util/NumberUtils.js","webpack:///./src/logic/rest/FetchProvider.js","webpack:///./src/stores/indexers/IndexerClusterStore.js","webpack:///./node_modules/component-emitter/index.js","webpack:///./node_modules/jquery-ui/ui/widgets/mouse.js","webpack:///./src/stores/fields/FieldsStore.js","webpack:///./src/actions/sidecars/SidecarsActions.js","webpack:///./src/legacy/analyzers/fieldcharts.js","webpack:///./node_modules/javascript-natural-sort/naturalSort.js","webpack:///./src/util/UserNotification.js","webpack:///./node_modules/superagent/lib/utils.js","webpack:///./src/actions/dashboards/DashboardsActions.js","webpack:///./src/stores/inputs/InputStaticFieldsStore.js","webpack:///./node_modules/jquery-ui/ui/safe-blur.js","webpack:///./src/actions/inputs/InputTypesActions.js","webpack:///./node_modules/crossfilter2/crossfilter.js","webpack:///delegated ./node_modules/webpack/buildin/module.js from dll-reference __vendor","webpack:///./src/util/MomentUtils.js","webpack:///./src/stores/content-packs/CatalogStore.jsx","webpack:///./node_modules/numeral/numeral.js","webpack:///./node_modules/superagent/lib/request-base.js","webpack:///./src/actions/systemjobs/SystemJobsActions.jsx","webpack:///./node_modules/urijs/src/SecondLevelDomains.js","webpack:///./src/stores/codecs/CodecTypesStore.js","webpack:///./src/actions/sidecars/CollectorConfigurationsActions.js","webpack:///./node_modules/dc/dc.js","webpack:///./node_modules/graylog-web-plugin/plugin.js","webpack:///./src/stores/alertconditions/AlertConditionsStore.js","webpack:///./src/actions/sessions/SessionActions.jsx","webpack:///./src/actions/nodes/SingleNodeActions.js","webpack:///./src/stores/tools/ToolsStore.js","webpack:///./src/actions/alerts/AlertsActions.js","webpack:///./node_modules/ua-parser-js/src/ua-parser.js","webpack:///./src/actions/alarmcallbacks/AlarmCallbackHistoryActions.js","webpack:///./node_modules/md5/md5.js","webpack:///./src/views/logic/search/Search.js","webpack:///./src/stores/indexers/IndexerOverviewStore.js","webpack:///./src/stores/tools/RefreshStore.js","webpack:///./src/injection/registerBuiltinStores.js","webpack:///./src/actions/indices/IndexRangesActions.jsx","webpack:///./src/stores/event-definitions/EventDefinitionsStore.js","webpack:///./src/actions/system/LoggersActions.jsx","webpack:///./src/actions/configurations/ConfigurationActions.js","webpack:///./src/stores/indices/IndexSetsStore.jsx","webpack:///./src/util/URLUtils.js","webpack:///./src/util/StringUtils.js","webpack:///delegated ./node_modules/deep-equal/index.js from dll-reference __vendor","webpack:///./src/stores/system/SystemStore.js","webpack:///./src/stores/search/SavedSearchesStore.js","webpack:///./src/stores/tools/FocusStore.jsx","webpack:///./src/stores/alerts/AlertsStore.js","webpack:///./src/actions/indices/IndexSetsActions.js","webpack:///./src/stores/ldap/LdapStore.js","webpack:///./src/stores/indices/IndicesStore.js","webpack:///./src/stores/messages/MessageFieldsStore.js","webpack:///./src/views/Constants.js","webpack:///./src/stores/sessions/ServerAvailabilityStore.js","webpack:///./src/stores/indexers/IndexerFailuresStore.js","webpack:///./src/injection/ActionsProvider.jsx","webpack:///./node_modules/bson-objectid/objectid.js","webpack:///./src/stores/outputs/OutputsStore.js","webpack:///delegated ./node_modules/process/browser.js from dll-reference __vendor","webpack:///./src/actions/inputs/InputsActions.js","webpack:///./src/stores/nodes/NodesStore.js","webpack:///./src/stores/sidecars/ConfigurationVariableStore.js","webpack:///./src/actions/ldap/LdapActions.js","webpack:///./src/stores/sources/HistogramDataStore.js","webpack:///./src/actions/lookup-tables/LookupTableDataAdaptersActions.js","webpack:///./src/actions/sources/HistogramDataActions.js","webpack:///./src/stores/journal/JournalStore.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./src/actions/sessions/ServerAvailabilityActions.jsx","webpack:///./src/logic/content-packs/Constraint.js","webpack:///./src/util/ValueRefHelper.js","webpack:///./node_modules/graylog-web-plugin/lib/PluginStore.js","webpack:///./node_modules/jquery-ui/ui/plugin.js","webpack:///./src/stores/systemmessages/SystemMessagesStore.js","webpack:///./src/actions/lookup-tables/LookupTablesActions.js","webpack:///./src/stores/plugins/PluginsStore.js","webpack:///./src/stores/alarmcallbacks/AlarmCallbacksStore.js","webpack:///./src/stores/field-analyzers/FieldQuickValuesStore.js","webpack:///./node_modules/jquery-ui/ui/scroll-parent.js","webpack:///./src/actions/sidecars/SidecarsAdministrationActions.js","webpack:///./src/stores/users/PreferencesStore.js","webpack:///./src/stores/cluster/ClusterOverviewStore.js","webpack:///./src/actions/simulator/SimulatorActions.js","webpack:///./src/logic/datetimes/DateTime.js","webpack:///./src/stores/systemjobs/SystemJobsStore.js","webpack:///./src/routing/ApiRoutes.js","webpack:///./src/stores/users/UsersStore.js","webpack:///./src/stores/rules/RulesStore.js","webpack:///./src/stores/field-analyzers/FieldStatisticsStore.js","webpack:///./src/stores/messages/MessagesStore.js","webpack:///./src/stores/widgets/WidgetsStore.ts","webpack:///./node_modules/crossfilter/index.js","webpack:///./node_modules/jquery-ui/ui/ie.js","webpack:///./node_modules/crossfilter/crossfilter.js","webpack:///./src/actions/sidecars/ConfigurationVariableActions.js","webpack:///./src/stores/content-packs/ContentPacksStore.jsx","webpack:///./src/actions/streams/StreamsActions.jsx","webpack:///./node_modules/immutable/dist/immutable.js","webpack:///./src/actions/ldap/LdapGroupsActions.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./src/logic/content-packs/EntityIndex.js","webpack:///./src/logic/graphs/HistogramFormatter.js","webpack:///./src/actions/nodes/NodesActions.js","webpack:///./src/routing/Routes.jsx","webpack:///./src/stores/pipelines/PipelineConnectionsStore.js","webpack:///./src/stores/gettingstarted/GettingStartedStore.js","webpack:///./src/stores/cluster/ClusterTrafficStore.js","webpack:///./node_modules/jquery-ui/ui/widgets/droppable.js","webpack:///./src/logic/content-packs/Entity.js","webpack:///./src/stores/system-processing/SystemProcessingStore.js","webpack:///./src/stores/nodes/SingleNodeStore.js","webpack:///delegated ./node_modules/react-dom/index.js from dll-reference __vendor","webpack:///./src/stores/streams/StreamsStore.js","webpack:///./src/stores/events/EventsStore.js","webpack:///./node_modules/bluebird/js/browser/bluebird.js","webpack:///./src/stores/sources/SourcesStore.js","webpack:///./src/actions/indexers/IndexerOverviewActions.jsx","webpack:///./src/stores/sessions/SessionStore.js","webpack:///./src/actions/notifications/NotificationsActions.jsx","webpack:///./src/stores/field-analyzers/FieldGraphsStore.ts","webpack:///./node_modules/qs/lib/utils.js","webpack:///./src/legacy/Rickshaw.Graph.Graylog2Selector.js","webpack:///delegated ./node_modules/react-router/es/index.js from dll-reference __vendor","webpack:///./src/stores/system-shutdown/SystemShutdownStore.js","webpack:///./src/actions/cluster/ClusterTrafficActions.js","webpack:///./src/stores/metrics/MetricsStore.js","webpack:///delegated ./node_modules/webpack/buildin/global.js from dll-reference __vendor","webpack:///./src/views/logic/SearchType.js","webpack:///./src/views/logic/QueryResult.js","webpack:///delegated ./node_modules/moment-timezone/index.js from dll-reference __vendor","webpack:///./src/actions/field-analyzers/FieldQuickValuesActions.js","webpack:///./node_modules/superagent/lib/response-base.js","webpack:///./src/actions/indices/DeflectorActions.jsx","webpack:///./src/stores/authentication/AuthenticationStore.js","webpack:///./src/stores/inputs/InputStatesStore.js","webpack:///./src/util/PermissionsMixin.js","webpack:///./src/actions/sidecars/CollectorsActions.js","webpack:///./src/actions/alertnotifications/AlertNotificationsActions.jsx","webpack:///./src/logic/content-packs/ContentPackRevisions.js","webpack:///./node_modules/jquery-ui/ui/widgets/draggable.js","webpack:///./node_modules/qs/lib/parse.js","webpack:///./src/views/logic/ResultWindowLimitError.js","webpack:///delegated ./node_modules/jquery/dist/jquery.js from dll-reference __vendor","webpack:///./src/stores/alarmcallbacks/AlarmCallbackHistoryStore.js","webpack:///./src/stores/metrics/GlobalThroughputStore.js","webpack:///./node_modules/jquery-ui/ui/safe-active-element.js","webpack:///./src/stores/grok-patterns/GrokPatternsStore.js","webpack:///./src/views/logic/singleton.js","webpack:///./src/util/ExtractorUtils.jsx","webpack:///./node_modules/jquery-ui/ui/effects/effect-bounce.js","webpack:///./node_modules/toastr/toastr.js","webpack:///delegated ./node_modules/prop-types/index.js from dll-reference __vendor","webpack:///delegated ./node_modules/react/index.js from dll-reference __vendor","webpack:///./src/stores/notifications/NotificationsStore.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///external \"__vendor\"","webpack:///./src/stores/inputs/InputsStore.js","webpack:///./src/stores/lookup-tables/LookupTableCachesStore.js","webpack:///./src/stores/search/SearchStore.ts","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./src/actions/pipelines/PipelineConnectionsActions.js","webpack:///./src/stores/decorators/DecoratorsStore.js","webpack:///./src/stores/ldap/LdapGroupsStore.js","webpack:///./src/logic/message/MessageFieldsFilter.js","webpack:///./src/stores/users/RolesStore.js","webpack:///./node_modules/superagent/lib/agent-base.js","webpack:///./src/actions/authentication/AuthenticationActions.js","webpack:///./node_modules/chroma-js/chroma.js","webpack:///./node_modules/superagent/lib/is-object.js","webpack:///./src/util/AppConfig.js","webpack:///./src/stores/sidecars/SidecarsStore.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./src/stores/sidecars/CollectorsStore.js","webpack:///./src/stores/configurations/ConfigurationsStore.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./src/actions/lookup-tables/LookupTableCachesActions.js","webpack:///./src/actions/indexers/IndexerClusterActions.jsx","webpack:///./src/stores/lookup-tables/LookupTableDataAdaptersStore.js","webpack:///./src/legacy/graphHelper.js","webpack:///./src/stores/sidecars/SidecarsAdministrationStore.js","webpack:///./src/actions/content-packs/ContentPacksActions.jsx","webpack:///./node_modules/urijs/src/URI.js","webpack:///./node_modules/qs/lib/stringify.js","webpack:///./node_modules/superagent/lib/client.js","webpack:///./src/actions/tools/RefreshActions.jsx","webpack:///./src/stores/lookup-tables/LookupTablesStore.js","webpack:///./src/stores/indices/IndexRangesStore.js","webpack:///./node_modules/jquery-ui/ui/effect.js","webpack:///./node_modules/bootstrap/js/tooltip.js","webpack:///./src/views/logic/parameters/Parameter.js","webpack:///./src/logic/local-storage/Store.js","webpack:///./node_modules/qs/lib/index.js","webpack:///./src/util/D3Utils.js","webpack:///./src/actions/alarmcallbacks/AlarmCallbacksActions.jsx","webpack:///./src/actions/messages/MessageCountsActions.jsx","webpack:///./node_modules/jquery-ui/ui/version.js","webpack:///./src/stores/system/LoggersStore.js","webpack:///./node_modules/rickshaw/rickshaw.js","webpack:///./src/actions/event-definitions/AvailableEventDefinitionTypesActions.js","webpack:///./src/actions/codecs/CodecTypesActions.js","webpack:///./src/injection/builtins.js","webpack:///./src/util/ObjectUtils.js","webpack:///./src/actions/alertconditions/AlertConditionsActions.jsx","webpack:///./src/actions/metrics/MetricsActions.jsx","webpack:///./node_modules/charenc/charenc.js","webpack:///./src/stores/load-balancer/SystemLoadBalancerStore.js","webpack:///./src/actions/events/EventsActions.js","webpack:///./src/actions/gettingstarted/GettingStartedActions.js","webpack:///./src/stores/simulator/SimulatorStore.js","webpack:///./src/views/logic/SearchError.js","webpack:///./src/stores/pipelines/PipelinesStore.js","webpack:///./src/util/TimeHelper.js","webpack:///./src/stores/indices/IndicesConfigurationStore.js","webpack:///./src/actions/indices/IndicesConfigurationActions.js","webpack:///./src/actions/rules/RulesActions.jsx","webpack:///./src/stores/alertnotifications/AlertNotificationsStore.js","webpack:///./src/actions/event-definitions/EventDefinitionsActions.js","webpack:///./src/stores/event-definitions/FilterPreviewStore.js","webpack:///./node_modules/jquery-ui/ui/widget.js","webpack:///./node_modules/jquery-ui/ui/data.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./src/stores/indices/DeflectorStore.js","webpack:///./src/stores/inputs/InputTypesStore.js","webpack:///./src/components/visualizations/GraphVisualization.jsx","webpack:///./node_modules/superagent-bluebird-promise/index.js","webpack:///./node_modules/uuid/v4.js","webpack:///./src/stores/sidecars/CollectorConfigurationsStore.js","webpack:///./src/actions/pipelines/PipelinesActions.jsx","webpack:///./src/actions/decorators/DecoratorsActions.jsx","webpack:///./node_modules/urijs/src/punycode.js","webpack:///./src/views/logic/parameters/ParameterBinding.js","webpack:///./src/stores/event-definitions/AvailableEventDefinitionTypesStore.js","webpack:///./src/actions/widgets/WidgetsActions.jsx","webpack:///./node_modules/crossfilter2/index.js","webpack:///./src/actions/indices/IndicesActions.jsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","graylogHistory","browserHistory","CombinedProvider","SessionStore","SessionActions","StartpageStore","Reflux","createStore","listenables","currentUser","undefined","init","this","listenTo","sessionUpdate","reload","getInitialState","sessionInfo","sessionId","username","update","trigger","URLUtils","qualifyUrl","ApiRoutes","UsersApiController","load","encodeURIComponent","url","then","resp","createActions","loadMessage","asyncResult","fieldTerms","loadRawMessage","formatMessageSummary","messageSummary","message","formatMessage","_id","index","highlight_ranges","decoration_stats","formatResultMessage","resultMessage","id","fields","highlightRanges","decorationStats","filteredFields","MessageFieldsFilter","filterFields","timestamp","unix","filtered_fields","formatted_fields","source_node_id","gl2_source_node","source_input_id","gl2_source_input","stream_ids","streams","callbacks","types","list","streamId","callback","StreamRulesApiController","error","UserNotification","streamRuleId","data","request","field","type","inverted","description","_emitChange","remove","onChange","push","forEach","unregister","lodash","pull","set","payload","startpage","response","success","Rickshaw","namespace","Graylog2Time","self","months","units","seconds","formatter","formatDate","formatDateTime","unit","unitName","filter","shift","graphHelper","customDateTimeFormat","ceil","time","date","year","momentDate","moment","utc","startOf","add","Date","UTC","getUTCFullYear","getUTCMonth","month","Math","Fixtures","save","delete","order","import","StoreProvider","storeName","result","Error","storeProvider","root","factory","_IPv6","IPv6","best","address","pos","_segments","segments","toLowerCase","split","length","total","pop","indexOf","splice","j","join","_best","_current","current","inzeroes","noConflict","showEntityIndex","getSelectedEntities","actions","stores","func","combinedProvider","_result","fromJS","_results","mapValues","results","queryResult","QueryResult","_errors","map","ResultWindowLimitError","SearchError","query","searchTypeId","search_types","searchTypes","compact","queryId","searchTypeResults","updatedResult","searchTypeResult","searchQuery","_getQueryBySearchTypeId","SearchResult","searchTypeIds","relatedQuery","_getSearchTypeFromQuery","_filterFailedSearchTypes","values","find","toJS","MessageCountsActions","ActionsProvider","getActions","events","CountsApiController","promise","metadata","execute","search","query_string","filters","stream","Query","timerange","_value","builder","other","isEqual","is","Builder","Immutable","Map","toObject","EventNotificationsActions","sourceUrl","all","allLegacyTypes","notifications","pagination","count","page","pageSize","grandTotal","getState","propagateChanges","eventNotificationsUrl","uri","URI","nextSegments","concat","segment","segmentCoded","resource","refresh","listAll","listPaginated","per_page","grand_total","notificationId","status","notification","title","additional","body","failed","test","testPersisted","listAllLegacyTypes","eventMutex","eventHandler","timeout","setTimeout","CurrentUserStore","DashboardsActions","dashboards","writableDashboards","permissions","currentUserUpdated","state","DashboardsApiController","dashboard_id","createCompleted","dashboard","deleteCompleted","fetchPeriodically","dashboardList","List","getWritableDashboardList","PermissionsMixin","isPermitted","updateCompleted","updatePositions","positions","replace","String","percentTwenties","formatters","RFC1738","RFC3986","UniversalSearchStore","DEFAULT_LIMIT","limit","sortField","sortOrder","decorate","timerangeParams","extractTimeRange","effectiveLimit","offset","UniversalSearchApiController","jQuery","extend","hash","standard_selected","messages","MessageFormatter","histogram","interval","maxDataPoints","histogram_boundaries","queried_timerange","HistogramFormatter","format","relative","range","ExtractorsActions","getExtractorDTO","extractor","converters","converter","config","conditionValue","condition_type","condition_value","cut_or_copy","cursor_strategy","source_field","target_field","extractor_type","extractor_config","extractors","inputId","concatURLPath","ExtractorUtils","EXTRACTOR_TYPES","extractorId","_silentExtractorCreate","ExtractorsController","calledFromMethod","triggerPromise","orderedExtractors","orderedExtractorsMap","idx","successfulImports","failedImports","promises","Promise","settle","warning","ContentPack","v","rev","summary","vendor","parameters","entitieValues","entities","e","Entity","fromJSON","toJSON","reduce","acc","entity","constraints","constraint","Set","slice","parameter","newParameters","normalizeNumber","number","NaN","Number","MAX_VALUE","MIN_VALUE","normalizeGraphNumber","formatNumber","formatPercentage","percentage","formatBytes","formattedNumber","numeral","zeroFormat","isNumber","possibleNumber","isNaN","method","queuePromiseIfNotLoggedin","authenticated","json","build","plaintext","noSessionExtension","FetchError","responseMessage","console","token","getStore","getSessionId","session","auth","header","send","accept","ok","reportSuccess","statusText","isLoggedIn","logout","history","Routes","NOTFOUND","originalError","reportError","STARTPAGE","BluebirdPromise","resolve","reject","login","completed","listen","IndexerClusterActions","health","IndexerClusterApiController","Emitter","obj","mixin","on","addEventListener","event","fn","_callbacks","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","emit","args","len","listeners","hasListeners","$","mouseHandled","document","widget","version","options","cancel","distance","delay","_mouseInit","that","element","widgetName","_mouseDown","target","removeData","stopImmediatePropagation","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","which","elIsCancel","nodeName","closest","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","preventDefault","_mouseMove","ui","ie","documentMode","button","originalEvent","altKey","ctrlKey","metaKey","shiftKey","ignoreMissingWhich","_mouseDrag","_mouseStop","clearTimeout","max","abs","pageX","pageY","loadFields","SystemApiController","errorThrown","getSidecar","getSidecarActions","restartCollector","assignConfigurations","SearchStore","generateId","random","toString","substr","FieldChart","fieldGraphs","GRAPH_HEIGHT","palette","Color","Palette","scheme","_getDefaultOptions","opts","searchParams","getOriginalSearchParams","chartid","interpolation","renderer","valuetype","createdAt","valueOf","streamid","rangetype","range_type","from","to","keyword","_getTimeRangeParams","_onFieldHistogramLoad","$graphContainer","$graphElement","$graphYAxis","trim","text","lines","JSON","stringify","attr","_updateStatisticalFunctionText","graph","Graph","width","height","resolution","series","color","gl2_query","GraphVisualization","getReadableFieldChartStatisticalFunction","Axis","Y","tickFormat","formatKMBT","orientation","pixelsPerTick","Time","ticksTreatment","timeFixture","HoverDetail","x","y","DateTime","Formats","COMPLETE","swatch","Graylog2Selector","dotSize","stroke","render","draggable","handle","cursor","scope","revert","opacity","containment","axis","snap","snapMode","droppable","tolerance","activate","not","show","deactivate","hide","over","css","switchClass","out","drop","dragged","_mergeCharts","_onFieldHistogramFail","graphId","errorMessage","sendFailureEvent","alert","addClass","html","_chartOptionsFromContainer","cc","parse","_changeGraphConfig","graphContainer","graphOptions","_insertSpinner","shouldHideChart","_getGraphElement","_getGraphYAxis","spinnerElement","append","_deleteSpinner","shouldShowChart","_fetchData","timeRangeParams","fieldHistogram","formattedResponse","renderFieldChart","renderingOptions","newGraph","sendCreatedGraphEvent","updateFieldChartData","seriesName","fieldGraph","aSeries","renderNewFieldChart","changeInterpolation","changeRenderer","setRenderer","unstack","changeResolution","changeStatisticalFunction","statisticalFunction","targetId","draggedId","targetGraphId","draggedGraphId","targetChart","draggedChart","targetElem","lineColor","queryDescription","StringUtils","escapeHTML","addSeries","stackGraphs","sourceGraphId","redraw","configure","naturalSort","a","b","oFxNcL","oFyNcL","re","sre","dre","hre","ore","insensitive","xN","yN","xD","parseInt","match","yD","cLoc","numS","parseFloat","toastr","debug","positionClass","onclick","showDuration","hideDuration","timeOut","extendedTimeOut","escapeHtml","str","params","parts","val","parseLinks","cleanHeader","changesOrigin","input","destroy","safeBlur","crossfilter_identity","permute","array","copy","Array","crossfilter","bisect","bisect_by","f","bisectRight","lo","hi","mid","right","left","heap_by","heap","sift","child","sort","heapselect_by","k","min","queue","insertionsort_by","quicksort_by","insertionsort","quicksort_sizeThreshold","quicksort","sixth","i1","i5","i3","i2","i4","e1","x1","e2","x2","e3","x3","e4","x4","e5","x5","pivot1","pivotValue1","pivot2","pivotValue2","less","great","pivotsEqual","ek","xk","greatValue","lessValue","by","heapselect","crossfilter_array8","crossfilter_arrayUntyped","crossfilter_array16","crossfilter_array32","crossfilter_arrayLengthen","crossfilter_arrayWiden","crossfilter_filterAll","crossfilter_null","crossfilter_zero","crossfilter_reduceIncrement","crossfilter_reduceDecrement","crossfilter_reduceAdd","crossfilter_reduceSubtract","newIndex","crossfilter_index","removed","filterListeners","removeDataListeners","dimension","newValues","refilterFunction","filterAll","isArray","filterRange","filterFunction","filterExact","top","hi0","lo0","bottom","group","groupAll","g","orderNatural","size","dispose","one","zero","refilter","indexListeners","dimensionGroups","dataListeners","unshift","preAdd","postAdd","M","newData","n0","n1","crossfilter_range","bounds","lo1","hi1","oldValues","oldIndex","i0","reIndex","filterIndexBounds","filterIndexFunction","added","crossfilter_filterExact","crossfilter_filterRange","select","groups","reduceCount","reduceSum","groupIndex","reduceAdd","reduceRemove","reduceInitial","groupWidth","groupCapacity","crossfilter_capacity","reset","resetNeeded","g0","x0","oldGroups","initial","k0","groupIncrement","updateMany","resetMany","updateOne","resetOne","oldK","seenGroups","filterOne","reduceValue","w","Uint8Array","Uint16Array","Uint32Array","constructor","startOfResolution","dateTime","effectiveResolution","CatalogActions","CatalogsController","entityIndex","groupBy","EntityIndex","requestedEntities","keys","entitiy","queryEntities","_","decimal","binary","unformatRegex","formats","locales","defaults","currentLocale","nullFormat","defaultFormat","scalePercentBy100","Numeral","_input","kind","unformatFunction","regexp","isNumeral","regexps","unformat","stringToNumber","numberToFormat","roundingFunction","leadingCount","abbrForce","int","precision","signed","thousands","output","locale","negP","optDec","abbr","neg","includes","RegExp","abbreviations","trillion","billion","million","thousand","toFixed","delimiters","string","abbreviation","stringOriginal","currency","symbol","pow","insert","subString","start","TypeError","multiplier","correctionFactor","accum","next","mn","maxDecimals","optionals","boundedPrecision","optionalsRegExp","power","splitValue","minDecimals","localeData","register","validate","culture","_decimalSep","_thousandSep","_currSymbol","_valArray","_abbrObj","_thousandRegEx","temp","warn","clone","inputString","formatFunction","round","corrFactor","curr","currI","O","subtract","multiply","divide","difference","ordinal","space","base","suffixes","item","bytes","suffix","bytesMultiplier","symbols","before","after","toExponential","hours","floor","minutes","timeArray","isObject","RequestBase","_timer","_responseTimeoutTimer","_parser","responseType","_responseType","serialize","_serializer","_timeout","_responseTimeout","option","deadline","retry","_maxRetries","_retries","_retryCallback","ERROR_CODES","_shouldRetry","err","res","override","code","crossDomain","_retry","req","_aborted","timedout","_end","_fullfilledPromise","_endCalled","innerResolve","innerReject","end","catch","use","_okCallback","_isResponseOK","_header","getHeader","unset","_data","_getFormData","abort","xhr","_auth","user","pass","base64Encoder","password","withCredentials","_withCredentials","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","headers","isObj","_formData","_isHost","sortQuery","_sort","_finalizeQueryString","_query","queryArr","substring","_appendQueryString","trace","_timeoutError","reason","errno","_setTimeouts","getJob","cancelJob","_SecondLevelDomains","SecondLevelDomains","SLD","has","domain","tldOffset","lastIndexOf","sldOffset","sldList","CodecTypesActions","codecTypes","CodecTypesController","listUploads","getConfiguration","getConfigurationSidecars","getUploads","createConfiguration","updateConfiguration","renderPreview","copyConfiguration","d3","dc","constants","CHART_CLASS","DEBUG_GROUP_CLASS","STACK_CLASS","DESELECTED_CLASS","SELECTED_CLASS","NODE_INDEX_NAME","GROUP_INDEX_NAME","DEFAULT_CHART_GROUP","EVENT_DELAY","NEGLIGIBLE_NUMBER","_renderlet","chartRegistry","_chartMap","initializeChartGroup","chart","deregister","anchorName","clear","registerChart","deregisterChart","hasChart","deregisterAllCharts","charts","refocusAll","focus","renderAll","redrawAll","disableTransitions","transition","selection","duration","optionalTransition","enable","afterTransition","empty","each","integers","fp","_f","utils","isNegligible","functionName","newFunction","existingFunction","renderlet","instanceOfChart","__dcFlag__","errors","Exception","msg","_msg","stack","InvalidStateException","BadArgumentException","dateFormat","printers","printSingleValue","pluck","isFloat","fformat","isInteger","getTime","clamp","_idCounter","uniqueId","nameToId","appendOrSelect","parent","selector","tag","safeNumber","logger","enableDebugLog","log","deprecate","warned","closure","RangedFilter","low","high","isFiltered","filterType","TwoDimensionalFilter","RangedTwoDimensionalFilter","fromBottomLeft","Infinity","baseMixin","_chart","_dimension","_group","_anchor","_root","_svg","_isChild","_width","_height","_orderSort","_legend","_commitHandler","_minWidth","_defaultWidthCalc","getBoundingClientRect","_widthCalc","_minHeight","_defaultHeightCalc","_heightCalc","_keyAccessor","_valueAccessor","_label","_ordering","_renderLabel","_title","keyAccessor","valueAccessor","_renderTitle","_controlsUseVisibility","_transitionDuration","_transitionDelay","_filterPrinter","_mandatoryAttributes","_chartGroup","_listeners","dispatch","_filters","_filterHandler","sizeSvg","checkForMandatoryAttributes","functor","node","minWidth","minHeight","expireCache","_groupName","ordering","orderFunction","_computeOrderedGroups","dataCopy","selectAll","anchor","chartGroup","classed","chartID","rootElement","svg","svgElement","resetSvg","filterPrinter","filterPrinterFunction","controlsUseVisibility","turnOnControls","attribute","style","turnOffControls","transitionDuration","transitionDelay","preRender","_doRender","_activateRenderlets","pretransition","preRedraw","_doRedraw","commitHandler","redrawGroup","renderGroup","_invokeFilteredListener","filtered","_invokeZoomedListener","zoomed","_hasFilterHandler","some","hasFilterHandler","hasFilter","_removeFilterHandler","removeFilterHandler","_addFilterHandler","addFilterHandler","_resetFilterHandler","applyFilters","fs","resetFilterHandler","replaceFilter","highlightSelected","fadeDeselected","resetHighlight","onClick","datum","filterHandler","legendables","legendHighlight","legendReset","legendToggle","isLegendableHidden","label","labelFunction","enableLabels","renderLabel","titleFunction","renderTitle","renderletFunction","legend","applyOptions","listener","marginMixin","_margin","margins","effectiveWidth","effectiveHeight","colorMixin","_colors","scale","category20c","_defaultAccessor","_colorAccessor","colors","colorScale","quantize","ordinalColors","linearColors","linear","interpolate","interpolateHcl","colorAccessor","defaultColorAccessor","colorDomain","calculateColorDomain","newDomain","getColor","colorCalculator","coordinateGridMixin","_parent","_g","_chartBodyG","_x","_xOriginalDomain","GRID_LINE_CLASS","VERTICAL_CLASS","category10","_xAxisLabel","_lastXDomain","_y","_yAxisLabel","_round","_unitCount","_rangeChart","_focusChart","_xAxis","orient","_xUnits","_xAxisPadding","_xAxisPaddingUnit","_xElasticity","_xAxisLabelPadding","_yAxis","_yAxisPadding","_yElasticity","_yAxisLabelPadding","_brush","brush","_brushOn","_renderHorizontalGridLine","_renderVerticalGridLine","_refocused","_resizing","_zoomScale","_zoomOutRestrict","_zoom","behavior","zoom","zoomHandler","_nullZoom","_hasBeenMouseZoomable","_mouseZoomable","_clipPadding","_outerRangeBandPadding","_rangeBandPadding","_useRightYAxis","prepareXAxis","isOrdinal","elasticX","_ordinalXDomain","xAxisMin","xAxisMax","d1","d2","xdom","elem","rescale","rangeBands","xAxisLength","_useOuterPadding","gridLineG","ticks","tickValues","linesGEnter","enter","_xAxisY","exit","renderVerticalGridLines","brushHeight","getClipPathId","generateClipPath","defs","chartBodyClip","padding","yAxisHeight","drawChart","_prepareYAxis","plotData","renderXAxis","elasticY","renderYAxis","renderBrush","redrawBrush","fadeDeselectedArea","configureMouseZoom","_enableMouseZoom","_disableMouseZoom","ext1","ext2","constrained","extent","constrainExtent","domFilter","rangesEqual","range1","range2","resizing","rangeChart","focusChart","zoomScale","zoomOutRestrict","_generateG","href","location","gElement","mouseZoomable","chartBodyG","xScale","xOriginalDomain","xUnits","xAxis","xAxisPadding","xAxisPaddingUnit","xUnitCount","useRightYAxis","axisXG","axisXLab","xAxisLabel","labelText","yAxisMin","yAxisMax","rangeRound","_renderHorizontalGridLinesForAxis","renderYAxisLabel","axisClass","rotation","labelXPosition","axisYLab","labelYPosition","Y_AXIS_LABEL_CLASS","renderYAxisAt","position","axisYG","axisPosition","_yAxisX","labelPosition","yAxisLabel","yScale","yAxis","renderHorizontalGridLines","yAxisPadding","_filter","_brushing","gBrush","setBrushY","setHandlePaths","resizeHandlePath","extendBrush","brushIsEmpty","rangedFilter","doTransition","clipPadding","_preprocessData","scaleExtent","hasRangeSelected","refocused","brushOn","stackMixin","prepareValues","layer","layerIdx","valAccessor","accessor","hidden","_evadeDomainFilter","xDomain","domainFilter","_stackLayout","layout","_stack","_titles","_hidableStacks","findLayerByName","flattenStack","valueses","visability","hidableStacks","hideStack","stackName","showStack","getValueAccessorByIndex","y0","titleAccessor","stackLayout","evadeDomainFilter","layers","flat","capMixin","_cap","_othersLabel","_othersGrouper","topRows","topRowsSum","sum","allRows","allRowsSum","topKeys","allKeys","topSet","others","othersLabel","cappedKeyAccessor","cappedValueAccessor","cap","othersGrouper","grouperFunction","_onClick","bubbleMixin","_maxBubbleRelativeSize","_minRadiusWithLabel","BUBBLE_NODE_CLASS","BUBBLE_CLASS","MIN_RADIUS","_r","_rValueAccessor","bubbleRadiusScale","radiusValueAccessor","rMin","rMax","bubbleR","shouldLabel","labelOpacity","labelPointerEvent","_doRenderLabel","bubbleGEnter","doUpdateLabels","labels","_doRenderTitles","doUpdateTitles","minRadius","radius","minRadiusWithLabel","maxBubbleRelativeSize","relativeSize","isSelectedNode","pieChart","_radius","_givenRadius","_cx","_cy","_externalLabelRadius","_sliceCssClass","_labelCssClass","_sliceGroupCssClass","_labelGroupCssClass","_emptyCssClass","_emptyTitle","_innerRadius","_externalRadiusPadding","_minAngleForLabel","_drawPaths","maxRadius","pieData","arc","buildArcs","pie","slices","slicesEnter","createSliceNodes","slicePath","fill","safeArc","attrTween","tweenPie","createSlicePath","createTitles","positionLabels","classes","highlightSlice","updateLabelPaths","createLabels","createElements","slicePaths","updateSlicePaths","updateLabels","updateTitles","updateElements","removeElements","isSelectedSlice","cx","cy","_applyLabelText","centroid","outerRadius","innerRadius","whether","polyline","arc2","startAngle","endAngle","isOffCanvas","path","highlightSliceFromLegendable","legendable","highlighted","slicesCap","sliceHasNoData","angle","sliceTooSmall","externalRadiusPadding","minAngleForLabel","emptyTitle","externalLabels","externalLabelRadius","drawPaths","barChart","_barWidth","MIN_BAR_WIDTH","LABEL_PADDING","_gap","_centerBar","_alwaysUseRounding","barHeight","colorFilter","inv","_rescale","_render","numberOfBars","rangeBand","barPadding","calculateBarWidth","last","layerIndex","bars","renderBars","renderLabels","centerBar","outerPadding","gap","alwaysUseRounding","_xAxisMax","lineChart","_defined","_dashStyle","TOOLTIP_G_CLASS","DOT_CIRCLE_CLASS","Y_AXIS_REF_LINE_CLASS","X_AXIS_REF_LINE_CLASS","_renderArea","_dotRadius","_dataPointRadius","_dataPointFillOpacity","_dataPointStrokeOpacity","_interpolate","_tension","_xyTipsOn","safeD","getDotRadius","dot","dashstyle","chartBody","layersList","layersEnter","line","tension","defined","drawLine","area","drawArea","xyTipsOn","tooltipListClass","tooltips","points","createRefLines","dots","showDot","yAxisRefPathD","xAxisRefPathD","showRefLines","hideDot","hideRefLines","drawDots","drawLabels","dashStyle","renderArea","dotRadius","renderDataPoints","fillOpacity","strokeOpacity","_legendables","dataCount","_formatNumber","_html","tot","selected","dataTable","_endSlice","LABEL_CSS_CLASS","ROW_CSS_CLASS","COLUMN_CSS_CLASS","GROUP_CSS_CLASS","HEAD_CSS_CLASS","_size","_columns","_sortBy","_order","ascending","_beginSlice","_showGroups","rows","rowEnter","_doColumnValueFormat","renderRows","bAllFunctions","thead","headrow","headcols","_doColumnHeaderFormat","entries","nest","sortKeys","rowGroup","renderGroups","_doColumnHeaderFnToString","_doColumnHeaderCapitalize","charAt","toUpperCase","beginSlice","endSlice","columns","sortBy","showGroups","dataGrid","ITEM_CSS_CLASS","GRID_CSS_CLASS","_htmlGroup","items","renderItems","itemGroup","htmlGroup","sortByFunction","bubbleChart","_elasticRadius","_sortBubbleSize","bubbleLocator","elasticRadius","sortBubbleSize","radiusAccessor","descending","bubbleG","renderNodes","updateNodes","removeNodes","compositeChart","_rightY","SUB_CHART_CLASS","_children","_childOptions","_shareColors","_shareTitle","_alignYAxes","_rightYAxis","_rightYAxisLabel","_rightYAxisLabelPadding","_rightAxisGridLines","generateChildG","leftYAxisChildren","rightYAxisChildren","getYAxisMin","getYAxisMax","__generateG","ranges","lyAxisMin","lyAxisMax","ryAxisMin","ryAxisMax","alignYAxes","extentRatio","alignYAxisRanges","calculateYAxisRanges","needDomain","needRange","prepareLeftYAxis","rightY","rightYAxis","prepareRightYAxis","rightYAxisLabel","useRightAxisGridLines","childOptions","compose","subChartArray","children","shareColors","shareTitle","seriesChart","_seriesAccessor","_charts","_chartFunction","_seriesSort","_valueSort","clearChart","resetChildren","childrenChanged","keep","nester","sortValues","sub","subChart","_compose","chartFunction","seriesAccessor","seriesSort","sortFunction","valueSort","geoChoroplethChart","_projectionFlag","_geoPath","geo","_geoJsons","generateLayeredData","geoJson","isDataLayer","regionG","layerSelector","isSelected","isDeselected","baseClasses","renderRegionG","paths","currentFill","renderPaths","getKey","selectedRegion","overlayGeoJson","projection","geoJsons","geoPath","removeGeoJson","bubbleOverlay","BUBBLE_OVERLAY_CLASS","_points","mapData","getNodeG","point","bubbleNodeClass","nodeG","circle","flag","debugG","debugText","mouse","rowChart","_elasticX","_rowData","_labelOffsetX","_labelOffsetY","_hasLabelOffsetY","_dyOffset","_titleLabelOffsetX","_fixedBarHeight","_rowCssClass","_titleRowCssClass","_renderTitleLabel","drawAxis","axisG","calculateAxisScale","renderTitleLabel","rect","isSelectedRow","rootValue","translateX","lab","titlelab","rowsCap","fixedBarHeight","labelOffsetX","labelOffsetY","labelOffsety","titleLabelOffsetX","_maxItems","_itemHeight","_horizontal","_legendWidth","_itemWidth","_autoItemWidth","_legendText","legendItemHeight","itemEnter","clientHeight","_cumulativeLegendTextWidth","row","itemWidth","getBBox","translateBy","itemHeight","horizontal","legendWidth","autoItemWidth","legendText","maxItems","scatterPlot","_symbol","_existenceAccessor","originalKeyAccessor","existenceAccessor","_locator","_highlightedSize","_symbolSize","_excludedSize","_excludedColor","_excludedOpacity","_emptySize","_emptyOpacity","_nonemptyOpacity","_emptyColor","_filtered","elementSize","renderTitles","resizeSymbolsWhere","condition","oldSize","__filter","excludedOpacity","excludedColor","customSymbol","symbolSize","highlightedSize","excludedSize","hiddenSize","emptySize","emptyColor","emptyOpacity","nonemptyOpacity","ranged2DFilter","numberDisplay","_lastValue","none","valObj","newValue","span","ease","tween","interpStart","isFinite","interp","interpolateNumber","num","innerHTML","heatMap","_chartBody","_cols","_rows","_xBorderRadius","_yBorderRadius","_colsLabel","_rowsLabel","colsLabel","rowsLabel","_xAxisOnClick","filterAxis","_yAxisOnClick","_boxOnClick","cellsOnAxis","unfilteredCellsOnAxis","kv","uniq","rowValues","cols","colValues","rowCount","colCount","boxWidth","boxHeight","rangeRoundBands","boxes","gEnter","boxOnClick","gCols","gColsText","xAxisOnClick","gRows","gRowsText","yAxisOnClick","handler","xBorderRadius","yBorderRadius","boxWhiskers","boxQuartiles","quantile","box","whiskers","quartiles","quartileData","whiskerIndices","whiskerData","outlierIndices","__chart__","center","medianLine","whisker","outlier","boxTick","whiskerTick","timer","flush","boxPlot","_whiskers","q1","q3","iqr","_box","_tickFormat","_boxWidth","innerChartWidth","boxPadding","boxTransform","_calculatedBoxWidth","boxesG","renderBoxes","updateBoxes","removeBoxes","abstractBubbleChart","baseChart","capped","colorChart","coordinateGridChart","marginable","stackableChart","PluginManifest","PluginStore","AlertConditionsActions","allAlertConditions","availableConditions","available","AlertConditionsApiController","alertConditionId","StreamAlertsApiController","conditions","cond","stream_id","alertConditions","alertCondition","alert_condition_id","conditionId","failureCallback","failCallback","testNaturalDate","ToolsApiController","naturalDateTest","testGrok","pattern","namedCapturesOnly","grokTest","named_captures_only","testJSON","flatten","listSeparator","keySeparator","kvSeparator","replaceKeyWhitespace","keyWhitespaceReplacement","keyPrefix","jsonTest","list_separator","key_separator","kv_separator","replace_key_whitespace","key_whitespace_replacement","key_prefix","testRegexValidity","regex","regexValidate","testRegex","regexTest","testRegexReplace","replacement","replaceAll","regexReplaceTest","replace_all","testSplitAndIndex","splitBy","splitAndIndexTest","split_by","testSubstring","beginIndex","endIndex","substringTest","testContainsString","searchString","containsStringTest","search_string","testLookupTable","lookupTableName","lookupTableTest","lookup_table_name","listAllPaginated","listAllStreams","MODEL","NAME","TYPE","VENDOR","VERSION","MOBILE","TABLET","util","regexes","extensions","margedRegexes","str1","str2","lowerize","major","mapper","rgx","ua","arrays","q","matches","props","exec","maps","browser","oldsafari","device","amazon","model","sprint","os","windows","cpu","engine","UAParser","uastring","getResult","navigator","userAgent","rgxmap","getBrowser","getCPU","architecture","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","SMARTTV","WEARABLE","EMBEDDED","ENGINE","OS","Zepto","parser","prop","crypt","utf8","isBuffer","bin","md5","encoding","stringToBytes","bytesToWords","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","dd","endian","_blocksize","_digestsize","digestbytes","wordsToBytes","asBytes","asString","bytesToString","bytesToHex","Search","queries","OrderedSet","optional","defaultValue","newId","Parameter","IndexerOverviewActions","indexSetId","IndexerOverviewApiResource","indexerOverview","indexerOverviewError","RefreshActions","enabled","changeInterval","_update","disable","AlarmCallbackHistory","require","AlarmCallbacks","AlertConditions","AlertNotifications","Alerts","Authentication","AvailableEventDefinitionTypes","Catalog","ClusterTraffic","CodecTypes","CollectorConfigurations","Collectors","Configuration","Configurations","ConfigurationVariable","ContentPacks","Dashboards","Decorators","Deflector","EventDefinitions","EventNotifications","Events","Extractors","FieldQuickValues","GettingStarted","HistogramData","IndexerCluster","IndexerOverview","IndexRanges","IndexSets","Indices","IndicesConfiguration","Inputs","InputTypes","Ldap","LdapGroups","Loggers","LookupTableCaches","LookupTableDataAdapters","LookupTables","MessageCounts","Messages","Metrics","Nodes","Notifications","PipelineConnections","Pipelines","FilterPreview","Refresh","Rules","SavedSearches","ServerAvailability","Session","Sidecars","SidecarsAdministration","Simulator","SingleNode","Streams","SystemJobs","Widgets","ClusterOverview","CurrentUser","FieldGraphs","Fields","FieldStatistics","Focus","GlobalThroughput","GrokPatterns","IndexerFailures","InputStates","InputStaticFields","Journal","MessageFields","Outputs","Plugins","Preferences","Roles","Sources","Startpage","StreamRules","System","SystemLoadBalancer","SystemMessages","SystemProcessing","SystemShutdown","Tools","UniversalSearch","Users","registerAction","registerStore","recalculate","recalculateIndex","EventDefinitionsActions","eventDefinitions","eventDefinitionsUrl","event_definitions","eventDefinitionId","setAlertFlag","eventDefinition","isAlert","assign","loggers","subsystems","setSubsystemLoggerLevel","listSearchesClusterConfig","listMessageProcessorsConfig","listEventsClusterConfig","listWhiteListConfig","updateWhitelist","updateMessageProcessorsConfig","IndexSetsActions","stats","IndexSetsApiController","indexSetsCount","indexSets","index_sets","indexSetStats","skip","_errorMessage","indexSet","deleteIndices","setDefault","globalIndexSetStats","indices","documents","AppConfig","gl2ServerUrl","normalizePathname","appPrefixed","gl2AppPathPrefix","getParsedSearch","Qs","getParsedHash","replaceHashParam","origHash","joinedPath","areCredentialsInURLSupported","tempDocument","createElement","capitalizeFirstLetter","textContent","unescapeHTML","pluralize","singular","plural","system","info","systemLocales","jvm","elasticsearchVersion","ClusterApiResource","elasticsearchStats","splitVersion","cluster_version","minor","patch","SavedSearchesActions","savedSearches","searches","getSavedSearch","searchId","currentSavedSearch","isValidTitle","savedSearch","saved","paramName","stream_search","SEARCH","executeSearch","_createOrUpdate","verb","originalSearchParams","getOriginalSearchParamsWithFields","SavedSearchesApiController","savedSearchDeleted","AlertsActions","since","AlertsApiController","alerts","alertId","LdapActions","ldapSettings","loadSettings","newLdapSettings","_ldapTest","testServerConnection","test_connect_only","ldap_uri","system_username","system_password","use_start_tls","trust_all_certificates","active_directory","testLogin","principal","search_base","search_pattern","group_search_base","group_id_attribute","group_search_pattern","IndicesActions","closedIndices","registrations","urlList","IndicesApiController","closed","multiple","indexNames","indexName","close","reopen","subscribe","unsubscribe","MessageFieldsApiController","DEFAULT_MESSAGE_FIELDS","DEFAULT_TIMERANGE","DEFAULT_CUSTOM_HIGHLIGHT_RANGE","chroma","days","weeks","newDashboardsPath","dashboardsTvPath","showSearchPath","showViewsPath","showDashboardsPath","ServerAvailabilityActions","server","up","ping","setHeader","IndexerFailuresApiController","isoSince","actionsName","actionsProvider","MACHINE_ID","ObjectID","pid","process","arg","_bsontype","buf","isValid","buffer","generate","fromCharCode","hex","now","charCodeAt","default","createFromTime","createFromHexString","hexString","objectid","setMachineID","machineID","getMachineID","toHexString","equals","getTimestamp","inspect","for","OUTPUTS_URL","OutputsApiController","_failCallback","loadForStreamId","StreamOutputsApiController","loadAvailableTypes","availableTypes","loadAvailable","typeName","outputId","deltas","getOptional","NodesActions","nodes","clusterId","nodeCount","INTERVAL","_triggerList","setInterval","getNodesInfo","node_id","_clusterId","_nodeCount","_propagateState","getNode","nodeId","nodeInCluster","cluster_id","ConfigurationVariableActions","configurationVariable","action","content","getConfigurations","merge","HistogramDataActions","sourceNames","urlQuery","source","rangeAsNumber","searchPaginated","reloadPage","getTypes","lookup","Constraint","plugin","ValueRefHelper","VALUE_REF_TYPE_FIELD","VALUE_REF_VALUE_FIELD","dataIsValueRef","VALUE_REF_PARAMETER_VALUE","_defineProperties","descriptor","configurable","writable","_default","instance","Constructor","_classCallCheck","protoProps","staticProps","plugins","proto","allowDisconnected","parentNode","nodeType","SystemMessagesApiController","getErrors","purgeKey","purgeAll","AlarmCallbacksActions","AlarmCallbacksApiController","alarmcallbacks","alarmCallback","alarmCallbackId","FieldQuickValuesActions","tableSize","stackedFields","loading","originalSearchURLParams","getOriginalSearchURLParams","searchInStream","rangeType","getHistogram","fieldQueryObjects","appendFieldQueryObjectToQueryString","AND_OPERATOR","fieldTermsHistogram","scrollParent","includeHidden","excludeStaticParent","overflowRegex","parents","eq","ownerDocument","refreshList","setAction","URL","convertPreferenceMapToArray","preferencesAsMap","preferences","t1","t2","localeCompare","convertPreferenceArrayToMap","saveUserPreferences","_userName","loadUserPreferences","userName","sortedArray","NodesStore","SystemProcessingStore","SystemLoadBalancerStore","clusterOverview","cluster","threadDump","threaddump","processbufferDump","processbuffer_dump","simulate","tz","getUserTimezone","TIMESTAMP","dateTimeString","ISO_8601","TIMESTAMP_TZ","DATETIME_TZ","DATETIME","DATE","parsedDateTime","_cleanDateTimeString","getAcceptedFormats","timezone","getBrowserTimezone","rootTimeZone","guess","localOffset","getTimezoneOffset","utcOffset","fromNow","toDate","toISOString","effectiveFormat","milliseconds","SystemJobsActions","jobsById","jobs","SystemJobsApiController","jobId","testAlert","AlarmCallbackHistoryApiController","ContentPacksController","contentPackId","getRev","revision","downloadRev","deleteRev","install","installList","uninstall","installId","uninstallDetails","indexSetTotal","GrokPatternsController","addWidget","removeWidget","dashboardId","widgetId","updateWidget","widgetValue","DecoratorsResource","decoratorId","DeflectorApiController","cycle","IndexRangesApiController","rebuild","rebuildSingle","listClosed","InputsApiController","globalRecentMessage","InputStatesController","stop","ClusterInputStatesController","ClusterLoggersResource","subsystem","loglevel","MetricsApiController","byNamespace","ClusterMetricsApiController","multipleAllNodes","NotificationsApiController","availableType","RolesApiController","listRoles","createRole","updateRole","rolename","deleteRole","loadMembers","savedSearchId","SessionsApiController","sendDummyAlert","StreamsApiController","cloneStream","pause","resume","testMatch","_streamFilter","_buildBaseQueryString","queryString","streamFilter","_buildUrl","includeCardinality","cardinality","fieldStats","stacked_fields","changePassword","create_token","tokenName","delete_token","list_tokens","DashboardsController","MessagesController","analyze","single","messageId","MapDataController","PipelinesController","pipelineId","RulesController","ruleId","functions","metricsConfig","ConnectionsController","to_stream","to_pipeline","SimulatorController","loadUsers","users","deleteUser","createToken","deleteToken","loadTokens","tokens","RulesActions","rules","functionDescriptors","_updateRulesState","rule","_updateFunctionDescriptors","fn1","fn2","ruleSource","el","ruleNames","loadFunctions","loadMetricsConfig","updateMetricsConfig","nextConfig","FUNCTIONS","OrderedMap","mean","std_deviation","variance","getFieldStatistics","MessagesActions","remoteAddress","codec","codecConfiguration","remote_address","configuration","fetch","WidgetsActions","WidgetsStore","_serializeWidgetForUpdate","cache_time","creator_user_id","widgetType","widgetTitle","widgetConfig","widgetData","loadWidget","loadValue","ContentPacksActions","contentPackRevision","ContentPackRevisions","content_pack_revisions","constraints_result","contentPackRevisions","selectedVersion","latestRevision","contentPackRev","contentPack","content_pack","contentPacks","content_packs","contentPackMetadata","content_packs_metadata","installations","uninstallEntities","SLICE$0","createClass","ctor","superClass","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","SHIFT","SIZE","MASK","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","ref","SetRef","OwnerID","arrCopy","arr","newArr","ii","ensureSize","iter","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","resolveBegin","resolveIndex","resolveEnd","defaultIndex","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","done","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","KEYS","VALUES","ENTRIES","toSource","of","__toString","cacheResult","_cache","__iterateUncached","toArray","reverse","seqIterate","__iterator","seqIterator","isSeq","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","IS_SEQ_SENTINEL","ArraySeq","_array","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iterator","_iteratorCache","maybeSeq","useKeys","cache","maxIndex","entry","__iteratorUncached","fromJSWith","parentJSON","isPlainObj","fromJSDefault","toList","toMap","valueA","valueB","deepEqual","__hash","notAssociative","every","flipped","allEqual","bSize","Repeat","times","invariant","Range","step","_start","_step","Collection","KeyedCollection","IndexedCollection","SetCollection","notSetValue","iterations","searchValue","this$0","possibleIndex","offsetValue","imul","smi","i32","h","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","hashCode","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","uniqueID","documentElement","getIENodeHash","objHashUID","isExtensible","hashJSObj","WeakMap","assertNotInfinite","emptyMap","isMap","withMutations","maybeMap","IS_MAP_SENTINEL","keyValues","updateMap","setIn","keyPath","updateIn","deleteIn","updater","updatedValue","updateInDeepMap","existing","keyPathIter","isNotSet","existingValue","nextExisting","nextUpdated","forceIterator","__ownerID","__altered","mergeIntoMapWith","mergeWith","merger","iters","mergeIn","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","comparator","sortFactory","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","HashArrayMapNode","HashCollisionNode","keyHash","ValueNode","_type","_reverse","mapIteratorFrame","mapIteratorValue","prev","__prev","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","idx2","iterables","mergeIntoCollectionWith","nextValue","collection","mergeIntoMap","popCount","canEdit","newArray","removeIn","exists","MAX_ARRAY_MAP_SIZE","createNodes","isEditable","newEntries","bit","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","expandNodes","newBitmap","newNodes","newLen","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","keyMatch","subNode","emptyList","isList","makeList","VNode","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","tailPos","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","context","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","singleton","concatSeq","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","reify","validateEntry","resolveSize","iterableClass","Record","defaultValues","hasInitialized","RecordType","names","setProp","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","valueSeq","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","getPrototypeOf","emptySet","isSet","maybeSet","IS_SET_SENTINEL","fromKeys","keySeq","updateSet","union","intersect","originalSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","head","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","methods","keyCopier","getOwnPropertySymbols","__toJS","toOrderedMap","toOrderedSet","toSet","toStack","__toStringMapper","returnValue","findEntry","sideEffect","separator","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","butLast","isEmpty","countBy","grouper","countByFactory","entriesSequence","entryMapper","filterNot","found","findKey","findLast","findLastEntry","findLastKey","first","flatMap","coerce","flatMapFactory","searchKey","getIn","searchKeyPath","nested","isKeyedIter","groupByFactory","hasIn","isSubset","isSuperset","keyOf","keyMapper","lastKeyOf","maxBy","defaultNegComparator","minBy","rest","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashIterable","IterablePrototype","quoteString","chain","contains","mapEntries","mapKeys","KeyedIterablePrototype","defaultZipper","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","zipWith","loadGroups","loadMapping","saveMapping","base64map","rotl","rotr","randomBytes","words","hexToBytes","bytesToBase64","base64","triplet","base64ToBytes","imod4","hasInstance","isEntityIndex","_firstDataPointTimestamp","dataPoints","queryFrom","isSearchAll","queryTimeRange","screenSize","valueKey","legacy","formattedPoints","tempTime","totalDataPoints","as","factor","MomentUtils","isBefore","isSame","NumberUtils","STREAMS","LEGACY_ALERTS","LIST","CONDITIONS","NEW_CONDITION","NOTIFICATIONS","NEW_NOTIFICATION","ALERTS","DEFINITIONS","CREATE","edit","definitionId","SOURCES","DASHBOARDS","GETTING_STARTED","SYSTEM","CONFIGURATIONS","CONTENTPACKS","EXPORT","GROKPATTERNS","INDICES","FAILURES","INDEX_SETS","CONFIGURATION","SHOW","INPUTS","LOGGING","METRICS","NODES","THREADDUMP","OUTPUTS","OVERVIEW","PROCESSBUFFERDUMP","AUTHENTICATION","ROLES","USERS","TOKENS","PROVIDERS","CONFIG","provider","LOOKUPTABLES","tableName","CACHES","cacheName","DATA_ADAPTERS","adapterName","PIPELINES","PIPELINE","RULES","RULE","SIMULATOR","ENTERPRISE","SIDECARS","STATUS","sidecarId","ADMINISTRATION","NEW_CONFIGURATION","EDIT_CONFIGURATION","configurationId","NEW_COLLECTOR","EDIT_COLLECTOR","collectorId","VIEWS","viewsPath","VIEWID","EXTENDEDSEARCH","extendedSearchPath","search_with_query","timeRange","route","queryParams","_common_search_url","message_show","stream_edit","stream_edit_example","stream_outputs","stream_alerts","legacy_stream_search","show_alert","show_alert_condition","new_alert_condition_for_stream","new_alert_notification_for_stream","dashboard_show","node_inputs","global_input_extractors","local_input_extractors","export_extractors","import_extractors","new_extractor","extractorType","fieldName","example_index","example_id","edit_extractor","edit_input_extractor","getting_started","fromMenu","filtered_metrics","qualifyUrls","routes","appPrefix","qualifiedRoutes","routeName","normalizePath","defaultExport","unqualified","pluginRoute","routeKey","pluginRoutes","paramNames","startsWith","paramValues","param","pathname","PipelineConnectionsActions","connections","connectToStream","connection","updatedConnection","pipeline_ids","pipelines","_failUpdateCallback","connectToPipeline","reverseConnection","pipeline_id","pipeline","GettingStartedActions","getStatus","dismiss","ClusterTrafficActions","traffic","widgetEventPrefix","addClasses","greedy","_create","proportions","isover","isout","isFunction","offsetWidth","offsetHeight","_addToManager","_addClass","ddmanager","droppables","_splice","_destroy","_setOption","_super","_activate","_addActiveClass","_trigger","_deactivate","_removeActiveClass","_over","currentItem","_addHoverClass","_out","_removeHoverClass","_drop","custom","childrenIntersection","inst","disabled","helper","positionAbs","_removeClass","isOverAxis","reference","toleranceMode","absolute","y1","helperProportions","y2","prepareOffsets","addBack","droppablesLoop","visible","dropped","dragStart","parentsUntil","refreshPositions","drag","greedyChild","parentInstance","intersects","dragStop","uiBackCompat","hoverClass","activeClass","removeClass","fromServer","constraintValues","dataValueIsParameter","default_value","getValueFromData","isEntity","SingleNodeActions","_getNodeInfo","listStreams","removeOutput","addOutput","outputs","EventsActions","totalEvents","eventsUrl","total_events","define","u","_dereq_","1","SomePromiseArray","_SomePromiseArray","any","ret","setHowMany","setUnwrap","2","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","write","throwLater","invokeLater","invoke","settlePromises","_settlePromises","_drainQueue","_reset","3","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","5","cr","callerCache","getterCache","canEvaluate","isIdentifier","caller","methodName","classString","ensureMethod","namedGetter","indexedGetter","propertyName","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","hasLongStackTraces","fireDomEvent","CustomEvent","global","dispatchEvent","domEvent","detail","cancelable","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","isFulfilled","ignoreSelf","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","inherits","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","11","PromiseReduce","PromiseAll","promiseAllThis","mapSeries","12","_TypeError","_RangeError","es5","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","OperationalError","cause","indent","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","ObjectKeys","desc","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","_isMap","castValue","entriesToMap","keyOffset","26","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","src","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","valueOrReason","gotAccum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","standalone","cordova","div","attributes","toggleScheduled","div2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","31","CANCELLATION","_howMany","_unwrap","_initialized","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","excludedPrototypes","Function","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","rident","filledRange","prefix","isError","ignore","ArrayFrom","itResult","it","hasEnvVariables","chrome","loadTimes","versions","P","SOURCES_URL","loadSources","sources","sourcesArray","message_count","processSourcesData","validatingSession","getSessionInfo","host","session_id","_removeSession","Store","_validateSession","is_valid","loginCompleted","fieldCharts","EventHandlersThrottler","fieldGraphsStore","resetStore","_eventsThrottle","saveGraph","combineStackedGraphs","renderedGraphs","onFieldGraphCreated","deleteGraph","updateStackedGraphs","throttle","_fieldGraphs","_stackedGraphs","newFieldGraphs","onFieldGraphsUpdated","newStackedGraphs","onFieldGraphsMerged","stackedGraphs","stackedGraphId","deleteStackedGraphs","draggedMergedGraphs","newFieldGraph","givenOptions","defaultOptions","renderFieldGraph","new","updateFieldGraphData","effectiveGraphId","stackedGraphsIds","containerGraphId","getFieldGraphAsCreateWidgetRequestParams","requestParams","getSeriesInformation","statistical_function","getStackedGraphAsCreateWidgetRequestParams","stackedGraph","redrawGraphs","hexTable","arrayToObject","plainObjects","allowPrototypes","mergeTarget","decode","decodeURIComponent","encode","refs","compacted","compactQueue","isRegExp","Class","initialize","onUpdate","getElementsByTagName","selectingActive","selectionBox","setAttribute","appendChild","oncontextmenu","clearSelection","pointerEvents","stopPropagation","startPointX","layerX","offsetX","deltaX","minX","maxX","selectionDraw","xMin","invert","xMax","fromDate","changeTimeRange","effect","_validateSeries","dataDomain","shutdown","MetricsActions","globalRegistrations","metricsNames","metrics","_allResults","accumulator","_metricsToFetch","localRegistrations","metricsToFetch","metricName","_buildMetricsFromResponse","nodeMetrics","metric","full_name","metricsUpdatedAt","TimeHelper","nowInSeconds","responses","addGlobal","removeGlobal","searchTypesKey","toLocaleUpperCase","_findMessages","searchType","toLocaleLowerCase","_searchTypePlugin","typeDefinition","convert","execution_stats","effective_timerange","_state","effectiveTimerange","ResponseBase","_setHeaderProperties","ct","links","link","_setStatusProperties","statusCode","statusType","redirect","clientError","serverError","toError","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","AuthenticationActions","authenticators","inputStates","_checkInputStateChangeResponse","failedNodes","_isWildCard","permissionSet","_permissionPredicate","permissionParts","second","possessedPermissions","requiredPermissions","isAnyPermitted","getCollector","toBuilder","revisions","appendTo","connectToSortable","cursorAt","grid","iframeFix","revertDuration","scroll","scrollSensitivity","scrollSpeed","snapTolerance","zIndex","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_getHandle","_blurActiveElement","_blockFrames","iframeBlocks","iframe","outerWidth","outerHeight","_unblockFrames","activeElement","safeActiveElement","_createHelper","_cacheHelperProportions","_cacheMargins","cssPosition","offsetParent","hasFixedAncestor","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","_getParentOffset","_getRelativeOffset","click","noPropagation","_convertPositionTo","_uiHash","animate","handleElement","helperIsFunction","removeAttr","_isRootNode","tagName","po","scrollLeft","scrollTop","scrollIsRootNode","isUserScrollable","ce","relativeContainer","scrollWidth","scrollHeight","mod","constrainPosition","co","cancelHelperRemoval","Widget","uiSortable","sortables","sortable","isOver","_storedCSS","placeholder","_helper","innermostIntersecting","_intersectsWith","containerCache","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","scrolled","snapElements","$t","$o","ts","bs","ls","rs","snapping","release","snapItem","makeArray","_zIndex","allowDots","arrayLimit","decoder","delimiter","parameterLimit","strictNullHandling","parseKeys","givenKey","leaf","cleanRoot","parseArrays","parseObject","ignoreQueryPrefix","tempObj","cleanStr","part","bracketEqualsPos","parseValues","newObj","resultWindowLimit","result_window_limit","_extendDescription","_getPageSizeFromResult","validPages","validPagesMessage","AlarmCallbackHistoryActions","histories","MetricsStore","updateMetrics","throughput","inputMetric","outputMetric","loadPatterns","patterns","pattern1","pattern2","testPattern","errCallback","requestPatternTest","grok_pattern","sampleData","errorBody","savePattern","requestPattern","deletePattern","bulkImport","fetchPlainText","validation_errors","supplier","singletons","ExtractorTypes","COPY_INPUT","GROK","REGEX","REGEX_REPLACE","SPLIT_AND_INDEX","SUBSTRING","LOOKUP_TABLE","ConverterTypes","NUMERIC","HASH","SPLIT_AND_COUNT","IP_ANONYMIZER","SYSLOG_PRI_LEVEL","SYSLOG_PRI_FACILITY","TOKENIZER","CSV","LOWERCASE","UPPERCASE","FLEXDATE","getNewExtractorRoutes","sourceNodeId","sourceInputId","messageIndex","getReadableExtractorTypeName","getReadableConverterTypeName","converterType","getEffectiveConfiguration","defaultConfiguration","currentConfiguration","effectiveConfiguration","effects","upAnim","downAnim","refValue","direction","anims","speed","easing","motion","queuelen","createPlaceholder","$container","previousToast","toastId","toastType","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","clearContainer","removeToast","optionsOverride","notify","iconClass","iconClasses","containerId","createContainer","force","hideMethod","hideEasing","complete","publish","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","startTime","toastClass","titleClass","setTitle","messageClass","setMessage","closeButton","closeClass","prepend","progressClass","rtl","newestOnTop","ariaValue","setAria","showMethod","showEasing","onShown","hideToast","updateProgress","closeOnHover","hover","stickAround","delayedHideToast","tapToDismiss","cancelBubble","onCloseClick","closeMethod","closeDuration","closeEasing","onHidden","endTime","NotificationsActions","listCompleted","__webpack_amd_options__","__vendor","InputStaticFieldsStore","InputsActions","InputsStore","inputs","showError","inputTitle","inputsAsMap","inputsList","inputsMap","LookupTableCachesActions","caches","validationErrors","perPage","_url","_errorHandler","idOrName","searchStore","firstLoad","parsedSearch","originalSearch","_initializeOriginalSearch","rangeParams","highlightMessage","_rangeType","_rangeParams","_page","_resolution","_highlightMessage","innerWidth","unload","initializeFieldsFromHash","fieldsFromHash","fieldsFromQuery","newQuery","onParamsChanged","getParams","newPage","_reloadSearchWithNewParam","newRangeType","newResolution","_fields","newFields","_reloadSearchWithNewParams","appendToQueryString","operator","effectiveValue","toTimeZone","term","escape","effectiveOperator","addQueryTerm","subquery","sq","OR_OPERATOR","addSearchTerm","onAddQueryTerm","addSearchTermWithMapping","mapping","newRangeParams","_submitSearch","onSubmitSearch","isPhrase","searchTerm","escapedTerm","queryContainsTerm","termInQuestion","originalParams","originalURLParams","searchBaseLocation","searchURLParams","newParams","searchSurroundingMessages","fromTime","toTime","NOT_OPERATOR","byteToHex","bth","DecoratorsActions","decorators","removeCompleted","LdapGroupsActions","FILTERED_FIELDS","loadRoles","roles","role","newRole","getMembers","Agent","_defaults","_setDefaults","def","classToType","PI","clip_rgb","rgb","_clipped","_unclipped","unpack","keyOrder","TWOPI","PITHIRD","DEG2RAD","RAD2DEG","autodetect","last$1","clip_rgb$1","type$1","me","sorted","chk","_rgb","Color_1","chroma_1","unpack$1","rgb2cmyk_1","unpack$2","cmyk2rgb_1","alpha","unpack$3","type$2","cmyk","unpack$4","last$2","rnd","hsl2css_1","hsla","unpack$5","rgb2hsl_1","unpack$6","last$3","rgb2css_1","rgba","unpack$7","round$1","hsl2rgb_1","t3","h_","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","round$2","css2rgb","named","rgb$1","i$1","rgb$2","i$2","rgb$3","i$3","hsl","rgb$4","hsl$1","rgb$5","css2rgb_1","type$3","unpack$8","gl","unpack$9","rgb2hcg_1","delta","unpack$a","hcg2rgb_1","assign$1","assign$2","assign$3","assign$4","assign$5","_c","unpack$b","type$4","hcg","unpack$c","last$4","round$3","rgb2hex_1","hxa","RE_HEX","RE_HEXA","hex2rgb_1","u$1","type$5","unpack$d","sqrt","acos","rgb2hsi_1","min_","unpack$e","limit$1","TWOPI$1","cos","hsi2rgb_1","unpack$f","type$6","hsi","unpack$g","type$7","unpack$h","min$1","max$1","rgb2hsv","max_","unpack$i","floor$1","hsv2rgb_1","unpack$j","type$8","hsv","labConstants","unpack$k","rgb_xyz","xyz_lab","rgb2xyz","rgb2lab_1","ref$1","z","unpack$l","pow$1","xyz_rgb","lab_xyz","lab2rgb_1","unpack$m","type$9","unpack$n","sqrt$1","atan2","round$4","lab2lch_1","unpack$o","rgb2lch_1","b_","unpack$p","sin","cos$1","lch2lab_1","unpack$q","lch2rgb_1","L","unpack$r","hcl2rgb_1","hcl","unpack$s","type$a","lch","w3cx11_1","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflower","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","laserlemon","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrod","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","maroon2","maroon3","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","purple2","purple3","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","type$b","unpack$t","rgb2num_1","type$c","num2rgb_1","type$d","unpack$u","type$e","round$5","temperature2rgb_1","kelvin","unpack$v","round$6","rgb2temperature_1","minTemp","maxTemp","eps","temperature","type$f","mutate","clipped","darken","brighten","darker","brighter","mc","channel","type$g","pow$2","luminance","lum","cur_lum","max_iter","lm","rgb2luminance","luminance_x","interpolator","type$h","mix","col1","col2","premultiply","saturate","desaturate","type$i","xyz0","xyz1","sqrt$2","pow$3","lrgb","z1","z2","_hsx","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lch$1","c1","c2","clip_rgb$2","pow$4","sqrt$3","PI$1","cos$2","sin$1","atan2$1","_average_lrgb","xyz","type$j","pow$5","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","brewer","c$1","resetCache","tMapLightness","tMapDomain","bypassMap","col","getClass","limits","tOut","tBreaks","_m","_o","correctLightness","L0","L1","pol","L_actual","L_ideal","L_diff","t0","numColors","dm","__range__","samples","asc","gamma","nodata","inclusive","bezier","I","lab0","lab1","lab2","lab3","I0","I1","blend","blend_f","c0","normal","screen","overlay","lighten","dodge","burn","blend_1","type$k","clip_rgb$3","TWOPI$2","pow$6","sin$2","cos$3","floor$2","log$1","pow$7","floor$3","min_log","LOG10E","max_log","pb","pr","assignments","clusterSizes","repeat","nb_iters","centroids","i$4","mindist","j$1","dist","newCentroids","j$2","i$5","j$3","j$4","kClusters","j$5","i$6","tmpKMeansBreaks","j$6","i$7","analyze_1","sqrt$4","atan2$2","abs$1","cos$4","PI$2","scales","cool","hot","colorbrewer","OrRd","PuBu","BuPu","Oranges","BuGn","YlOrBr","YlGn","Reds","RdPu","Greens","YlGnBu","Purples","GnBu","Greys","YlOrRd","PuRd","Blues","PuBuGn","Viridis","Spectral","RdYlGn","RdBu","PiYG","PRGn","RdYlBu","BrBG","RdGy","PuOr","Set2","Accent","Set1","Set3","Dark2","Paired","Pastel2","Pastel1","list$1","colorbrewer_1","average","cnt","dx","dy","A","xyz2","A$1","cubehelix","rotations","lightness","dl","dh","fract","amp","cos_a","sin_a","contrast","l1","l2","deltaE","C","a1","b1","L2","a2","b2","sl","sc","h1","c4","sh","delC","delA","delB","v1","v2","sum_sq","valid","GRAYLOG_HTTP_PUBLISH_URI","appConfig","gl2DevMode","DEVELOPMENT","isFeatureEnabled","feature","SidecarsActions","sidecars","onlyActive","only_active","collector","properties","restart","toConfigurationAssignmentDto","collector_id","configuration_id","configurations","sidecar","assignment","getRandomValues","crypto","msCrypto","rnds8","rnds","CollectorsActions","collectors","paginatedCollectors","_fetchCollectors","service_type","executable_path","default_template","ConfigurationActions","searchesClusterConfig","eventsClusterConfig","configType","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","arrayAggregator","setter","iteratee","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","transform","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","uid","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","othLength","othIndex","maxLength","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","baseMerge","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","createCaseFirst","trailing","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","setData","setWrapToString","createRound","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","otherFunc","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","ctorString","isMaskable","stubFalse","otherArgs","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","quote","differenceBy","differenceWith","intersection","mapped","intersectionBy","intersectionWith","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","interceptor","wrapperAt","forEachRight","invokeMap","keyBy","partition","bindKey","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isString","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","invertBy","omit","basePick","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","bindAll","methodNames","flow","flowRight","methodOf","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","dividend","divisor","multiplicand","minuend","subtrahend","castArray","chunk","conforms","baseConforms","curry","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functionsIn","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","takeRight","takeRightWhile","toPath","isArrLike","unary","uniqBy","uniqWith","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","meanBy","stubObject","stubString","stubTrue","nth","pad","strLength","padEnd","padStart","radix","floating","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","LookupTableDataAdaptersActions","dataAdapter","dataAdapters","lookupResult","data_adapters","dateTimeFormats","formatString","isoWeekday","intervalResolutions","years","tzOffset","formattedDate","toMoment","customTickInterval","initDateTime","endDateTime","runningMoment","endMoment","SidecarsAdministrationActions","formattedCollectors","sidecar_id","collector_ids","punycode","_URI","_urlSupplied","_baseSupplied","absoluteTo","hasOwn","escapeRegEx","getType","filterArrayValues","arrayContains","arraysEqual","two","trimSlashes","escapeForDumbFirefox36","strictEncodeURIComponent","_parts","protocol","hostname","urn","port","fragment","preventInvalidHostname","duplicateQueryParameters","escapeQuerySpace","protocol_expression","idn_expression","punycode_expression","ip4_expression","ip6_expression","find_uri_expression","findUri","parens","defaultPorts","http","https","ftp","gopher","ws","wss","hostProtocols","invalid_hostname_characters","domAttributes","getDomAttribute","iso8859","unicode","characters","expression","reserved","urnpath","encodeQuery","escaped","decodeQuery","_part","generateAccessor","generateSegmentedPathFunction","_sep","_codingFuncName","_innerCodingFuncName","actualCodingFunc","generateSimpleAccessor","generatePrefixAccessor","_key","decodePath","decodeUrnPath","recodePath","recodeUrnPath","encodeReserved","parseAuthority","parseHost","bracketPos","firstColon","firstSlash","nextColon","ensureValidHostname","ensureValidPort","parseUserinfo","parseQuery","splits","buildAuthority","buildHost","buildUserinfo","buildQuery","unique","buildQueryParameter","addQuery","setQuery","removeQuery","hasQuery","withinArray","Boolean","joinPaths","nonEmptySegments","normalize","commonPath","withinString","_trim","_parens","_attributeOpen","ignoreHtml","attributeOpen","parensEnd","parensMatch","parensMatchEnd","hasHostname","rejectEmptyHostname","toASCII","removeAll","unconflicted","URITemplate","deferBuild","_deferred_build","_string","what","ip","ip4","ip6","sld","idn","_protocol","_port","_hostname","authority","userinfo","subdomain","tld","ReferenceError","directory","filename","decodePathSegment","mutatedDirectory","setSearch","addSearch","removeSearch","hasSearch","normalizeProtocol","normalizeQuery","normalizeFragment","normalizeHostname","normalizePort","_was_relative","_path","_leadingParents","normalizeSearch","normalizeHash","readable","toUnicode","qp","basedir","resolved","relativeTo","relativeParts","baseParts","common","relativePath","basePath","one_map","two_map","one_query","two_query","checked","arrayPrefixGenerators","brackets","toISO","encoder","encodeValuesOnly","serializeDate","skipNulls","generateArrayPrefix","objKeys","arrayFormat","addQueryPrefix","Request","getXHR","XMLHttpRequest","ActiveXObject","pushEncodedKeyValuePair","subkey","parseString","isJSON","mime","Response","responseText","parseHeader","getAllResponseHeaders","getResponseHeader","_parseBody","new_err","original","rawResponse","custom_err","del","serializeObject","xml","urlencoded","btoa","attach","file","FormData","retries","crossDomainError","ca","agent","pipe","onreadystatechange","readyState","handleProgress","percent","loaded","onprogress","upload","open","contentType","setRequestHeader","post","put","LookupTablesActions","errorStates","tables","table","lookup_tables","lookupTable","cache_id","data_adapter_id","tableNames","cacheNames","dataAdapterNames","message_template","IndexRangesActions","indexRanges","baseEasings","dataSpaceAnimated","rplusequals","stringParsers","execResult","spaces","saturation","propTypes","support","supportElem","allowEmpty","stringParse","_rgba","spaceName","transparent","hue2rgb","cssText","backgroundColor","jquery","inArray","compare","same","localCache","isCache","_space","used","startColor","startValue","endValue","opaque","toRgbaString","toHslaString","includeAlpha","diff","local","vtype","_hsla","cur","hook","hooks","cssHooks","curElem","fx","colorInit","borderColor","expand","expanded","orig","classAnimationActions","shorthandStyles","border","borderBottom","borderLeft","borderRight","borderTop","borderWidth","margin","getElementStyles","defaultView","getComputedStyle","currentStyle","styles","setAttr","prevObject","animateClass","applyClassChange","animated","baseClass","allAnimations","oldStyle","newStyle","styleDifference","styleInfo","dfd","Deferred","when","classNames","toggleClass","_normalizeArguments","speeds","standardAnimationOption","parseClip","expr","restore","setMode","createWrapper","fontSize","background","active","removeWrapper","replaceWith","scaledDimensions","clipToBox","animation","clip","queueLength","dequeue","saveStyle","restoreStyle","getBaseline","marginTop","marginBottom","marginLeft","marginRight","insertAfter","display","visibility","dataSpace","removePlaceholder","dataKey","cleanUp","setTransition","cssUnit","effectMethod","defaultMode","queueName","modes","prefilter","normalizedMode","run","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","endPosition","innerHeight","startPosition","className","clipInit","Sine","Circ","Elastic","Back","Bounce","pow2","bounce","easeIn","DISALLOWED_ATTRIBUTES","uriAttrs","DefaultWhitelist","br","em","hr","h2","h3","h4","h5","h6","img","li","ol","pre","small","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeValue","regExp","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","implementation","createHTMLDocument","createdDocument","whitelistKeys","elements","elName","attributeList","whitelistedAttributes","len2","removeAttribute","removeChild","Tooltip","hoverState","$element","inState","TRANSITION_DURATION","DEFAULTS","placement","container","viewport","sanitize","$viewport","triggers","proxy","eventIn","eventOut","leave","_options","fixTitle","getDefaults","dataAttributes","dataAttr","getDelegateOptions","currentTarget","tip","hasClass","isInStateTrue","hasContent","inDom","isDefaultPrevented","$tip","tipId","getUID","setContent","autoToken","autoPlace","detach","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","emulateTransitionEnd","setOffset","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","isSvg","SVGElement","elOffset","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","getElementById","$arrow","toggleEnabled","tooltip","$this","dataType","implementingClass","__registrations","localStorage","setItem","getItem","removeItem","glColourPalette","tooltipRenderlet","LoggersActions","availableLoglevels","currentPart","destination","globalContext","_toString","NULL_TYPE","UNDEFINED_TYPE","BOOLEAN_TYPE","NUMBER_TYPE","STRING_TYPE","OBJECT_TYPE","FUNCTION_CLASS","Type","__method","arrayLength","emptyFunction","IS_DONTENUM_BUGGY","subclass","klass","Methods","superclass","subclasses","addMethods","ancestor","Compat","ClassList","elemCtrProto","HTMLElement","Element","objCtr","strTrim","arrIndexOf","DOMEx","DOMException","checkTokenAndGetIndex","trimmedClasses","_updateClassName","classListProto","classListGetter","classListPropDesc","ex","__defineGetter__","RICKSHAW_NO_COMPAT","updateCallbacks","configureCallbacks","preserve","_loadRenderers","setSeries","vis","discoverRange","Renderer","registerRenderer","validateSeries","Series","magnitude","stackData","stackedData","_slice","seriesData","_validateStackable","pointsCount","isInRange","onConfigure","_renderers","elementWidth","getPropertyValue","elementHeight","schemes","spectrum14","spectrum2000","spectrum2001","classic9","httpStatus","503","502","500","410","409","403","408","401","405","404","400","301","302","307","304","200","206","201","202","203","204","colorwheel","munin","RandomData","timeInterval","lastRandomValue","timeBase","addData","randomValue","counter","randomVariance","getUTCDate","formatTime","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toUTCString","Local","getFullYear","getMonth","getDate","getMinutes","getSeconds","getMilliseconds","nearFuture","rounded","setFullYear","setMonth","setDate","setMilliseconds","setSeconds","setMinutes","setHours","abs_y","formatBase1024KMGTP","runningIndex","generatorIndex","interpolatedStopCount","schemeCount","interpolateHsl","rotateCount","interpolateColor","Ajax","dataURL","onData","onComplete","onError","ajax","seriesKey","Annotate","timeline","end_time","annotation","rangeElement","annotationRangeStart","annotationRangeEnd","annotationRangeWidth","fixedTimeUnit","timeUnit","appropriateTimeUnit","rangeSeconds","tickOffsets","runningTick","offsets","tickValue","X","staticTicks","tickSize","_discoverSize","berth","_renderWidth","auto","bar_offset","tickSubdivide","gridSize","_renderHeight","berthRate","_drawAxis","_drawGrid","Scaled","$super","renderDomain","extents","extentMap","adjExtents","adjustment","Behavior","Highlight","colorSafe","activeLine","disabledColor","seriesColor","interpolateRgb","addHighlightEvents","seriesIndex","originalIndex","Order","disableSelection","Toggle","addAnchor","insertBefore","firstChild","disableAllOtherLines","unbind","_addBehavior","updateBehaviour","DragZoom","minimumTimeSelection","svgWidth","registerMouseEvents","rectangle","ESCAPE_KEYCODE","startDt","stopDt","startPX","stopPX","onMouseup","pointAsDate","windowAfterDrag","compareNumbers","onMousemove","selectionWidth","keyCode","xFormatter","yFormatter","lastEvent","_addListeners","onShow","onHide","onRender","formattedX","formattedY","nearestPoint","eventX","clientX","eventY","clientY","domainX","domainIndexScale","approximateIndex","dataIndex","formattedXValue","formattedYValue","mouseX","mouseY","xLabel","actualY","alignables","leftAlignError","_calcLayoutError","parentRect","mousemoveListener","mouseoutListener","relatedTarget","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINS","_removeListeners","JSONP","Legend","naturalOrder","addLine","noLegend","_line","shelving","highlighter","RangeSlider","graphs","slideCallbacks","slider","slideStarted","slideFinished","slide","slideShouldUpdate","processSlideChange","onSlide","Preview","gripperColor","frameTopThickness","frameHandleThickness","frameColor","frameOpacity","minimumFrameWidth","heightRatio","previews","widthFromGraph","heightFromGraph","previewHeight","preview","svgHeight","previewWidth","currentFrame","translateCommand","graphArgs","masterGraph","domainScale","currentWindow","_renderDimming","_renderFrame","_renderGrippers","_renderHandles","_renderMiddle","_registerMouseEvents","gripper","spacing","leftHandle","rightHandle","middleHandle","rigid","_getClientXFromEvent","distanceTraveled","frameAfterDrag","frameBeforeDrag","onMousedown","onMousedownLeftHandle","onMousedownRightHandle","onMousedownMiddleHandle","touchList","changedTouches","touch","touchIndex","seriesPathFactory","seriesStrokeFactory","strokeWidth","yMin","yMax","pathNodes","strokeNodes","_styleSeries","setStrokeWidth","setTension","Line","Bar","gapSize","frequentInterval","_frequentInterval","barWidth","barXOffset","activeSeriesCount","seriesBarWidth","intervalCounts","Area","ScatterPlot","Multi","domains","_groups","createElementNS","LinePlot","Smoother","aggregationScale","orderPosition","transformer","setScale","aggregatedData","aggregatedSeriesData","avgX","avgY","Socketio","socket","io","connect","setTimeInterval","addItem","getIndex","plot","itemByName","iv","setTimeBase","dump","newItem","zeroFill","FixedDuration","currentSize","currentIndex","dropData","charenc","SimulatorActions","messageFields","simulation","input_id","ObjectUtils","backtrace","query_id","search_type_id","PipelinesActions","_updatePipelinesState","pipelineSource","updatedPipelines","IndicesConfigurationActions","rotationStrategies","retentionStrategies","activeRotationConfig","activeRetentionConfig","loadRotationStrategies","strategies","loadRetentionStrategies","AlertNotificationsActions","availableNotifications","allNotifications","FilterPreviewActions","searchJob","resourceUrl","searchRequest","newSearch","trackJobStatus","job","Bluebird","execution","jobStatus","executionState","trackJob","executePromise","widgetUuid","widgetSlice","cleanData","elems","triggerHandler","existingConstructor","basePrototype","proxiedPrototype","fullName","_createWidget","_proto","_childConstructors","_superApply","__super","__superApply","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","pushStack","defaultElement","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","parentWindow","_getCreateOptions","_setOptionDisabled","_getCreateEventData","curOption","_setOptions","_setOptionClasses","classKey","currentElements","_toggleClass","full","processClassString","checkOption","extra","_untrackClassesElement","suppressDisabledCheck","handlers","delegateElement","handlerProxy","guid","eventName","_off","_delay","_hoverable","mouseenter","mouseleave","_focusable","focusin","focusout","defaultEffect","hasOptions","effectName","isEmptyObject","createPseudo","dataName","readFloatLE","isSlowBuffer","_isBuffer","DeflectorActions","deflector","InputTypesActions","inputTypes","inputDescriptions","promiseTypes","promiseDescriptions","inputTypeId","GraphFactory","domNode","renderTooltip","tooltipTitleFormatter","tooltipSelector","D3Utils","computationTimeRange","setState","_normalizeData","dataPoint","formattedValue","formattedKey","valueText","keyText","triggerRender","graphData","threshold","renderThreshold","thresholdColor","threshold_color","thresholdTooltip","threshold_tooltip","lineData","xValues","graphDomNode","_graph","interactive","_formatTooltipTitle","onRenderComplete","toPrecision","React","Component","renderGraph","_updateData","drawData","nextProps","_resizeVisualization","PropTypes","isRequired","shape","bool","superagent","SuperagentPromiseError","rng","bytesToUuid","CollectorConfigurationsActions","paginatedConfigurations","_fetchConfigurations","baseUrl","_fetchUploads","requestTemplate","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","digitToBasic","digit","adapt","numPoints","firstTime","basic","oldi","baseMinusT","codePoint","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","ParameterBinding","AvailableEventDefinitionTypesActions","entityTypes"],"mappings":"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,wBACL,GAAK,4BACL,GAAK,sBACL,GAAK,wCACL,GAAK,gBACL,GAAK,qCACL,GAAK,2DACL,GAAK,6CACL,GAAK,oCACL,GAAK,wBACL,GAAK,uCACL,GAAK,gQACL,GAAK,wBACL,GAAK,mBACL,GAAK,8CACL,GAAK,oCACL,GAAK,+HACL,GAAK,gCACL,GAAK,2BACL,GAAK,oEACL,GAAK,4CACL,GAAK,qCACL,GAAK,6CACL,GAAK,yCACL,GAAK,0CACL,GAAK,wBACL,GAAK,sCACL,GAAK,yCACL,GAAK,0BACL,GAAK,sCACL,GAAK,eACL,GAAK,wBACL,GAAK,uBACL,GAAK,4BACL,GAAK,gCACL,GAAK,wBACL,GAAK,4BACL,GAAK,yLACL,GAAK,gCACL,GAAK,mCACL,GAAK,2DACL,GAAK,8BACL,GAAK,sCACL,GAAK,YACL,GAAK,eACL,GAAK,qCACL,GAAK,+BACL,GAAK,mCACL,GAAK,gCACL,GAAK,4CACL,GAAK,wFACL,GAAK,oBACL,GAAK,0KACL,GAAK,wBACL,GAAK,wBACL,GAAK,4BACL,GAAK,wBACL,GAAK,+DACL,GAAK,wBACL,GAAK,wCACL,GAAK,uCACL,GAAK,8BACL,GAAK,YACL,GAAK,mCACL,GAAK,mCACL,GAAK,qCACL,GAAK,+BACL,GAAK,gBACL,GAAK,wBACL,GAAK,wBACL,GAAK,mEACL,GAAK,8CACL,GAAK,wBACL,GAAK,qCACL,GAAK,mDACL,GAAK,8CACL,GAAK,sCACL,GAAK,4BACL,GAAK,iCACL,GAAK,yDACL,GAAK,oCACL,GAAK,kCACL,GAAK,wDACL,GAAK,oLACL,GAAK,2DACL,GAAK,gCACL,GAAK,yBACL,GAAK,mDACL,GAAK,yBACL,GAAK,wBACL,GAAK,wBACL,GAAK,+BACL,GAAK,wBACL,GAAK,0EACL,GAAK,wBACL,GAAK,cACL,GAAK,+EACL,GAAK,+FACL,GAAK,+CACL,GAAK,6BACL,GAAK,sBACL,GAAK,WACL,GAAK,2EACL,GAAK,+CACL,GAAK,sCACL,GAAK,4BACL,GAAK,4BACL,GAAK,iBACL,GAAK,+wBACL,GAAK,uCACL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,KAAKmlN,KAAOnlN,KAAKmlN,IACftkM,KAAK,QAAS7gB,KAAKihB,OACnBJ,KAAK,SAAU7gB,KAAKkhB,SAGvBlhB,KAAKgrI,WAAW3wH,IAEjBtV,EAASC,UAAU,2BAEnBD,EAAS+B,SAASkY,MAAQ,WAEzBhf,KAAKsmN,QAAU,GAEftmN,KAAKsmN,QAAQC,WAAa,CACzB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACC91H,UAEFzwF,KAAKsmN,QAAQE,aAAe,CAC3B,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGDxmN,KAAKsmN,QAAQG,aAAe,CAC3B,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGDzmN,KAAKsmN,QAAQI,SAAW,CACvB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACCj2H,UAEFzwF,KAAKsmN,QAAQK,WAAa,CACzBC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,WAGNhoN,KAAKsmN,QAAQ2B,WAAa,CACzB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACCx3H,UAEFzwF,KAAKsmN,QAAQphD,KAAO,CACnB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGDllK,KAAKsmN,QAAQ4B,MAAQ,CACpB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAG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","file":"builtins.98d2b3fc81e4ad9e3499.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","import { browserHistory } from 'react-router';\n\nif (!window.graylogHistory) {\n  window.graylogHistory = browserHistory;\n}\n\nexport default window.graylogHistory;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { SessionStore, SessionActions } = CombinedProvider.get('Session');\nconst { StartpageStore } = CombinedProvider.get('Startpage');\n\nconst CurrentUserStore = Reflux.createStore({\n  listenables: [SessionActions],\n  currentUser: undefined,\n\n  init() {\n    this.listenTo(SessionStore, this.sessionUpdate, this.sessionUpdate);\n    this.listenTo(StartpageStore, this.reload, this.reload);\n  },\n\n  getInitialState() {\n    return { currentUser: this.currentUser };\n  },\n\n  get() {\n    return this.currentUser;\n  },\n\n  sessionUpdate(sessionInfo) {\n    if (sessionInfo.sessionId && sessionInfo.username) {\n      const { username } = sessionInfo;\n      this.update(username);\n    } else {\n      this.currentUser = undefined;\n      this.trigger({ currentUser: this.currentUser });\n    }\n  },\n\n  reload() {\n    if (this.currentUser !== undefined) {\n      return this.update(this.currentUser.username);\n    }\n  },\n\n  update(username) {\n    return fetch('GET', URLUtils.qualifyUrl(ApiRoutes.UsersApiController.load(encodeURIComponent(username)).url))\n      .then((resp) => {\n        this.currentUser = resp;\n        this.trigger({ currentUser: this.currentUser });\n      });\n  },\n});\n\nexport default CurrentUserStore;\n","import Reflux from 'reflux';\n\nconst MessagesActions = Reflux.createActions({\n  loadMessage: { asyncResult: true },\n  fieldTerms: { asyncResult: true },\n  loadRawMessage: { asyncResult: true },\n});\n\nexport default MessagesActions;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(47);","import moment from 'moment';\nimport MessageFieldsFilter from 'logic/message/MessageFieldsFilter';\n\nconst MessageFormatter = {\n  formatMessageSummary(messageSummary) {\n    const { message } = messageSummary;\n    return this.formatMessage(message._id, messageSummary.index, message, message, messageSummary.highlight_ranges, messageSummary.decoration_stats);\n  },\n\n  formatResultMessage(resultMessage) {\n    const { message } = resultMessage;\n    return this.formatMessage(message.id, resultMessage.index, message, message.fields, resultMessage.highlight_ranges, resultMessage.decoration_stats);\n  },\n\n  formatMessage(id, index, message, fields, highlightRanges, decorationStats) {\n    const filteredFields = MessageFieldsFilter.filterFields(fields);\n    return {\n      id: id,\n      timestamp: moment(message.timestamp).unix(),\n      filtered_fields: filteredFields,\n      formatted_fields: filteredFields,\n      fields: fields,\n      index: index,\n      source_node_id: fields.gl2_source_node,\n      source_input_id: fields.gl2_source_input,\n      stream_ids: message.streams,\n      highlight_ranges: highlightRanges,\n      decoration_stats: decorationStats,\n    };\n  },\n};\n\nexport default MessageFormatter;\n","// @flow strict\nimport Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\ntype StreamRule = {\n  field: string,\n  type: number,\n  value: string,\n  inverted: boolean,\n  description: string,\n};\n\ntype Callback = {\n  (): void,\n};\n\nconst StreamRulesStore = Reflux.createStore({\n  callbacks: [],\n\n  types() {\n    const url = '/streams/null/rules/types';\n    const promise = fetch('GET', URLUtils.qualifyUrl(url));\n\n    return promise;\n  },\n  list(streamId: string, callback: ((streamRules: Array) => void)) {\n    const failCallback = (error) => {\n      UserNotification.error(`Fetching Stream Rules failed with status: ${error}`,\n        'Could not retrieve Stream Rules');\n    };\n\n    fetch('GET', URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.list(streamId).url))\n      .then(callback, failCallback);\n  },\n  update(streamId: string, streamRuleId: string, data: StreamRule, callback: (() => void)) {\n    const failCallback = (error) => {\n      UserNotification.error(`Updating Stream Rule failed with status: ${error}`,\n        'Could not update Stream Rule');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.update(streamId, streamRuleId).url);\n    const request = {\n      field: data.field,\n      type: data.type,\n      value: data.value,\n      inverted: data.inverted,\n      description: data.description,\n    };\n\n    fetch('PUT', url, request)\n      .then(callback, failCallback)\n      .then(this._emitChange.bind(this));\n  },\n  remove(streamId: string, streamRuleId: string, callback: (() => void)) {\n    const failCallback = (error) => {\n      UserNotification.error(`Deleting Stream Rule failed with status: ${error}`,\n        'Could not delete Stream Rule');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.delete(streamId, streamRuleId).url);\n    fetch('DELETE', url)\n      .then(callback, failCallback)\n      .then(this._emitChange.bind(this));\n  },\n  create(streamId: string, data: StreamRule, callback: (() => void)) {\n    const failCallback = (error) => {\n      UserNotification.error(`Creating Stream Rule failed with status: ${error}`,\n        'Could not create Stream Rule');\n    };\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.create(streamId).url);\n\n    fetch('POST', url, data)\n      .then(callback, failCallback)\n      .then(this._emitChange.bind(this));\n  },\n  onChange(callback: Callback) {\n    this.callbacks.push(callback);\n  },\n  _emitChange() {\n    this.callbacks.forEach(callback => callback());\n  },\n  unregister(callback: Callback) {\n    lodash.pull(this.callbacks, callback);\n  },\n});\n\nexport default StreamRulesStore;\n","import Reflux from 'reflux';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst StartpageStore = Reflux.createStore({\n  listenables: [],\n\n  set(username, type, id) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.update(username).url);\n    const payload = {};\n    if (type && id) {\n      payload.type = type;\n      payload.id = id;\n    }\n    return fetch('PUT', url, { startpage: payload })\n      .then(\n        (response) => {\n          this.trigger();\n          UserNotification.success('Your start page was changed successfully');\n          return response;\n        },\n        error => UserNotification.error(`Changing your start page failed with error: ${error}`, 'Could not change your start page'),\n      );\n  },\n});\n\nexport default StartpageStore;\n","import Rickshaw from 'rickshaw';\nimport moment from 'moment';\nimport graphHelper from 'legacy/graphHelper';\n\nRickshaw.namespace('Rickshaw.Fixtures.Graylog2Time');\n\nconst Graylog2Time = function () {\n  const self = this;\n\n  this.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n  this.units = [\n    {\n      name: 'decade',\n      seconds: 86400 * 365.25 * 10,\n      formatter(d) { return self.formatDate(d); },\n    }, {\n      name: 'year',\n      seconds: 86400 * 365.25,\n      formatter(d) { return self.formatDate(d); },\n    }, {\n      name: 'month',\n      seconds: 86400 * 30.5,\n      formatter(d) { return self.formatDate(d); },\n    }, {\n      name: 'week',\n      seconds: 86400 * 7,\n      formatter(d) { return self.formatDate(d); },\n    }, {\n      name: 'day',\n      seconds: 86400,\n      formatter(d) { return self.formatDate(d); },\n    }, {\n      name: '3 hours',\n      seconds: 3600 * 3,\n      formatter(d) { return self.formatDateTime(d); },\n    }, {\n      name: 'hour',\n      seconds: 3600,\n      formatter(d) { return self.formatDateTime(d); },\n    }, {\n      name: '15 minutes',\n      seconds: 60 * 15,\n      formatter(d) { return self.formatDateTime(d); },\n    }, {\n      name: '5 minutes',\n      seconds: 60 * 5,\n      formatter(d) { return self.formatDateTime(d); },\n    }, {\n      name: 'minute',\n      seconds: 60,\n      formatter(d) { return self.formatDateTime(d); },\n    }, {\n      name: '15 second',\n      seconds: 15,\n      formatter(d) { return self.formatDateTime(d); },\n    }, {\n      name: 'second',\n      seconds: 1,\n      formatter(d) { return self.formatDateTime(d); },\n    }, {\n      name: 'millisecond',\n      seconds: 1 / 1000,\n      formatter(d) { return self.formatDateTime(d); },\n    },\n  ];\n\n  this.unit = function (unitName) {\n    return this.units.filter((unit) => { return unitName == unit.name; }).shift();\n  };\n\n  this.formatDateTime = graphHelper.customDateTimeFormat();\n\n  // Data in histograms is calculated using UTC. When the histogram resolution is day or lower,\n  // we can't extrapolate the data to the user's local time, so we use UTC instead.\n  this.formatDate = graphHelper.customDateTimeFormat(0);\n\n  this.ceil = function (time, unit) {\n    let date;\n    let floor;\n    let year;\n\n    if (unit.name == 'week') {\n      const momentDate = moment.utc(time * 1000);\n      momentDate.startOf('isoWeek');\n\n      if (momentDate.unix() == time) return time;\n\n      momentDate.add(1, 'week');\n      return momentDate.unix();\n    }\n\n    if (unit.name == 'month') {\n      date = new Date(time * 1000);\n\n      floor = Date.UTC(date.getUTCFullYear(), date.getUTCMonth()) / 1000;\n      if (floor == time) return time;\n\n      year = date.getUTCFullYear();\n      let month = date.getUTCMonth();\n\n      if (month == 11) {\n        month = 0;\n        year += 1;\n      } else {\n        month += 1;\n      }\n\n      return Date.UTC(year, month) / 1000;\n    }\n\n    if (unit.name == 'year') {\n      date = new Date(time * 1000);\n\n      floor = Date.UTC(date.getUTCFullYear(), 0) / 1000;\n      if (floor == time) return time;\n\n      year = date.getUTCFullYear() + 1;\n\n      return Date.UTC(year, 0) / 1000;\n    }\n\n    return Math.ceil(time / unit.seconds) * unit.seconds;\n  };\n};\n\nRickshaw.Fixtures.Graylog2Time = Graylog2Time;\n\nexport default Graylog2Time;\n","import Reflux from 'reflux';\n\nconst ExtractorsActions = Reflux.createActions({\n  list: { asyncResult: true },\n  get: { asyncResult: true },\n  create: { asyncResult: true },\n  save: { asyncResult: true },\n  update: { asyncResult: true },\n  delete: { asyncResult: true },\n  order: { asyncResult: true },\n  import: {},\n});\n\nexport default ExtractorsActions;\n","import CombinedProvider from 'injection/CombinedProvider';\n\nclass StoreProvider {\n  getStore(storeName) {\n    const result = CombinedProvider.get(storeName);\n    if (!result[`${storeName}Store`]) {\n      throw new Error(`Requested store \"${storeName}\" is not registered.`);\n    }\n    return result[`${storeName}Store`];\n  }\n}\n\nif (typeof window.storeProvider === 'undefined') {\n  window.storeProvider = new StoreProvider();\n}\n\nexport default window.storeProvider;\n","/*!\n * URI.js - Mutating URLs\n * IPv6 Support\n *\n * Version: 1.19.1\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n *   MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n  'use strict';\n  // https://github.com/umdjs/umd/blob/master/returnExports.js\n  if (typeof module === 'object' && module.exports) {\n    // Node\n    module.exports = factory();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(factory);\n  } else {\n    // Browser globals (root is window)\n    root.IPv6 = factory(root);\n  }\n}(this, function (root) {\n  'use strict';\n\n  /*\n  var _in = \"fe80:0000:0000:0000:0204:61ff:fe9d:f156\";\n  var _out = IPv6.best(_in);\n  var _expected = \"fe80::204:61ff:fe9d:f156\";\n\n  console.log(_in, _out, _expected, _out === _expected);\n  */\n\n  // save current IPv6 variable, if any\n  var _IPv6 = root && root.IPv6;\n\n  function bestPresentation(address) {\n    // based on:\n    // Javascript to test an IPv6 address for proper format, and to\n    // present the \"best text representation\" according to IETF Draft RFC at\n    // http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04\n    // 8 Feb 2010 Rich Brown, Dartware, LLC\n    // Please feel free to use this code as long as you provide a link to\n    // http://www.intermapper.com\n    // http://intermapper.com/support/tools/IPV6-Validator.aspx\n    // http://download.dartware.com/thirdparty/ipv6validator.js\n\n    var _address = address.toLowerCase();\n    var segments = _address.split(':');\n    var length = segments.length;\n    var total = 8;\n\n    // trim colons (:: or ::a:b:c… or …a:b:c::)\n    if (segments[0] === '' && segments[1] === '' && segments[2] === '') {\n      // must have been ::\n      // remove first two items\n      segments.shift();\n      segments.shift();\n    } else if (segments[0] === '' && segments[1] === '') {\n      // must have been ::xxxx\n      // remove the first item\n      segments.shift();\n    } else if (segments[length - 1] === '' && segments[length - 2] === '') {\n      // must have been xxxx::\n      segments.pop();\n    }\n\n    length = segments.length;\n\n    // adjust total segments for IPv4 trailer\n    if (segments[length - 1].indexOf('.') !== -1) {\n      // found a \".\" which means IPv4\n      total = 7;\n    }\n\n    // fill empty segments them with \"0000\"\n    var pos;\n    for (pos = 0; pos < length; pos++) {\n      if (segments[pos] === '') {\n        break;\n      }\n    }\n\n    if (pos < total) {\n      segments.splice(pos, 1, '0000');\n      while (segments.length < total) {\n        segments.splice(pos, 0, '0000');\n      }\n    }\n\n    // strip leading zeros\n    var _segments;\n    for (var i = 0; i < total; i++) {\n      _segments = segments[i].split('');\n      for (var j = 0; j < 3 ; j++) {\n        if (_segments[0] === '0' && _segments.length > 1) {\n          _segments.splice(0,1);\n        } else {\n          break;\n        }\n      }\n\n      segments[i] = _segments.join('');\n    }\n\n    // find longest sequence of zeroes and coalesce them into one segment\n    var best = -1;\n    var _best = 0;\n    var _current = 0;\n    var current = -1;\n    var inzeroes = false;\n    // i; already declared\n\n    for (i = 0; i < total; i++) {\n      if (inzeroes) {\n        if (segments[i] === '0') {\n          _current += 1;\n        } else {\n          inzeroes = false;\n          if (_current > _best) {\n            best = current;\n            _best = _current;\n          }\n        }\n      } else {\n        if (segments[i] === '0') {\n          inzeroes = true;\n          current = i;\n          _current = 1;\n        }\n      }\n    }\n\n    if (_current > _best) {\n      best = current;\n      _best = _current;\n    }\n\n    if (_best > 1) {\n      segments.splice(best, _best, '');\n    }\n\n    length = segments.length;\n\n    // assemble remaining segments\n    var result = '';\n    if (segments[0] === '')  {\n      result = ':';\n    }\n\n    for (i = 0; i < length; i++) {\n      result += segments[i];\n      if (i === length - 1) {\n        break;\n      }\n\n      result += ':';\n    }\n\n    if (segments[length - 1] === '') {\n      result += ':';\n    }\n\n    return result;\n  }\n\n  function noConflict() {\n    /*jshint validthis: true */\n    if (root.IPv6 === this) {\n      root.IPv6 = _IPv6;\n    }\n\n    return this;\n  }\n\n  return {\n    best: bestPresentation,\n    noConflict: noConflict\n  };\n}));\n","import Reflux from 'reflux';\n\nconst CatalogActions = Reflux.createActions({\n  showEntityIndex: { asyncResult: true },\n  getSelectedEntities: { asyncResult: true },\n});\n\nexport default CatalogActions;\n","class CombinedProvider {\n  constructor() {\n    this.actions = {};\n    this.stores = {};\n  }\n\n  registerAction(key, func) {\n    if (this.actions[key]) {\n      throw new Error(`Unable to register actions for '${key}', already registered: ${this.actions[key]}`);\n    }\n    this.actions[key] = func;\n  }\n\n  registerStore(key, func) {\n    if (this.stores[key]) {\n      throw new Error(`Unable to register store for '${key}', already registered: ${this.stores[key]}`);\n    }\n    this.stores[key] = func;\n  }\n\n  get(name) {\n    const result = {};\n    if (this.stores[name]) {\n      result[`${name}Store`] = this.stores[name]();\n    }\n    if (this.actions[name]) {\n      result[`${name}Actions`] = this.actions[name]();\n    }\n    return result;\n  }\n}\n\nif (typeof window.combinedProvider === 'undefined') {\n  window.combinedProvider = new CombinedProvider();\n}\n\nexport default window.combinedProvider;\n","import { fromJS } from 'immutable';\nimport { mapValues, get, compact } from 'lodash';\nimport QueryResult from './QueryResult';\nimport SearchError from './SearchError';\nimport ResultWindowLimitError from './ResultWindowLimitError';\n\nclass SearchResult {\n  constructor(result) {\n    this._result = fromJS(result);\n\n    this._results = fromJS(mapValues(result.results, queryResult => new QueryResult(queryResult)));\n    this._errors = fromJS(get(result, 'errors', []).map((error) => {\n      if (error.type === 'result_window_limit') {\n        return new ResultWindowLimitError(error, this);\n      }\n      return new SearchError(error);\n    }));\n  }\n\n  get result() {\n    return this._result.toJS();\n  }\n\n  get results() {\n    return this._results.toJS();\n  }\n\n  get errors() {\n    return this._errors.toJS();\n  }\n\n  forId(queryId) {\n    return this._results.get(queryId);\n  }\n\n  updateSearchTypes(searchTypeResults) {\n    const updatedResult = this.result;\n    searchTypeResults.forEach((searchTypeResult) => {\n      const searchQuery = this._getQueryBySearchTypeId(searchTypeResult.id);\n      updatedResult.results[searchQuery.query.id].search_types[searchTypeResult.id] = searchTypeResult;\n    });\n    return new SearchResult(updatedResult);\n  }\n\n  getSearchTypesFromResponse(searchTypeIds) {\n    const searchTypes = searchTypeIds.map((searchTypeId) => {\n      const relatedQuery = this._getQueryBySearchTypeId(searchTypeId);\n      return SearchResult._getSearchTypeFromQuery(relatedQuery, searchTypeId);\n    });\n    return SearchResult._filterFailedSearchTypes(searchTypes);\n  }\n\n  _getQueryBySearchTypeId(searchTypeId) {\n    return Object.values(this.result.results).find(query => SearchResult._getSearchTypeFromQuery(query, searchTypeId));\n  }\n\n  static _getSearchTypeFromQuery(query, searchTypeId) {\n    return (query && query.search_types) ? query.search_types[searchTypeId] : undefined;\n  }\n\n  static _filterFailedSearchTypes(searchTypes) {\n    return compact(searchTypes);\n  }\n}\n\nexport default SearchResult;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst MessageCountsActions = ActionsProvider.getActions('MessageCounts');\n\nconst MessageCountsStore = Reflux.createStore({\n  listenables: [MessageCountsActions],\n  events: undefined,\n\n  init() {\n    this.total();\n  },\n  total() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.CountsApiController.total().url);\n    const promise = fetch('GET', url).then((response) => {\n      this.events = response.events;\n      this.trigger({ events: response.events });\n      return response.events;\n    });\n\n    MessageCountsActions.total.promise(promise);\n\n    return promise;\n  },\n});\n\nexport default MessageCountsStore;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(1);","\"use strict\";\n\nvar create = function create(metadata, exports) {\n  return {\n    metadata: metadata,\n    exports: exports\n  };\n};\n\nmodule.exports = create;","import Reflux from 'reflux';\n\nconst FilterPreviewActions = Reflux.createActions({\n  create: { asyncResult: true },\n  execute: { asyncResult: true },\n  search: { asyncResult: true },\n});\n\nexport default FilterPreviewActions;\n","// @flow strict\nimport Immutable, { is } from 'immutable';\nimport uuid from 'uuid/v4';\nimport { isEqual } from 'lodash';\n\nexport type QueryId = string;\n\ntype FilterType = Immutable.Map;\ntype SearchTypeList = Array;\ntype InternalBuilderState = Immutable.Map;\n\ntype InternalState = {\n  id: QueryId,\n  query: any,\n  timerange: any,\n  filter?: FilterType,\n  searchTypes: SearchTypeList,\n};\n\nexport type QueryJson = {\n  id: QueryId,\n  query: any,\n  timerange: any,\n  filter?: FilterType,\n  search_types: any,\n};\n\nexport type ElasticsearchQueryString = {\n  type: 'elasticsearch',\n  query_string: string,\n};\n\nexport const createElasticsearchQueryString = (query: string = ''): ElasticsearchQueryString => ({ type: 'elasticsearch', query_string: query });\n\nconst _streamFilters = (selectedStreams: Array): Array<{ type: string, id: string }> => {\n  return selectedStreams.map(stream => ({ type: 'stream', id: stream }));\n};\n\nexport const filtersForQuery = (streams: ?Array) => {\n  if (!streams || streams.length === 0) {\n    return null;\n  }\n  const streamFilters = _streamFilters(streams);\n  return {\n    type: 'or',\n    filters: streamFilters,\n  };\n};\n\nexport type QueryString = ElasticsearchQueryString;\n\nexport type TimeRangeTypes = 'relative' | 'absolute' | 'keyword';\n\nexport type RelativeTimeRange = {\n  type: 'relative',\n  range: number,\n};\n\nexport type AbsoluteTimeRange = {\n  type: 'absolute',\n  from: string,\n  to: string,\n};\n\nexport type KeywordTimeRange = {\n  type: 'keyword',\n  keyword: string,\n};\n\nexport type TimeRange = RelativeTimeRange | AbsoluteTimeRange | KeywordTimeRange;\n\nexport default class Query {\n  _value: InternalState;\n\n  constructor(id: QueryId, query: any, timerange: any, filter?: FilterType, searchTypes: SearchTypeList) {\n    this._value = { id, query, timerange, filter, searchTypes };\n  }\n\n  get id(): QueryId {\n    return this._value.id;\n  }\n\n  get query(): QueryString {\n    return this._value.query;\n  }\n\n  get timerange(): TimeRange {\n    return this._value.timerange;\n  }\n\n  get filter(): ?FilterType {\n    return this._value.filter;\n  }\n\n  get searchTypes(): Array {\n    return this._value.searchTypes;\n  }\n\n  // eslint-disable-next-line no-use-before-define\n  toBuilder(): Builder {\n    const { id, query, timerange, filter, searchTypes } = this._value;\n    // eslint-disable-next-line no-use-before-define\n    return Query.builder().id(id).query(query).timerange(timerange)\n      .filter(filter)\n      .searchTypes(searchTypes);\n  }\n\n  equals(other: any): boolean {\n    if (other === undefined) {\n      return false;\n    }\n    if (!(other instanceof Query)) {\n      return false;\n    }\n\n    if (this.id !== other.id || !isEqual(this.query, other.query) || !isEqual(this.timerange, other.timerange) || !is(this.filter, other.filter) || !is(this.searchTypes, other.searchTypes)) {\n      return false;\n    }\n\n    return true;\n  }\n\n  toJSON(): QueryJson {\n    const { id, query, timerange, filter, searchTypes } = this._value;\n\n    return {\n      id,\n      query,\n      timerange,\n      filter,\n      search_types: searchTypes,\n    };\n  }\n\n  // eslint-disable-next-line no-use-before-define\n  static builder(): Builder {\n    // eslint-disable-next-line no-use-before-define\n    return new Builder()\n      .searchTypes([]);\n  }\n\n  static fromJSON(value: QueryJson): Query {\n    // eslint-disable-next-line camelcase\n    const { id, query, timerange, filter, search_types } = value;\n    return new Query(id, query, timerange, Immutable.fromJS(filter), search_types);\n  }\n}\n\nclass Builder {\n  value: InternalBuilderState;\n\n  constructor(value: InternalBuilderState = Immutable.Map()) {\n    this.value = value;\n  }\n\n  id(value: QueryId): Builder {\n    return new Builder(this.value.set('id', value));\n  }\n\n  newId(): Builder {\n    return this.id(uuid());\n  }\n\n  query(value: QueryString): Builder {\n    return new Builder(this.value.set('query', value));\n  }\n\n  timerange(value: TimeRange): Builder {\n    return new Builder(this.value.set('timerange', value));\n  }\n\n  filter(value: FilterType): Builder {\n    return new Builder(this.value.set('filter', Immutable.fromJS(value)));\n  }\n\n  searchTypes(value: SearchTypeList): Builder {\n    return new Builder(this.value.set('searchTypes', value));\n  }\n\n  build(): Query {\n    const { id, query, timerange, filter, searchTypes } = this.value.toObject();\n    return new Query(id, query, timerange, filter, searchTypes);\n  }\n}\n","import Reflux from 'reflux';\nimport URI from 'urijs';\nimport lodash from 'lodash';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { EventNotificationsActions } = CombinedProvider.get('EventNotifications');\n\nconst EventNotificationsStore = Reflux.createStore({\n  listenables: [EventNotificationsActions],\n  sourceUrl: '/events/notifications',\n  all: undefined,\n  allLegacyTypes: undefined,\n  notifications: undefined,\n  query: undefined,\n  pagination: {\n    count: undefined,\n    page: undefined,\n    pageSize: undefined,\n    total: undefined,\n    grandTotal: undefined,\n  },\n\n  getInitialState() {\n    return this.getState();\n  },\n\n  propagateChanges() {\n    this.trigger(this.getState());\n  },\n\n  getState() {\n    return {\n      all: this.all,\n      allLegacyTypes: this.allLegacyTypes,\n      notifications: this.notifications,\n      query: this.query,\n      pagination: this.pagination,\n    };\n  },\n\n  eventNotificationsUrl({ segments = [], query = {} }) {\n    const uri = new URI(this.sourceUrl);\n    const nextSegments = lodash.concat(uri.segment(), segments);\n    uri.segmentCoded(nextSegments);\n    uri.query(query);\n\n    return URLUtils.qualifyUrl(uri.resource());\n  },\n\n  refresh() {\n    if (this.all) {\n      this.listAll();\n    }\n    if (this.pagination.page) {\n      this.listPaginated({\n        query: this.query,\n        page: this.pagination.page,\n        pageSize: this.pagination.pageSize,\n      });\n    }\n  },\n\n  listAll() {\n    const promise = fetch('GET', this.eventNotificationsUrl({ query: { per_page: 0 } }));\n\n    promise.then((response) => {\n      this.all = response.notifications;\n      this.propagateChanges();\n      return response;\n    });\n\n    EventNotificationsActions.listAll.promise(promise);\n  },\n\n  listPaginated({ query = '', page = 1, pageSize = 10 }) {\n    const promise = fetch('GET', this.eventNotificationsUrl({\n      query: {\n        query: query,\n        page: page,\n        per_page: pageSize,\n      },\n    }));\n\n    promise.then((response) => {\n      this.notifications = response.notifications;\n      this.query = response.query;\n      this.pagination = {\n        count: response.count,\n        page: response.page,\n        pageSize: response.per_page,\n        total: response.total,\n        grandTotal: response.grand_total,\n      };\n      this.propagateChanges();\n      return response;\n    });\n\n    EventNotificationsActions.listPaginated.promise(promise);\n  },\n\n  get(notificationId) {\n    const promise = fetch('GET', this.eventNotificationsUrl({ segments: [notificationId] }));\n    promise.catch((error) => {\n      if (error.status === 404) {\n        UserNotification.error(`Unable to find Event Notification with id <${notificationId}>, please ensure it wasn't deleted.`,\n          'Could not retrieve Event Notification');\n      }\n    });\n    EventNotificationsActions.get.promise(promise);\n  },\n\n  create(notification) {\n    const promise = fetch('POST', this.eventNotificationsUrl({}), notification);\n    promise.then(\n      (response) => {\n        UserNotification.success('Notification created successfully', `Notification \"${notification.title}\" was created successfully.`);\n        this.refresh();\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Creating Notification \"${notification.title}\" failed with status: ${error}`,\n            'Could not save Notification');\n        }\n      },\n    );\n    EventNotificationsActions.create.promise(promise);\n  },\n\n  update(notificationId, notification) {\n    const promise = fetch('PUT', this.eventNotificationsUrl({ segments: [notificationId] }), notification);\n    promise.then(\n      (response) => {\n        UserNotification.success('Notification updated successfully', `Notification \"${notification.title}\" was updated successfully.`);\n        this.refresh();\n        return response;\n      },\n      (error) => {\n        if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n          UserNotification.error(`Updating Notification \"${notification.title}\" failed with status: ${error}`,\n            'Could not update Notification');\n        }\n      },\n    );\n    EventNotificationsActions.update.promise(promise);\n  },\n\n  delete(notification) {\n    const promise = fetch('DELETE', this.eventNotificationsUrl({ segments: [notification.id] }));\n\n    promise.then(\n      () => {\n        UserNotification.success('Notification deleted successfully', `Notification \"${notification.title}\" was deleted successfully.`);\n        this.refresh();\n      },\n      (error) => {\n        UserNotification.error(`Deleting Notification \"${notification.title}\" failed with status: ${error}`,\n          'Could not delete Notification');\n      },\n    );\n\n    EventNotificationsActions.delete.promise(promise);\n  },\n\n  test(notification) {\n    const promise = fetch('POST', this.eventNotificationsUrl({ segments: ['test'] }), notification);\n    EventNotificationsActions.test.promise(promise);\n  },\n\n  testPersisted(notification) {\n    const promise = fetch('POST', this.eventNotificationsUrl({ segments: [notification.id, 'test'] }));\n    EventNotificationsActions.testPersisted.promise(promise);\n  },\n\n  listAllLegacyTypes() {\n    const promise = fetch('GET', this.eventNotificationsUrl({ segments: ['legacy', 'types'] }));\n\n    promise.then((response) => {\n      this.allLegacyTypes = response.types;\n      this.propagateChanges();\n      return response;\n    });\n\n    EventNotificationsActions.listAllLegacyTypes.promise(promise);\n  },\n});\n\nexport default EventNotificationsStore;\n","const DEFAULT_TIMEOUT = 1000 / 10; // 10 fps\n\n/**\n * Use when an event handler should be called after a timeout, instead of every time the event is triggered.\n * This is specially useful for handling window resize callbacks that may be expensive.\n */\nclass EventHandlersThrottler {\n  constructor() {\n    this.eventMutex = null;\n  }\n\n  /**\n   * @param eventHandler Callback actually handling the event\n   * @param timeout (optional) Time to wait before calling the callback\n   */\n  throttle(eventHandler, timeout) {\n    if (this.eventMutex) {\n      return;\n    }\n\n    this.eventMutex = setTimeout(() => {\n      this.eventMutex = null;\n      eventHandler();\n    }, timeout || DEFAULT_TIMEOUT);\n  }\n}\n\nexport default EventHandlersThrottler;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(610);","import Reflux from 'reflux';\nimport Immutable from 'immutable';\n\nimport ActionsProvider from 'injection/ActionsProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\nconst DashboardsActions = ActionsProvider.getActions('Dashboards');\n\nexport default Reflux.createStore({\n  listenables: [DashboardsActions],\n  dashboards: undefined,\n  writableDashboards: undefined,\n  permissions: [],\n\n  init() {\n    this.listenTo(CurrentUserStore, this.currentUserUpdated, this.currentUserUpdated);\n    DashboardsActions.list();\n  },\n\n  currentUserUpdated(state) {\n    if (state && state.currentUser) {\n      this.permissions = state.currentUser.permissions;\n      DashboardsActions.list();\n    }\n  },\n\n  getInitialState() {\n    return {\n      dashboards: this.dashboards,\n      writableDashboards: this.writableDashboards,\n    };\n  },\n\n  create(title, description) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.create().url);\n    const promise = fetch('POST', url, { title: title, description: description })\n      .then((response) => {\n        UserNotification.success('Dashboard successfully created');\n        return response.dashboard_id;\n      }, (error) => {\n        UserNotification.error(`Creating dashboard \"${title}\" failed with status: ${error}`, 'Could not create dashboard');\n      });\n\n    DashboardsActions.create.promise(promise);\n\n    return promise;\n  },\n\n  createCompleted() {\n    CurrentUserStore.reload();\n    DashboardsActions.list();\n  },\n\n  delete(dashboard) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.delete(dashboard.id).url);\n    const promise = fetch('DELETE', url);\n\n    promise.then(() => {\n      UserNotification.success('Dashboard successfully deleted');\n    }, (error) => {\n      UserNotification.error(`Deleting dashboard \"${dashboard.title}\" failed with status: ${error}`, 'Could not delete dashboard');\n    });\n\n    DashboardsActions.delete.promise(promise);\n\n    return promise;\n  },\n\n  deleteCompleted() {\n    DashboardsActions.list();\n  },\n\n  get(id) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.get(id).url);\n    const promise = fetchPeriodically('GET', url);\n\n    promise.catch((error) => {\n      if (error.additional && error.additional.status !== 404) {\n        UserNotification.error(`Loading your dashboard failed with status: ${error.message}`, 'Could not load your dashboard');\n      }\n    });\n\n    DashboardsActions.get.promise(promise);\n\n    return promise;\n  },\n\n  list() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.index().url);\n    const promise = fetch('GET', url)\n      .then((response) => {\n        const dashboardList = Immutable.List(response.dashboards);\n        const writableDashboards = this.getWritableDashboardList(dashboardList, this.permissions);\n\n        this.dashboards = dashboardList;\n        this.writableDashboards = writableDashboards;\n        const state = { dashboards: dashboardList, writableDashboards: writableDashboards };\n\n        this.trigger(state);\n\n        return state;\n      }, (error) => {\n        if (!error.additional || error.additional.status !== 404) {\n          UserNotification.error(`Loading dashboard list failed with status: ${error}`, 'Could not load dashboards');\n        }\n      });\n    DashboardsActions.list.promise(promise);\n    return promise;\n  },\n\n  getWritableDashboardList(dashboards, permissions) {\n    return dashboards.filter(dashboard => PermissionsMixin.isPermitted(permissions, `dashboards:edit:${dashboard.id}`));\n  },\n\n  update(dashboard) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.update(dashboard.id).url);\n    const promise = fetch('PUT', url, { title: dashboard.title, description: dashboard.description });\n\n    promise.then(() => {\n      UserNotification.success('Dashboard successfully updated');\n    }, (error) => {\n      UserNotification.error(`Saving dashboard \"${dashboard.title}\" failed with status: ${error}`, 'Could not save dashboard');\n    });\n\n    DashboardsActions.update.promise(promise);\n\n    return promise;\n  },\n\n  updateCompleted() {\n    DashboardsActions.list();\n  },\n\n  updatePositions(dashboard, positions) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.updatePositions(dashboard.id).url);\n    const promise = fetch('PUT', url, { positions: positions }).catch((error) => {\n      UserNotification.error(`Updating widget positions for dashboard \"${dashboard.title}\" failed with status: ${error.message}`,\n        'Could not update dashboard');\n\n      return error;\n    });\n\n    DashboardsActions.updatePositions.promise(promise);\n\n    return promise;\n  },\n});\n","import Reflux from 'reflux';\n\nconst SavedSearchesActions = Reflux.createActions({\n  create: { asyncResult: true },\n  update: { asyncResult: true },\n  list: { asyncResult: true },\n  execute: { asyncResult: true },\n  delete: { asyncResult: true },\n});\n\nexport default SavedSearchesActions;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n    'default': 'RFC3986',\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return value;\n        }\n    },\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n","import Reflux from 'reflux';\nimport jQuery from 'jquery';\nimport md5 from 'md5';\n\nimport HistogramFormatter from 'logic/graphs/HistogramFormatter';\nimport MessageFormatter from 'logic/message/MessageFormatter';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst UniversalSearchStore = Reflux.createStore({\n  DEFAULT_LIMIT: 150,\n  listenables: [],\n\n  search(type, query, timerange, streamId, limit, page, sortField, sortOrder, decorate) {\n    const timerangeParams = UniversalSearchStore.extractTimeRange(type, timerange);\n    const effectiveLimit = limit || this.DEFAULT_LIMIT;\n    const offset = (page - 1) * effectiveLimit;\n\n    const url = URLUtils.qualifyUrl(ApiRoutes.UniversalSearchApiController.search(type, query,\n      timerangeParams, streamId, effectiveLimit, offset, sortField, sortOrder, decorate).url);\n\n    return fetch('GET', url).then((response) => {\n      const result = jQuery.extend({}, response);\n      result.fields = response.fields.map((field) => {\n        return {\n          hash: md5(field),\n          name: field,\n          standard_selected: (field === 'message' || field === 'source'),\n        };\n      });\n\n      result.messages = result.messages.map(message => MessageFormatter.formatMessageSummary(message));\n\n      return result;\n    });\n  },\n  histogram(type, query, timerange, interval, streamId, maxDataPoints) {\n    const timerangeParams = UniversalSearchStore.extractTimeRange(type, timerange);\n    const url = URLUtils.qualifyUrl(ApiRoutes.UniversalSearchApiController.histogram(type, query, interval, timerangeParams, streamId).url);\n\n    return fetch('GET', url).then((response) => {\n      response.histogram_boundaries = response.queried_timerange;\n      response.histogram = HistogramFormatter.format(response.results, response.histogram_boundaries, interval,\n        maxDataPoints, type === 'relative' && timerange.relative === 0, null, true);\n      return response;\n    });\n  },\n});\n\nUniversalSearchStore.extractTimeRange = (type, timerange) => {\n  // The server API uses the `range` parameter instead of `relative` for indicating a relative time range.\n  if (type === 'relative') {\n    return { range: timerange.range || timerange.relative };\n  }\n\n  return timerange;\n};\n\nexport default UniversalSearchStore;\n","import Reflux from 'reflux';\n\nconst EventNotificationsActions = Reflux.createActions({\n  listAll: { asyncResult: true },\n  listAllLegacyTypes: { asyncResult: true },\n  listPaginated: { asyncResult: true },\n  get: { asyncResult: true },\n  create: { asyncResult: true },\n  update: { asyncResult: true },\n  delete: { asyncResult: true },\n  test: { asyncResult: true },\n  testPersisted: { asyncResult: true },\n});\n\nexport default EventNotificationsActions;\n","import Reflux from 'reflux';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nimport ExtractorUtils from 'util/ExtractorUtils';\nimport Promise from 'bluebird';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nconst ExtractorsActions = ActionsProvider.getActions('Extractors');\n\nfunction getExtractorDTO(extractor) {\n  const converters = {};\n  extractor.converters.forEach((converter) => {\n    converters[converter.type] = converter.config;\n  });\n\n  const conditionValue = extractor.condition_type && extractor.condition_type !== 'none' ? extractor.condition_value : '';\n\n  return {\n    title: extractor.title,\n    cut_or_copy: extractor.cursor_strategy || 'copy',\n    source_field: extractor.source_field,\n    target_field: extractor.target_field,\n    extractor_type: extractor.type || extractor.extractor_type, // \"extractor_type\" needed for imports\n    extractor_config: extractor.extractor_config,\n    converters: converters,\n    condition_type: extractor.condition_type || 'none',\n    condition_value: conditionValue,\n    order: extractor.order,\n  };\n}\n\nconst ExtractorsStore = Reflux.createStore({\n  listenables: [ExtractorsActions],\n  sourceUrl: '/system/inputs/',\n  extractors: undefined,\n  extractor: undefined,\n\n  init() {\n    this.trigger({ extractors: this.extractors, extractor: this.extractor });\n  },\n\n  list(inputId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(URLUtils.concatURLPath(this.sourceUrl, inputId, 'extractors')));\n    promise.then((response) => {\n      this.extractors = response.extractors;\n      this.trigger({ extractors: this.extractors });\n    });\n\n    ExtractorsActions.list.promise(promise);\n  },\n\n  // Creates an basic extractor object that we can use to create new extractors.\n  new(type, field) {\n    if (ExtractorUtils.EXTRACTOR_TYPES.indexOf(type) === -1) {\n      throw new Error(`Invalid extractor type provided: ${type}`);\n    }\n\n    return {\n      type: type,\n      source_field: field,\n      converters: [],\n      extractor_config: {},\n      target_field: '',\n    };\n  },\n\n  get(inputId, extractorId) {\n    const promise = fetch('GET', URLUtils.qualifyUrl(URLUtils.concatURLPath(this.sourceUrl, inputId, 'extractors', extractorId)));\n    promise.then((response) => {\n      this.extractor = response;\n      this.trigger({ extractor: this.extractor });\n    });\n\n    ExtractorsActions.get.promise(promise);\n  },\n\n  save(inputId, extractor) {\n    let promise;\n\n    if (extractor.id) {\n      promise = this.update(inputId, extractor, true);\n    } else {\n      promise = this.create(inputId, extractor, true);\n    }\n\n    ExtractorsActions.save.promise(promise);\n  },\n\n  _silentExtractorCreate(inputId, extractor) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.create(inputId).url);\n    return fetch('POST', url, getExtractorDTO(extractor));\n  },\n\n  create(inputId, extractor, calledFromMethod) {\n    const promise = this._silentExtractorCreate(inputId, extractor);\n    promise\n      .then(() => {\n        UserNotification.success(`Extractor ${extractor.title} created successfully`);\n        if (this.extractor) {\n          ExtractorsActions.get.triggerPromise(inputId, extractor.id);\n        }\n      })\n      .catch((error) => {\n        UserNotification.error(`Creating extractor failed: ${error}`,\n          'Could not create extractor');\n      });\n\n    if (!calledFromMethod) {\n      ExtractorsActions.create.promise(promise);\n    }\n    return promise;\n  },\n\n  update(inputId, extractor, calledFromMethod) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.update(inputId, extractor.id).url);\n\n    const promise = fetch('PUT', url, getExtractorDTO(extractor));\n    promise\n      .then(() => {\n        UserNotification.success(`Extractor \"${extractor.title}\" updated successfully`);\n        if (this.extractor) {\n          ExtractorsActions.get.triggerPromise(inputId, extractor.id);\n        }\n      })\n      .catch((error) => {\n        UserNotification.error(`Updating extractor failed: ${error}`,\n          'Could not update extractor');\n      });\n\n    if (!calledFromMethod) {\n      ExtractorsActions.update.promise(promise);\n    }\n    return promise;\n  },\n\n  delete(inputId, extractor) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.delete(inputId, extractor.id).url);\n\n    const promise = fetch('DELETE', url);\n    promise\n      .then(() => {\n        UserNotification.success(`Extractor \"${extractor.title}\" deleted successfully`);\n        if (this.extractors) {\n          ExtractorsActions.list.triggerPromise(inputId);\n        }\n      })\n      .catch((error) => {\n        UserNotification.error(`Deleting extractor failed: ${error}`,\n          `Could not delete extractor ${extractor.title}`);\n      });\n\n    ExtractorsActions.delete.promise(promise);\n  },\n\n  order(inputId, orderedExtractors) {\n    const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.order(inputId).url);\n    const orderedExtractorsMap = {};\n    orderedExtractors.forEach((extractor, idx) => orderedExtractorsMap[idx] = extractor.id);\n\n    const promise = fetch('POST', url, { order: orderedExtractorsMap });\n    promise.then(() => {\n      UserNotification.success('Extractor positions updated successfully');\n      if (this.extractors) {\n        ExtractorsActions.list.triggerPromise(inputId);\n      }\n    });\n    promise.catch((error) => {\n      UserNotification.error(`Changing extractor positions failed: ${error}`,\n        'Could not update extractor positions');\n    });\n\n    ExtractorsActions.order.promise(promise);\n  },\n\n  import(inputId, extractors) {\n    let successfulImports = 0;\n    let failedImports = 0;\n    const promises = [];\n\n    extractors.forEach((extractor) => {\n      const promise = this._silentExtractorCreate(inputId, extractor);\n      promise\n        .then(() => successfulImports++)\n        .catch(() => failedImports++);\n      promises.push(promise);\n    });\n\n    Promise.settle(promises).then(() => {\n      if (failedImports === 0) {\n        UserNotification.success(`Import results: ${successfulImports} extractor(s) imported.`,\n          'Import operation successful');\n      } else {\n        UserNotification.warning(`Import results: ${successfulImports} extractor(s) imported, ${failedImports} error(s).`,\n          'Import operation completed');\n      }\n    });\n  },\n});\n\nexport default ExtractorsStore;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(800);","import { Map, Set } from 'immutable';\nimport { concat, remove } from 'lodash';\nimport uuid from 'uuid/v4';\nimport Entity from './Entity';\n\nexport default class ContentPack {\n  constructor(v, id, rev, name, summary, description, vendor, url, parameters, entitieValues) {\n    const entities = entitieValues.map((e) => {\n      if (e instanceof Entity) {\n        return e;\n      }\n      return Entity.fromJSON(e, false, parameters);\n    });\n\n    this._value = {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    };\n  }\n\n  get v() {\n    return this._value.v;\n  }\n\n  get id() {\n    return this._value.id;\n  }\n\n  get rev() {\n    return this._value.rev;\n  }\n\n  get name() {\n    return this._value.name;\n  }\n\n  get summary() {\n    return this._value.summary;\n  }\n\n  get description() {\n    return this._value.description;\n  }\n\n  get vendor() {\n    return this._value.vendor;\n  }\n\n  get url() {\n    return this._value.url;\n  }\n\n  get constraints() {\n    return this._value.entities.reduce((acc, entity) => {\n      return entity.constraints.reduce((result, constraint) => {\n        return result.add(constraint);\n      }, acc);\n    }, Set());\n  }\n\n  get parameters() {\n    return this._value.parameters;\n  }\n\n  get entities() {\n    return this._value.entities;\n  }\n\n  toBuilder() {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = this._value;\n    // eslint-disable-next-line no-use-before-define\n    return new Builder(Map({\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    }));\n  }\n\n  toJSON() {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = this._value;\n\n    const entitiesJSON = entities.map(e => e.toJSON());\n    return {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities: entitiesJSON,\n    };\n  }\n\n  static fromJSON(value) {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = value;\n    return new ContentPack(\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    );\n  }\n\n  static builder() {\n    // eslint-disable-next-line no-use-before-define\n    return new Builder()\n      .v(1)\n      .id(uuid())\n      .rev(1)\n      .name('')\n      .summary('')\n      .description('')\n      .vendor('')\n      .url('')\n      .parameters([])\n      .entities([]);\n  }\n}\n\nclass Builder {\n  constructor(value = Map()) {\n    this.value = value;\n  }\n\n  v(value) {\n    this.value = this.value.set('v', value);\n    return this;\n  }\n\n  id(value) {\n    this.value = this.value.set('id', value);\n    return this;\n  }\n\n  rev(value) {\n    this.value = this.value.set('rev', value);\n    return this;\n  }\n\n  name(value) {\n    this.value = this.value.set('name', value);\n    return this;\n  }\n\n  summary(value) {\n    this.value = this.value.set('summary', value);\n    return this;\n  }\n\n  description(value) {\n    this.value = this.value.set('description', value);\n    return this;\n  }\n\n  vendor(value) {\n    this.value = this.value.set('vendor', value);\n    return this;\n  }\n\n  url(value) {\n    this.value = this.value.set('url', value);\n    return this;\n  }\n\n  parameters(value) {\n    this.value = this.value.set('parameters', value);\n    return this;\n  }\n\n  removeParameter(value) {\n    const parameters = this.value.get('parameters').slice(0);\n    remove(parameters, parameter => parameter.name === value.name);\n    this.value = this.value.set('parameters', parameters);\n    return this;\n  }\n\n  addParameter(value) {\n    const parameters = this.value.get('parameters');\n    const newParameters = concat(parameters, value);\n    this.value = this.value.set('parameters', newParameters);\n    return this;\n  }\n\n  entities(value) {\n    this.value = this.value.set('entities', value);\n    return this;\n  }\n\n  build() {\n    const {\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    } = this.value.toObject();\n    return new ContentPack(\n      v,\n      id,\n      rev,\n      name,\n      summary,\n      description,\n      vendor,\n      url,\n      parameters,\n      entities,\n    );\n  }\n}\n","import numeral from 'numeral';\n\nconst NumberUtils = {\n  normalizeNumber(number) {\n    switch (number) {\n      case 'NaN':\n        return NaN;\n      case 'Infinity':\n        return Number.MAX_VALUE;\n      case '-Infinity':\n        return Number.MIN_VALUE;\n      default:\n        return number;\n    }\n  },\n  normalizeGraphNumber(number) {\n    switch (number) {\n      case 'NaN':\n      case 'Infinity':\n      case '-Infinity':\n        return 0;\n      default:\n        return number;\n    }\n  },\n  formatNumber(number) {\n    try {\n      return numeral(this.normalizeNumber(number)).format('0,0.[00]');\n    } catch (e) {\n      return number;\n    }\n  },\n  formatPercentage(percentage) {\n    try {\n      return numeral(this.normalizeNumber(percentage)).format('0.00%');\n    } catch (e) {\n      return percentage;\n    }\n  },\n  formatBytes(number) {\n    numeral.zeroFormat('0B');\n\n    let formattedNumber;\n    try {\n      formattedNumber = numeral(this.normalizeNumber(number)).format('0.0ib');\n    } catch (e) {\n      formattedNumber = number;\n    }\n\n    numeral.zeroFormat(null);\n\n    return formattedNumber;\n  },\n  isNumber(possibleNumber) {\n    return possibleNumber !== '' && !isNaN(possibleNumber);\n  },\n};\n\nexport default NumberUtils;\n","import request from 'superagent-bluebird-promise';\nimport BluebirdPromise from 'bluebird';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nimport Routes from 'routing/Routes';\nimport history from 'util/History';\n\nexport class FetchError extends Error {\n  constructor(message, additional) {\n    super(message);\n    this.message = message || (additional.message || 'Undefined error.');\n    /* eslint-disable no-console */\n    try {\n      this.responseMessage = additional.body ? additional.body.message : undefined;\n\n      console.error(`There was an error fetching a resource: ${this.message}.`,\n        `Additional information: ${additional.body && additional.body.message ? additional.body.message : 'Not available'}`);\n    } catch (e) {\n      console.error(`There was an error fetching a resource: ${this.message}. No additional information available.`);\n    }\n    /* eslint-enable no-console */\n\n    this.additional = additional;\n    this.status = additional.status; // Shortcut, as this is often used\n  }\n}\n\nexport class Builder {\n  constructor(method, url) {\n    this.request = request(method, url.replace(/([^:])\\/\\//, '$1/'))\n      .set('X-Requested-With', 'XMLHttpRequest')\n      .set('X-Requested-By', 'XMLHttpRequest');\n  }\n\n  authenticated() {\n    const SessionStore = StoreProvider.getStore('Session');\n    const token = SessionStore.getSessionId();\n\n    return this.session(token);\n  }\n\n  session(sessionId) {\n    this.request = this.request.auth(sessionId, 'session');\n\n    return this;\n  }\n\n  setHeader(header, value) {\n    this.request = this.request.set(header, value);\n\n    return this;\n  }\n\n  json(body) {\n    this.request = this.request\n      .send(body)\n      .type('json')\n      .accept('json')\n      .then((resp) => {\n        if (resp.ok) {\n          const ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n          ServerAvailabilityActions.reportSuccess();\n          return resp.body;\n        }\n\n        throw new FetchError(resp.statusText, resp);\n      }, (error) => {\n        const SessionStore = StoreProvider.getStore('Session');\n        if (SessionStore.isLoggedIn() && error.status === 401) {\n          const SessionActions = ActionsProvider.getActions('Session');\n          SessionActions.logout(SessionStore.getSessionId());\n        }\n\n        // Redirect to the start page if a user is logged in but not allowed to access a certain HTTP API.\n        if (SessionStore.isLoggedIn() && error.status === 403) {\n          history.replace(Routes.NOTFOUND);\n        }\n\n        if (error.originalError && !error.originalError.status) {\n          const ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n          ServerAvailabilityActions.reportError(error);\n        }\n\n        throw new FetchError(error.statusText, error);\n      });\n\n    return this;\n  }\n\n  plaintext(body) {\n    this.request = this.request\n      .send(body)\n      .type('text/plain')\n      .accept('json')\n      .then((resp) => {\n        if (resp.ok) {\n          const ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n          ServerAvailabilityActions.reportSuccess();\n          return resp.body;\n        }\n\n        throw new FetchError(resp.statusText, resp);\n      }, (error) => {\n        const SessionStore = StoreProvider.getStore('Session');\n        if (SessionStore.isLoggedIn() && error.status === 401) {\n          const SessionActions = ActionsProvider.getActions('Session');\n          SessionActions.logout(SessionStore.getSessionId());\n        }\n\n        // Redirect to the start page if a user is logged in but not allowed to access a certain HTTP API.\n        if (SessionStore.isLoggedIn() && error.status === 403) {\n          history.replace(Routes.STARTPAGE);\n        }\n\n        if (error.originalError && !error.originalError.status) {\n          const ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n          ServerAvailabilityActions.reportError(error);\n        }\n\n        throw new FetchError(error.statusText, error);\n      });\n\n    return this;\n  }\n\n  noSessionExtension() {\n    this.request = this.request.set('X-Graylog-No-Session-Extension', 'true');\n\n    return this;\n  }\n\n  build() {\n    return this.request;\n  }\n}\n\nfunction queuePromiseIfNotLoggedin(promise) {\n  const SessionStore = StoreProvider.getStore('Session');\n\n  if (!SessionStore.isLoggedIn()) {\n    return () => new BluebirdPromise((resolve, reject) => {\n      const SessionActions = ActionsProvider.getActions('Session');\n      SessionActions.login.completed.listen(() => {\n        promise().then(resolve, reject);\n      });\n    });\n  }\n\n  return promise;\n}\n\nexport default function fetch(method, url, body) {\n  const promise = () => new Builder(method, url)\n    .authenticated()\n    .json(body)\n    .build();\n\n  return queuePromiseIfNotLoggedin(promise)();\n}\n\nexport function fetchPlainText(method, url, body) {\n  const promise = () => new Builder(method, url)\n    .authenticated()\n    .plaintext(body)\n    .build();\n\n  return queuePromiseIfNotLoggedin(promise)();\n}\n\nexport function fetchPeriodically(method, url, body) {\n  const promise = () => new Builder(method, url)\n    .authenticated()\n    .noSessionExtension()\n    .json(body)\n    .build();\n\n  return queuePromiseIfNotLoggedin(promise)();\n}\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst IndexerClusterActions = ActionsProvider.getActions('IndexerCluster');\n\nconst IndexerClusterStore = Reflux.createStore({\n  listenables: [IndexerClusterActions],\n  state: {},\n  init() {\n    this.update();\n  },\n  update() {\n    Promise.all([\n      this.health().then((health) => {\n        this.state.health = health;\n      }),\n      this.name().then((response) => {\n        this.state.name = response.name;\n      }),\n    ]).then(() => this.trigger(this.state));\n  },\n  getInitialState() {\n    return this.state;\n  },\n  health() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.health().url);\n    const promise = fetch('GET', url);\n\n    IndexerClusterActions.health.promise(promise);\n\n    return promise;\n  },\n  name() {\n    const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.name().url);\n    const promise = fetch('GET', url);\n\n    IndexerClusterActions.name.promise(promise);\n\n    return promise;\n  },\n});\n\nexport default IndexerClusterStore;\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n  module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n  if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n  for (var key in Emitter.prototype) {\r\n    obj[key] = Emitter.prototype[key];\r\n  }\r\n  return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n    .push(fn);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n  function on() {\r\n    this.off(event, on);\r\n    fn.apply(this, arguments);\r\n  }\r\n\r\n  on.fn = fn;\r\n  this.on(event, on);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  // all\r\n  if (0 == arguments.length) {\r\n    this._callbacks = {};\r\n    return this;\r\n  }\r\n\r\n  // specific event\r\n  var callbacks = this._callbacks['$' + event];\r\n  if (!callbacks) return this;\r\n\r\n  // remove all handlers\r\n  if (1 == arguments.length) {\r\n    delete this._callbacks['$' + event];\r\n    return this;\r\n  }\r\n\r\n  // remove specific handler\r\n  var cb;\r\n  for (var i = 0; i < callbacks.length; i++) {\r\n    cb = callbacks[i];\r\n    if (cb === fn || cb.fn === fn) {\r\n      callbacks.splice(i, 1);\r\n      break;\r\n    }\r\n  }\r\n  return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  var args = [].slice.call(arguments, 1)\r\n    , callbacks = this._callbacks['$' + event];\r\n\r\n  if (callbacks) {\r\n    callbacks = callbacks.slice(0);\r\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n      callbacks[i].apply(this, args);\r\n    }\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n  return !! this.listeners(event).length;\r\n};\r\n","/*!\n * jQuery UI Mouse 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../ie\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nreturn $.widget( \"ui.mouse\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\t( this._mouseStarted && this._mouseUp( event ) );\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\t( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) { return true; }\n} );\n\n} ) );\n","import Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nconst FieldsStore = Reflux.createStore({\n  loadFields() {\n    const { url } = ApiRoutes.SystemApiController.fields();\n    let promise = fetch('GET', URLUtils.qualifyUrl(url));\n    promise = promise.then(data => data.fields);\n    promise.catch((errorThrown) => {\n      UserNotification.error(`Loading field information failed with status: ${errorThrown.additional.message}`,\n        'Could not load field information');\n    });\n    return promise;\n  },\n});\n\nexport default FieldsStore;\n","import Reflux from 'reflux';\n\nconst SidecarsActions = Reflux.createActions({\n  listPaginated: { asyncResult: true },\n  getSidecar: { asyncResult: true },\n  getSidecarActions: { asyncResult: true },\n  restartCollector: { asyncResult: true },\n  assignConfigurations: { asyncResult: true },\n});\n\nexport default SidecarsActions;\n","import jQuery from 'jquery';\nimport {} from 'jquery-ui';\nimport {} from 'jquery-ui/ui/version';\nimport {} from 'jquery-ui/ui/plugin';\nimport {} from 'jquery-ui/ui/widgets/mouse';\nimport {} from 'jquery-ui/ui/widgets/draggable';\nimport {} from 'jquery-ui/ui/widgets/droppable';\nimport moment from 'moment';\nimport numeral from 'numeral';\nimport Rickshaw from 'rickshaw';\nimport Graylog2Time from 'legacy/Rickshaw.Fixtures.Graylog2Time';\nimport Graylog2Selector from 'legacy/Rickshaw.Graph.Graylog2Selector';\n\nimport DateTime from 'logic/datetimes/DateTime';\nimport GraphVisualization from 'components/visualizations/GraphVisualization';\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport UserNotification from 'util/UserNotification';\nimport StringUtils from 'util/StringUtils';\nimport HistogramFormatter from 'logic/graphs/HistogramFormatter';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nconst SearchStore = StoreProvider.getStore('Search');\n\nfunction generateShortId() {\n  return Math.random().toString(36).substr(2, 9);\n}\n\nexport function generateId() {\n  let r = '';\n  for (let i = 0; i < 4; i++) {\n    r += generateShortId();\n  }\n\n  return r;\n}\n\nfunction sendFailureEvent(graphId, errorMessage) {\n  jQuery(document).trigger('failed.graylog.fieldgraph', { graphId: graphId, errorMessage: errorMessage });\n}\n\nfunction sendCreatedGraphEvent(opts) {\n  jQuery(document).trigger('created.graylog.fieldgraph', { graphOptions: opts });\n}\n\nfunction sendUpdatedGraphEvent(opts) {\n  jQuery(document).trigger('updated.graylog.fieldgraph', { graphOptions: opts });\n}\n\nfunction sendMergedGraphsEvent(targetGraphId, draggedGraphId) {\n  jQuery(document).trigger('merged.graylog.fieldgraph', { targetGraphId: targetGraphId, draggedGraphId: draggedGraphId });\n}\n\nexport const FieldChart = {\n  fieldGraphs: {},\n  GRAPH_HEIGHT: 120,\n  palette: new Rickshaw.Color.Palette({ scheme: 'colorwheel' }),\n\n  reload() {\n    this.palette = new Rickshaw.Color.Palette({ scheme: 'colorwheel' });\n  },\n\n  _getDefaultOptions(opts) {\n    const searchParams = SearchStore.getOriginalSearchParams().toJS();\n\n    // Options.\n    if (opts.chartid === undefined) {\n      opts.chartid = generateId();\n    }\n\n    if (opts.interval === undefined) {\n      opts.interval = searchParams.interval || 'minute';\n    }\n\n    if (opts.interpolation === undefined) {\n      opts.interpolation = 'linear';\n    }\n\n    if (opts.renderer === undefined) {\n      opts.renderer = 'bar';\n    }\n\n    if (opts.valuetype === undefined) {\n      opts.valuetype = 'count';\n    }\n\n    if (opts.query === undefined) {\n      opts.query = searchParams.query;\n    }\n\n    if (opts.createdAt === undefined) {\n      opts.createdAt = moment().valueOf();\n    }\n\n    // Always get stream and time range params from the current search request.\n    // Ignore the streamid, rangetype and range params that have been stored in localStorage. (see FieldGraphsStore)\n    opts.streamid = searchParams.streamId;\n    opts.rangetype = searchParams.range_type;\n    opts.range = {};\n\n    switch (opts.rangetype) {\n      case 'relative':\n        opts.range.relative = searchParams.relative;\n        break;\n      case 'absolute':\n        opts.range.from = searchParams.from;\n        opts.range.to = searchParams.to;\n        break;\n      case 'keyword':\n        opts.range.keyword = searchParams.keyword;\n        break;\n      default:\n    }\n\n    return opts;\n  },\n\n  _getTimeRangeParams(opts) {\n    const timerange = {};\n    switch (opts.rangetype) {\n      case 'relative':\n        timerange.range = opts.range.relative;\n        break;\n      case 'absolute':\n        timerange.from = opts.range.from;\n        timerange.to = opts.range.to;\n        break;\n      case 'keyword':\n        timerange.keyword = opts.range.keyword;\n        break;\n      default:\n    }\n\n    return timerange;\n  },\n\n  _onFieldHistogramLoad($graphContainer, $graphElement, $graphYAxis, opts, data) {\n    if (opts.query.trim().length > 0) {\n      jQuery('.field-graph-query', $graphContainer).text(opts.query);\n    } else {\n      jQuery('.field-graph-query', $graphContainer).text('*');\n    }\n\n    const lines = [];\n    lines.push(JSON.stringify(opts));\n    $graphContainer.attr('data-lines', lines);\n\n    this._updateStatisticalFunctionText($graphContainer, opts);\n\n    // Do not add from time when we search in all messages\n    const from = $graphContainer.data('from') !== undefined ? data.from : undefined;\n\n    const graph = new Rickshaw.Graph({\n      element: $graphElement[0],\n      width: $graphElement.width(),\n      height: this.GRAPH_HEIGHT,\n      interpolation: opts.interpolation,\n      renderer: opts.renderer,\n      resolution: data.interval,\n      series: [{\n        name: opts.chartid,\n        data: data.values,\n        color: '#26ADE4',\n        gl2_query: opts.query,\n        valuetype: GraphVisualization.getReadableFieldChartStatisticalFunction(opts.valuetype),\n        field: opts.field,\n      }],\n    });\n\n    new Rickshaw.Graph.Axis.Y({\n      graph: graph,\n      tickFormat: Rickshaw.Fixtures.Number.formatKMBT,\n      orientation: 'left',\n      element: $graphYAxis[0],\n      pixelsPerTick: 30,\n    });\n\n    new Rickshaw.Graph.Axis.Time({\n      graph: graph,\n      ticksTreatment: 'glow',\n      timeFixture: new Rickshaw.Fixtures.Graylog2Time(), // Cares about correct TZ handling.\n    });\n\n    new Rickshaw.Graph.HoverDetail({\n      graph: graph,\n      formatter(series, x, y) {\n        const date = `${new DateTime(x * 1000).toString(DateTime.Formats.COMPLETE)}`;\n        const swatch = ``;\n        const content = `${swatch}[${series.valuetype}] ${series.field}: ${numeral(y).format('0,0.[000]')}
${date}`;\n return content;\n },\n });\n\n new Rickshaw.Graph.Graylog2Selector({\n graph: graph,\n });\n\n if (opts.renderer === 'scatterplot') {\n graph.renderer.dotSize = 2;\n }\n\n if (opts.renderer === 'area') {\n graph.renderer.stroke = true;\n }\n\n graph.render();\n\n this.fieldGraphs[opts.chartid] = graph;\n\n // Make it draggable.\n $graphContainer.draggable({\n handle: '.reposition-handle',\n cursor: 'move',\n scope: '#field-graphs',\n revert: 'invalid', // return to position when not dropped on a droppable.\n opacity: 0.5,\n containment: jQuery('#field-graphs'),\n axis: 'y',\n snap: jQuery('.field-graph-container'),\n snapMode: 'inner',\n });\n\n const that = this;\n\n // ...and droppable.\n $graphContainer.droppable({\n scope: '#field-graphs',\n tolerance: 'intersect',\n activate(event, ui) {\n // Show merge hints on all charts except the dragged one when dragging starts.\n jQuery('#field-graphs .merge-hint').not(jQuery('.merge-hint', ui.draggable)).show();\n },\n deactivate() {\n // Hide all merge hints when dragging stops.\n jQuery('#field-graphs .merge-hint').hide();\n },\n over() {\n jQuery(this).css('background-color', '#C7E2ED');\n jQuery('.merge-hint span', jQuery(this)).switchClass('alpha80', 'merge-drop-ready');\n },\n out() {\n jQuery(this).css('background-color', '#fff');\n jQuery('.merge-hint span', jQuery(this)).switchClass('merge-drop-ready', 'alpha80');\n },\n drop(event, ui) {\n // Merge charts.\n const target = jQuery(this).attr('data-chart-id');\n const dragged = ui.draggable.attr('data-chart-id');\n\n ui.draggable.hide();\n jQuery(this).css('background-color', '#fff');\n\n that._mergeCharts(target, dragged);\n },\n });\n },\n\n _onFieldHistogramFail($graphElement, opts, error) {\n if (error.additional && error.additional.status === 400) {\n sendFailureEvent(opts.chartid, 'Field graphs are only available for numeric fields.');\n } else {\n const alert = jQuery('
').addClass('alert').addClass('alert-warning').text('Field graph could not be loaded, please try again after reloading the page.');\n $graphElement.html(alert);\n const errorMessage = (error.additional ? ` with status ${error.additional.status}` : ` with error: ${error.message}`);\n UserNotification.error(`Loading field graph for '${opts.field}' failed ${errorMessage}`);\n console.error(error);\n }\n },\n\n _chartOptionsFromContainer(cc) {\n try {\n return JSON.parse(cc.attr('data-lines'));\n } catch (e) {\n return this._getDefaultOptions();\n }\n },\n\n _changeGraphConfig(graphContainer, key, value) {\n const options = this._chartOptionsFromContainer(graphContainer);\n options[key] = value;\n\n graphContainer.attr('data-lines', JSON.stringify(options));\n sendUpdatedGraphEvent(options);\n },\n\n _insertSpinner($graphContainer, shouldHideChart) {\n if (shouldHideChart) {\n this._getGraphElement($graphContainer).hide();\n this._getGraphYAxis($graphContainer).hide();\n }\n\n const spinnerElement = jQuery(`
`);\n $graphContainer.append(spinnerElement);\n },\n\n _deleteSpinner($graphContainer, shouldShowChart) {\n jQuery('.spinner', $graphContainer).remove();\n\n if (shouldShowChart) {\n this._getGraphElement($graphContainer).show();\n this._getGraphYAxis($graphContainer).show();\n }\n },\n\n _fetchData(opts, timeRangeParams) {\n const { url } = ApiRoutes.UniversalSearchApiController.fieldHistogram(\n opts.rangetype,\n opts.query || '*',\n opts.field,\n opts.interval,\n timeRangeParams,\n opts.streamid,\n opts.valuetype === 'cardinality',\n );\n\n return fetch('GET', URLUtils.qualifyUrl(url))\n .then((response) => {\n const formattedResponse = {\n time: response.time,\n interval: response.interval,\n from: response.queried_timerange.from,\n to: response.queried_timerange.to,\n };\n\n formattedResponse.values = HistogramFormatter.format(response.results, response.queried_timerange, opts.interval,\n jQuery(window).width(), opts.rangetype === 'relative' && opts.range.relative === 0, opts.valuetype, true);\n\n return formattedResponse;\n });\n },\n\n _getGraphElement($graphContainer) {\n return jQuery('.field-graph', $graphContainer);\n },\n\n _getGraphYAxis($graphContainer) {\n return jQuery('.field-graph-y-axis', $graphContainer);\n },\n\n renderFieldChart(opts, graphContainer, options) {\n const renderingOptions = options || {};\n const $graphContainer = jQuery(graphContainer);\n const $graphElement = this._getGraphElement($graphContainer);\n const $graphYAxis = this._getGraphYAxis($graphContainer);\n\n if (renderingOptions.newGraph) {\n this._insertSpinner($graphContainer);\n }\n\n opts = this._getDefaultOptions(opts);\n const timeRangeParams = this._getTimeRangeParams(opts);\n\n const promise = this._fetchData(opts, timeRangeParams);\n promise\n .then((data) => {\n // Delete a possibly already existing graph to manage updates.\n $graphElement.html('');\n $graphYAxis.html('');\n $graphYAxis.hide();\n\n this._onFieldHistogramLoad($graphContainer, $graphElement, $graphYAxis, opts, data);\n\n if (renderingOptions.newGraph) {\n sendCreatedGraphEvent(opts);\n }\n })\n .catch(error => this._onFieldHistogramFail($graphElement, opts, error))\n .finally(() => {\n $graphYAxis.show();\n if (renderingOptions.newGraph) {\n this._deleteSpinner($graphContainer);\n }\n });\n },\n\n updateFieldChartData(graphId, options, seriesName, $graphContainer) {\n options = this._getDefaultOptions(options);\n const timeRangeParams = this._getTimeRangeParams(options);\n\n this._insertSpinner($graphContainer, true);\n const promise = this._fetchData(options, timeRangeParams);\n promise\n .then(\n (data) => {\n const fieldGraph = this.fieldGraphs[graphId];\n if (fieldGraph) {\n const series = fieldGraph.series.filter(aSeries => aSeries.name === seriesName)[0];\n if (series) {\n series.valuetype = GraphVisualization.getReadableFieldChartStatisticalFunction(options.valuetype);\n series.data = data.values;\n fieldGraph.update();\n }\n }\n },\n (error) => {\n UserNotification.error(`Updating field graph data failed: ${error}`, 'Could not update field graph data');\n },\n )\n .finally(() => {\n this._deleteSpinner($graphContainer, true);\n });\n },\n\n _updateStatisticalFunctionText($graphContainer, graphOptions) {\n jQuery('.type-description', $graphContainer).text(`[${GraphVisualization.getReadableFieldChartStatisticalFunction(graphOptions.valuetype)}] ${graphOptions.field}, `);\n },\n\n renderNewFieldChart(options, graphContainer) {\n this.renderFieldChart(options, graphContainer, { newGraph: true });\n },\n\n changeInterpolation(graphContainer, interpolation) {\n const graphOptions = this._chartOptionsFromContainer(graphContainer);\n this._changeGraphConfig(graphContainer, 'interpolation', interpolation);\n\n const graph = this.fieldGraphs[graphOptions.chartid];\n graph.interpolation = interpolation;\n graph.render();\n },\n\n changeRenderer(graphContainer, renderer) {\n const graphOptions = this._chartOptionsFromContainer(graphContainer);\n this._changeGraphConfig(graphContainer, 'renderer', renderer);\n\n const graph = this.fieldGraphs[graphOptions.chartid];\n graph.setRenderer(renderer);\n\n if (renderer === 'scatterplot') {\n graph.renderer.dotSize = 2;\n }\n\n if (renderer === 'area') {\n graph.renderer.stroke = true;\n }\n\n graph.renderer.unstack = true;\n graph.render();\n },\n\n changeResolution($graphContainer, resolution) {\n const graphOptions = this._chartOptionsFromContainer($graphContainer);\n graphOptions.interval = resolution;\n this._changeGraphConfig($graphContainer, 'interval', resolution);\n this.updateFieldChartData(graphOptions.chartid, graphOptions, graphOptions.chartid, $graphContainer);\n },\n\n changeStatisticalFunction($graphContainer, statisticalFunction) {\n const graphOptions = this._chartOptionsFromContainer($graphContainer);\n graphOptions.valuetype = statisticalFunction;\n this._changeGraphConfig($graphContainer, 'valuetype', statisticalFunction);\n this.updateFieldChartData(graphOptions.chartid, graphOptions, graphOptions.chartid, $graphContainer);\n this._updateStatisticalFunctionText($graphContainer, graphOptions);\n },\n\n _mergeCharts(targetId, draggedId) {\n const targetChart = this.fieldGraphs[targetId];\n const draggedChart = this.fieldGraphs[draggedId];\n\n const targetElem = jQuery(`.field-graph-container[data-chart-id='${targetId}']`);\n\n for (let i = 0; i < draggedChart.series.length; i++) {\n const lineColor = this.palette.color();\n const series = draggedChart.series[i];\n let query = series.gl2_query;\n\n if (query === undefined || query === '') {\n query = '*';\n }\n\n // Add query to query list of chart.\n const queryDescription = `
`\n + `[${StringUtils.escapeHTML(series.valuetype)}] ${series.field}, `\n + `Query: ${StringUtils.escapeHTML(query)}`;\n\n jQuery('ul.field-graph-query-container', targetElem).append(`
  • ${queryDescription}
  • `);\n\n const addSeries = {\n name: series.name,\n color: lineColor,\n gl2_query: query,\n valuetype: series.valuetype,\n field: series.field,\n };\n\n addSeries.data = series.data;\n\n targetChart.series.push(addSeries);\n }\n\n targetChart.renderer.unstack = true;\n\n sendMergedGraphsEvent(targetId, draggedId);\n\n // Reflect all the chart changes we made.\n targetChart.update();\n targetChart.render();\n },\n\n stackGraphs(targetGraphId, sourceGraphId) {\n this._mergeCharts(targetGraphId, sourceGraphId);\n const sourceGraphElement = jQuery(`.field-graph-container[data-chart-id=\"${sourceGraphId}\"]`);\n sourceGraphElement.hide();\n },\n\n redraw(graphId) {\n const graph = this.fieldGraphs[graphId];\n if (graph) {\n const $graphContainer = jQuery(`.field-graph-container[data-chart-id=\"${graphId}\"]`);\n const $graphElement = jQuery('.field-graph', $graphContainer);\n graph.configure({ width: $graphElement.width() });\n graph.render();\n }\n },\n};\n\n// Changing type of value graphs.\njQuery(document).on('click', '.field-graph-container ul.renderer-selector li a', function (e) {\n e.preventDefault();\n\n const graphContainer = jQuery(this).closest('.field-graph-container');\n const type = jQuery(this).attr('data-type');\n FieldChart.changeRenderer(graphContainer, type);\n});\n\n// Changing interpolation of value graphs.\njQuery(document).on('click', '.field-graph-container ul.interpolation-selector li a', function (e) {\n e.preventDefault();\n\n const graphContainer = jQuery(this).closest('.field-graph-container');\n const interpolation = jQuery(this).attr('data-type');\n FieldChart.changeInterpolation(graphContainer, interpolation);\n});\n\n// Changing interval of value graphs.\njQuery(document).on('click', '.field-graph-container ul.interval-selector li a', function (e) {\n e.preventDefault();\n\n const graphContainer = jQuery(this).closest('.field-graph-container');\n const interval = jQuery(this).attr('data-type');\n FieldChart.changeResolution(graphContainer, interval);\n});\n\n// Changing value type of value graphs.\njQuery(document).on('click', '.field-graph-container ul.valuetype-selector li a', function (e) {\n e.preventDefault();\n\n const graphContainer = jQuery(this).closest('.field-graph-container');\n const valuetype = jQuery(this).attr('data-type');\n FieldChart.changeStatisticalFunction(graphContainer, valuetype);\n});\n","/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n\t\"use strict\";\r\n\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\tore = /^0/,\r\n\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t// convert all to strings strip whitespace\r\n\t\tx = i(a).replace(sre, '') || '',\r\n\t\ty = i(b).replace(sre, '') || '',\r\n\t\t// chunk/tokenize\r\n\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t// numeric, hex or date detection\r\n\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\toFxNcL, oFyNcL;\r\n\t// first try and sort Hex codes or Dates\r\n\tif (yD) {\r\n\t\tif ( xD < yD ) { return -1; }\r\n\t\telse if ( xD > yD ) { return 1; }\r\n\t}\r\n\t// natural sorting through split numeric strings and default strings\r\n\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\toFxNcL += '';\r\n\t\t\toFyNcL += '';\r\n\t\t}\r\n\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t}\r\n\treturn 0;\r\n};\r\n","import toastr from 'toastr';\n\nconst UserNotification = {\n error(message, title) {\n toastr.error(message, title || 'Error', {\n debug: false,\n positionClass: 'toast-bottom-full-width',\n onclick: null,\n showDuration: 300,\n hideDuration: 1000,\n timeOut: 10000,\n extendedTimeOut: 1000,\n escapeHtml: true,\n });\n },\n warning(message, title) {\n toastr.warning(message, title || 'Attention', {\n debug: false,\n positionClass: 'toast-bottom-full-width',\n onclick: null,\n showDuration: 300,\n hideDuration: 1000,\n timeOut: 7000,\n extendedTimeOut: 1000,\n escapeHtml: true,\n });\n },\n success(message, title) {\n toastr.success(message, title || 'Information', {\n debug: false,\n positionClass: 'toast-bottom-full-width',\n onclick: null,\n showDuration: 300,\n hideDuration: 1000,\n timeOut: 7000,\n extendedTimeOut: 1000,\n escapeHtml: true,\n });\n },\n};\n\nexport default UserNotification;\n","'use strict';\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nexports.type = function(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.params = function(str){\n return str.split(/ *; */).reduce(function(obj, str){\n var parts = str.split(/ *= */);\n var key = parts.shift();\n var val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.parseLinks = function(str){\n return str.split(/ *, */).reduce(function(obj, str){\n var parts = str.split(/ *; */);\n var url = parts[0].slice(1, -1);\n var rel = parts[1].split(/ *= */)[1].slice(1, -1);\n obj[rel] = url;\n return obj;\n }, {});\n};\n\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\nexports.cleanHeader = function(header, changesOrigin){\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header['host'];\n // secuirty\n if (changesOrigin) {\n delete header['authorization'];\n delete header['cookie'];\n }\n return header;\n};\n","import Reflux from 'reflux';\n\nconst DashboardsActions = Reflux.createActions({\n create: { asyncResult: true },\n delete: { asyncResult: true },\n get: { asyncResult: true },\n list: { asyncResult: true },\n update: { asyncResult: true },\n updatePositions: { asyncResult: true },\n});\n\nexport default DashboardsActions;\n","import Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst InputStaticFieldsStore = Reflux.createStore({\n listenables: [],\n sourceUrl: inputId => `/system/inputs/${inputId}/staticfields`,\n\n create(input, name, value) {\n const url = URLUtils.qualifyUrl(this.sourceUrl(input.id));\n const promise = fetch('POST', url, { key: name, value: value });\n promise\n .then(\n (response) => {\n this.trigger({});\n UserNotification.success(`Static field '${name}' added to '${input.title}' successfully`);\n return response;\n },\n (error) => {\n UserNotification.error(`Adding static field to input failed with: ${error}`,\n `Could not add static field to input '${input.title}'`);\n },\n );\n\n return promise;\n },\n\n destroy(input, name) {\n const url = URLUtils.qualifyUrl(`${this.sourceUrl(input.id)}/${name}`);\n const promise = fetch('DELETE', url);\n promise\n .then(\n (response) => {\n this.trigger({});\n UserNotification.success(`Static field '${name}' removed from '${input.title}' successfully`);\n return response;\n },\n (error) => {\n UserNotification.error(`Removing static field from input failed with: ${error}`,\n `Could not remove static field '${name} from input '${input.title}'`);\n },\n );\n\n return promise;\n },\n});\n\nexport default InputStaticFieldsStore;\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.safeBlur = function( element ) {\n\n\t// Support: IE9 - 10 only\n\t// If the is blurred, IE will switch windows, see #9420\n\tif ( element && element.nodeName.toLowerCase() !== \"body\" ) {\n\t\t$( element ).trigger( \"blur\" );\n\t}\n};\n\n} ) );\n","import Reflux from 'reflux';\n\nconst InputTypesActions = Reflux.createActions({\n list: { asyncResult: true },\n get: { asyncResult: true },\n});\n\nexport default InputTypesActions;\n","(function(exports){\ncrossfilter.version = \"1.3.14\";\nfunction crossfilter_identity(d) {\n return d;\n}\ncrossfilter.permute = permute;\n\nfunction permute(array, index) {\n for (var i = 0, n = index.length, copy = new Array(n); i < n; ++i) {\n copy[i] = array[index[i]];\n }\n return copy;\n}\nvar bisect = crossfilter.bisect = bisect_by(crossfilter_identity);\n\nbisect.by = bisect_by;\n\nfunction bisect_by(f) {\n\n // Locate the insertion point for x in a to maintain sorted order. The\n // arguments lo and hi may be used to specify a subset of the array which\n // should be considered; by default the entire array is used. If x is already\n // present in a, the insertion point will be before (to the left of) any\n // existing entries. The return value is suitable for use as the first\n // argument to `array.splice` assuming that a is already sorted.\n //\n // The returned insertion point i partitions the array a into two halves so\n // that all v < x for v in a[lo:i] for the left side and all v >= x for v in\n // a[i:hi] for the right side.\n function bisectLeft(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (f(a[mid]) < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n // Similar to bisectLeft, but returns an insertion point which comes after (to\n // the right of) any existing entries of x in a.\n //\n // The returned insertion point i partitions the array into two halves so that\n // all v <= x for v in a[lo:i] for the left side and all v > x for v in\n // a[i:hi] for the right side.\n function bisectRight(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (x < f(a[mid])) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n bisectRight.right = bisectRight;\n bisectRight.left = bisectLeft;\n return bisectRight;\n}\nvar heap = crossfilter.heap = heap_by(crossfilter_identity);\n\nheap.by = heap_by;\n\nfunction heap_by(f) {\n\n // Builds a binary heap within the specified array a[lo:hi]. The heap has the\n // property such that the parent a[lo+i] is always less than or equal to its\n // two children: a[lo+2*i+1] and a[lo+2*i+2].\n function heap(a, lo, hi) {\n var n = hi - lo,\n i = (n >>> 1) + 1;\n while (--i > 0) sift(a, i, n, lo);\n return a;\n }\n\n // Sorts the specified array a[lo:hi] in descending order, assuming it is\n // already a heap.\n function sort(a, lo, hi) {\n var n = hi - lo,\n t;\n while (--n > 0) t = a[lo], a[lo] = a[lo + n], a[lo + n] = t, sift(a, 1, n, lo);\n return a;\n }\n\n // Sifts the element a[lo+i-1] down the heap, where the heap is the contiguous\n // slice of array a[lo:lo+n]. This method can also be used to update the heap\n // incrementally, without incurring the full cost of reconstructing the heap.\n function sift(a, i, n, lo) {\n var d = a[--lo + i],\n x = f(d),\n child;\n while ((child = i << 1) <= n) {\n if (child < n && f(a[lo + child]) > f(a[lo + child + 1])) child++;\n if (x <= f(a[lo + child])) break;\n a[lo + i] = a[lo + child];\n i = child;\n }\n a[lo + i] = d;\n }\n\n heap.sort = sort;\n return heap;\n}\nvar heapselect = crossfilter.heapselect = heapselect_by(crossfilter_identity);\n\nheapselect.by = heapselect_by;\n\nfunction heapselect_by(f) {\n var heap = heap_by(f);\n\n // Returns a new array containing the top k elements in the array a[lo:hi].\n // The returned array is not sorted, but maintains the heap property. If k is\n // greater than hi - lo, then fewer than k elements will be returned. The\n // order of elements in a is unchanged by this operation.\n function heapselect(a, lo, hi, k) {\n var queue = new Array(k = Math.min(hi - lo, k)),\n min,\n i,\n x,\n d;\n\n for (i = 0; i < k; ++i) queue[i] = a[lo++];\n heap(queue, 0, k);\n\n if (lo < hi) {\n min = f(queue[0]);\n do {\n if (x = f(d = a[lo]) > min) {\n queue[0] = d;\n min = f(heap(queue, 0, k)[0]);\n }\n } while (++lo < hi);\n }\n\n return queue;\n }\n\n return heapselect;\n}\nvar insertionsort = crossfilter.insertionsort = insertionsort_by(crossfilter_identity);\n\ninsertionsort.by = insertionsort_by;\n\nfunction insertionsort_by(f) {\n\n function insertionsort(a, lo, hi) {\n for (var i = lo + 1; i < hi; ++i) {\n for (var j = i, t = a[i], x = f(t); j > lo && f(a[j - 1]) > x; --j) {\n a[j] = a[j - 1];\n }\n a[j] = t;\n }\n return a;\n }\n\n return insertionsort;\n}\n// Algorithm designed by Vladimir Yaroslavskiy.\n// Implementation based on the Dart project; see lib/dart/LICENSE for details.\n\nvar quicksort = crossfilter.quicksort = quicksort_by(crossfilter_identity);\n\nquicksort.by = quicksort_by;\n\nfunction quicksort_by(f) {\n var insertionsort = insertionsort_by(f);\n\n function sort(a, lo, hi) {\n return (hi - lo < quicksort_sizeThreshold\n ? insertionsort\n : quicksort)(a, lo, hi);\n }\n\n function quicksort(a, lo, hi) {\n // Compute the two pivots by looking at 5 elements.\n var sixth = (hi - lo) / 6 | 0,\n i1 = lo + sixth,\n i5 = hi - 1 - sixth,\n i3 = lo + hi - 1 >> 1, // The midpoint.\n i2 = i3 - sixth,\n i4 = i3 + sixth;\n\n var e1 = a[i1], x1 = f(e1),\n e2 = a[i2], x2 = f(e2),\n e3 = a[i3], x3 = f(e3),\n e4 = a[i4], x4 = f(e4),\n e5 = a[i5], x5 = f(e5);\n\n var t;\n\n // Sort the selected 5 elements using a sorting network.\n if (x1 > x2) t = e1, e1 = e2, e2 = t, t = x1, x1 = x2, x2 = t;\n if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;\n if (x1 > x3) t = e1, e1 = e3, e3 = t, t = x1, x1 = x3, x3 = t;\n if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;\n if (x1 > x4) t = e1, e1 = e4, e4 = t, t = x1, x1 = x4, x4 = t;\n if (x3 > x4) t = e3, e3 = e4, e4 = t, t = x3, x3 = x4, x4 = t;\n if (x2 > x5) t = e2, e2 = e5, e5 = t, t = x2, x2 = x5, x5 = t;\n if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;\n if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;\n\n var pivot1 = e2, pivotValue1 = x2,\n pivot2 = e4, pivotValue2 = x4;\n\n // e2 and e4 have been saved in the pivot variables. They will be written\n // back, once the partitioning is finished.\n a[i1] = e1;\n a[i2] = a[lo];\n a[i3] = e3;\n a[i4] = a[hi - 1];\n a[i5] = e5;\n\n var less = lo + 1, // First element in the middle partition.\n great = hi - 2; // Last element in the middle partition.\n\n // Note that for value comparison, <, <=, >= and > coerce to a primitive via\n // Object.prototype.valueOf; == and === do not, so in order to be consistent\n // with natural order (such as for Date objects), we must do two compares.\n var pivotsEqual = pivotValue1 <= pivotValue2 && pivotValue1 >= pivotValue2;\n if (pivotsEqual) {\n\n // Degenerated case where the partitioning becomes a dutch national flag\n // problem.\n //\n // [ | < pivot | == pivot | unpartitioned | > pivot | ]\n // ^ ^ ^ ^ ^\n // left less k great right\n //\n // a[left] and a[right] are undefined and are filled after the\n // partitioning.\n //\n // Invariants:\n // 1) for x in ]left, less[ : x < pivot.\n // 2) for x in [less, k[ : x == pivot.\n // 3) for x in ]great, right[ : x > pivot.\n for (var k = less; k <= great; ++k) {\n var ek = a[k], xk = f(ek);\n if (xk < pivotValue1) {\n if (k !== less) {\n a[k] = a[less];\n a[less] = ek;\n }\n ++less;\n } else if (xk > pivotValue1) {\n\n // Find the first element <= pivot in the range [k - 1, great] and\n // put [:ek:] there. We know that such an element must exist:\n // When k == less, then el3 (which is equal to pivot) lies in the\n // interval. Otherwise a[k - 1] == pivot and the search stops at k-1.\n // Note that in the latter case invariant 2 will be violated for a\n // short amount of time. The invariant will be restored when the\n // pivots are put into their final positions.\n while (true) {\n var greatValue = f(a[great]);\n if (greatValue > pivotValue1) {\n great--;\n // This is the only location in the while-loop where a new\n // iteration is started.\n continue;\n } else if (greatValue < pivotValue1) {\n // Triple exchange.\n a[k] = a[less];\n a[less++] = a[great];\n a[great--] = ek;\n break;\n } else {\n a[k] = a[great];\n a[great--] = ek;\n // Note: if great < k then we will exit the outer loop and fix\n // invariant 2 (which we just violated).\n break;\n }\n }\n }\n }\n } else {\n\n // We partition the list into three parts:\n // 1. < pivot1\n // 2. >= pivot1 && <= pivot2\n // 3. > pivot2\n //\n // During the loop we have:\n // [ | < pivot1 | >= pivot1 && <= pivot2 | unpartitioned | > pivot2 | ]\n // ^ ^ ^ ^ ^\n // left less k great right\n //\n // a[left] and a[right] are undefined and are filled after the\n // partitioning.\n //\n // Invariants:\n // 1. for x in ]left, less[ : x < pivot1\n // 2. for x in [less, k[ : pivot1 <= x && x <= pivot2\n // 3. for x in ]great, right[ : x > pivot2\n for (var k = less; k <= great; k++) {\n var ek = a[k], xk = f(ek);\n if (xk < pivotValue1) {\n if (k !== less) {\n a[k] = a[less];\n a[less] = ek;\n }\n ++less;\n } else {\n if (xk > pivotValue2) {\n while (true) {\n var greatValue = f(a[great]);\n if (greatValue > pivotValue2) {\n great--;\n if (great < k) break;\n // This is the only location inside the loop where a new\n // iteration is started.\n continue;\n } else {\n // a[great] <= pivot2.\n if (greatValue < pivotValue1) {\n // Triple exchange.\n a[k] = a[less];\n a[less++] = a[great];\n a[great--] = ek;\n } else {\n // a[great] >= pivot1.\n a[k] = a[great];\n a[great--] = ek;\n }\n break;\n }\n }\n }\n }\n }\n }\n\n // Move pivots into their final positions.\n // We shrunk the list from both sides (a[left] and a[right] have\n // meaningless values in them) and now we move elements from the first\n // and third partition into these locations so that we can store the\n // pivots.\n a[lo] = a[less - 1];\n a[less - 1] = pivot1;\n a[hi - 1] = a[great + 1];\n a[great + 1] = pivot2;\n\n // The list is now partitioned into three partitions:\n // [ < pivot1 | >= pivot1 && <= pivot2 | > pivot2 ]\n // ^ ^ ^ ^\n // left less great right\n\n // Recursive descent. (Don't include the pivot values.)\n sort(a, lo, less - 1);\n sort(a, great + 2, hi);\n\n if (pivotsEqual) {\n // All elements in the second partition are equal to the pivot. No\n // need to sort them.\n return a;\n }\n\n // In theory it should be enough to call _doSort recursively on the second\n // partition.\n // The Android source however removes the pivot elements from the recursive\n // call if the second partition is too large (more than 2/3 of the list).\n if (less < i1 && great > i5) {\n var lessValue, greatValue;\n while ((lessValue = f(a[less])) <= pivotValue1 && lessValue >= pivotValue1) ++less;\n while ((greatValue = f(a[great])) <= pivotValue2 && greatValue >= pivotValue2) --great;\n\n // Copy paste of the previous 3-way partitioning with adaptions.\n //\n // We partition the list into three parts:\n // 1. == pivot1\n // 2. > pivot1 && < pivot2\n // 3. == pivot2\n //\n // During the loop we have:\n // [ == pivot1 | > pivot1 && < pivot2 | unpartitioned | == pivot2 ]\n // ^ ^ ^\n // less k great\n //\n // Invariants:\n // 1. for x in [ *, less[ : x == pivot1\n // 2. for x in [less, k[ : pivot1 < x && x < pivot2\n // 3. for x in ]great, * ] : x == pivot2\n for (var k = less; k <= great; k++) {\n var ek = a[k], xk = f(ek);\n if (xk <= pivotValue1 && xk >= pivotValue1) {\n if (k !== less) {\n a[k] = a[less];\n a[less] = ek;\n }\n less++;\n } else {\n if (xk <= pivotValue2 && xk >= pivotValue2) {\n while (true) {\n var greatValue = f(a[great]);\n if (greatValue <= pivotValue2 && greatValue >= pivotValue2) {\n great--;\n if (great < k) break;\n // This is the only location inside the loop where a new\n // iteration is started.\n continue;\n } else {\n // a[great] < pivot2.\n if (greatValue < pivotValue1) {\n // Triple exchange.\n a[k] = a[less];\n a[less++] = a[great];\n a[great--] = ek;\n } else {\n // a[great] == pivot1.\n a[k] = a[great];\n a[great--] = ek;\n }\n break;\n }\n }\n }\n }\n }\n }\n\n // The second partition has now been cleared of pivot elements and looks\n // as follows:\n // [ * | > pivot1 && < pivot2 | * ]\n // ^ ^\n // less great\n // Sort the second partition using recursive descent.\n\n // The second partition looks as follows:\n // [ * | >= pivot1 && <= pivot2 | * ]\n // ^ ^\n // less great\n // Simply sort it by recursive descent.\n\n return sort(a, less, great + 1);\n }\n\n return sort;\n}\n\nvar quicksort_sizeThreshold = 32;\nvar crossfilter_array8 = crossfilter_arrayUntyped,\n crossfilter_array16 = crossfilter_arrayUntyped,\n crossfilter_array32 = crossfilter_arrayUntyped,\n crossfilter_arrayLengthen = crossfilter_arrayLengthenUntyped,\n crossfilter_arrayWiden = crossfilter_arrayWidenUntyped;\n\nif (typeof Uint8Array !== \"undefined\") {\n crossfilter_array8 = function(n) { return new Uint8Array(n); };\n crossfilter_array16 = function(n) { return new Uint16Array(n); };\n crossfilter_array32 = function(n) { return new Uint32Array(n); };\n\n crossfilter_arrayLengthen = function(array, length) {\n if (array.length >= length) return array;\n var copy = new array.constructor(length);\n copy.set(array);\n return copy;\n };\n\n crossfilter_arrayWiden = function(array, width) {\n var copy;\n switch (width) {\n case 16: copy = crossfilter_array16(array.length); break;\n case 32: copy = crossfilter_array32(array.length); break;\n default: throw new Error(\"invalid array width!\");\n }\n copy.set(array);\n return copy;\n };\n}\n\nfunction crossfilter_arrayUntyped(n) {\n var array = new Array(n), i = -1;\n while (++i < n) array[i] = 0;\n return array;\n}\n\nfunction crossfilter_arrayLengthenUntyped(array, length) {\n var n = array.length;\n while (n < length) array[n++] = 0;\n return array;\n}\n\nfunction crossfilter_arrayWidenUntyped(array, width) {\n if (width > 32) throw new Error(\"invalid array width!\");\n return array;\n}\nfunction crossfilter_filterExact(bisect, value) {\n return function(values) {\n var n = values.length;\n return [bisect.left(values, value, 0, n), bisect.right(values, value, 0, n)];\n };\n}\n\nfunction crossfilter_filterRange(bisect, range) {\n var min = range[0],\n max = range[1];\n return function(values) {\n var n = values.length;\n return [bisect.left(values, min, 0, n), bisect.left(values, max, 0, n)];\n };\n}\n\nfunction crossfilter_filterAll(values) {\n return [0, values.length];\n}\nfunction crossfilter_null() {\n return null;\n}\nfunction crossfilter_zero() {\n return 0;\n}\nfunction crossfilter_reduceIncrement(p) {\n return p + 1;\n}\n\nfunction crossfilter_reduceDecrement(p) {\n return p - 1;\n}\n\nfunction crossfilter_reduceAdd(f) {\n return function(p, v) {\n return p + +f(v);\n };\n}\n\nfunction crossfilter_reduceSubtract(f) {\n return function(p, v) {\n return p - f(v);\n };\n}\nexports.crossfilter = crossfilter;\n\nfunction crossfilter() {\n var crossfilter = {\n add: add,\n remove: removeData,\n dimension: dimension,\n groupAll: groupAll,\n size: size\n };\n\n var data = [], // the records\n n = 0, // the number of records; data.length\n m = 0, // a bit mask representing which dimensions are in use\n M = 8, // number of dimensions that can fit in `filters`\n filters = crossfilter_array8(0), // M bits per record; 1 is filtered out\n filterListeners = [], // when the filters change\n dataListeners = [], // when data is added\n removeDataListeners = []; // when data is removed\n\n // Adds the specified new records to this crossfilter.\n function add(newData) {\n var n0 = n,\n n1 = newData.length;\n\n // If there's actually new data to add…\n // Merge the new data into the existing data.\n // Lengthen the filter bitset to handle the new records.\n // Notify listeners (dimensions and groups) that new data is available.\n if (n1) {\n data = data.concat(newData);\n filters = crossfilter_arrayLengthen(filters, n += n1);\n dataListeners.forEach(function(l) { l(newData, n0, n1); });\n }\n\n return crossfilter;\n }\n\n // Removes all records that match the current filters.\n function removeData() {\n var newIndex = crossfilter_index(n, n),\n removed = [];\n for (var i = 0, j = 0; i < n; ++i) {\n if (filters[i]) newIndex[i] = j++;\n else removed.push(i);\n }\n\n // Remove all matching records from groups.\n filterListeners.forEach(function(l) { l(0, [], removed); });\n\n // Update indexes.\n removeDataListeners.forEach(function(l) { l(newIndex); });\n\n // Remove old filters and data by overwriting.\n for (var i = 0, j = 0, k; i < n; ++i) {\n if (k = filters[i]) {\n if (i !== j) filters[j] = k, data[j] = data[i];\n ++j;\n }\n }\n data.length = j;\n while (n > j) filters[--n] = 0;\n }\n\n // Adds a new dimension with the specified value accessor function.\n function dimension(value) {\n var dimension = {\n filter: filter,\n filterExact: filterExact,\n filterRange: filterRange,\n filterFunction: filterFunction,\n filterAll: filterAll,\n top: top,\n bottom: bottom,\n group: group,\n groupAll: groupAll,\n dispose: dispose,\n remove: dispose // for backwards-compatibility\n };\n\n var one = ~m & -~m, // lowest unset bit as mask, e.g., 00001000\n zero = ~one, // inverted one, e.g., 11110111\n values, // sorted, cached array\n index, // value rank ↦ object id\n newValues, // temporary array storing newly-added values\n newIndex, // temporary array storing newly-added index\n sort = quicksort_by(function(i) { return newValues[i]; }),\n refilter = crossfilter_filterAll, // for recomputing filter\n refilterFunction, // the custom filter function in use\n indexListeners = [], // when data is added\n dimensionGroups = [],\n lo0 = 0,\n hi0 = 0;\n\n // Updating a dimension is a two-stage process. First, we must update the\n // associated filters for the newly-added records. Once all dimensions have\n // updated their filters, the groups are notified to update.\n dataListeners.unshift(preAdd);\n dataListeners.push(postAdd);\n\n removeDataListeners.push(removeData);\n\n // Incorporate any existing data into this dimension, and make sure that the\n // filter bitset is wide enough to handle the new dimension.\n m |= one;\n if (M >= 32 ? !one : m & -(1 << M)) {\n filters = crossfilter_arrayWiden(filters, M <<= 1);\n }\n preAdd(data, 0, n);\n postAdd(data, 0, n);\n\n // Incorporates the specified new records into this dimension.\n // This function is responsible for updating filters, values, and index.\n function preAdd(newData, n0, n1) {\n\n // Permute new values into natural order using a sorted index.\n newValues = newData.map(value);\n newIndex = sort(crossfilter_range(n1), 0, n1);\n newValues = permute(newValues, newIndex);\n\n // Bisect newValues to determine which new records are selected.\n var bounds = refilter(newValues), lo1 = bounds[0], hi1 = bounds[1], i;\n if (refilterFunction) {\n for (i = 0; i < n1; ++i) {\n if (!refilterFunction(newValues[i], i)) filters[newIndex[i] + n0] |= one;\n }\n } else {\n for (i = 0; i < lo1; ++i) filters[newIndex[i] + n0] |= one;\n for (i = hi1; i < n1; ++i) filters[newIndex[i] + n0] |= one;\n }\n\n // If this dimension previously had no data, then we don't need to do the\n // more expensive merge operation; use the new values and index as-is.\n if (!n0) {\n values = newValues;\n index = newIndex;\n lo0 = lo1;\n hi0 = hi1;\n return;\n }\n\n var oldValues = values,\n oldIndex = index,\n i0 = 0,\n i1 = 0;\n\n // Otherwise, create new arrays into which to merge new and old.\n values = new Array(n);\n index = crossfilter_index(n, n);\n\n // Merge the old and new sorted values, and old and new index.\n for (i = 0; i0 < n0 && i1 < n1; ++i) {\n if (oldValues[i0] < newValues[i1]) {\n values[i] = oldValues[i0];\n index[i] = oldIndex[i0++];\n } else {\n values[i] = newValues[i1];\n index[i] = newIndex[i1++] + n0;\n }\n }\n\n // Add any remaining old values.\n for (; i0 < n0; ++i0, ++i) {\n values[i] = oldValues[i0];\n index[i] = oldIndex[i0];\n }\n\n // Add any remaining new values.\n for (; i1 < n1; ++i1, ++i) {\n values[i] = newValues[i1];\n index[i] = newIndex[i1] + n0;\n }\n\n // Bisect again to recompute lo0 and hi0.\n bounds = refilter(values), lo0 = bounds[0], hi0 = bounds[1];\n }\n\n // When all filters have updated, notify index listeners of the new values.\n function postAdd(newData, n0, n1) {\n indexListeners.forEach(function(l) { l(newValues, newIndex, n0, n1); });\n newValues = newIndex = null;\n }\n\n function removeData(reIndex) {\n for (var i = 0, j = 0, k; i < n; ++i) {\n if (filters[k = index[i]]) {\n if (i !== j) values[j] = values[i];\n index[j] = reIndex[k];\n ++j;\n }\n }\n values.length = j;\n while (j < n) index[j++] = 0;\n\n // Bisect again to recompute lo0 and hi0.\n var bounds = refilter(values);\n lo0 = bounds[0], hi0 = bounds[1];\n }\n\n // Updates the selected values based on the specified bounds [lo, hi].\n // This implementation is used by all the public filter methods.\n function filterIndexBounds(bounds) {\n var lo1 = bounds[0],\n hi1 = bounds[1];\n\n if (refilterFunction) {\n refilterFunction = null;\n filterIndexFunction(function(d, i) { return lo1 <= i && i < hi1; });\n lo0 = lo1;\n hi0 = hi1;\n return dimension;\n }\n\n var i,\n j,\n k,\n added = [],\n removed = [];\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n filters[k = index[i]] ^= one;\n added.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n filters[k = index[i]] ^= one;\n removed.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n filters[k = index[i]] ^= one;\n added.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n filters[k = index[i]] ^= one;\n removed.push(k);\n }\n }\n\n lo0 = lo1;\n hi0 = hi1;\n filterListeners.forEach(function(l) { l(one, added, removed); });\n return dimension;\n }\n\n // Filters this dimension using the specified range, value, or null.\n // If the range is null, this is equivalent to filterAll.\n // If the range is an array, this is equivalent to filterRange.\n // Otherwise, this is equivalent to filterExact.\n function filter(range) {\n return range == null\n ? filterAll() : Array.isArray(range)\n ? filterRange(range) : typeof range === \"function\"\n ? filterFunction(range)\n : filterExact(range);\n }\n\n // Filters this dimension to select the exact value.\n function filterExact(value) {\n return filterIndexBounds((refilter = crossfilter_filterExact(bisect, value))(values));\n }\n\n // Filters this dimension to select the specified range [lo, hi].\n // The lower bound is inclusive, and the upper bound is exclusive.\n function filterRange(range) {\n return filterIndexBounds((refilter = crossfilter_filterRange(bisect, range))(values));\n }\n\n // Clears any filters on this dimension.\n function filterAll() {\n return filterIndexBounds((refilter = crossfilter_filterAll)(values));\n }\n\n // Filters this dimension using an arbitrary function.\n function filterFunction(f) {\n refilter = crossfilter_filterAll;\n\n filterIndexFunction(refilterFunction = f);\n\n lo0 = 0;\n hi0 = n;\n\n return dimension;\n }\n\n function filterIndexFunction(f) {\n var i,\n k,\n x,\n added = [],\n removed = [];\n\n for (i = 0; i < n; ++i) {\n if (!(filters[k = index[i]] & one) ^ !!(x = f(values[i], i))) {\n if (x) filters[k] &= zero, added.push(k);\n else filters[k] |= one, removed.push(k);\n }\n }\n filterListeners.forEach(function(l) { l(one, added, removed); });\n }\n\n // Returns the top K selected records based on this dimension's order.\n // Note: observes this dimension's filter, unlike group and groupAll.\n function top(k) {\n var array = [],\n i = hi0,\n j;\n\n while (--i >= lo0 && k > 0) {\n if (!filters[j = index[i]]) {\n array.push(data[j]);\n --k;\n }\n }\n\n return array;\n }\n\n // Returns the bottom K selected records based on this dimension's order.\n // Note: observes this dimension's filter, unlike group and groupAll.\n function bottom(k) {\n var array = [],\n i = lo0,\n j;\n\n while (i < hi0 && k > 0) {\n if (!filters[j = index[i]]) {\n array.push(data[j]);\n --k;\n }\n i++;\n }\n\n return array;\n }\n\n // Adds a new group to this dimension, using the specified key function.\n function group(key) {\n var group = {\n top: top,\n all: all,\n reduce: reduce,\n reduceCount: reduceCount,\n reduceSum: reduceSum,\n order: order,\n orderNatural: orderNatural,\n size: size,\n dispose: dispose,\n remove: dispose // for backwards-compatibility\n };\n\n // Ensure that this group will be removed when the dimension is removed.\n dimensionGroups.push(group);\n\n var groups, // array of {key, value}\n groupIndex, // object id ↦ group id\n groupWidth = 8,\n groupCapacity = crossfilter_capacity(groupWidth),\n k = 0, // cardinality\n select,\n heap,\n reduceAdd,\n reduceRemove,\n reduceInitial,\n update = crossfilter_null,\n reset = crossfilter_null,\n resetNeeded = true,\n groupAll = key === crossfilter_null;\n\n if (arguments.length < 1) key = crossfilter_identity;\n\n // The group listens to the crossfilter for when any dimension changes, so\n // that it can update the associated reduce values. It must also listen to\n // the parent dimension for when data is added, and compute new keys.\n filterListeners.push(update);\n indexListeners.push(add);\n removeDataListeners.push(removeData);\n\n // Incorporate any existing data into the grouping.\n add(values, index, 0, n);\n\n // Incorporates the specified new values into this group.\n // This function is responsible for updating groups and groupIndex.\n function add(newValues, newIndex, n0, n1) {\n var oldGroups = groups,\n reIndex = crossfilter_index(k, groupCapacity),\n add = reduceAdd,\n initial = reduceInitial,\n k0 = k, // old cardinality\n i0 = 0, // index of old group\n i1 = 0, // index of new record\n j, // object id\n g0, // old group\n x0, // old key\n x1, // new key\n g, // group to add\n x; // key of group to add\n\n // If a reset is needed, we don't need to update the reduce values.\n if (resetNeeded) add = initial = crossfilter_null;\n\n // Reset the new groups (k is a lower bound).\n // Also, make sure that groupIndex exists and is long enough.\n groups = new Array(k), k = 0;\n groupIndex = k0 > 1 ? crossfilter_arrayLengthen(groupIndex, n) : crossfilter_index(n, groupCapacity);\n\n // Get the first old key (x0 of g0), if it exists.\n if (k0) x0 = (g0 = oldGroups[0]).key;\n\n // Find the first new key (x1), skipping NaN keys.\n while (i1 < n1 && !((x1 = key(newValues[i1])) >= x1)) ++i1;\n\n // While new keys remain…\n while (i1 < n1) {\n\n // Determine the lesser of the two current keys; new and old.\n // If there are no old keys remaining, then always add the new key.\n if (g0 && x0 <= x1) {\n g = g0, x = x0;\n\n // Record the new index of the old group.\n reIndex[i0] = k;\n\n // Retrieve the next old key.\n if (g0 = oldGroups[++i0]) x0 = g0.key;\n } else {\n g = {key: x1, value: initial()}, x = x1;\n }\n\n // Add the lesser group.\n groups[k] = g;\n\n // Add any selected records belonging to the added group, while\n // advancing the new key and populating the associated group index.\n while (!(x1 > x)) {\n groupIndex[j = newIndex[i1] + n0] = k;\n if (!(filters[j] & zero)) g.value = add(g.value, data[j]);\n if (++i1 >= n1) break;\n x1 = key(newValues[i1]);\n }\n\n groupIncrement();\n }\n\n // Add any remaining old groups that were greater than all new keys.\n // No incremental reduce is needed; these groups have no new records.\n // Also record the new index of the old group.\n while (i0 < k0) {\n groups[reIndex[i0] = k] = oldGroups[i0++];\n groupIncrement();\n }\n\n // If we added any new groups before any old groups,\n // update the group index of all the old records.\n if (k > i0) for (i0 = 0; i0 < n0; ++i0) {\n groupIndex[i0] = reIndex[groupIndex[i0]];\n }\n\n // Modify the update and reset behavior based on the cardinality.\n // If the cardinality is less than or equal to one, then the groupIndex\n // is not needed. If the cardinality is zero, then there are no records\n // and therefore no groups to update or reset. Note that we also must\n // change the registered listener to point to the new method.\n j = filterListeners.indexOf(update);\n if (k > 1) {\n update = updateMany;\n reset = resetMany;\n } else {\n if (!k && groupAll) {\n k = 1;\n groups = [{key: null, value: initial()}];\n }\n if (k === 1) {\n update = updateOne;\n reset = resetOne;\n } else {\n update = crossfilter_null;\n reset = crossfilter_null;\n }\n groupIndex = null;\n }\n filterListeners[j] = update;\n\n // Count the number of added groups,\n // and widen the group index as needed.\n function groupIncrement() {\n if (++k === groupCapacity) {\n reIndex = crossfilter_arrayWiden(reIndex, groupWidth <<= 1);\n groupIndex = crossfilter_arrayWiden(groupIndex, groupWidth);\n groupCapacity = crossfilter_capacity(groupWidth);\n }\n }\n }\n\n function removeData() {\n if (k > 1) {\n var oldK = k,\n oldGroups = groups,\n seenGroups = crossfilter_index(oldK, oldK);\n\n // Filter out non-matches by copying matching group index entries to\n // the beginning of the array.\n for (var i = 0, j = 0; i < n; ++i) {\n if (filters[i]) {\n seenGroups[groupIndex[j] = groupIndex[i]] = 1;\n ++j;\n }\n }\n\n // Reassemble groups including only those groups that were referred\n // to by matching group index entries. Note the new group index in\n // seenGroups.\n groups = [], k = 0;\n for (i = 0; i < oldK; ++i) {\n if (seenGroups[i]) {\n seenGroups[i] = k++;\n groups.push(oldGroups[i]);\n }\n }\n\n if (k > 1) {\n // Reindex the group index using seenGroups to find the new index.\n for (var i = 0; i < j; ++i) groupIndex[i] = seenGroups[groupIndex[i]];\n } else {\n groupIndex = null;\n }\n filterListeners[filterListeners.indexOf(update)] = k > 1\n ? (reset = resetMany, update = updateMany)\n : k === 1 ? (reset = resetOne, update = updateOne)\n : reset = update = crossfilter_null;\n } else if (k === 1) {\n if (groupAll) return;\n for (var i = 0; i < n; ++i) if (filters[i]) return;\n groups = [], k = 0;\n filterListeners[filterListeners.indexOf(update)] =\n update = reset = crossfilter_null;\n }\n }\n\n // Reduces the specified selected or deselected records.\n // This function is only used when the cardinality is greater than 1.\n function updateMany(filterOne, added, removed) {\n if (filterOne === one || resetNeeded) return;\n\n var i,\n k,\n n,\n g;\n\n // Add the added values.\n for (i = 0, n = added.length; i < n; ++i) {\n if (!(filters[k = added[i]] & zero)) {\n g = groups[groupIndex[k]];\n g.value = reduceAdd(g.value, data[k]);\n }\n }\n\n // Remove the removed values.\n for (i = 0, n = removed.length; i < n; ++i) {\n if ((filters[k = removed[i]] & zero) === filterOne) {\n g = groups[groupIndex[k]];\n g.value = reduceRemove(g.value, data[k]);\n }\n }\n }\n\n // Reduces the specified selected or deselected records.\n // This function is only used when the cardinality is 1.\n function updateOne(filterOne, added, removed) {\n if (filterOne === one || resetNeeded) return;\n\n var i,\n k,\n n,\n g = groups[0];\n\n // Add the added values.\n for (i = 0, n = added.length; i < n; ++i) {\n if (!(filters[k = added[i]] & zero)) {\n g.value = reduceAdd(g.value, data[k]);\n }\n }\n\n // Remove the removed values.\n for (i = 0, n = removed.length; i < n; ++i) {\n if ((filters[k = removed[i]] & zero) === filterOne) {\n g.value = reduceRemove(g.value, data[k]);\n }\n }\n }\n\n // Recomputes the group reduce values from scratch.\n // This function is only used when the cardinality is greater than 1.\n function resetMany() {\n var i,\n g;\n\n // Reset all group values.\n for (i = 0; i < k; ++i) {\n groups[i].value = reduceInitial();\n }\n\n // Add any selected records.\n for (i = 0; i < n; ++i) {\n if (!(filters[i] & zero)) {\n g = groups[groupIndex[i]];\n g.value = reduceAdd(g.value, data[i]);\n }\n }\n }\n\n // Recomputes the group reduce values from scratch.\n // This function is only used when the cardinality is 1.\n function resetOne() {\n var i,\n g = groups[0];\n\n // Reset the singleton group values.\n g.value = reduceInitial();\n\n // Add any selected records.\n for (i = 0; i < n; ++i) {\n if (!(filters[i] & zero)) {\n g.value = reduceAdd(g.value, data[i]);\n }\n }\n }\n\n // Returns the array of group values, in the dimension's natural order.\n function all() {\n if (resetNeeded) reset(), resetNeeded = false;\n return groups;\n }\n\n // Returns a new array containing the top K group values, in reduce order.\n function top(k) {\n var top = select(all(), 0, groups.length, k);\n return heap.sort(top, 0, top.length);\n }\n\n // Sets the reduce behavior for this group to use the specified functions.\n // This method lazily recomputes the reduce values, waiting until needed.\n function reduce(add, remove, initial) {\n reduceAdd = add;\n reduceRemove = remove;\n reduceInitial = initial;\n resetNeeded = true;\n return group;\n }\n\n // A convenience method for reducing by count.\n function reduceCount() {\n return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);\n }\n\n // A convenience method for reducing by sum(value).\n function reduceSum(value) {\n return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);\n }\n\n // Sets the reduce order, using the specified accessor.\n function order(value) {\n select = heapselect_by(valueOf);\n heap = heap_by(valueOf);\n function valueOf(d) { return value(d.value); }\n return group;\n }\n\n // A convenience method for natural ordering by reduce value.\n function orderNatural() {\n return order(crossfilter_identity);\n }\n\n // Returns the cardinality of this group, irrespective of any filters.\n function size() {\n return k;\n }\n\n // Removes this group and associated event listeners.\n function dispose() {\n var i = filterListeners.indexOf(update);\n if (i >= 0) filterListeners.splice(i, 1);\n i = indexListeners.indexOf(add);\n if (i >= 0) indexListeners.splice(i, 1);\n i = removeDataListeners.indexOf(removeData);\n if (i >= 0) removeDataListeners.splice(i, 1);\n return group;\n }\n\n return reduceCount().orderNatural();\n }\n\n // A convenience function for generating a singleton group.\n function groupAll() {\n var g = group(crossfilter_null), all = g.all;\n delete g.all;\n delete g.top;\n delete g.order;\n delete g.orderNatural;\n delete g.size;\n g.value = function() { return all()[0].value; };\n return g;\n }\n\n // Removes this dimension and associated groups and event listeners.\n function dispose() {\n dimensionGroups.forEach(function(group) { group.dispose(); });\n var i = dataListeners.indexOf(preAdd);\n if (i >= 0) dataListeners.splice(i, 1);\n i = dataListeners.indexOf(postAdd);\n if (i >= 0) dataListeners.splice(i, 1);\n i = removeDataListeners.indexOf(removeData);\n if (i >= 0) removeDataListeners.splice(i, 1);\n m &= zero;\n return filterAll();\n }\n\n return dimension;\n }\n\n // A convenience method for groupAll on a dummy dimension.\n // This implementation can be optimized since it always has cardinality 1.\n function groupAll() {\n var group = {\n reduce: reduce,\n reduceCount: reduceCount,\n reduceSum: reduceSum,\n value: value,\n dispose: dispose,\n remove: dispose // for backwards-compatibility\n };\n\n var reduceValue,\n reduceAdd,\n reduceRemove,\n reduceInitial,\n resetNeeded = true;\n\n // The group listens to the crossfilter for when any dimension changes, so\n // that it can update the reduce value. It must also listen to the parent\n // dimension for when data is added.\n filterListeners.push(update);\n dataListeners.push(add);\n\n // For consistency; actually a no-op since resetNeeded is true.\n add(data, 0, n);\n\n // Incorporates the specified new values into this group.\n function add(newData, n0) {\n var i;\n\n if (resetNeeded) return;\n\n // Add the added values.\n for (i = n0; i < n; ++i) {\n if (!filters[i]) {\n reduceValue = reduceAdd(reduceValue, data[i]);\n }\n }\n }\n\n // Reduces the specified selected or deselected records.\n function update(filterOne, added, removed) {\n var i,\n k,\n n;\n\n if (resetNeeded) return;\n\n // Add the added values.\n for (i = 0, n = added.length; i < n; ++i) {\n if (!filters[k = added[i]]) {\n reduceValue = reduceAdd(reduceValue, data[k]);\n }\n }\n\n // Remove the removed values.\n for (i = 0, n = removed.length; i < n; ++i) {\n if (filters[k = removed[i]] === filterOne) {\n reduceValue = reduceRemove(reduceValue, data[k]);\n }\n }\n }\n\n // Recomputes the group reduce value from scratch.\n function reset() {\n var i;\n\n reduceValue = reduceInitial();\n\n for (i = 0; i < n; ++i) {\n if (!filters[i]) {\n reduceValue = reduceAdd(reduceValue, data[i]);\n }\n }\n }\n\n // Sets the reduce behavior for this group to use the specified functions.\n // This method lazily recomputes the reduce value, waiting until needed.\n function reduce(add, remove, initial) {\n reduceAdd = add;\n reduceRemove = remove;\n reduceInitial = initial;\n resetNeeded = true;\n return group;\n }\n\n // A convenience method for reducing by count.\n function reduceCount() {\n return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);\n }\n\n // A convenience method for reducing by sum(value).\n function reduceSum(value) {\n return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);\n }\n\n // Returns the computed reduce value.\n function value() {\n if (resetNeeded) reset(), resetNeeded = false;\n return reduceValue;\n }\n\n // Removes this group and associated event listeners.\n function dispose() {\n var i = filterListeners.indexOf(update);\n if (i >= 0) filterListeners.splice(i);\n i = dataListeners.indexOf(add);\n if (i >= 0) dataListeners.splice(i);\n return group;\n }\n\n return reduceCount();\n }\n\n // Returns the number of records in this crossfilter, irrespective of any filters.\n function size() {\n return n;\n }\n\n return arguments.length\n ? add(arguments[0])\n : crossfilter;\n}\n\n// Returns an array of size n, big enough to store ids up to m.\nfunction crossfilter_index(n, m) {\n return (m < 0x101\n ? crossfilter_array8 : m < 0x10001\n ? crossfilter_array16\n : crossfilter_array32)(n);\n}\n\n// Constructs a new array of size n, with sequential values from 0 to n - 1.\nfunction crossfilter_range(n) {\n var range = crossfilter_index(n, n);\n for (var i = -1; ++i < n;) range[i] = i;\n return range;\n}\n\nfunction crossfilter_capacity(w) {\n return w === 8\n ? 0x100 : w === 16\n ? 0x10000\n : 0x100000000;\n}\n})(typeof exports !== 'undefined' && exports || this);\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(354);","import moment from 'moment';\n\nconst MomentUtils = {\n startOfResolution(dateTime, resolution) {\n let effectiveResolution = resolution;\n if (resolution === 'week') {\n effectiveResolution = 'isoWeek'; // Weeks should start on Monday :)\n }\n\n return moment(dateTime).startOf(effectiveResolution);\n },\n};\n\nexport default MomentUtils;\n","import Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nimport EntityIndex from 'logic/content-packs/EntityIndex';\n\nconst CatalogActions = ActionsProvider.getActions('Catalog');\n\nconst CatalogStore = Reflux.createStore({\n listenables: [CatalogActions],\n\n showEntityIndex() {\n const url = URLUtils.qualifyUrl(ApiRoutes.CatalogsController.showEntityIndex().url);\n const promise = fetch('GET', url)\n .then((result) => {\n const entityIndex = lodash.groupBy(result.entities.map(e => EntityIndex.fromJSON(e)), 'type.name');\n this.trigger({ entityIndex: entityIndex });\n\n return result;\n });\n\n CatalogActions.showEntityIndex.promise(promise);\n },\n\n getSelectedEntities(requestedEntities) {\n const payload = Object.keys(requestedEntities).reduce((result, key) => {\n return result.concat(requestedEntities[key]\n .filter(entitiy => entitiy instanceof EntityIndex)\n .map(entity => entity.toJSON()));\n }, []);\n const url = URLUtils.qualifyUrl(ApiRoutes.CatalogsController.queryEntities().url);\n const promise = fetch('POST', url, { entities: payload });\n CatalogActions.getSelectedEntities.promise(promise);\n },\n});\n\nexport default CatalogStore;\n","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n global.numeral = factory();\n }\n}(this, function () {\n /************************************\n Variables\n ************************************/\n\n var numeral,\n _,\n VERSION = '2.0.6',\n formats = {},\n locales = {},\n defaults = {\n currentLocale: 'en',\n zeroFormat: null,\n nullFormat: null,\n defaultFormat: '0,0',\n scalePercentBy100: true\n },\n options = {\n currentLocale: defaults.currentLocale,\n zeroFormat: defaults.zeroFormat,\n nullFormat: defaults.nullFormat,\n defaultFormat: defaults.defaultFormat,\n scalePercentBy100: defaults.scalePercentBy100\n };\n\n\n /************************************\n Constructors\n ************************************/\n\n // Numeral prototype object\n function Numeral(input, number) {\n this._input = input;\n\n this._value = number;\n }\n\n numeral = function(input) {\n var value,\n kind,\n unformatFunction,\n regexp;\n\n if (numeral.isNumeral(input)) {\n value = input.value();\n } else if (input === 0 || typeof input === 'undefined') {\n value = 0;\n } else if (input === null || _.isNaN(input)) {\n value = null;\n } else if (typeof input === 'string') {\n if (options.zeroFormat && input === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n for (kind in formats) {\n regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n if (regexp && input.match(regexp)) {\n unformatFunction = formats[kind].unformat;\n\n break;\n }\n }\n\n unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n value = unformatFunction(input);\n }\n } else {\n value = Number(input)|| null;\n }\n\n return new Numeral(input, value);\n };\n\n // version number\n numeral.version = VERSION;\n\n // compare numeral object\n numeral.isNumeral = function(obj) {\n return obj instanceof Numeral;\n };\n\n // helper functions\n numeral._ = _ = {\n // formats numbers separators, decimals places, signs, abbreviations\n numberToFormat: function(value, format, roundingFunction) {\n var locale = locales[numeral.options.currentLocale],\n negP = false,\n optDec = false,\n leadingCount = 0,\n abbr = '',\n trillion = 1000000000000,\n billion = 1000000000,\n million = 1000000,\n thousand = 1000,\n decimal = '',\n neg = false,\n abbrForce, // force abbreviation\n abs,\n min,\n max,\n power,\n int,\n precision,\n signed,\n thousands,\n output;\n\n // make sure we never format a null value\n value = value || 0;\n\n abs = Math.abs(value);\n\n // see if we should use parentheses for negative number or if we should prefix with a sign\n // if both are present we default to parentheses\n if (numeral._.includes(format, '(')) {\n negP = true;\n format = format.replace(/[\\(|\\)]/g, '');\n } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n format = format.replace(/[\\+|\\-]/g, '');\n }\n\n // see if abbreviation is wanted\n if (numeral._.includes(format, 'a')) {\n abbrForce = format.match(/a(k|m|b|t)?/);\n\n abbrForce = abbrForce ? abbrForce[1] : false;\n\n // check for space before abbreviation\n if (numeral._.includes(format, ' a')) {\n abbr = ' ';\n }\n\n format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n if (abs >= trillion && !abbrForce || abbrForce === 't') {\n // trillion\n abbr += locale.abbreviations.trillion;\n value = value / trillion;\n } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n // billion\n abbr += locale.abbreviations.billion;\n value = value / billion;\n } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n // million\n abbr += locale.abbreviations.million;\n value = value / million;\n } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n // thousand\n abbr += locale.abbreviations.thousand;\n value = value / thousand;\n }\n }\n\n // check for optional decimals\n if (numeral._.includes(format, '[.]')) {\n optDec = true;\n format = format.replace('[.]', '.');\n }\n\n // break number and format\n int = value.toString().split('.')[0];\n precision = format.split('.')[1];\n thousands = format.indexOf(',');\n leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n if (precision) {\n if (numeral._.includes(precision, '[')) {\n precision = precision.replace(']', '');\n precision = precision.split('[');\n decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n } else {\n decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n }\n\n int = decimal.split('.')[0];\n\n if (numeral._.includes(decimal, '.')) {\n decimal = locale.delimiters.decimal + decimal.split('.')[1];\n } else {\n decimal = '';\n }\n\n if (optDec && Number(decimal.slice(1)) === 0) {\n decimal = '';\n }\n } else {\n int = numeral._.toFixed(value, 0, roundingFunction);\n }\n\n // check abbreviation again after rounding\n if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n int = String(Number(int) / 1000);\n\n switch (abbr) {\n case locale.abbreviations.thousand:\n abbr = locale.abbreviations.million;\n break;\n case locale.abbreviations.million:\n abbr = locale.abbreviations.billion;\n break;\n case locale.abbreviations.billion:\n abbr = locale.abbreviations.trillion;\n break;\n }\n }\n\n\n // format number\n if (numeral._.includes(int, '-')) {\n int = int.slice(1);\n neg = true;\n }\n\n if (int.length < leadingCount) {\n for (var i = leadingCount - int.length; i > 0; i--) {\n int = '0' + int;\n }\n }\n\n if (thousands > -1) {\n int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n }\n\n if (format.indexOf('.') === 0) {\n int = '';\n }\n\n output = int + decimal + (abbr ? abbr : '');\n\n if (negP) {\n output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n } else {\n if (signed >= 0) {\n output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n } else if (neg) {\n output = '-' + output;\n }\n }\n\n return output;\n },\n // unformats numbers separators, decimals places, signs, abbreviations\n stringToNumber: function(string) {\n var locale = locales[options.currentLocale],\n stringOriginal = string,\n abbreviations = {\n thousand: 3,\n million: 6,\n billion: 9,\n trillion: 12\n },\n abbreviation,\n value,\n i,\n regexp;\n\n if (options.zeroFormat && string === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n value = 1;\n\n if (locale.delimiters.decimal !== '.') {\n string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n }\n\n for (abbreviation in abbreviations) {\n regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n if (stringOriginal.match(regexp)) {\n value *= Math.pow(10, abbreviations[abbreviation]);\n break;\n }\n }\n\n // check for negative number\n value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n // remove non numbers\n string = string.replace(/[^0-9\\.]+/g, '');\n\n value *= Number(string);\n }\n\n return value;\n },\n isNaN: function(value) {\n return typeof value === 'number' && isNaN(value);\n },\n includes: function(string, search) {\n return string.indexOf(search) !== -1;\n },\n insert: function(string, subString, start) {\n return string.slice(0, start) + subString + string.slice(start);\n },\n reduce: function(array, callback /*, initialValue*/) {\n if (this === null) {\n throw new TypeError('Array.prototype.reduce called on null or undefined');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n var t = Object(array),\n len = t.length >>> 0,\n k = 0,\n value;\n\n if (arguments.length === 3) {\n value = arguments[2];\n } else {\n while (k < len && !(k in t)) {\n k++;\n }\n\n if (k >= len) {\n throw new TypeError('Reduce of empty array with no initial value');\n }\n\n value = t[k++];\n }\n for (; k < len; k++) {\n if (k in t) {\n value = callback(value, t[k], k, t);\n }\n }\n return value;\n },\n /**\n * Computes the multiplier necessary to make x >= 1,\n * effectively eliminating miscalculations caused by\n * finite precision.\n */\n multiplier: function (x) {\n var parts = x.toString().split('.');\n\n return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n },\n /**\n * Given a variable number of arguments, returns the maximum\n * multiplier that must be used to normalize an operation involving\n * all of them.\n */\n correctionFactor: function () {\n var args = Array.prototype.slice.call(arguments);\n\n return args.reduce(function(accum, next) {\n var mn = _.multiplier(next);\n return accum > mn ? accum : mn;\n }, 1);\n },\n /**\n * Implementation of toFixed() that treats floats more like decimals\n *\n * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n * problems for accounting- and finance-related software.\n */\n toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n var splitValue = value.toString().split('.'),\n minDecimals = maxDecimals - (optionals || 0),\n boundedPrecision,\n optionalsRegExp,\n power,\n output;\n\n // Use the smallest precision value possible to avoid errors from floating point representation\n if (splitValue.length === 2) {\n boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n } else {\n boundedPrecision = minDecimals;\n }\n\n power = Math.pow(10, boundedPrecision);\n\n // Multiply up by precision, round accurately, then divide and use native toFixed():\n output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n if (optionals > maxDecimals - boundedPrecision) {\n optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n output = output.replace(optionalsRegExp, '');\n }\n\n return output;\n }\n };\n\n // avaliable options\n numeral.options = options;\n\n // avaliable formats\n numeral.formats = formats;\n\n // avaliable formats\n numeral.locales = locales;\n\n // This function sets the current locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n numeral.locale = function(key) {\n if (key) {\n options.currentLocale = key.toLowerCase();\n }\n\n return options.currentLocale;\n };\n\n // This function provides access to the loaded locale data. If\n // no arguments are passed in, it will simply return the current\n // global locale object.\n numeral.localeData = function(key) {\n if (!key) {\n return locales[options.currentLocale];\n }\n\n key = key.toLowerCase();\n\n if (!locales[key]) {\n throw new Error('Unknown locale : ' + key);\n }\n\n return locales[key];\n };\n\n numeral.reset = function() {\n for (var property in defaults) {\n options[property] = defaults[property];\n }\n };\n\n numeral.zeroFormat = function(format) {\n options.zeroFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.nullFormat = function (format) {\n options.nullFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.defaultFormat = function(format) {\n options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n };\n\n numeral.register = function(type, name, format) {\n name = name.toLowerCase();\n\n if (this[type + 's'][name]) {\n throw new TypeError(name + ' ' + type + ' already registered.');\n }\n\n this[type + 's'][name] = format;\n\n return format;\n };\n\n\n numeral.validate = function(val, culture) {\n var _decimalSep,\n _thousandSep,\n _currSymbol,\n _valArray,\n _abbrObj,\n _thousandRegEx,\n localeData,\n temp;\n\n //coerce val to string\n if (typeof val !== 'string') {\n val += '';\n\n if (console.warn) {\n console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n }\n }\n\n //trim whitespaces from either sides\n val = val.trim();\n\n //if val is just digits return true\n if (!!val.match(/^\\d+$/)) {\n return true;\n }\n\n //if val is empty return false\n if (val === '') {\n return false;\n }\n\n //get the decimal and thousands separator from numeral.localeData\n try {\n //check if the culture is understood by numeral. if not, default it to current locale\n localeData = numeral.localeData(culture);\n } catch (e) {\n localeData = numeral.localeData(numeral.locale());\n }\n\n //setup the delimiters and currency symbol based on culture/locale\n _currSymbol = localeData.currency.symbol;\n _abbrObj = localeData.abbreviations;\n _decimalSep = localeData.delimiters.decimal;\n if (localeData.delimiters.thousands === '.') {\n _thousandSep = '\\\\.';\n } else {\n _thousandSep = localeData.delimiters.thousands;\n }\n\n // validating currency symbol\n temp = val.match(/^[^\\d]+/);\n if (temp !== null) {\n val = val.substr(1);\n if (temp[0] !== _currSymbol) {\n return false;\n }\n }\n\n //validating abbreviation symbol\n temp = val.match(/[^\\d]+$/);\n if (temp !== null) {\n val = val.slice(0, -1);\n if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n return false;\n }\n }\n\n _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n if (!val.match(/[^\\d.,]/g)) {\n _valArray = val.split(_decimalSep);\n if (_valArray.length > 2) {\n return false;\n } else {\n if (_valArray.length < 2) {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n } else {\n if (_valArray[0].length === 1) {\n return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n } else {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n }\n }\n }\n }\n\n return false;\n };\n\n\n /************************************\n Numeral Prototype\n ************************************/\n\n numeral.fn = Numeral.prototype = {\n clone: function() {\n return numeral(this);\n },\n format: function(inputString, roundingFunction) {\n var value = this._value,\n format = inputString || options.defaultFormat,\n kind,\n output,\n formatFunction;\n\n // make sure we have a roundingFunction\n roundingFunction = roundingFunction || Math.round;\n\n // format based on value\n if (value === 0 && options.zeroFormat !== null) {\n output = options.zeroFormat;\n } else if (value === null && options.nullFormat !== null) {\n output = options.nullFormat;\n } else {\n for (kind in formats) {\n if (format.match(formats[kind].regexps.format)) {\n formatFunction = formats[kind].format;\n\n break;\n }\n }\n\n formatFunction = formatFunction || numeral._.numberToFormat;\n\n output = formatFunction(value, format, roundingFunction);\n }\n\n return output;\n },\n value: function() {\n return this._value;\n },\n input: function() {\n return this._input;\n },\n set: function(value) {\n this._value = Number(value);\n\n return this;\n },\n add: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum + Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n return this;\n },\n subtract: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum - Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n return this;\n },\n multiply: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback, 1);\n\n return this;\n },\n divide: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback);\n\n return this;\n },\n difference: function(value) {\n return Math.abs(numeral(this._value).subtract(value).value());\n }\n };\n\n /************************************\n Default Locale && Format\n ************************************/\n\n numeral.register('locale', 'en', {\n delimiters: {\n thousands: ',',\n decimal: '.'\n },\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function(number) {\n var b = number % 10;\n return (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n },\n currency: {\n symbol: '$'\n }\n });\n\n \n\n(function() {\n numeral.register('format', 'bps', {\n regexps: {\n format: /(BPS)/,\n unformat: /(BPS)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n output;\n\n value = value * 10000;\n\n // check for space before BPS\n format = format.replace(/\\s?BPS/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + 'BPS');\n\n output = output.join('');\n } else {\n output = output + space + 'BPS';\n }\n\n return output;\n },\n unformat: function(string) {\n return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n }\n });\n})();\n\n\n(function() {\n var decimal = {\n base: 1000,\n suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n },\n binary = {\n base: 1024,\n suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n };\n\n var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n return decimal.suffixes.indexOf(item) < 0;\n }));\n var unformatRegex = allSuffixes.join('|');\n // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n numeral.register('format', 'bytes', {\n regexps: {\n format: /([0\\s]i?b)/,\n unformat: new RegExp(unformatRegex)\n },\n format: function(value, format, roundingFunction) {\n var output,\n bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n power,\n min,\n max;\n\n // check for space before\n format = format.replace(/\\s?i?b/, '');\n\n for (power = 0; power <= bytes.suffixes.length; power++) {\n min = Math.pow(bytes.base, power);\n max = Math.pow(bytes.base, power + 1);\n\n if (value === null || value === 0 || value >= min && value < max) {\n suffix += bytes.suffixes[power];\n\n if (min > 0) {\n value = value / min;\n }\n\n break;\n }\n }\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + suffix;\n },\n unformat: function(string) {\n var value = numeral._.stringToNumber(string),\n power,\n bytesMultiplier;\n\n if (value) {\n for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n if (numeral._.includes(string, decimal.suffixes[power])) {\n bytesMultiplier = Math.pow(decimal.base, power);\n\n break;\n }\n\n if (numeral._.includes(string, binary.suffixes[power])) {\n bytesMultiplier = Math.pow(binary.base, power);\n\n break;\n }\n }\n\n value *= (bytesMultiplier || 1);\n }\n\n return value;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'currency', {\n regexps: {\n format: /(\\$)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n symbols = {\n before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n },\n output,\n symbol,\n i;\n\n // strip format of spaces and $\n format = format.replace(/\\s?\\$\\s?/, '');\n\n // format the number\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n // update the before and after based on value\n if (value >= 0) {\n symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n symbols.before = '-' + symbols.before;\n }\n\n // loop through each before symbol\n for (i = 0; i < symbols.before.length; i++) {\n symbol = symbols.before[i];\n\n switch (symbol) {\n case '$':\n output = numeral._.insert(output, locale.currency.symbol, i);\n break;\n case ' ':\n output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n break;\n }\n }\n\n // loop through each after symbol\n for (i = symbols.after.length - 1; i >= 0; i--) {\n symbol = symbols.after[i];\n\n switch (symbol) {\n case '$':\n output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n break;\n case ' ':\n output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n break;\n }\n }\n\n\n return output;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'exponential', {\n regexps: {\n format: /(e\\+|e-)/,\n unformat: /(e\\+|e-)/\n },\n format: function(value, format, roundingFunction) {\n var output,\n exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n parts = exponential.split('e');\n\n format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n return output + 'e' + parts[1];\n },\n unformat: function(string) {\n var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n value = Number(parts[0]),\n power = Number(parts[1]);\n\n power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n function cback(accum, curr, currI, O) {\n var corrFactor = numeral._.correctionFactor(accum, curr),\n num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n return num;\n }\n\n return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'ordinal', {\n regexps: {\n format: /(o)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n output,\n ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n // check for space before\n format = format.replace(/\\s?o/, '');\n\n ordinal += locale.ordinal(value);\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + ordinal;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'percentage', {\n regexps: {\n format: /(%)/,\n unformat: /(%)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' %') ? ' ' : '',\n output;\n\n if (numeral.options.scalePercentBy100) {\n value = value * 100;\n }\n\n // check for space before %\n format = format.replace(/\\s?\\%/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + '%');\n\n output = output.join('');\n } else {\n output = output + space + '%';\n }\n\n return output;\n },\n unformat: function(string) {\n var number = numeral._.stringToNumber(string);\n if (numeral.options.scalePercentBy100) {\n return number * 0.01;\n }\n return number;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'time', {\n regexps: {\n format: /(:)/,\n unformat: /(:)/\n },\n format: function(value, format, roundingFunction) {\n var hours = Math.floor(value / 60 / 60),\n minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n },\n unformat: function(string) {\n var timeArray = string.split(':'),\n seconds = 0;\n\n // turn hours and minutes into seconds and add them all up\n if (timeArray.length === 3) {\n // hours\n seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n // minutes\n seconds = seconds + (Number(timeArray[1]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[2]);\n } else if (timeArray.length === 2) {\n // minutes\n seconds = seconds + (Number(timeArray[0]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[1]);\n }\n return Number(seconds);\n }\n });\n})();\n\nreturn numeral;\n}));\n","'use strict';\n\n/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = require('./is-object');\n\n/**\n * Expose `RequestBase`.\n */\n\nmodule.exports = RequestBase;\n\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in RequestBase.prototype) {\n obj[key] = RequestBase.prototype[key];\n }\n return obj;\n}\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.clearTimeout = function _clearTimeout(){\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.parse = function parse(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.responseType = function(val){\n this._responseType = val;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.serialize = function serialize(fn){\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.timeout = function timeout(options){\n if (!options || 'object' !== typeof options) {\n this._timeout = options;\n this._responseTimeout = 0;\n return this;\n }\n\n for(var option in options) {\n switch(option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n case 'response':\n this._responseTimeout = options.response;\n break;\n default:\n console.warn(\"Unknown timeout option\", option);\n }\n }\n return this;\n};\n\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.retry = function retry(count, fn){\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n};\n\nvar ERROR_CODES = [\n 'ECONNRESET',\n 'ETIMEDOUT',\n 'EADDRINFO',\n 'ESOCKETTIMEDOUT'\n];\n\n/**\n * Determine if a request should be retried.\n * (Borrowed from segmentio/superagent-retry)\n *\n * @param {Error} err\n * @param {Response} [res]\n * @returns {Boolean}\n */\nRequestBase.prototype._shouldRetry = function(err, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n if (this._retryCallback) {\n try {\n var override = this._retryCallback(err, res);\n if (override === true) return true;\n if (override === false) return false;\n // undefined falls back to defaults\n } catch(e) {\n console.error(e);\n }\n }\n if (res && res.status && res.status >= 500 && res.status != 501) return true;\n if (err) {\n if (err.code && ~ERROR_CODES.indexOf(err.code)) return true;\n // Superagent timeout\n if (err.timeout && err.code == 'ECONNABORTED') return true;\n if (err.crossDomain) return true;\n }\n return false;\n};\n\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\nRequestBase.prototype._retry = function() {\n\n this.clearTimeout();\n\n // node\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n\n return this._end();\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\nRequestBase.prototype.then = function then(resolve, reject) {\n if (!this._fullfilledPromise) {\n var self = this;\n if (this._endCalled) {\n console.warn(\"Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises\");\n }\n this._fullfilledPromise = new Promise(function(innerResolve, innerReject) {\n self.end(function(err, res) {\n if (err) innerReject(err);\n else innerResolve(res);\n });\n });\n }\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function(cb) {\n return this.then(undefined, cb);\n};\n\n/**\n * Allow for extension\n */\n\nRequestBase.prototype.use = function use(fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function(cb) {\n if ('function' !== typeof cb) throw Error(\"Callback required\");\n this._okCallback = cb;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function(res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nRequestBase.prototype.get = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n */\nRequestBase.prototype.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nRequestBase.prototype.field = function(name, val) {\n // name should be either a string or an object.\n if (null === name || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n console.error(\".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject(name)) {\n for (var key in name) {\n this.field(key, name[key]);\n }\n return this;\n }\n\n if (Array.isArray(val)) {\n for (var i in val) {\n this.field(name, val[i]);\n }\n return this;\n }\n\n // val should be defined now\n if (null === val || undefined === val) {\n throw new Error('.field(name, val) val can not be empty');\n }\n if ('boolean' === typeof val) {\n val = '' + val;\n }\n this._getFormData().append(name, val);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\nRequestBase.prototype.abort = function(){\n if (this._aborted) {\n return this;\n }\n this._aborted = true;\n this.xhr && this.xhr.abort(); // browser\n this.req && this.req.abort(); // node\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function(user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', 'Basic ' + base64Encoder(user + ':' + pass));\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', 'Bearer ' + user);\n break;\n }\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequestBase.prototype.withCredentials = function(on) {\n // This is browser-only functionality. Node side is no-op.\n if (on == undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does noting in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.redirects = function(n){\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n\n * @return {Request} for chaining\n */\nRequestBase.prototype.maxResponseSize = function(n){\n if ('number' !== typeof n) {\n throw TypeError(\"Invalid argument\");\n }\n this._maxResponseSize = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nRequestBase.prototype.toJSON = function() {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header,\n };\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.send = function(data){\n var isObj = isObject(data);\n var type = this._header['content-type'];\n\n if (this._formData) {\n console.error(\".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObj && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw Error(\"Can't merge these send calls\");\n }\n\n // merge\n if (isObj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObj || this._isHost(data)) {\n return this;\n }\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.sortQuery = function(sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\nRequestBase.prototype._finalizeQueryString = function(){\n var query = this._query.join('&');\n if (query) {\n this.url += (this.url.indexOf('?') >= 0 ? '&' : '?') + query;\n }\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n var index = this.url.indexOf('?');\n if (index >= 0) {\n var queryArr = this.url.substring(index + 1).split('&');\n if ('function' === typeof this._sort) {\n queryArr.sort(this._sort);\n } else {\n queryArr.sort();\n }\n this.url = this.url.substring(0, index) + '?' + queryArr.join('&');\n }\n }\n};\n\n// For backwards compat only\nRequestBase.prototype._appendQueryString = function() {console.trace(\"Unsupported\");}\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequestBase.prototype._timeoutError = function(reason, timeout, errno){\n if (this._aborted) {\n return;\n }\n var err = new Error(reason + timeout + 'ms exceeded');\n err.timeout = timeout;\n err.code = 'ECONNABORTED';\n err.errno = errno;\n this.timedout = true;\n this.abort();\n this.callback(err);\n};\n\nRequestBase.prototype._setTimeouts = function() {\n var self = this;\n\n // deadline\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n }\n // response timeout\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(function(){\n self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT');\n }, this._responseTimeout);\n }\n};\n","import Reflux from 'reflux';\n\nconst SystemJobsActions = Reflux.createActions({\n list: { asyncResult: true },\n getJob: { asyncResult: true },\n cancelJob: { asyncResult: true },\n});\n\nexport default SystemJobsActions;\n","/*!\n * URI.js - Mutating URLs\n * Second Level Domain (SLD) Support\n *\n * Version: 1.19.1\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals (root is window)\n root.SecondLevelDomains = factory(root);\n }\n}(this, function (root) {\n 'use strict';\n\n // save current SecondLevelDomains variable, if any\n var _SecondLevelDomains = root && root.SecondLevelDomains;\n\n var SLD = {\n // list of known Second Level Domains\n // converted list of SLDs from https://github.com/gavingmiller/second-level-domains\n // ----\n // publicsuffix.org is more current and actually used by a couple of browsers internally.\n // downside is it also contains domains like \"dyndns.org\" - which is fine for the security\n // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js\n // ----\n list: {\n 'ac':' com gov mil net org ',\n 'ae':' ac co gov mil name net org pro sch ',\n 'af':' com edu gov net org ',\n 'al':' com edu gov mil net org ',\n 'ao':' co ed gv it og pb ',\n 'ar':' com edu gob gov int mil net org tur ',\n 'at':' ac co gv or ',\n 'au':' asn com csiro edu gov id net org ',\n 'ba':' co com edu gov mil net org rs unbi unmo unsa untz unze ',\n 'bb':' biz co com edu gov info net org store tv ',\n 'bh':' biz cc com edu gov info net org ',\n 'bn':' com edu gov net org ',\n 'bo':' com edu gob gov int mil net org tv ',\n 'br':' adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ',\n 'bs':' com edu gov net org ',\n 'bz':' du et om ov rg ',\n 'ca':' ab bc mb nb nf nl ns nt nu on pe qc sk yk ',\n 'ck':' biz co edu gen gov info net org ',\n 'cn':' ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ',\n 'co':' com edu gov mil net nom org ',\n 'cr':' ac c co ed fi go or sa ',\n 'cy':' ac biz com ekloges gov ltd name net org parliament press pro tm ',\n 'do':' art com edu gob gov mil net org sld web ',\n 'dz':' art asso com edu gov net org pol ',\n 'ec':' com edu fin gov info med mil net org pro ',\n 'eg':' com edu eun gov mil name net org sci ',\n 'er':' com edu gov ind mil net org rochest w ',\n 'es':' com edu gob nom org ',\n 'et':' biz com edu gov info name net org ',\n 'fj':' ac biz com info mil name net org pro ',\n 'fk':' ac co gov net nom org ',\n 'fr':' asso com f gouv nom prd presse tm ',\n 'gg':' co net org ',\n 'gh':' com edu gov mil org ',\n 'gn':' ac com gov net org ',\n 'gr':' com edu gov mil net org ',\n 'gt':' com edu gob ind mil net org ',\n 'gu':' com edu gov net org ',\n 'hk':' com edu gov idv net org ',\n 'hu':' 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ',\n 'id':' ac co go mil net or sch web ',\n 'il':' ac co gov idf k12 muni net org ',\n 'in':' ac co edu ernet firm gen gov i ind mil net nic org res ',\n 'iq':' com edu gov i mil net org ',\n 'ir':' ac co dnssec gov i id net org sch ',\n 'it':' edu gov ',\n 'je':' co net org ',\n 'jo':' com edu gov mil name net org sch ',\n 'jp':' ac ad co ed go gr lg ne or ',\n 'ke':' ac co go info me mobi ne or sc ',\n 'kh':' com edu gov mil net org per ',\n 'ki':' biz com de edu gov info mob net org tel ',\n 'km':' asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ',\n 'kn':' edu gov net org ',\n 'kr':' ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ',\n 'kw':' com edu gov net org ',\n 'ky':' com edu gov net org ',\n 'kz':' com edu gov mil net org ',\n 'lb':' com edu gov net org ',\n 'lk':' assn com edu gov grp hotel int ltd net ngo org sch soc web ',\n 'lr':' com edu gov net org ',\n 'lv':' asn com conf edu gov id mil net org ',\n 'ly':' com edu gov id med net org plc sch ',\n 'ma':' ac co gov m net org press ',\n 'mc':' asso tm ',\n 'me':' ac co edu gov its net org priv ',\n 'mg':' com edu gov mil nom org prd tm ',\n 'mk':' com edu gov inf name net org pro ',\n 'ml':' com edu gov net org presse ',\n 'mn':' edu gov org ',\n 'mo':' com edu gov net org ',\n 'mt':' com edu gov net org ',\n 'mv':' aero biz com coop edu gov info int mil museum name net org pro ',\n 'mw':' ac co com coop edu gov int museum net org ',\n 'mx':' com edu gob net org ',\n 'my':' com edu gov mil name net org sch ',\n 'nf':' arts com firm info net other per rec store web ',\n 'ng':' biz com edu gov mil mobi name net org sch ',\n 'ni':' ac co com edu gob mil net nom org ',\n 'np':' com edu gov mil net org ',\n 'nr':' biz com edu gov info net org ',\n 'om':' ac biz co com edu gov med mil museum net org pro sch ',\n 'pe':' com edu gob mil net nom org sld ',\n 'ph':' com edu gov i mil net ngo org ',\n 'pk':' biz com edu fam gob gok gon gop gos gov net org web ',\n 'pl':' art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ',\n 'pr':' ac biz com edu est gov info isla name net org pro prof ',\n 'ps':' com edu gov net org plo sec ',\n 'pw':' belau co ed go ne or ',\n 'ro':' arts com firm info nom nt org rec store tm www ',\n 'rs':' ac co edu gov in org ',\n 'sb':' com edu gov net org ',\n 'sc':' com edu gov net org ',\n 'sh':' co com edu gov net nom org ',\n 'sl':' com edu gov net org ',\n 'st':' co com consulado edu embaixada gov mil net org principe saotome store ',\n 'sv':' com edu gob org red ',\n 'sz':' ac co org ',\n 'tr':' av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ',\n 'tt':' aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ',\n 'tw':' club com ebiz edu game gov idv mil net org ',\n 'mu':' ac co com gov net or org ',\n 'mz':' ac co edu gov org ',\n 'na':' co com ',\n 'nz':' ac co cri geek gen govt health iwi maori mil net org parliament school ',\n 'pa':' abo ac com edu gob ing med net nom org sld ',\n 'pt':' com edu gov int net nome org publ ',\n 'py':' com edu gov mil net org ',\n 'qa':' com edu gov mil net org ',\n 're':' asso com nom ',\n 'ru':' ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ',\n 'rw':' ac co com edu gouv gov int mil net ',\n 'sa':' com edu gov med net org pub sch ',\n 'sd':' com edu gov info med net org tv ',\n 'se':' a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ',\n 'sg':' com edu gov idn net org per ',\n 'sn':' art com edu gouv org perso univ ',\n 'sy':' com edu gov mil net news org ',\n 'th':' ac co go in mi net or ',\n 'tj':' ac biz co com edu go gov info int mil name net nic org test web ',\n 'tn':' agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ',\n 'tz':' ac co go ne or ',\n 'ua':' biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ',\n 'ug':' ac co go ne or org sc ',\n 'uk':' ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ',\n 'us':' dni fed isa kids nsn ',\n 'uy':' com edu gub mil net org ',\n 've':' co com edu gob info mil net org web ',\n 'vi':' co com k12 net org ',\n 'vn':' ac biz com edu gov health info int name net org pro ',\n 'ye':' co com gov ltd me net org plc ',\n 'yu':' ac co edu gov org ',\n 'za':' ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ',\n 'zm':' ac co com edu gov net org sch ',\n // https://en.wikipedia.org/wiki/CentralNic#Second-level_domains\n 'com': 'ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ',\n 'net': 'gb jp se uk ',\n 'org': 'ae',\n 'de': 'com '\n },\n // gorhill 2013-10-25: Using indexOf() instead Regexp(). Significant boost\n // in both performance and memory footprint. No initialization required.\n // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4\n // Following methods use lastIndexOf() rather than array.split() in order\n // to avoid any memory allocations.\n has: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') >= 0;\n },\n is: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset >= 0) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(0, tldOffset) + ' ') >= 0;\n },\n get: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return null;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return null;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return null;\n }\n if (sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') < 0) {\n return null;\n }\n return domain.slice(sldOffset+1);\n },\n noConflict: function(){\n if (root.SecondLevelDomains === this) {\n root.SecondLevelDomains = _SecondLevelDomains;\n }\n return this;\n }\n };\n\n return SLD;\n}));\n","import Reflux from 'reflux';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { CodecTypesActions } = CombinedProvider.get('CodecTypes');\n\nconst CodecTypesStore = Reflux.createStore({\n listenables: [CodecTypesActions],\n codecTypes: undefined,\n\n getInitialState() {\n return { codecTypes: this.codecTypes };\n },\n\n list() {\n const promise = fetch('GET', URLUtils.qualifyUrl(ApiRoutes.CodecTypesController.list().url));\n promise.then(\n (response) => {\n this.codecTypes = response;\n this.trigger(this.getInitialState());\n },\n (error) => {\n UserNotification.error(`Fetching codec types failed with status: ${error}`,\n 'Could not retrieve codec types');\n },\n );\n\n CodecTypesActions.list.promise(promise);\n },\n});\n\nexport default CodecTypesStore;\n","import Reflux from 'reflux';\n\nconst CollectorConfigurationsActions = Reflux.createActions({\n all: { asyncResult: true },\n list: { asyncResult: true },\n listUploads: { asyncResult: true },\n getConfiguration: { asyncResult: true },\n getConfigurationSidecars: { asyncResult: true },\n getUploads: { asyncResult: true },\n createConfiguration: { asyncResult: true },\n updateConfiguration: { asyncResult: true },\n renderPreview: { asyncResult: true },\n copyConfiguration: { asyncResult: true },\n delete: { asyncResult: true },\n validate: { asyncResult: true },\n});\n\nexport default CollectorConfigurationsActions;\n","/*!\n * dc 2.0.5\n * http://dc-js.github.io/dc.js/\n * Copyright 2012-2016 Nick Zhu & the dc.js Developers\n * https://github.com/dc-js/dc.js/blob/master/AUTHORS\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n(function() { function _dc(d3, crossfilter) {\n'use strict';\n\n/**\n * The entire dc.js library is scoped under the **dc** name space. It does not introduce\n * anything else into the global name space.\n *\n * Most `dc` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart, although some,\n * such as {@link dc.baseMixin#svg .svg} and {@link dc.coordinateGridMixin#xAxis .xAxis},\n * return values that are themselves chainable d3 objects.\n * @namespace dc\n * @version 2.0.5\n * @example\n * // Example chaining\n * chart.width(300)\n * .height(300)\n * .filter('sunday');\n */\n/*jshint -W079*/\nvar dc = {\n version: '2.0.5',\n constants: {\n CHART_CLASS: 'dc-chart',\n DEBUG_GROUP_CLASS: 'debug',\n STACK_CLASS: 'stack',\n DESELECTED_CLASS: 'deselected',\n SELECTED_CLASS: 'selected',\n NODE_INDEX_NAME: '__index__',\n GROUP_INDEX_NAME: '__group_index__',\n DEFAULT_CHART_GROUP: '__default_chart_group__',\n EVENT_DELAY: 40,\n NEGLIGIBLE_NUMBER: 1e-10\n },\n _renderlet: null\n};\n/*jshint +W079*/\n\n/**\n * The dc.chartRegistry object maintains sets of all instantiated dc.js charts under named groups\n * and the default group.\n *\n * A chart group often corresponds to a crossfilter instance. It specifies\n * the set of charts which should be updated when a filter changes on one of the charts or when the\n * global functions {@link dc.filterAll dc.filterAll}, {@link dc.refocusAll dc.refocusAll},\n * {@link dc.renderAll dc.renderAll}, {@link dc.redrawAll dc.redrawAll}, or chart functions\n * {@link dc.baseMixin#renderGroup baseMixin.renderGroup},\n * {@link dc.baseMixin#redrawGroup baseMixin.redrawGroup} are called.\n *\n * @namespace chartRegistry\n * @memberof dc\n * @type {{has, register, deregister, clear, list}}\n */\ndc.chartRegistry = (function () {\n // chartGroup:string => charts:array\n var _chartMap = {};\n\n function initializeChartGroup (group) {\n if (!group) {\n group = dc.constants.DEFAULT_CHART_GROUP;\n }\n\n if (!_chartMap[group]) {\n _chartMap[group] = [];\n }\n\n return group;\n }\n\n return {\n /**\n * Determine if a given chart instance resides in any group in the registry.\n * @method has\n * @memberof dc.chartRegistry\n * @param {Object} chart dc.js chart instance\n * @returns {Boolean}\n */\n has: function (chart) {\n for (var e in _chartMap) {\n if (_chartMap[e].indexOf(chart) >= 0) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Add given chart instance to the given group, creating the group if necessary.\n * If no group is provided, the default group `dc.constants.DEFAULT_CHART_GROUP` will be used.\n * @method register\n * @memberof dc.chartRegistry\n * @param {Object} chart dc.js chart instance\n * @param {String} [group] Group name\n */\n register: function (chart, group) {\n group = initializeChartGroup(group);\n _chartMap[group].push(chart);\n },\n\n /**\n * Remove given chart instance from the given group, creating the group if necessary.\n * If no group is provided, the default group `dc.constants.DEFAULT_CHART_GROUP` will be used.\n * @method deregister\n * @memberof dc.chartRegistry\n * @param {Object} chart dc.js chart instance\n * @param {String} [group] Group name\n */\n deregister: function (chart, group) {\n group = initializeChartGroup(group);\n for (var i = 0; i < _chartMap[group].length; i++) {\n if (_chartMap[group][i].anchorName() === chart.anchorName()) {\n _chartMap[group].splice(i, 1);\n break;\n }\n }\n },\n\n /**\n * Clear given group if one is provided, otherwise clears all groups.\n * @method clear\n * @memberof dc.chartRegistry\n * @param {String} group Group name\n */\n clear: function (group) {\n if (group) {\n delete _chartMap[group];\n } else {\n _chartMap = {};\n }\n },\n\n /**\n * Get an array of each chart instance in the given group.\n * If no group is provided, the charts in the default group are returned.\n * @method list\n * @memberof dc.chartRegistry\n * @param {String} [group] Group name\n * @returns {Array}\n */\n list: function (group) {\n group = initializeChartGroup(group);\n return _chartMap[group];\n }\n };\n})();\n\n/**\n * Add given chart instance to the given group, creating the group if necessary.\n * If no group is provided, the default group `dc.constants.DEFAULT_CHART_GROUP` will be used.\n * @memberof dc\n * @method registerChart\n * @param {Object} chart dc.js chart instance\n * @param {String} [group] Group name\n */\ndc.registerChart = function (chart, group) {\n dc.chartRegistry.register(chart, group);\n};\n\n/**\n * Remove given chart instance from the given group, creating the group if necessary.\n * If no group is provided, the default group `dc.constants.DEFAULT_CHART_GROUP` will be used.\n * @memberof dc\n * @method deregisterChart\n * @param {Object} chart dc.js chart instance\n * @param {String} [group] Group name\n */\ndc.deregisterChart = function (chart, group) {\n dc.chartRegistry.deregister(chart, group);\n};\n\n/**\n * Determine if a given chart instance resides in any group in the registry.\n * @memberof dc\n * @method hasChart\n * @param {Object} chart dc.js chart instance\n * @returns {Boolean}\n */\ndc.hasChart = function (chart) {\n return dc.chartRegistry.has(chart);\n};\n\n/**\n * Clear given group if one is provided, otherwise clears all groups.\n * @memberof dc\n * @method deregisterAllCharts\n * @param {String} group Group name\n */\ndc.deregisterAllCharts = function (group) {\n dc.chartRegistry.clear(group);\n};\n\n/**\n * Clear all filters on all charts within the given chart group. If the chart group is not given then\n * only charts that belong to the default chart group will be reset.\n * @memberof dc\n * @method filterAll\n * @param {String} [group]\n */\ndc.filterAll = function (group) {\n var charts = dc.chartRegistry.list(group);\n for (var i = 0; i < charts.length; ++i) {\n charts[i].filterAll();\n }\n};\n\n/**\n * Reset zoom level / focus on all charts that belong to the given chart group. If the chart group is\n * not given then only charts that belong to the default chart group will be reset.\n * @memberof dc\n * @method refocusAll\n * @param {String} [group]\n */\ndc.refocusAll = function (group) {\n var charts = dc.chartRegistry.list(group);\n for (var i = 0; i < charts.length; ++i) {\n if (charts[i].focus) {\n charts[i].focus();\n }\n }\n};\n\n/**\n * Re-render all charts belong to the given chart group. If the chart group is not given then only\n * charts that belong to the default chart group will be re-rendered.\n * @memberof dc\n * @method renderAll\n * @param {String} [group]\n */\ndc.renderAll = function (group) {\n var charts = dc.chartRegistry.list(group);\n for (var i = 0; i < charts.length; ++i) {\n charts[i].render();\n }\n\n if (dc._renderlet !== null) {\n dc._renderlet(group);\n }\n};\n\n/**\n * Redraw all charts belong to the given chart group. If the chart group is not given then only charts\n * that belong to the default chart group will be re-drawn. Redraw is different from re-render since\n * when redrawing dc tries to update the graphic incrementally, using transitions, instead of starting\n * from scratch.\n * @memberof dc\n * @method redrawAll\n * @param {String} [group]\n */\ndc.redrawAll = function (group) {\n var charts = dc.chartRegistry.list(group);\n for (var i = 0; i < charts.length; ++i) {\n charts[i].redraw();\n }\n\n if (dc._renderlet !== null) {\n dc._renderlet(group);\n }\n};\n\n/**\n * If this boolean is set truthy, all transitions will be disabled, and changes to the charts will happen\n * immediately.\n * @memberof dc\n * @member disableTransitions\n * @type {Boolean}\n * @default false\n */\ndc.disableTransitions = false;\n\n/**\n * Start a transition on a selection if transitions are globally enabled\n * ({@link dc.disableTransitions} is false) and the duration is greater than zero; otherwise return\n * the selection. Since most operations are the same on a d3 selection and a d3 transition, this\n * allows a common code path for both cases.\n * @memberof dc\n * @method transition\n * @param {d3.selection} selection - the selection to be transitioned\n * @param {Number|Function} [duration=250] - the duration of the transition in milliseconds, a\n * function returning the duration, or 0 for no transition\n * @param {Number|Function} [delay] - the delay of the transition in milliseconds, or a function\n * returning the delay, or 0 for no delay\n * @param {String} [name] - the name of the transition (if concurrent transitions on the same\n * elements are needed)\n * @returns {d3.transition|d3.selection}\n */\ndc.transition = function (selection, duration, delay, name) {\n if (dc.disableTransitions || duration <= 0) {\n return selection;\n }\n\n var s = selection.transition(name);\n\n if (duration >= 0 || duration !== undefined) {\n s = s.duration(duration);\n }\n if (delay >= 0 || delay !== undefined) {\n s = s.delay(delay);\n }\n\n return s;\n};\n\n/* somewhat silly, but to avoid duplicating logic */\ndc.optionalTransition = function (enable, duration, delay, name) {\n if (enable) {\n return function (selection) {\n return dc.transition(selection, duration, delay, name);\n };\n } else {\n return function (selection) {\n return selection;\n };\n }\n};\n\n// See http://stackoverflow.com/a/20773846\ndc.afterTransition = function (transition, callback) {\n if (transition.empty() || !transition.duration) {\n callback.call(transition);\n } else {\n var n = 0;\n transition\n .each(function () { ++n; })\n .each('end', function () {\n if (!--n) {\n callback.call(transition);\n }\n });\n }\n};\n\n/**\n * @namespace units\n * @memberof dc\n * @type {{}}\n */\ndc.units = {};\n\n/**\n * The default value for {@link dc.coordinateGridMixin#xUnits .xUnits} for the\n * {@link dc.coordinateGridMixin Coordinate Grid Chart} and should\n * be used when the x values are a sequence of integers.\n * It is a function that counts the number of integers in the range supplied in its start and end parameters.\n * @method integers\n * @memberof dc.units\n * @see {@link dc.coordinateGridMixin#xUnits coordinateGridMixin.xUnits}\n * @example\n * chart.xUnits(dc.units.integers) // already the default\n * @param {Number} start\n * @param {Number} end\n * @returns {Number}\n */\ndc.units.integers = function (start, end) {\n return Math.abs(end - start);\n};\n\n/**\n * This argument can be passed to the {@link dc.coordinateGridMixin#xUnits .xUnits} function of the to\n * specify ordinal units for the x axis. Usually this parameter is used in combination with passing\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md d3.scale.ordinal} to\n * {@link dc.coordinateGridMixin#x .x}.\n * It just returns the domain passed to it, which for ordinal charts is an array of all values.\n * @method ordinal\n * @memberof dc.units\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md d3.scale.ordinal}\n * @see {@link dc.coordinateGridMixin#xUnits coordinateGridMixin.xUnits}\n * @see {@link dc.coordinateGridMixin#x coordinateGridMixin.x}\n * @example\n * chart.xUnits(dc.units.ordinal)\n * .x(d3.scale.ordinal())\n * @param {*} start\n * @param {*} end\n * @param {Array} domain\n * @returns {Array}\n */\ndc.units.ordinal = function (start, end, domain) {\n return domain;\n};\n\n/**\n * @namespace fp\n * @memberof dc.units\n * @type {{}}\n */\ndc.units.fp = {};\n/**\n * This function generates an argument for the {@link dc.coordinateGridMixin Coordinate Grid Chart}\n * {@link dc.coordinateGridMixin#xUnits .xUnits} function specifying that the x values are floating-point\n * numbers with the given precision.\n * The returned function determines how many values at the given precision will fit into the range\n * supplied in its start and end parameters.\n * @method precision\n * @memberof dc.units.fp\n * @see {@link dc.coordinateGridMixin#xUnits coordinateGridMixin.xUnits}\n * @example\n * // specify values (and ticks) every 0.1 units\n * chart.xUnits(dc.units.fp.precision(0.1)\n * // there are 500 units between 0.5 and 1 if the precision is 0.001\n * var thousandths = dc.units.fp.precision(0.001);\n * thousandths(0.5, 1.0) // returns 500\n * @param {Number} precision\n * @returns {Function} start-end unit function\n */\ndc.units.fp.precision = function (precision) {\n var _f = function (s, e) {\n var d = Math.abs((e - s) / _f.resolution);\n if (dc.utils.isNegligible(d - Math.floor(d))) {\n return Math.floor(d);\n } else {\n return Math.ceil(d);\n }\n };\n _f.resolution = precision;\n return _f;\n};\n\ndc.round = {};\ndc.round.floor = function (n) {\n return Math.floor(n);\n};\ndc.round.ceil = function (n) {\n return Math.ceil(n);\n};\ndc.round.round = function (n) {\n return Math.round(n);\n};\n\ndc.override = function (obj, functionName, newFunction) {\n var existingFunction = obj[functionName];\n obj['_' + functionName] = existingFunction;\n obj[functionName] = newFunction;\n};\n\ndc.renderlet = function (_) {\n if (!arguments.length) {\n return dc._renderlet;\n }\n dc._renderlet = _;\n return dc;\n};\n\ndc.instanceOfChart = function (o) {\n return o instanceof Object && o.__dcFlag__ && true;\n};\n\ndc.errors = {};\n\ndc.errors.Exception = function (msg) {\n var _msg = msg || 'Unexpected internal error';\n\n this.message = _msg;\n\n this.toString = function () {\n return _msg;\n };\n this.stack = (new Error()).stack;\n};\ndc.errors.Exception.prototype = Object.create(Error.prototype);\ndc.errors.Exception.prototype.constructor = dc.errors.Exception;\n\ndc.errors.InvalidStateException = function () {\n dc.errors.Exception.apply(this, arguments);\n};\n\ndc.errors.InvalidStateException.prototype = Object.create(dc.errors.Exception.prototype);\ndc.errors.InvalidStateException.prototype.constructor = dc.errors.InvalidStateException;\n\ndc.errors.BadArgumentException = function () {\n dc.errors.Exception.apply(this, arguments);\n};\n\ndc.errors.BadArgumentException.prototype = Object.create(dc.errors.Exception.prototype);\ndc.errors.BadArgumentException.prototype.constructor = dc.errors.BadArgumentException;\n\n/**\n * The default date format for dc.js\n * @name dateFormat\n * @memberof dc\n * @type {Function}\n * @default d3.time.format('%m/%d/%Y')\n */\ndc.dateFormat = d3.time.format('%m/%d/%Y');\n\n/**\n * @namespace printers\n * @memberof dc\n * @type {{}}\n */\ndc.printers = {};\n\n/**\n * Converts a list of filters into a readable string.\n * @method filters\n * @memberof dc.printers\n * @param {Array} filters\n * @returns {String}\n */\ndc.printers.filters = function (filters) {\n var s = '';\n\n for (var i = 0; i < filters.length; ++i) {\n if (i > 0) {\n s += ', ';\n }\n s += dc.printers.filter(filters[i]);\n }\n\n return s;\n};\n\n/**\n * Converts a filter into a readable string.\n * @method filter\n * @memberof dc.printers\n * @param {dc.filters|any|Array} filter\n * @returns {String}\n */\ndc.printers.filter = function (filter) {\n var s = '';\n\n if (typeof filter !== 'undefined' && filter !== null) {\n if (filter instanceof Array) {\n if (filter.length >= 2) {\n s = '[' + dc.utils.printSingleValue(filter[0]) + ' -> ' + dc.utils.printSingleValue(filter[1]) + ']';\n } else if (filter.length >= 1) {\n s = dc.utils.printSingleValue(filter[0]);\n }\n } else {\n s = dc.utils.printSingleValue(filter);\n }\n }\n\n return s;\n};\n\n/**\n * Returns a function that given a string property name, can be used to pluck the property off an object. A function\n * can be passed as the second argument to also alter the data being returned.\n *\n * This can be a useful shorthand method to create accessor functions.\n * @method pluck\n * @memberof dc\n * @example\n * var xPluck = dc.pluck('x');\n * var objA = {x: 1};\n * xPluck(objA) // 1\n * @example\n * var xPosition = dc.pluck('x', function (x, i) {\n * // `this` is the original datum,\n * // `x` is the x property of the datum,\n * // `i` is the position in the array\n * return this.radius + x;\n * });\n * dc.selectAll('.circle').data(...).x(xPosition);\n * @param {String} n\n * @param {Function} [f]\n * @returns {Function}\n */\ndc.pluck = function (n, f) {\n if (!f) {\n return function (d) { return d[n]; };\n }\n return function (d, i) { return f.call(d, d[n], i); };\n};\n\n/**\n * @namespace utils\n * @memberof dc\n * @type {{}}\n */\ndc.utils = {};\n\n/**\n * Print a single value filter.\n * @method printSingleValue\n * @memberof dc.utils\n * @param {any} filter\n * @returns {String}\n */\ndc.utils.printSingleValue = function (filter) {\n var s = '' + filter;\n\n if (filter instanceof Date) {\n s = dc.dateFormat(filter);\n } else if (typeof(filter) === 'string') {\n s = filter;\n } else if (dc.utils.isFloat(filter)) {\n s = dc.utils.printSingleValue.fformat(filter);\n } else if (dc.utils.isInteger(filter)) {\n s = Math.round(filter);\n }\n\n return s;\n};\ndc.utils.printSingleValue.fformat = d3.format('.2f');\n\n/**\n * Arbitrary add one value to another.\n * @method add\n * @memberof dc.utils\n * @todo\n * These assume than any string r is a percentage (whether or not it includes %).\n * They also generate strange results if l is a string.\n * @param {String|Date|Number} l the value to modify\n * @param {Number} r the amount by which to modify the value\n * @param {String} [t] if `l` is a `Date`, the\n * [interval](https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Intervals.md#interval) in\n * the `d3.time` namespace\n * @returns {String|Date|Number}\n */\ndc.utils.add = function (l, r, t) {\n if (typeof r === 'string') {\n r = r.replace('%', '');\n }\n\n if (l instanceof Date) {\n if (typeof r === 'string') {\n r = +r;\n }\n if (t === 'millis') {\n return new Date(l.getTime() + r);\n }\n t = t || 'day';\n return d3.time[t].offset(l, r);\n } else if (typeof r === 'string') {\n var percentage = (+r / 100);\n return l > 0 ? l * (1 + percentage) : l * (1 - percentage);\n } else {\n return l + r;\n }\n};\n\n/**\n * Arbitrary subtract one value from another.\n * @method subtract\n * @memberof dc.utils\n * @todo\n * These assume than any string r is a percentage (whether or not it includes %).\n * They also generate strange results if l is a string.\n * @param {String|Date|Number} l the value to modify\n * @param {Number} r the amount by which to modify the value\n * @param {String} [t] if `l` is a `Date`, the\n * [interval](https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Intervals.md#interval) in\n * the `d3.time` namespace\n * @returns {String|Date|Number}\n */\ndc.utils.subtract = function (l, r, t) {\n if (typeof r === 'string') {\n r = r.replace('%', '');\n }\n\n if (l instanceof Date) {\n if (typeof r === 'string') {\n r = +r;\n }\n if (t === 'millis') {\n return new Date(l.getTime() - r);\n }\n t = t || 'day';\n return d3.time[t].offset(l, -r);\n } else if (typeof r === 'string') {\n var percentage = (+r / 100);\n return l < 0 ? l * (1 + percentage) : l * (1 - percentage);\n } else {\n return l - r;\n }\n};\n\n/**\n * Is the value a number?\n * @method isNumber\n * @memberof dc.utils\n * @param {any} n\n * @returns {Boolean}\n */\ndc.utils.isNumber = function (n) {\n return n === +n;\n};\n\n/**\n * Is the value a float?\n * @method isFloat\n * @memberof dc.utils\n * @param {any} n\n * @returns {Boolean}\n */\ndc.utils.isFloat = function (n) {\n return n === +n && n !== (n | 0);\n};\n\n/**\n * Is the value an integer?\n * @method isInteger\n * @memberof dc.utils\n * @param {any} n\n * @returns {Boolean}\n */\ndc.utils.isInteger = function (n) {\n return n === +n && n === (n | 0);\n};\n\n/**\n * Is the value very close to zero?\n * @method isNegligible\n * @memberof dc.utils\n * @param {any} n\n * @returns {Boolean}\n */\ndc.utils.isNegligible = function (n) {\n return !dc.utils.isNumber(n) || (n < dc.constants.NEGLIGIBLE_NUMBER && n > -dc.constants.NEGLIGIBLE_NUMBER);\n};\n\n/**\n * Ensure the value is no greater or less than the min/max values. If it is return the boundary value.\n * @method clamp\n * @memberof dc.utils\n * @param {any} val\n * @param {any} min\n * @param {any} max\n * @returns {any}\n */\ndc.utils.clamp = function (val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n/**\n * Using a simple static counter, provide a unique integer id.\n * @method uniqueId\n * @memberof dc.utils\n * @returns {Number}\n */\nvar _idCounter = 0;\ndc.utils.uniqueId = function () {\n return ++_idCounter;\n};\n\n/**\n * Convert a name to an ID.\n * @method nameToId\n * @memberof dc.utils\n * @param {String} name\n * @returns {String}\n */\ndc.utils.nameToId = function (name) {\n return name.toLowerCase().replace(/[\\s]/g, '_').replace(/[\\.']/g, '');\n};\n\n/**\n * Append or select an item on a parent element.\n * @method appendOrSelect\n * @memberof dc.utils\n * @param {d3.selection} parent\n * @param {String} selector\n * @param {String} tag\n * @returns {d3.selection}\n */\ndc.utils.appendOrSelect = function (parent, selector, tag) {\n tag = tag || selector;\n var element = parent.select(selector);\n if (element.empty()) {\n element = parent.append(tag);\n }\n return element;\n};\n\n/**\n * Return the number if the value is a number; else 0.\n * @method safeNumber\n * @memberof dc.utils\n * @param {Number|any} n\n * @returns {Number}\n */\ndc.utils.safeNumber = function (n) { return dc.utils.isNumber(+n) ? +n : 0;};\n\ndc.logger = {};\n\ndc.logger.enableDebugLog = false;\n\ndc.logger.warn = function (msg) {\n if (console) {\n if (console.warn) {\n console.warn(msg);\n } else if (console.log) {\n console.log(msg);\n }\n }\n\n return dc.logger;\n};\n\ndc.logger.debug = function (msg) {\n if (dc.logger.enableDebugLog && console) {\n if (console.debug) {\n console.debug(msg);\n } else if (console.log) {\n console.log(msg);\n }\n }\n\n return dc.logger;\n};\n\ndc.logger.deprecate = function (fn, msg) {\n // Allow logging of deprecation\n var warned = false;\n function deprecated () {\n if (!warned) {\n dc.logger.warn(msg);\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n};\n\ndc.events = {\n current: null\n};\n\n/**\n * This function triggers a throttled event function with a specified delay (in milli-seconds). Events\n * that are triggered repetitively due to user interaction such brush dragging might flood the library\n * and invoke more renders than can be executed in time. Using this function to wrap your event\n * function allows the library to smooth out the rendering by throttling events and only responding to\n * the most recent event.\n * @name events.trigger\n * @memberof dc\n * @example\n * chart.on('renderlet', function(chart) {\n * // smooth the rendering through event throttling\n * dc.events.trigger(function(){\n * // focus some other chart to the range selected by user on this chart\n * someOtherChart.focus(chart.filter());\n * });\n * })\n * @param {Function} closure\n * @param {Number} [delay]\n */\ndc.events.trigger = function (closure, delay) {\n if (!delay) {\n closure();\n return;\n }\n\n dc.events.current = closure;\n\n setTimeout(function () {\n if (closure === dc.events.current) {\n closure();\n }\n }, delay);\n};\n\n/**\n * The dc.js filters are functions which are passed into crossfilter to chose which records will be\n * accumulated to produce values for the charts. In the crossfilter model, any filters applied on one\n * dimension will affect all the other dimensions but not that one. dc always applies a filter\n * function to the dimension; the function combines multiple filters and if any of them accept a\n * record, it is filtered in.\n *\n * These filter constructors are used as appropriate by the various charts to implement brushing. We\n * mention below which chart uses which filter. In some cases, many instances of a filter will be added.\n *\n * Each of the dc.js filters is an object with the following properties:\n * * `isFiltered` - a function that returns true if a value is within the filter\n * * `filterType` - a string identifying the filter, here the name of the constructor\n *\n * Currently these filter objects are also arrays, but this is not a requirement. Custom filters\n * can be used as long as they have the properties above.\n * @namespace filters\n * @memberof dc\n * @type {{}}\n */\ndc.filters = {};\n\n/**\n * RangedFilter is a filter which accepts keys between `low` and `high`. It is used to implement X\n * axis brushing for the {@link dc.coordinateGridMixin coordinate grid charts}.\n *\n * Its `filterType` is 'RangedFilter'\n * @name RangedFilter\n * @memberof dc.filters\n * @param {Number} low\n * @param {Number} high\n * @returns {Array}\n * @constructor\n */\ndc.filters.RangedFilter = function (low, high) {\n var range = new Array(low, high);\n range.isFiltered = function (value) {\n return value >= this[0] && value < this[1];\n };\n range.filterType = 'RangedFilter';\n\n return range;\n};\n\n/**\n * TwoDimensionalFilter is a filter which accepts a single two-dimensional value. It is used by the\n * {@link dc.heatMap heat map chart} to include particular cells as they are clicked. (Rows and columns are\n * filtered by filtering all the cells in the row or column.)\n *\n * Its `filterType` is 'TwoDimensionalFilter'\n * @name TwoDimensionalFilter\n * @memberof dc.filters\n * @param {Array} filter\n * @returns {Array}\n * @constructor\n */\ndc.filters.TwoDimensionalFilter = function (filter) {\n if (filter === null) { return null; }\n\n var f = filter;\n f.isFiltered = function (value) {\n return value.length && value.length === f.length &&\n value[0] === f[0] && value[1] === f[1];\n };\n f.filterType = 'TwoDimensionalFilter';\n\n return f;\n};\n\n/**\n * The RangedTwoDimensionalFilter allows filtering all values which fit within a rectangular\n * region. It is used by the {@link dc.scatterPlot scatter plot} to implement rectangular brushing.\n *\n * It takes two two-dimensional points in the form `[[x1,y1],[x2,y2]]`, and normalizes them so that\n * `x1 <= x2` and `y1 <= y2`. It then returns a filter which accepts any points which are in the\n * rectangular range including the lower values but excluding the higher values.\n *\n * If an array of two values are given to the RangedTwoDimensionalFilter, it interprets the values as\n * two x coordinates `x1` and `x2` and returns a filter which accepts any points for which `x1 <= x <\n * x2`.\n *\n * Its `filterType` is 'RangedTwoDimensionalFilter'\n * @name RangedTwoDimensionalFilter\n * @memberof dc.filters\n * @param {Array>} filter\n * @returns {Array>}\n * @constructor\n */\ndc.filters.RangedTwoDimensionalFilter = function (filter) {\n if (filter === null) { return null; }\n\n var f = filter;\n var fromBottomLeft;\n\n if (f[0] instanceof Array) {\n fromBottomLeft = [\n [Math.min(filter[0][0], filter[1][0]), Math.min(filter[0][1], filter[1][1])],\n [Math.max(filter[0][0], filter[1][0]), Math.max(filter[0][1], filter[1][1])]\n ];\n } else {\n fromBottomLeft = [[filter[0], -Infinity], [filter[1], Infinity]];\n }\n\n f.isFiltered = function (value) {\n var x, y;\n\n if (value instanceof Array) {\n x = value[0];\n y = value[1];\n } else {\n x = value;\n y = fromBottomLeft[0][1];\n }\n\n return x >= fromBottomLeft[0][0] && x < fromBottomLeft[1][0] &&\n y >= fromBottomLeft[0][1] && y < fromBottomLeft[1][1];\n };\n f.filterType = 'RangedTwoDimensionalFilter';\n\n return f;\n};\n\n/**\n * `dc.baseMixin` is an abstract functional object representing a basic `dc` chart object\n * for all chart and widget implementations. Methods from the {@link #dc.baseMixin dc.baseMixin} are inherited\n * and available on all chart implementations in the `dc` library.\n * @name baseMixin\n * @memberof dc\n * @mixin\n * @param {Object} _chart\n * @returns {dc.baseMixin}\n */\ndc.baseMixin = function (_chart) {\n _chart.__dcFlag__ = dc.utils.uniqueId();\n\n var _dimension;\n var _group;\n\n var _anchor;\n var _root;\n var _svg;\n var _isChild;\n\n var _minWidth = 200;\n var _defaultWidthCalc = function (element) {\n var width = element && element.getBoundingClientRect && element.getBoundingClientRect().width;\n return (width && width > _minWidth) ? width : _minWidth;\n };\n var _widthCalc = _defaultWidthCalc;\n\n var _minHeight = 200;\n var _defaultHeightCalc = function (element) {\n var height = element && element.getBoundingClientRect && element.getBoundingClientRect().height;\n return (height && height > _minHeight) ? height : _minHeight;\n };\n var _heightCalc = _defaultHeightCalc;\n var _width, _height;\n\n var _keyAccessor = dc.pluck('key');\n var _valueAccessor = dc.pluck('value');\n var _label = dc.pluck('key');\n\n var _ordering = dc.pluck('key');\n var _orderSort;\n\n var _renderLabel = false;\n\n var _title = function (d) {\n return _chart.keyAccessor()(d) + ': ' + _chart.valueAccessor()(d);\n };\n var _renderTitle = true;\n var _controlsUseVisibility = false;\n\n var _transitionDuration = 750;\n\n var _transitionDelay = 0;\n\n var _filterPrinter = dc.printers.filters;\n\n var _mandatoryAttributes = ['dimension', 'group'];\n\n var _chartGroup = dc.constants.DEFAULT_CHART_GROUP;\n\n var _listeners = d3.dispatch(\n 'preRender',\n 'postRender',\n 'preRedraw',\n 'postRedraw',\n 'filtered',\n 'zoomed',\n 'renderlet',\n 'pretransition');\n\n var _legend;\n var _commitHandler;\n\n var _filters = [];\n var _filterHandler = function (dimension, filters) {\n if (filters.length === 0) {\n dimension.filter(null);\n } else if (filters.length === 1 && !filters[0].isFiltered) {\n // single value and not a function-based filter\n dimension.filterExact(filters[0]);\n } else if (filters.length === 1 && filters[0].filterType === 'RangedFilter') {\n // single range-based filter\n dimension.filterRange(filters[0]);\n } else {\n dimension.filterFunction(function (d) {\n for (var i = 0; i < filters.length; i++) {\n var filter = filters[i];\n if (filter.isFiltered && filter.isFiltered(d)) {\n return true;\n } else if (filter <= d && filter >= d) {\n return true;\n }\n }\n return false;\n });\n }\n return filters;\n };\n\n var _data = function (group) {\n return group.all();\n };\n\n /**\n * Set or get the height attribute of a chart. The height is applied to the SVGElement generated by\n * the chart when rendered (or re-rendered). If a value is given, then it will be used to calculate\n * the new height and the chart returned for method chaining. The value can either be a numeric, a\n * function, or falsy. If no value is specified then the value of the current height attribute will\n * be returned.\n *\n * By default, without an explicit height being given, the chart will select the width of its\n * anchor element. If that isn't possible it defaults to 200 (provided by the\n * {@link dc.baseMixin#minHeight minHeight} property). Setting the value falsy will return\n * the chart to the default behavior.\n * @method height\n * @memberof dc.baseMixin\n * @instance\n * @see {@link dc.baseMixin#minHeight minHeight}\n * @example\n * // Default height\n * chart.height(function (element) {\n * var height = element && element.getBoundingClientRect && element.getBoundingClientRect().height;\n * return (height && height > chart.minHeight()) ? height : chart.minHeight();\n * });\n *\n * chart.height(250); // Set the chart's height to 250px;\n * chart.height(function(anchor) { return doSomethingWith(anchor); }); // set the chart's height with a function\n * chart.height(null); // reset the height to the default auto calculation\n * @param {Number|Function} [height]\n * @returns {Number|dc.baseMixin}\n */\n _chart.height = function (height) {\n if (!arguments.length) {\n if (!dc.utils.isNumber(_height)) {\n // only calculate once\n _height = _heightCalc(_root.node());\n }\n return _height;\n }\n _heightCalc = d3.functor(height || _defaultHeightCalc);\n _height = undefined;\n return _chart;\n };\n\n /**\n * Set or get the width attribute of a chart.\n * @method width\n * @memberof dc.baseMixin\n * @instance\n * @see {@link dc.baseMixin#height height}\n * @see {@link dc.baseMixin#minWidth minWidth}\n * @example\n * // Default width\n * chart.width(function (element) {\n * var width = element && element.getBoundingClientRect && element.getBoundingClientRect().width;\n * return (width && width > chart.minWidth()) ? width : chart.minWidth();\n * });\n * @param {Number|Function} [width]\n * @returns {Number|dc.baseMixin}\n */\n _chart.width = function (width) {\n if (!arguments.length) {\n if (!dc.utils.isNumber(_width)) {\n // only calculate once\n _width = _widthCalc(_root.node());\n }\n return _width;\n }\n _widthCalc = d3.functor(width || _defaultWidthCalc);\n _width = undefined;\n return _chart;\n };\n\n /**\n * Set or get the minimum width attribute of a chart. This only has effect when used with the default\n * {@link dc.baseMixin#width width} function.\n * @method minWidth\n * @memberof dc.baseMixin\n * @instance\n * @see {@link dc.baseMixin#width width}\n * @param {Number} [minWidth=200]\n * @returns {Number|dc.baseMixin}\n */\n _chart.minWidth = function (minWidth) {\n if (!arguments.length) {\n return _minWidth;\n }\n _minWidth = minWidth;\n return _chart;\n };\n\n /**\n * Set or get the minimum height attribute of a chart. This only has effect when used with the default\n * {@link dc.baseMixin#height height} function.\n * @method minHeight\n * @memberof dc.baseMixin\n * @instance\n * @see {@link dc.baseMixin#height height}\n * @param {Number} [minHeight=200]\n * @returns {Number|dc.baseMixin}\n */\n _chart.minHeight = function (minHeight) {\n if (!arguments.length) {\n return _minHeight;\n }\n _minHeight = minHeight;\n return _chart;\n };\n\n /**\n * **mandatory**\n *\n * Set or get the dimension attribute of a chart. In `dc`, a dimension can be any valid\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension crossfilter dimension}\n *\n * If a value is given, then it will be used as the new dimension. If no value is specified then\n * the current dimension will be returned.\n * @method dimension\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension crossfilter.dimension}\n * @example\n * var index = crossfilter([]);\n * var dimension = index.dimension(dc.pluck('key'));\n * chart.dimension(dimension);\n * @param {crossfilter.dimension} [dimension]\n * @returns {crossfilter.dimension|dc.baseMixin}\n */\n _chart.dimension = function (dimension) {\n if (!arguments.length) {\n return _dimension;\n }\n _dimension = dimension;\n _chart.expireCache();\n return _chart;\n };\n\n /**\n * Set the data callback or retrieve the chart's data set. The data callback is passed the chart's\n * group and by default will return\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_all group.all}.\n * This behavior may be modified to, for instance, return only the top 5 groups.\n * @method data\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // Default data function\n * chart.data(function (group) { return group.all(); });\n *\n * chart.data(function (group) { return group.top(5); });\n * @param {Function} [callback]\n * @returns {*|dc.baseMixin}\n */\n _chart.data = function (callback) {\n if (!arguments.length) {\n return _data.call(_chart, _group);\n }\n _data = d3.functor(callback);\n _chart.expireCache();\n return _chart;\n };\n\n /**\n * **mandatory**\n *\n * Set or get the group attribute of a chart. In `dc` a group is a\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group-map-reduce crossfilter group}.\n * Usually the group should be created from the particular dimension associated with the same chart. If a value is\n * given, then it will be used as the new group.\n *\n * If no value specified then the current group will be returned.\n * If `name` is specified then it will be used to generate legend label.\n * @method group\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group-map-reduce crossfilter.group}\n * @example\n * var index = crossfilter([]);\n * var dimension = index.dimension(dc.pluck('key'));\n * chart.dimension(dimension);\n * chart.group(dimension.group(crossfilter.reduceSum()));\n * @param {crossfilter.group} [group]\n * @param {String} [name]\n * @returns {crossfilter.group|dc.baseMixin}\n */\n _chart.group = function (group, name) {\n if (!arguments.length) {\n return _group;\n }\n _group = group;\n _chart._groupName = name;\n _chart.expireCache();\n return _chart;\n };\n\n /**\n * Get or set an accessor to order ordinal dimensions. The chart uses\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#quicksort_by crossfilter.quicksort.by}\n * to sort elements; this accessor returns the value to order on.\n * @method ordering\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#quicksort_by crossfilter.quicksort.by}\n * @example\n * // Default ordering accessor\n * _chart.ordering(dc.pluck('key'));\n * @param {Function} [orderFunction]\n * @returns {Function|dc.baseMixin}\n */\n _chart.ordering = function (orderFunction) {\n if (!arguments.length) {\n return _ordering;\n }\n _ordering = orderFunction;\n _orderSort = crossfilter.quicksort.by(_ordering);\n _chart.expireCache();\n return _chart;\n };\n\n _chart._computeOrderedGroups = function (data) {\n var dataCopy = data.slice(0);\n\n if (dataCopy.length <= 1) {\n return dataCopy;\n }\n\n if (!_orderSort) {\n _orderSort = crossfilter.quicksort.by(_ordering);\n }\n\n return _orderSort(dataCopy, 0, dataCopy.length);\n };\n\n /**\n * Clear all filters associated with this chart. The same effect can be achieved by calling\n * {@link dc.baseMixin#filter chart.filter(null)}.\n * @method filterAll\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.filterAll = function () {\n return _chart.filter(null);\n };\n\n /**\n * Execute d3 single selection in the chart's scope using the given selector and return the d3\n * selection.\n *\n * This function is **not chainable** since it does not return a chart instance; however the d3\n * selection result can be chained to d3 function calls.\n * @method select\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#d3_select d3.select}\n * @example\n * // Has the same effect as d3.select('#chart-id').select(selector)\n * chart.select(selector)\n * @returns {d3.selection}\n */\n _chart.select = function (s) {\n return _root.select(s);\n };\n\n /**\n * Execute in scope d3 selectAll using the given selector and return d3 selection result.\n *\n * This function is **not chainable** since it does not return a chart instance; however the d3\n * selection result can be chained to d3 function calls.\n * @method selectAll\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#d3_selectAll d3.selectAll}\n * @example\n * // Has the same effect as d3.select('#chart-id').selectAll(selector)\n * chart.selectAll(selector)\n * @returns {d3.selection}\n */\n _chart.selectAll = function (s) {\n return _root ? _root.selectAll(s) : null;\n };\n\n /**\n * Set the root SVGElement to either be an existing chart's root; or any valid [d3 single\n * selector](https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. Optionally registers the chart\n * within the chartGroup. This class is called internally on chart initialization, but be called\n * again to relocate the chart. However, it will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc.baseMixin\n * @instance\n * @param {anchorChart|anchorSelector|anchorNode} [parent]\n * @param {String} [chartGroup]\n * @returns {String|node|d3.selection|dc.baseMixin}\n */\n _chart.anchor = function (parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (dc.instanceOfChart(parent)) {\n _anchor = parent.anchor();\n _root = parent.root();\n _isChild = true;\n } else if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _root = d3.select(_anchor);\n _root.classed(dc.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n _isChild = false;\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc.baseMixin\n * @instance\n * @returns {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-chart' + _chart.chartID();\n };\n\n /**\n * Returns the root element where a chart resides. Usually it will be the parent div element where\n * the SVGElement was created. You can also pass in a new root element however this is usually handled by\n * dc internally. Resetting the root element on a chart outside of dc internals may have\n * unexpected consequences.\n * @method root\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement HTMLElement}\n * @param {HTMLElement} [rootElement]\n * @returns {HTMLElement|dc.baseMixin}\n */\n _chart.root = function (rootElement) {\n if (!arguments.length) {\n return _root;\n }\n _root = rootElement;\n return _chart;\n };\n\n /**\n * Returns the top SVGElement for this specific chart. You can also pass in a new SVGElement,\n * however this is usually handled by dc internally. Resetting the SVGElement on a chart outside\n * of dc internals may have unexpected consequences.\n * @method svg\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/SVGElement SVGElement}\n * @param {SVGElement|d3.selection} [svgElement]\n * @returns {SVGElement|d3.selection|dc.baseMixin}\n */\n _chart.svg = function (svgElement) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = svgElement;\n return _chart;\n };\n\n /**\n * Remove the chart's SVGElements from the dom and recreate the container SVGElement.\n * @method resetSvg\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/SVGElement SVGElement}\n * @returns {SVGElement}\n */\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n function sizeSvg () {\n if (_svg) {\n _svg\n .attr('width', _chart.width())\n .attr('height', _chart.height());\n }\n }\n\n function generateSvg () {\n _svg = _chart.root().append('svg');\n sizeSvg();\n return _svg;\n }\n\n /**\n * Set or get the filter printer function. The filter printer function is used to generate human\n * friendly text for filter value(s) associated with the chart instance. The text will get shown\n * in the `.filter element; see {@link dc.baseMixin#turnOnControls turnOnControls}.\n *\n * By default dc charts use a default filter printer {@link dc.printers.filters dc.printers.filters}\n * that provides simple printing support for both single value and ranged filters.\n * @method filterPrinter\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // for a chart with an ordinal brush, print the filters in upper case\n * chart.filterPrinter(function(filters) {\n * return filters.map(function(f) { return f.toUpperCase(); }).join(', ');\n * });\n * // for a chart with a range brush, print the filter as start and extent\n * chart.filterPrinter(function(filters) {\n * return 'start ' + dc.utils.printSingleValue(filters[0][0]) +\n * ' extent ' + dc.utils.printSingleValue(filters[0][1] - filters[0][0]);\n * });\n * @param {Function} [filterPrinterFunction=dc.printers.filters]\n * @returns {Function|dc.baseMixin}\n */\n _chart.filterPrinter = function (filterPrinterFunction) {\n if (!arguments.length) {\n return _filterPrinter;\n }\n _filterPrinter = filterPrinterFunction;\n return _chart;\n };\n\n /**\n * If set, use the `visibility` attribute instead of the `display` attribute for showing/hiding\n * chart reset and filter controls, for less disruption to the layout.\n * @method controlsUseVisibility\n * @memberof dc.baseMixin\n * @instance\n * @param {Boolean} [controlsUseVisibility=false]\n * @returns {Boolean|dc.baseMixin}\n **/\n _chart.controlsUseVisibility = function (_) {\n if (!arguments.length) {\n return _controlsUseVisibility;\n }\n _controlsUseVisibility = _;\n return _chart;\n };\n\n /**\n * Turn on optional control elements within the root element. dc currently supports the\n * following html control elements.\n * * root.selectAll('.reset') - elements are turned on if the chart has an active filter. This type\n * of control element is usually used to store a reset link to allow user to reset filter on a\n * certain chart. This element will be turned off automatically if the filter is cleared.\n * * root.selectAll('.filter') elements are turned on if the chart has an active filter. The text\n * content of this element is then replaced with the current filter value using the filter printer\n * function. This type of element will be turned off automatically if the filter is cleared.\n * @method turnOnControls\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.turnOnControls = function () {\n if (_root) {\n var attribute = _chart.controlsUseVisibility() ? 'visibility' : 'display';\n _chart.selectAll('.reset').style(attribute, null);\n _chart.selectAll('.filter').text(_filterPrinter(_chart.filters())).style(attribute, null);\n }\n return _chart;\n };\n\n /**\n * Turn off optional control elements within the root element.\n * @method turnOffControls\n * @memberof dc.baseMixin\n * @see {@link dc.baseMixin#turnOnControls turnOnControls}\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.turnOffControls = function () {\n if (_root) {\n var attribute = _chart.controlsUseVisibility() ? 'visibility' : 'display';\n var value = _chart.controlsUseVisibility() ? 'hidden' : 'none';\n _chart.selectAll('.reset').style(attribute, value);\n _chart.selectAll('.filter').style(attribute, value).text(_chart.filter());\n }\n return _chart;\n };\n\n /**\n * Set or get the animation transition duration (in milliseconds) for this chart instance.\n * @method transitionDuration\n * @memberof dc.baseMixin\n * @instance\n * @param {Number} [duration=750]\n * @returns {Number|dc.baseMixin}\n */\n _chart.transitionDuration = function (duration) {\n if (!arguments.length) {\n return _transitionDuration;\n }\n _transitionDuration = duration;\n return _chart;\n };\n\n /**\n * Set or get the animation transition delay (in milliseconds) for this chart instance.\n * @method transitionDelay\n * @memberof dc.baseMixin\n * @instance\n * @param {Number} [delay=0]\n * @returns {Number|dc.baseMixin}\n */\n _chart.transitionDelay = function (delay) {\n if (!arguments.length) {\n return _transitionDelay;\n }\n _transitionDelay = delay;\n return _chart;\n };\n\n _chart._mandatoryAttributes = function (_) {\n if (!arguments.length) {\n return _mandatoryAttributes;\n }\n _mandatoryAttributes = _;\n return _chart;\n };\n\n function checkForMandatoryAttributes (a) {\n if (!_chart[a] || !_chart[a]()) {\n throw new dc.errors.InvalidStateException('Mandatory attribute chart.' + a +\n ' is missing on chart[#' + _chart.anchorName() + ']');\n }\n }\n\n /**\n * Invoking this method will force the chart to re-render everything from scratch. Generally it\n * should only be used to render the chart for the first time on the page or if you want to make\n * sure everything is redrawn from scratch instead of relying on the default incremental redrawing\n * behaviour.\n * @method render\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.render = function () {\n _height = _width = undefined; // force recalculate\n _listeners.preRender(_chart);\n\n if (_mandatoryAttributes) {\n _mandatoryAttributes.forEach(checkForMandatoryAttributes);\n }\n\n var result = _chart._doRender();\n\n if (_legend) {\n _legend.render();\n }\n\n _chart._activateRenderlets('postRender');\n\n return result;\n };\n\n _chart._activateRenderlets = function (event) {\n _listeners.pretransition(_chart);\n if (_chart.transitionDuration() > 0 && _svg) {\n _svg.transition().duration(_chart.transitionDuration()).delay(_chart.transitionDelay())\n .each('end', function () {\n _listeners.renderlet(_chart);\n if (event) {\n _listeners[event](_chart);\n }\n });\n } else {\n _listeners.renderlet(_chart);\n if (event) {\n _listeners[event](_chart);\n }\n }\n };\n\n /**\n * Calling redraw will cause the chart to re-render data changes incrementally. If there is no\n * change in the underlying data dimension then calling this method will have no effect on the\n * chart. Most chart interaction in dc will automatically trigger this method through internal\n * events (in particular {@link dc.redrawAll dc.redrawAll}); therefore, you only need to\n * manually invoke this function if data is manipulated outside of dc's control (for example if\n * data is loaded in the background using\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#crossfilter_add crossfilter.add}).\n * @method redraw\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.redraw = function () {\n sizeSvg();\n _listeners.preRedraw(_chart);\n\n var result = _chart._doRedraw();\n\n if (_legend) {\n _legend.render();\n }\n\n _chart._activateRenderlets('postRedraw');\n\n return result;\n };\n\n /**\n * Gets/sets the commit handler. If the chart has a commit handler, the handler will be called when\n * the chart's filters have changed, in order to send the filter data asynchronously to a server.\n *\n * Unlike other functions in dc.js, the commit handler is asynchronous. It takes two arguments:\n * a flag indicating whether this is a render (true) or a redraw (false), and a callback to be\n * triggered once the commit is filtered. The callback has the standard node.js continuation signature\n * with error first and result second.\n * @method commitHandler\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.commitHandler = function (commitHandler) {\n if (!arguments.length) {\n return _commitHandler;\n }\n _commitHandler = commitHandler;\n return _chart;\n };\n\n /**\n * Redraws all charts in the same group as this chart, typically in reaction to a filter\n * change. If the chart has a {@link dc.baseMixin.commitFilter commitHandler}, it will\n * be executed and waited for.\n * @method redrawGroup\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.redrawGroup = function () {\n if (_commitHandler) {\n _commitHandler(false, function (error, result) {\n if (error) {\n console.log(error);\n } else {\n dc.redrawAll(_chart.chartGroup());\n }\n });\n } else {\n dc.redrawAll(_chart.chartGroup());\n }\n return _chart;\n };\n\n /**\n * Renders all charts in the same group as this chart. If the chart has a\n * {@link dc.baseMixin.commitFilter commitHandler}, it will be executed and waited for\n * @method renderGroup\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.renderGroup = function () {\n if (_commitHandler) {\n _commitHandler(false, function (error, result) {\n if (error) {\n console.log(error);\n } else {\n dc.renderAll(_chart.chartGroup());\n }\n });\n } else {\n dc.renderAll(_chart.chartGroup());\n }\n return _chart;\n };\n\n _chart._invokeFilteredListener = function (f) {\n if (f !== undefined) {\n _listeners.filtered(_chart, f);\n }\n };\n\n _chart._invokeZoomedListener = function () {\n _listeners.zoomed(_chart);\n };\n\n var _hasFilterHandler = function (filters, filter) {\n if (filter === null || typeof(filter) === 'undefined') {\n return filters.length > 0;\n }\n return filters.some(function (f) {\n return filter <= f && filter >= f;\n });\n };\n\n /**\n * Set or get the has filter handler. The has filter handler is a function that checks to see if\n * the chart's current filters include a specific filter. Using a custom has filter handler allows\n * you to change the way filters are checked for and replaced.\n * @method hasFilterHandler\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default has filter handler\n * chart.hasFilterHandler(function (filters, filter) {\n * if (filter === null || typeof(filter) === 'undefined') {\n * return filters.length > 0;\n * }\n * return filters.some(function (f) {\n * return filter <= f && filter >= f;\n * });\n * });\n *\n * // custom filter handler (no-op)\n * chart.hasFilterHandler(function(filters, filter) {\n * return false;\n * });\n * @param {Function} [hasFilterHandler]\n * @returns {Function|dc.baseMixin}\n */\n _chart.hasFilterHandler = function (hasFilterHandler) {\n if (!arguments.length) {\n return _hasFilterHandler;\n }\n _hasFilterHandler = hasFilterHandler;\n return _chart;\n };\n\n /**\n * Check whether any active filter or a specific filter is associated with particular chart instance.\n * This function is **not chainable**.\n * @method hasFilter\n * @memberof dc.baseMixin\n * @instance\n * @see {@link dc.baseMixin#hasFilterHandler hasFilterHandler}\n * @param {*} [filter]\n * @returns {Boolean}\n */\n _chart.hasFilter = function (filter) {\n return _hasFilterHandler(_filters, filter);\n };\n\n var _removeFilterHandler = function (filters, filter) {\n for (var i = 0; i < filters.length; i++) {\n if (filters[i] <= filter && filters[i] >= filter) {\n filters.splice(i, 1);\n break;\n }\n }\n return filters;\n };\n\n /**\n * Set or get the remove filter handler. The remove filter handler is a function that removes a\n * filter from the chart's current filters. Using a custom remove filter handler allows you to\n * change how filters are removed or perform additional work when removing a filter, e.g. when\n * using a filter server other than crossfilter.\n *\n * Any changes should modify the `filters` array argument and return that array.\n * @method removeFilterHandler\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default remove filter handler\n * chart.removeFilterHandler(function (filters, filter) {\n * for (var i = 0; i < filters.length; i++) {\n * if (filters[i] <= filter && filters[i] >= filter) {\n * filters.splice(i, 1);\n * break;\n * }\n * }\n * return filters;\n * });\n *\n * // custom filter handler (no-op)\n * chart.removeFilterHandler(function(filters, filter) {\n * return filters;\n * });\n * @param {Function} [removeFilterHandler]\n * @returns {Function|dc.baseMixin}\n */\n _chart.removeFilterHandler = function (removeFilterHandler) {\n if (!arguments.length) {\n return _removeFilterHandler;\n }\n _removeFilterHandler = removeFilterHandler;\n return _chart;\n };\n\n var _addFilterHandler = function (filters, filter) {\n filters.push(filter);\n return filters;\n };\n\n /**\n * Set or get the add filter handler. The add filter handler is a function that adds a filter to\n * the chart's filter list. Using a custom add filter handler allows you to change the way filters\n * are added or perform additional work when adding a filter, e.g. when using a filter server other\n * than crossfilter.\n *\n * Any changes should modify the `filters` array argument and return that array.\n * @method addFilterHandler\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default add filter handler\n * chart.addFilterHandler(function (filters, filter) {\n * filters.push(filter);\n * return filters;\n * });\n *\n * // custom filter handler (no-op)\n * chart.addFilterHandler(function(filters, filter) {\n * return filters;\n * });\n * @param {Function} [addFilterHandler]\n * @returns {Function|dc.baseMixin}\n */\n _chart.addFilterHandler = function (addFilterHandler) {\n if (!arguments.length) {\n return _addFilterHandler;\n }\n _addFilterHandler = addFilterHandler;\n return _chart;\n };\n\n var _resetFilterHandler = function (filters) {\n return [];\n };\n\n /**\n * Set or get the reset filter handler. The reset filter handler is a function that resets the\n * chart's filter list by returning a new list. Using a custom reset filter handler allows you to\n * change the way filters are reset, or perform additional work when resetting the filters,\n * e.g. when using a filter server other than crossfilter.\n *\n * This function should return an array.\n * @method resetFilterHandler\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default remove filter handler\n * function (filters) {\n * return [];\n * }\n *\n * // custom filter handler (no-op)\n * chart.resetFilterHandler(function(filters) {\n * return filters;\n * });\n * @param {Function} [resetFilterHandler]\n * @returns {dc.baseMixin}\n */\n _chart.resetFilterHandler = function (resetFilterHandler) {\n if (!arguments.length) {\n return _resetFilterHandler;\n }\n _resetFilterHandler = resetFilterHandler;\n return _chart;\n };\n\n function applyFilters () {\n if (_chart.dimension() && _chart.dimension().filter) {\n var fs = _filterHandler(_chart.dimension(), _filters);\n _filters = fs ? fs : _filters;\n }\n }\n\n /**\n * Replace the chart filter. This is equivalent to calling `chart.filter(null).filter(filter)`\n * but more efficient because the filter is only applied once.\n *\n * @method replaceFilter\n * @memberof dc.baseMixin\n * @instance\n * @param {*} [filter]\n * @returns {dc.baseMixin}\n **/\n _chart.replaceFilter = function (filter) {\n _filters = _resetFilterHandler(_filters);\n _chart.filter(filter);\n return _chart;\n };\n\n /**\n * Filter the chart by the given parameter, or return the current filter if no input parameter\n * is given.\n *\n * The filter parameter can take one of these forms:\n * * A single value: the value will be toggled (added if it is not present in the current\n * filters, removed if it is present)\n * * An array containing a single array of values (`[[value,value,value]]`): each value is\n * toggled\n * * When appropriate for the chart, a {@link dc.filters dc filter object} such as\n * * {@link dc.filters.RangedFilter `dc.filters.RangedFilter`} for the\n * {@link dc.coordinateGridMixin dc.coordinateGridMixin} charts\n * * {@link dc.filters.TwoDimensionalFilter `dc.filters.TwoDimensionalFilter`} for the\n * {@link dc.heatMap heat map}\n * * {@link dc.filters.RangedTwoDimensionalFilter `dc.filters.RangedTwoDimensionalFilter`}\n * for the {@link dc.scatterPlot scatter plot}\n * * `null`: the filter will be reset using the\n * {@link dc.baseMixin#resetFilterHandler resetFilterHandler}\n *\n * Note that this is always a toggle (even when it doesn't make sense for the filter type). If\n * you wish to replace the current filter, either call `chart.filter(null)` first - or it's more\n * efficient to call {@link dc.baseMixin#replaceFilter `chart.replaceFilter(filter)`} instead.\n *\n * Each toggle is executed by checking if the value is already present using the\n * {@link dc.baseMixin#hasFilterHandler hasFilterHandler}; if it is not present, it is added\n * using the {@link dc.baseMixin#addFilterHandler addFilterHandler}; if it is already present,\n * it is removed using the {@link dc.baseMixin#removeFilterHandler removeFilterHandler}.\n *\n * Once the filters array has been updated, the filters are applied to the\n * crossfilter dimension, using the {@link dc.baseMixin#filterHandler filterHandler}.\n *\n * Once you have set the filters, call {@link dc.baseMixin#redrawGroup `chart.redrawGroup()`}\n * (or {@link dc.redrawAll `dc.redrawAll()`}) to redraw the chart's group.\n * @method filter\n * @memberof dc.baseMixin\n * @instance\n * @see {@link dc.baseMixin#addFilterHandler addFilterHandler}\n * @see {@link dc.baseMixin#removeFilterHandler removeFilterHandler}\n * @see {@link dc.baseMixin#resetFilterHandler resetFilterHandler}\n * @see {@link dc.baseMixin#filterHandler filterHandler}\n * @example\n * // filter by a single string\n * chart.filter('Sunday');\n * // filter by a single age\n * chart.filter(18);\n * // filter by a set of states\n * chart.filter([['MA', 'TX', 'ND', 'WA']]);\n * // filter by range -- note the use of dc.filters.RangedFilter, which is different\n * // from the syntax for filtering a crossfilter dimension directly, dimension.filter([15,20])\n * chart.filter(dc.filters.RangedFilter(15,20));\n * @param {*} [filter]\n * @returns {dc.baseMixin}\n */\n _chart.filter = function (filter) {\n if (!arguments.length) {\n return _filters.length > 0 ? _filters[0] : null;\n }\n if (filter instanceof Array && filter[0] instanceof Array && !filter.isFiltered) {\n filter[0].forEach(function (d) {\n if (_chart.hasFilter(d)) {\n _removeFilterHandler(_filters, d);\n } else {\n _addFilterHandler(_filters, d);\n }\n });\n } else if (filter === null) {\n _filters = _resetFilterHandler(_filters);\n } else {\n if (_chart.hasFilter(filter)) {\n _removeFilterHandler(_filters, filter);\n } else {\n _addFilterHandler(_filters, filter);\n }\n }\n applyFilters();\n _chart._invokeFilteredListener(filter);\n\n if (_root !== null && _chart.hasFilter()) {\n _chart.turnOnControls();\n } else {\n _chart.turnOffControls();\n }\n\n return _chart;\n };\n\n /**\n * Returns all current filters. This method does not perform defensive cloning of the internal\n * filter array before returning, therefore any modification of the returned array will effect the\n * chart's internal filter storage.\n * @method filters\n * @memberof dc.baseMixin\n * @instance\n * @returns {Array<*>}\n */\n _chart.filters = function () {\n return _filters;\n };\n\n _chart.highlightSelected = function (e) {\n d3.select(e).classed(dc.constants.SELECTED_CLASS, true);\n d3.select(e).classed(dc.constants.DESELECTED_CLASS, false);\n };\n\n _chart.fadeDeselected = function (e) {\n d3.select(e).classed(dc.constants.SELECTED_CLASS, false);\n d3.select(e).classed(dc.constants.DESELECTED_CLASS, true);\n };\n\n _chart.resetHighlight = function (e) {\n d3.select(e).classed(dc.constants.SELECTED_CLASS, false);\n d3.select(e).classed(dc.constants.DESELECTED_CLASS, false);\n };\n\n /**\n * This function is passed to d3 as the onClick handler for each chart. The default behavior is to\n * filter on the clicked datum (passed to the callback) and redraw the chart group.\n * @method onClick\n * @memberof dc.baseMixin\n * @instance\n * @param {*} datum\n */\n _chart.onClick = function (datum) {\n var filter = _chart.keyAccessor()(datum);\n dc.events.trigger(function () {\n _chart.filter(filter);\n _chart.redrawGroup();\n });\n };\n\n /**\n * Set or get the filter handler. The filter handler is a function that performs the filter action\n * on a specific dimension. Using a custom filter handler allows you to perform additional logic\n * before or after filtering.\n * @method filterHandler\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_filter crossfilter.dimension.filter}\n * @example\n * // the default filter handler handles all possible cases for the charts in dc.js\n * // you can replace it with something more specialized for your own chart\n * chart.filterHandler(function (dimension, filters) {\n * if (filters.length === 0) {\n * // the empty case (no filtering)\n * dimension.filter(null);\n * } else if (filters.length === 1 && !filters[0].isFiltered) {\n * // single value and not a function-based filter\n * dimension.filterExact(filters[0]);\n * } else if (filters.length === 1 && filters[0].filterType === 'RangedFilter') {\n * // single range-based filter\n * dimension.filterRange(filters[0]);\n * } else {\n * // an array of values, or an array of filter objects\n * dimension.filterFunction(function (d) {\n * for (var i = 0; i < filters.length; i++) {\n * var filter = filters[i];\n * if (filter.isFiltered && filter.isFiltered(d)) {\n * return true;\n * } else if (filter <= d && filter >= d) {\n * return true;\n * }\n * }\n * return false;\n * });\n * }\n * return filters;\n * });\n *\n * // custom filter handler\n * chart.filterHandler(function(dimension, filter){\n * var newFilter = filter + 10;\n * dimension.filter(newFilter);\n * return newFilter; // set the actual filter value to the new value\n * });\n * @param {Function} [filterHandler]\n * @returns {Function|dc.baseMixin}\n */\n _chart.filterHandler = function (filterHandler) {\n if (!arguments.length) {\n return _filterHandler;\n }\n _filterHandler = filterHandler;\n return _chart;\n };\n\n // abstract function stub\n _chart._doRender = function () {\n // do nothing in base, should be overridden by sub-function\n return _chart;\n };\n\n _chart._doRedraw = function () {\n // do nothing in base, should be overridden by sub-function\n return _chart;\n };\n\n _chart.legendables = function () {\n // do nothing in base, should be overridden by sub-function\n return [];\n };\n\n _chart.legendHighlight = function () {\n // do nothing in base, should be overridden by sub-function\n };\n\n _chart.legendReset = function () {\n // do nothing in base, should be overridden by sub-function\n };\n\n _chart.legendToggle = function () {\n // do nothing in base, should be overriden by sub-function\n };\n\n _chart.isLegendableHidden = function () {\n // do nothing in base, should be overridden by sub-function\n return false;\n };\n\n /**\n * Set or get the key accessor function. The key accessor function is used to retrieve the key\n * value from the crossfilter group. Key values are used differently in different charts, for\n * example keys correspond to slices in a pie chart and x axis positions in a grid coordinate chart.\n * @method keyAccessor\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default key accessor\n * chart.keyAccessor(function(d) { return d.key; });\n * // custom key accessor for a multi-value crossfilter reduction\n * chart.keyAccessor(function(p) { return p.value.absGain; });\n * @param {Function} [keyAccessor]\n * @returns {Function|dc.baseMixin}\n */\n _chart.keyAccessor = function (keyAccessor) {\n if (!arguments.length) {\n return _keyAccessor;\n }\n _keyAccessor = keyAccessor;\n return _chart;\n };\n\n /**\n * Set or get the value accessor function. The value accessor function is used to retrieve the\n * value from the crossfilter group. Group values are used differently in different charts, for\n * example values correspond to slice sizes in a pie chart and y axis positions in a grid\n * coordinate chart.\n * @method valueAccessor\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default value accessor\n * chart.valueAccessor(function(d) { return d.value; });\n * // custom value accessor for a multi-value crossfilter reduction\n * chart.valueAccessor(function(p) { return p.value.percentageGain; });\n * @param {Function} [valueAccessor]\n * @returns {Function|dc.baseMixin}\n */\n _chart.valueAccessor = function (valueAccessor) {\n if (!arguments.length) {\n return _valueAccessor;\n }\n _valueAccessor = valueAccessor;\n return _chart;\n };\n\n /**\n * Set or get the label function. The chart class will use this function to render labels for each\n * child element in the chart, e.g. slices in a pie chart or bubbles in a bubble chart. Not every\n * chart supports the label function, for example line chart does not use this function\n * at all. By default, enables labels; pass false for the second parameter if this is not desired.\n * @method label\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default label function just return the key\n * chart.label(function(d) { return d.key; });\n * // label function has access to the standard d3 data binding and can get quite complicated\n * chart.label(function(d) { return d.data.key + '(' + Math.floor(d.data.value / all.value() * 100) + '%)'; });\n * @param {Function} [labelFunction]\n * @param {Boolean} [enableLabels=true]\n * @returns {Function|dc.baseMixin}\n */\n _chart.label = function (labelFunction, enableLabels) {\n if (!arguments.length) {\n return _label;\n }\n _label = labelFunction;\n if ((enableLabels === undefined) || enableLabels) {\n _renderLabel = true;\n }\n return _chart;\n };\n\n /**\n * Turn on/off label rendering\n * @method renderLabel\n * @memberof dc.baseMixin\n * @instance\n * @param {Boolean} [renderLabel=false]\n * @returns {Boolean|dc.baseMixin}\n */\n _chart.renderLabel = function (renderLabel) {\n if (!arguments.length) {\n return _renderLabel;\n }\n _renderLabel = renderLabel;\n return _chart;\n };\n\n /**\n * Set or get the title function. The chart class will use this function to render the SVGElement title\n * (usually interpreted by browser as tooltips) for each child element in the chart, e.g. a slice\n * in a pie chart or a bubble in a bubble chart. Almost every chart supports the title function;\n * however in grid coordinate charts you need to turn off the brush in order to see titles, because\n * otherwise the brush layer will block tooltip triggering.\n * @method title\n * @memberof dc.baseMixin\n * @instance\n * @example\n * // default title function shows \"key: value\"\n * chart.title(function(d) { return d.key + ': ' + d.value; });\n * // title function has access to the standard d3 data binding and can get quite complicated\n * chart.title(function(p) {\n * return p.key.getFullYear()\n * + '\\n'\n * + 'Index Gain: ' + numberFormat(p.value.absGain) + '\\n'\n * + 'Index Gain in Percentage: ' + numberFormat(p.value.percentageGain) + '%\\n'\n * + 'Fluctuation / Index Ratio: ' + numberFormat(p.value.fluctuationPercentage) + '%';\n * });\n * @param {Function} [titleFunction]\n * @returns {Function|dc.baseMixin}\n */\n _chart.title = function (titleFunction) {\n if (!arguments.length) {\n return _title;\n }\n _title = titleFunction;\n return _chart;\n };\n\n /**\n * Turn on/off title rendering, or return the state of the render title flag if no arguments are\n * given.\n * @method renderTitle\n * @memberof dc.baseMixin\n * @instance\n * @param {Boolean} [renderTitle=true]\n * @returns {Boolean|dc.baseMixin}\n */\n _chart.renderTitle = function (renderTitle) {\n if (!arguments.length) {\n return _renderTitle;\n }\n _renderTitle = renderTitle;\n return _chart;\n };\n\n /**\n * A renderlet is similar to an event listener on rendering event. Multiple renderlets can be added\n * to an individual chart. Each time a chart is rerendered or redrawn the renderlets are invoked\n * right after the chart finishes its transitions, giving you a way to modify the SVGElements.\n * Renderlet functions take the chart instance as the only input parameter and you can\n * use the dc API or use raw d3 to achieve pretty much any effect.\n *\n * Use {@link dc.baseMixin#on on} with a 'renderlet' prefix.\n * Generates a random key for the renderlet, which makes it hard to remove.\n * @method renderlet\n * @memberof dc.baseMixin\n * @instance\n * @deprecated\n * @example\n * // do this instead of .renderlet(function(chart) { ... })\n * chart.on(\"renderlet\", function(chart){\n * // mix of dc API and d3 manipulation\n * chart.select('g.y').style('display', 'none');\n * // its a closure so you can also access other chart variable available in the closure scope\n * moveChart.filter(chart.filter());\n * });\n * @param {Function} renderletFunction\n * @returns {dc.baseMixin}\n */\n _chart.renderlet = dc.logger.deprecate(function (renderletFunction) {\n _chart.on('renderlet.' + dc.utils.uniqueId(), renderletFunction);\n return _chart;\n }, 'chart.renderlet has been deprecated. Please use chart.on(\"renderlet.\", renderletFunction)');\n\n /**\n * Get or set the chart group to which this chart belongs. Chart groups are rendered or redrawn\n * together since it is expected they share the same underlying crossfilter data set.\n * @method chartGroup\n * @memberof dc.baseMixin\n * @instance\n * @param {String} [chartGroup]\n * @returns {String|dc.baseMixin}\n */\n _chart.chartGroup = function (chartGroup) {\n if (!arguments.length) {\n return _chartGroup;\n }\n if (!_isChild) {\n dc.deregisterChart(_chart, _chartGroup);\n }\n _chartGroup = chartGroup;\n if (!_isChild) {\n dc.registerChart(_chart, _chartGroup);\n }\n return _chart;\n };\n\n /**\n * Expire the internal chart cache. dc charts cache some data internally on a per chart basis to\n * speed up rendering and avoid unnecessary calculation; however it might be useful to clear the\n * cache if you have changed state which will affect rendering. For example, if you invoke\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#crossfilter_add crossfilter.add}\n * function or reset group or dimension after rendering, it is a good idea to\n * clear the cache to make sure charts are rendered properly.\n * @method expireCache\n * @memberof dc.baseMixin\n * @instance\n * @returns {dc.baseMixin}\n */\n _chart.expireCache = function () {\n // do nothing in base, should be overridden by sub-function\n return _chart;\n };\n\n /**\n * Attach a dc.legend widget to this chart. The legend widget will automatically draw legend labels\n * based on the color setting and names associated with each group.\n * @method legend\n * @memberof dc.baseMixin\n * @instance\n * @example\n * chart.legend(dc.legend().x(400).y(10).itemHeight(13).gap(5))\n * @param {dc.legend} [legend]\n * @returns {dc.legend|dc.baseMixin}\n */\n _chart.legend = function (legend) {\n if (!arguments.length) {\n return _legend;\n }\n _legend = legend;\n _legend.parent(_chart);\n return _chart;\n };\n\n /**\n * Returns the internal numeric ID of the chart.\n * @method chartID\n * @memberof dc.baseMixin\n * @instance\n * @returns {String}\n */\n _chart.chartID = function () {\n return _chart.__dcFlag__;\n };\n\n /**\n * Set chart options using a configuration object. Each key in the object will cause the method of\n * the same name to be called with the value to set that attribute for the chart.\n * @method options\n * @memberof dc.baseMixin\n * @instance\n * @example\n * chart.options({dimension: myDimension, group: myGroup});\n * @param {{}} opts\n * @returns {dc.baseMixin}\n */\n _chart.options = function (opts) {\n var applyOptions = [\n 'anchor',\n 'group',\n 'xAxisLabel',\n 'yAxisLabel',\n 'stack',\n 'title',\n 'point',\n 'getColor',\n 'overlayGeoJson'\n ];\n\n for (var o in opts) {\n if (typeof(_chart[o]) === 'function') {\n if (opts[o] instanceof Array && applyOptions.indexOf(o) !== -1) {\n _chart[o].apply(_chart, opts[o]);\n } else {\n _chart[o].call(_chart, opts[o]);\n }\n } else {\n dc.logger.debug('Not a valid option setter name: ' + o);\n }\n }\n return _chart;\n };\n\n /**\n * All dc chart instance supports the following listeners.\n * Supports the following events:\n * * `renderlet` - This listener function will be invoked after transitions after redraw and render. Replaces the\n * deprecated {@link dc.baseMixin#renderlet renderlet} method.\n * * `pretransition` - Like `.on('renderlet', ...)` but the event is fired before transitions start.\n * * `preRender` - This listener function will be invoked before chart rendering.\n * * `postRender` - This listener function will be invoked after chart finish rendering including\n * all renderlets' logic.\n * * `preRedraw` - This listener function will be invoked before chart redrawing.\n * * `postRedraw` - This listener function will be invoked after chart finish redrawing\n * including all renderlets' logic.\n * * `filtered` - This listener function will be invoked after a filter is applied, added or removed.\n * * `zoomed` - This listener function will be invoked after a zoom is triggered.\n * @method on\n * @memberof dc.baseMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Internals.md#dispatch_on d3.dispatch.on}\n * @example\n * .on('renderlet', function(chart, filter){...})\n * .on('pretransition', function(chart, filter){...})\n * .on('preRender', function(chart){...})\n * .on('postRender', function(chart){...})\n * .on('preRedraw', function(chart){...})\n * .on('postRedraw', function(chart){...})\n * .on('filtered', function(chart, filter){...})\n * .on('zoomed', function(chart, filter){...})\n * @param {String} event\n * @param {Function} listener\n * @returns {dc.baseMixin}\n */\n _chart.on = function (event, listener) {\n _listeners.on(event, listener);\n return _chart;\n };\n\n return _chart;\n};\n\n/**\n * Margin is a mixin that provides margin utility functions for both the Row Chart and Coordinate Grid\n * Charts.\n * @name marginMixin\n * @memberof dc\n * @mixin\n * @param {Object} _chart\n * @returns {dc.marginMixin}\n */\ndc.marginMixin = function (_chart) {\n var _margin = {top: 10, right: 50, bottom: 30, left: 30};\n\n /**\n * Get or set the margins for a particular coordinate grid chart instance. The margins is stored as\n * an associative Javascript array.\n * @method margins\n * @memberof dc.marginMixin\n * @instance\n * @example\n * var leftMargin = chart.margins().left; // 30 by default\n * chart.margins().left = 50;\n * leftMargin = chart.margins().left; // now 50\n * @param {{top: Number, right: Number, left: Number, bottom: Number}} [margins={top: 10, right: 50, bottom: 30, left: 30}]\n * @returns {{top: Number, right: Number, left: Number, bottom: Number}|dc.marginMixin}\n */\n _chart.margins = function (margins) {\n if (!arguments.length) {\n return _margin;\n }\n _margin = margins;\n return _chart;\n };\n\n _chart.effectiveWidth = function () {\n return _chart.width() - _chart.margins().left - _chart.margins().right;\n };\n\n _chart.effectiveHeight = function () {\n return _chart.height() - _chart.margins().top - _chart.margins().bottom;\n };\n\n return _chart;\n};\n\n/**\n * The Color Mixin is an abstract chart functional class providing universal coloring support\n * as a mix-in for any concrete chart implementation.\n * @name colorMixin\n * @memberof dc\n * @mixin\n * @param {Object} _chart\n * @returns {dc.colorMixin}\n */\ndc.colorMixin = function (_chart) {\n var _colors = d3.scale.category20c();\n var _defaultAccessor = true;\n\n var _colorAccessor = function (d) { return _chart.keyAccessor()(d); };\n\n /**\n * Retrieve current color scale or set a new color scale. This methods accepts any function that\n * operates like a d3 scale.\n * @method colors\n * @memberof dc.colorMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale}\n * @example\n * // alternate categorical scale\n * chart.colors(d3.scale.category20b());\n * // ordinal scale\n * chart.colors(d3.scale.ordinal().range(['red','green','blue']));\n * // convenience method, the same as above\n * chart.ordinalColors(['red','green','blue']);\n * // set a linear scale\n * chart.linearColors([\"#4575b4\", \"#ffffbf\", \"#a50026\"]);\n * @param {d3.scale} [colorScale=d3.scale.category20c()]\n * @returns {d3.scale|dc.colorMixin}\n */\n _chart.colors = function (colorScale) {\n if (!arguments.length) {\n return _colors;\n }\n if (colorScale instanceof Array) {\n _colors = d3.scale.quantize().range(colorScale); // deprecated legacy support, note: this fails for ordinal domains\n } else {\n _colors = d3.functor(colorScale);\n }\n return _chart;\n };\n\n /**\n * Convenience method to set the color scale to\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal d3.scale.ordinal} with\n * range `r`.\n * @method ordinalColors\n * @memberof dc.colorMixin\n * @instance\n * @param {Array} r\n * @returns {dc.colorMixin}\n */\n _chart.ordinalColors = function (r) {\n return _chart.colors(d3.scale.ordinal().range(r));\n };\n\n /**\n * Convenience method to set the color scale to an Hcl interpolated linear scale with range `r`.\n * @method linearColors\n * @memberof dc.colorMixin\n * @instance\n * @param {Array} r\n * @returns {dc.colorMixin}\n */\n _chart.linearColors = function (r) {\n return _chart.colors(d3.scale.linear()\n .range(r)\n .interpolate(d3.interpolateHcl));\n };\n\n /**\n * Set or the get color accessor function. This function will be used to map a data point in a\n * crossfilter group to a color value on the color scale. The default function uses the key\n * accessor.\n * @method colorAccessor\n * @memberof dc.colorMixin\n * @instance\n * @example\n * // default index based color accessor\n * .colorAccessor(function (d, i){return i;})\n * // color accessor for a multi-value crossfilter reduction\n * .colorAccessor(function (d){return d.value.absGain;})\n * @param {Function} [colorAccessor]\n * @returns {Function|dc.colorMixin}\n */\n _chart.colorAccessor = function (colorAccessor) {\n if (!arguments.length) {\n return _colorAccessor;\n }\n _colorAccessor = colorAccessor;\n _defaultAccessor = false;\n return _chart;\n };\n\n // what is this?\n _chart.defaultColorAccessor = function () {\n return _defaultAccessor;\n };\n\n /**\n * Set or get the current domain for the color mapping function. The domain must be supplied as an\n * array.\n *\n * Note: previously this method accepted a callback function. Instead you may use a custom scale\n * set by {@link dc.colorMixin#colors .colors}.\n * @method colorDomain\n * @memberof dc.colorMixin\n * @instance\n * @param {Array} [domain]\n * @returns {Array|dc.colorMixin}\n */\n _chart.colorDomain = function (domain) {\n if (!arguments.length) {\n return _colors.domain();\n }\n _colors.domain(domain);\n return _chart;\n };\n\n /**\n * Set the domain by determining the min and max values as retrieved by\n * {@link dc.colorMixin#colorAccessor .colorAccessor} over the chart's dataset.\n * @method calculateColorDomain\n * @memberof dc.colorMixin\n * @instance\n * @returns {dc.colorMixin}\n */\n _chart.calculateColorDomain = function () {\n var newDomain = [d3.min(_chart.data(), _chart.colorAccessor()),\n d3.max(_chart.data(), _chart.colorAccessor())];\n _colors.domain(newDomain);\n return _chart;\n };\n\n /**\n * Get the color for the datum d and counter i. This is used internally by charts to retrieve a color.\n * @method getColor\n * @memberof dc.colorMixin\n * @instance\n * @param {*} d\n * @param {Number} [i]\n * @returns {String}\n */\n _chart.getColor = function (d, i) {\n return _colors(_colorAccessor.call(this, d, i));\n };\n\n /**\n * **Deprecated.** Get/set the color calculator. This actually replaces the\n * {@link dc.colorMixin#getColor getColor} method!\n *\n * This is not recommended, since using a {@link dc.colorMixin#colorAccessor colorAccessor} and\n * color scale ({@link dc.colorMixin#colors .colors}) is more powerful and idiomatic d3.\n * @method colorCalculator\n * @memberof dc.colorMixin\n * @instance\n * @param {*} [colorCalculator]\n * @returns {Function|dc.colorMixin}\n */\n _chart.colorCalculator = dc.logger.deprecate(function (colorCalculator) {\n if (!arguments.length) {\n return _chart.getColor;\n }\n _chart.getColor = colorCalculator;\n return _chart;\n }, 'colorMixin.colorCalculator has been deprecated. Please colorMixin.colors and colorMixin.colorAccessor instead');\n\n return _chart;\n};\n\n/**\n * Coordinate Grid is an abstract base chart designed to support a number of coordinate grid based\n * concrete chart types, e.g. bar chart, line chart, and bubble chart.\n * @name coordinateGridMixin\n * @memberof dc\n * @mixin\n * @mixes dc.colorMixin\n * @mixes dc.marginMixin\n * @mixes dc.baseMixin\n * @param {Object} _chart\n * @returns {dc.coordinateGridMixin}\n */\ndc.coordinateGridMixin = function (_chart) {\n var GRID_LINE_CLASS = 'grid-line';\n var HORIZONTAL_CLASS = 'horizontal';\n var VERTICAL_CLASS = 'vertical';\n var Y_AXIS_LABEL_CLASS = 'y-axis-label';\n var X_AXIS_LABEL_CLASS = 'x-axis-label';\n var DEFAULT_AXIS_LABEL_PADDING = 12;\n\n _chart = dc.colorMixin(dc.marginMixin(dc.baseMixin(_chart)));\n\n _chart.colors(d3.scale.category10());\n _chart._mandatoryAttributes().push('x');\n var _parent;\n var _g;\n var _chartBodyG;\n\n var _x;\n var _xOriginalDomain;\n var _xAxis = d3.svg.axis().orient('bottom');\n var _xUnits = dc.units.integers;\n var _xAxisPadding = 0;\n var _xAxisPaddingUnit = 'day';\n var _xElasticity = false;\n var _xAxisLabel;\n var _xAxisLabelPadding = 0;\n var _lastXDomain;\n\n var _y;\n var _yAxis = d3.svg.axis().orient('left');\n var _yAxisPadding = 0;\n var _yElasticity = false;\n var _yAxisLabel;\n var _yAxisLabelPadding = 0;\n\n var _brush = d3.svg.brush();\n var _brushOn = true;\n var _round;\n\n var _renderHorizontalGridLine = false;\n var _renderVerticalGridLine = false;\n\n var _refocused = false, _resizing = false;\n var _unitCount;\n\n var _zoomScale = [1, Infinity];\n var _zoomOutRestrict = true;\n\n var _zoom = d3.behavior.zoom().on('zoom', zoomHandler);\n var _nullZoom = d3.behavior.zoom().on('zoom', null);\n var _hasBeenMouseZoomable = false;\n\n var _rangeChart;\n var _focusChart;\n\n var _mouseZoomable = false;\n var _clipPadding = 0;\n\n var _outerRangeBandPadding = 0.5;\n var _rangeBandPadding = 0;\n\n var _useRightYAxis = false;\n\n /**\n * When changing the domain of the x or y scale, it is necessary to tell the chart to recalculate\n * and redraw the axes. (`.rescale()` is called automatically when the x or y scale is replaced\n * with {@link dc.coordinateGridMixin+x .x()} or {@link dc.coordinateGridMixin#y .y()}, and has\n * no effect on elastic scales.)\n * @method rescale\n * @memberof dc.coordinateGridMixin\n * @instance\n * @returns {dc.coordinateGridMixin}\n */\n _chart.rescale = function () {\n _unitCount = undefined;\n _resizing = true;\n return _chart;\n };\n\n _chart.resizing = function () {\n return _resizing;\n };\n\n /**\n * Get or set the range selection chart associated with this instance. Setting the range selection\n * chart using this function will automatically update its selection brush when the current chart\n * zooms in. In return the given range chart will also automatically attach this chart as its focus\n * chart hence zoom in when range brush updates.\n *\n * Usually the range and focus charts will share a dimension. The range chart will set the zoom\n * boundaries for the focus chart, so its dimension values must be compatible with the domain of\n * the focus chart.\n *\n * See the [Nasdaq 100 Index](http://dc-js.github.com/dc.js/) example for this effect in action.\n * @method rangeChart\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {dc.coordinateGridMixin} [rangeChart]\n * @returns {dc.coordinateGridMixin}\n */\n _chart.rangeChart = function (rangeChart) {\n if (!arguments.length) {\n return _rangeChart;\n }\n _rangeChart = rangeChart;\n _rangeChart.focusChart(_chart);\n return _chart;\n };\n\n /**\n * Get or set the scale extent for mouse zooms.\n * @method zoomScale\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Array} [extent=[1, Infinity]]\n * @returns {Array|dc.coordinateGridMixin}\n */\n _chart.zoomScale = function (extent) {\n if (!arguments.length) {\n return _zoomScale;\n }\n _zoomScale = extent;\n return _chart;\n };\n\n /**\n * Get or set the zoom restriction for the chart. If true limits the zoom to origional domain of the chart.\n * @method zoomOutRestrict\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [zoomOutRestrict=true]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.zoomOutRestrict = function (zoomOutRestrict) {\n if (!arguments.length) {\n return _zoomOutRestrict;\n }\n _zoomScale[0] = zoomOutRestrict ? 1 : 0;\n _zoomOutRestrict = zoomOutRestrict;\n return _chart;\n };\n\n _chart._generateG = function (parent) {\n if (parent === undefined) {\n _parent = _chart.svg();\n } else {\n _parent = parent;\n }\n\n var href = window.location.href.split('#')[0];\n\n _g = _parent.append('g');\n\n _chartBodyG = _g.append('g').attr('class', 'chart-body')\n .attr('transform', 'translate(' + _chart.margins().left + ', ' + _chart.margins().top + ')')\n .attr('clip-path', 'url(' + href + '#' + getClipPathId() + ')');\n\n return _g;\n };\n\n /**\n * Get or set the root g element. This method is usually used to retrieve the g element in order to\n * overlay custom svg drawing programatically. **Caution**: The root g element is usually generated\n * by dc.js internals, and resetting it might produce unpredictable result.\n * @method g\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {SVGElement} [gElement]\n * @returns {SVGElement|dc.coordinateGridMixin}\n */\n _chart.g = function (gElement) {\n if (!arguments.length) {\n return _g;\n }\n _g = gElement;\n return _chart;\n };\n\n /**\n * Set or get mouse zoom capability flag (default: false). When turned on the chart will be\n * zoomable using the mouse wheel. If the range selector chart is attached zooming will also update\n * the range selection brush on the associated range selector chart.\n * @method mouseZoomable\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [mouseZoomable=false]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.mouseZoomable = function (mouseZoomable) {\n if (!arguments.length) {\n return _mouseZoomable;\n }\n _mouseZoomable = mouseZoomable;\n return _chart;\n };\n\n /**\n * Retrieve the svg group for the chart body.\n * @method chartBodyG\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {SVGElement} [chartBodyG]\n * @returns {SVGElement}\n */\n _chart.chartBodyG = function (chartBodyG) {\n if (!arguments.length) {\n return _chartBodyG;\n }\n _chartBodyG = chartBodyG;\n return _chart;\n };\n\n /**\n * **mandatory**\n *\n * Get or set the x scale. The x scale can be any d3\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md quantitive scale} or\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md ordinal scale}.\n * @method x\n * @memberof dc.coordinateGridMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale}\n * @example\n * // set x to a linear scale\n * chart.x(d3.scale.linear().domain([-2500, 2500]))\n * // set x to a time scale to generate histogram\n * chart.x(d3.time.scale().domain([new Date(1985, 0, 1), new Date(2012, 11, 31)]))\n * @param {d3.scale} [xScale]\n * @returns {d3.scale|dc.coordinateGridMixin}\n */\n _chart.x = function (xScale) {\n if (!arguments.length) {\n return _x;\n }\n _x = xScale;\n _xOriginalDomain = _x.domain();\n _chart.rescale();\n return _chart;\n };\n\n _chart.xOriginalDomain = function () {\n return _xOriginalDomain;\n };\n\n /**\n * Set or get the xUnits function. The coordinate grid chart uses the xUnits function to calculate\n * the number of data projections on x axis such as the number of bars for a bar chart or the\n * number of dots for a line chart. This function is expected to return a Javascript array of all\n * data points on x axis, or the number of points on the axis. [d3 time range functions\n * d3.time.days, d3.time.months, and\n * d3.time.years](https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Intervals.md#aliases) are all valid xUnits\n * function. dc.js also provides a few units function, see the {@link dc.units Units Namespace} for\n * a list of built-in units functions.\n * @method xUnits\n * @memberof dc.coordinateGridMixin\n * @instance\n * @todo Add docs for utilities\n * @example\n * // set x units to count days\n * chart.xUnits(d3.time.days);\n * // set x units to count months\n * chart.xUnits(d3.time.months);\n *\n * // A custom xUnits function can be used as long as it follows the following interface:\n * // units in integer\n * function(start, end, xDomain) {\n * // simply calculates how many integers in the domain\n * return Math.abs(end - start);\n * };\n *\n * // fixed units\n * function(start, end, xDomain) {\n * // be aware using fixed units will disable the focus/zoom ability on the chart\n * return 1000;\n * @param {Function} [xUnits=dc.units.integers]\n * @returns {Function|dc.coordinateGridMixin}\n */\n _chart.xUnits = function (xUnits) {\n if (!arguments.length) {\n return _xUnits;\n }\n _xUnits = xUnits;\n return _chart;\n };\n\n /**\n * Set or get the x axis used by a particular coordinate grid chart instance. This function is most\n * useful when x axis customization is required. The x axis in dc.js is an instance of a\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3 axis object};\n * therefore it supports any valid d3 axis manipulation.\n *\n * **Caution**: The x axis is usually generated internally by dc; resetting it may cause\n * unexpected results. Note also that when used as a getter, this function is not chainable:\n * it returns the axis, not the chart,\n * {@link https://github.com/dc-js/dc.js/wiki/FAQ#why-does-everything-break-after-a-call-to-xaxis-or-yaxis\n * so attempting to call chart functions after calling `.xAxis()` will fail}.\n * @method xAxis\n * @memberof dc.coordinateGridMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis}\n * @example\n * // customize x axis tick format\n * chart.xAxis().tickFormat(function(v) {return v + '%';});\n * // customize x axis tick values\n * chart.xAxis().tickValues([0, 100, 200, 300]);\n * @param {d3.svg.axis} [xAxis=d3.svg.axis().orient('bottom')]\n * @returns {d3.svg.axis|dc.coordinateGridMixin}\n */\n _chart.xAxis = function (xAxis) {\n if (!arguments.length) {\n return _xAxis;\n }\n _xAxis = xAxis;\n return _chart;\n };\n\n /**\n * Turn on/off elastic x axis behavior. If x axis elasticity is turned on, then the grid chart will\n * attempt to recalculate the x axis range whenever a redraw event is triggered.\n * @method elasticX\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [elasticX=false]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.elasticX = function (elasticX) {\n if (!arguments.length) {\n return _xElasticity;\n }\n _xElasticity = elasticX;\n return _chart;\n };\n\n /**\n * Set or get x axis padding for the elastic x axis. The padding will be added to both end of the x\n * axis if elasticX is turned on; otherwise it is ignored.\n *\n * Padding can be an integer or percentage in string (e.g. '10%'). Padding can be applied to\n * number or date x axes. When padding a date axis, an integer represents number of units being padded\n * and a percentage string will be treated the same as an integer. The unit will be determined by the\n * xAxisPaddingUnit variable.\n * @method xAxisPadding\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Number|String} [padding=0]\n * @returns {Number|String|dc.coordinateGridMixin}\n */\n _chart.xAxisPadding = function (padding) {\n if (!arguments.length) {\n return _xAxisPadding;\n }\n _xAxisPadding = padding;\n return _chart;\n };\n\n /**\n * Set or get x axis padding unit for the elastic x axis. The padding unit will determine which unit to\n * use when applying xAxis padding if elasticX is turned on and if x-axis uses a time dimension;\n * otherwise it is ignored.\n *\n * Padding unit is a string that will be used when the padding is calculated. Available parameters are\n * the available d3 time intervals; see\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Intervals.md#interval d3.time.interval}.\n * @method xAxisPaddingUnit\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {String} [unit='days']\n * @returns {String|dc.coordinateGridMixin}\n */\n _chart.xAxisPaddingUnit = function (unit) {\n if (!arguments.length) {\n return _xAxisPaddingUnit;\n }\n _xAxisPaddingUnit = unit;\n return _chart;\n };\n\n /**\n * Returns the number of units displayed on the x axis using the unit measure configured by\n * {@link dc.coordinateGridMixin#xUnits xUnits}.\n * @method xUnitCount\n * @memberof dc.coordinateGridMixin\n * @instance\n * @returns {Number}\n */\n _chart.xUnitCount = function () {\n if (_unitCount === undefined) {\n var units = _chart.xUnits()(_chart.x().domain()[0], _chart.x().domain()[1], _chart.x().domain());\n\n if (units instanceof Array) {\n _unitCount = units.length;\n } else {\n _unitCount = units;\n }\n }\n\n return _unitCount;\n };\n\n /**\n * Gets or sets whether the chart should be drawn with a right axis instead of a left axis. When\n * used with a chart in a composite chart, allows both left and right Y axes to be shown on a\n * chart.\n * @method useRightYAxis\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [useRightYAxis=false]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.useRightYAxis = function (useRightYAxis) {\n if (!arguments.length) {\n return _useRightYAxis;\n }\n _useRightYAxis = useRightYAxis;\n return _chart;\n };\n\n /**\n * Returns true if the chart is using ordinal xUnits ({@link dc.units.ordinal dc.units.ordinal}, or false\n * otherwise. Most charts behave differently with ordinal data and use the result of this method to\n * trigger the appropriate logic.\n * @method isOrdinal\n * @memberof dc.coordinateGridMixin\n * @instance\n * @returns {Boolean}\n */\n _chart.isOrdinal = function () {\n return _chart.xUnits() === dc.units.ordinal;\n };\n\n _chart._useOuterPadding = function () {\n return true;\n };\n\n _chart._ordinalXDomain = function () {\n var groups = _chart._computeOrderedGroups(_chart.data());\n return groups.map(_chart.keyAccessor());\n };\n\n function compareDomains (d1, d2) {\n return !d1 || !d2 || d1.length !== d2.length ||\n d1.some(function (elem, i) { return (elem && d2[i]) ? elem.toString() !== d2[i].toString() : elem === d2[i]; });\n }\n\n function prepareXAxis (g, render) {\n if (!_chart.isOrdinal()) {\n if (_chart.elasticX()) {\n _x.domain([_chart.xAxisMin(), _chart.xAxisMax()]);\n }\n } else { // _chart.isOrdinal()\n if (_chart.elasticX() || _x.domain().length === 0) {\n _x.domain(_chart._ordinalXDomain());\n }\n }\n\n // has the domain changed?\n var xdom = _x.domain();\n if (render || compareDomains(_lastXDomain, xdom)) {\n _chart.rescale();\n }\n _lastXDomain = xdom;\n\n // please can't we always use rangeBands for bar charts?\n if (_chart.isOrdinal()) {\n _x.rangeBands([0, _chart.xAxisLength()], _rangeBandPadding,\n _chart._useOuterPadding() ? _outerRangeBandPadding : 0);\n } else {\n _x.range([0, _chart.xAxisLength()]);\n }\n\n _xAxis = _xAxis.scale(_chart.x());\n\n renderVerticalGridLines(g);\n }\n\n _chart.renderXAxis = function (g) {\n var axisXG = g.select('g.x');\n\n if (axisXG.empty()) {\n axisXG = g.append('g')\n .attr('class', 'axis x')\n .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart._xAxisY() + ')');\n }\n\n var axisXLab = g.select('text.' + X_AXIS_LABEL_CLASS);\n if (axisXLab.empty() && _chart.xAxisLabel()) {\n axisXLab = g.append('text')\n .attr('class', X_AXIS_LABEL_CLASS)\n .attr('transform', 'translate(' + (_chart.margins().left + _chart.xAxisLength() / 2) + ',' +\n (_chart.height() - _xAxisLabelPadding) + ')')\n .attr('text-anchor', 'middle');\n }\n if (_chart.xAxisLabel() && axisXLab.text() !== _chart.xAxisLabel()) {\n axisXLab.text(_chart.xAxisLabel());\n }\n\n dc.transition(axisXG, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart._xAxisY() + ')')\n .call(_xAxis);\n dc.transition(axisXLab, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', 'translate(' + (_chart.margins().left + _chart.xAxisLength() / 2) + ',' +\n (_chart.height() - _xAxisLabelPadding) + ')');\n };\n\n function renderVerticalGridLines (g) {\n var gridLineG = g.select('g.' + VERTICAL_CLASS);\n\n if (_renderVerticalGridLine) {\n if (gridLineG.empty()) {\n gridLineG = g.insert('g', ':first-child')\n .attr('class', GRID_LINE_CLASS + ' ' + VERTICAL_CLASS)\n .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart.margins().top + ')');\n }\n\n var ticks = _xAxis.tickValues() ? _xAxis.tickValues() :\n (typeof _x.ticks === 'function' ? _x.ticks(_xAxis.ticks()[0]) : _x.domain());\n\n var lines = gridLineG.selectAll('line')\n .data(ticks);\n\n // enter\n var linesGEnter = lines.enter()\n .append('line')\n .attr('x1', function (d) {\n return _x(d);\n })\n .attr('y1', _chart._xAxisY() - _chart.margins().top)\n .attr('x2', function (d) {\n return _x(d);\n })\n .attr('y2', 0)\n .attr('opacity', 0);\n dc.transition(linesGEnter, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('opacity', 1);\n\n // update\n dc.transition(lines, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('x1', function (d) {\n return _x(d);\n })\n .attr('y1', _chart._xAxisY() - _chart.margins().top)\n .attr('x2', function (d) {\n return _x(d);\n })\n .attr('y2', 0);\n\n // exit\n lines.exit().remove();\n } else {\n gridLineG.selectAll('line').remove();\n }\n }\n\n _chart._xAxisY = function () {\n return (_chart.height() - _chart.margins().bottom);\n };\n\n _chart.xAxisLength = function () {\n return _chart.effectiveWidth();\n };\n\n /**\n * Set or get the x axis label. If setting the label, you may optionally include additional padding to\n * the margin to make room for the label. By default the padded is set to 12 to accomodate the text height.\n * @method xAxisLabel\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {String} [labelText]\n * @param {Number} [padding=12]\n * @returns {String}\n */\n _chart.xAxisLabel = function (labelText, padding) {\n if (!arguments.length) {\n return _xAxisLabel;\n }\n _xAxisLabel = labelText;\n _chart.margins().bottom -= _xAxisLabelPadding;\n _xAxisLabelPadding = (padding === undefined) ? DEFAULT_AXIS_LABEL_PADDING : padding;\n _chart.margins().bottom += _xAxisLabelPadding;\n return _chart;\n };\n\n _chart._prepareYAxis = function (g) {\n if (_y === undefined || _chart.elasticY()) {\n if (_y === undefined) {\n _y = d3.scale.linear();\n }\n var min = _chart.yAxisMin() || 0,\n max = _chart.yAxisMax() || 0;\n _y.domain([min, max]).rangeRound([_chart.yAxisHeight(), 0]);\n }\n\n _y.range([_chart.yAxisHeight(), 0]);\n _yAxis = _yAxis.scale(_y);\n\n if (_useRightYAxis) {\n _yAxis.orient('right');\n }\n\n _chart._renderHorizontalGridLinesForAxis(g, _y, _yAxis);\n };\n\n _chart.renderYAxisLabel = function (axisClass, text, rotation, labelXPosition) {\n labelXPosition = labelXPosition || _yAxisLabelPadding;\n\n var axisYLab = _chart.g().select('text.' + Y_AXIS_LABEL_CLASS + '.' + axisClass + '-label');\n var labelYPosition = (_chart.margins().top + _chart.yAxisHeight() / 2);\n if (axisYLab.empty() && text) {\n axisYLab = _chart.g().append('text')\n .attr('transform', 'translate(' + labelXPosition + ',' + labelYPosition + '),rotate(' + rotation + ')')\n .attr('class', Y_AXIS_LABEL_CLASS + ' ' + axisClass + '-label')\n .attr('text-anchor', 'middle')\n .text(text);\n }\n if (text && axisYLab.text() !== text) {\n axisYLab.text(text);\n }\n dc.transition(axisYLab, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', 'translate(' + labelXPosition + ',' + labelYPosition + '),rotate(' + rotation + ')');\n };\n\n _chart.renderYAxisAt = function (axisClass, axis, position) {\n var axisYG = _chart.g().select('g.' + axisClass);\n if (axisYG.empty()) {\n axisYG = _chart.g().append('g')\n .attr('class', 'axis ' + axisClass)\n .attr('transform', 'translate(' + position + ',' + _chart.margins().top + ')');\n }\n\n dc.transition(axisYG, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', 'translate(' + position + ',' + _chart.margins().top + ')')\n .call(axis);\n };\n\n _chart.renderYAxis = function () {\n var axisPosition = _useRightYAxis ? (_chart.width() - _chart.margins().right) : _chart._yAxisX();\n _chart.renderYAxisAt('y', _yAxis, axisPosition);\n var labelPosition = _useRightYAxis ? (_chart.width() - _yAxisLabelPadding) : _yAxisLabelPadding;\n var rotation = _useRightYAxis ? 90 : -90;\n _chart.renderYAxisLabel('y', _chart.yAxisLabel(), rotation, labelPosition);\n };\n\n _chart._renderHorizontalGridLinesForAxis = function (g, scale, axis) {\n var gridLineG = g.select('g.' + HORIZONTAL_CLASS);\n\n if (_renderHorizontalGridLine) {\n var ticks = axis.tickValues() ? axis.tickValues() : scale.ticks(axis.ticks()[0]);\n\n if (gridLineG.empty()) {\n gridLineG = g.insert('g', ':first-child')\n .attr('class', GRID_LINE_CLASS + ' ' + HORIZONTAL_CLASS)\n .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart.margins().top + ')');\n }\n\n var lines = gridLineG.selectAll('line')\n .data(ticks);\n\n // enter\n var linesGEnter = lines.enter()\n .append('line')\n .attr('x1', 1)\n .attr('y1', function (d) {\n return scale(d);\n })\n .attr('x2', _chart.xAxisLength())\n .attr('y2', function (d) {\n return scale(d);\n })\n .attr('opacity', 0);\n dc.transition(linesGEnter, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('opacity', 1);\n\n // update\n dc.transition(lines, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('x1', 1)\n .attr('y1', function (d) {\n return scale(d);\n })\n .attr('x2', _chart.xAxisLength())\n .attr('y2', function (d) {\n return scale(d);\n });\n\n // exit\n lines.exit().remove();\n } else {\n gridLineG.selectAll('line').remove();\n }\n };\n\n _chart._yAxisX = function () {\n return _chart.useRightYAxis() ? _chart.width() - _chart.margins().right : _chart.margins().left;\n };\n\n /**\n * Set or get the y axis label. If setting the label, you may optionally include additional padding\n * to the margin to make room for the label. By default the padding is set to 12 to accommodate the\n * text height.\n * @method yAxisLabel\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {String} [labelText]\n * @param {Number} [padding=12]\n * @returns {String|dc.coordinateGridMixin}\n */\n _chart.yAxisLabel = function (labelText, padding) {\n if (!arguments.length) {\n return _yAxisLabel;\n }\n _yAxisLabel = labelText;\n _chart.margins().left -= _yAxisLabelPadding;\n _yAxisLabelPadding = (padding === undefined) ? DEFAULT_AXIS_LABEL_PADDING : padding;\n _chart.margins().left += _yAxisLabelPadding;\n return _chart;\n };\n\n /**\n * Get or set the y scale. The y scale is typically automatically determined by the chart implementation.\n * @method y\n * @memberof dc.coordinateGridMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale}\n * @param {d3.scale} [yScale]\n * @returns {d3.scale|dc.coordinateGridMixin}\n */\n _chart.y = function (yScale) {\n if (!arguments.length) {\n return _y;\n }\n _y = yScale;\n _chart.rescale();\n return _chart;\n };\n\n /**\n * Set or get the y axis used by the coordinate grid chart instance. This function is most useful\n * when y axis customization is required. The y axis in dc.js is simply an instance of a [d3 axis\n * object](https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis); therefore it supports any\n * valid d3 axis manipulation.\n *\n * **Caution**: The y axis is usually generated internally by dc; resetting it may cause\n * unexpected results. Note also that when used as a getter, this function is not chainable: it\n * returns the axis, not the chart,\n * {@link https://github.com/dc-js/dc.js/wiki/FAQ#why-does-everything-break-after-a-call-to-xaxis-or-yaxis\n * so attempting to call chart functions after calling `.yAxis()` will fail}.\n * @method yAxis\n * @memberof dc.coordinateGridMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis}\n * @example\n * // customize y axis tick format\n * chart.yAxis().tickFormat(function(v) {return v + '%';});\n * // customize y axis tick values\n * chart.yAxis().tickValues([0, 100, 200, 300]);\n * @param {d3.svg.axis} [yAxis=d3.svg.axis().orient('left')]\n * @returns {d3.svg.axis|dc.coordinateGridMixin}\n */\n _chart.yAxis = function (yAxis) {\n if (!arguments.length) {\n return _yAxis;\n }\n _yAxis = yAxis;\n return _chart;\n };\n\n /**\n * Turn on/off elastic y axis behavior. If y axis elasticity is turned on, then the grid chart will\n * attempt to recalculate the y axis range whenever a redraw event is triggered.\n * @method elasticY\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [elasticY=false]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.elasticY = function (elasticY) {\n if (!arguments.length) {\n return _yElasticity;\n }\n _yElasticity = elasticY;\n return _chart;\n };\n\n /**\n * Turn on/off horizontal grid lines.\n * @method renderHorizontalGridLines\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [renderHorizontalGridLines=false]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.renderHorizontalGridLines = function (renderHorizontalGridLines) {\n if (!arguments.length) {\n return _renderHorizontalGridLine;\n }\n _renderHorizontalGridLine = renderHorizontalGridLines;\n return _chart;\n };\n\n /**\n * Turn on/off vertical grid lines.\n * @method renderVerticalGridLines\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [renderVerticalGridLines=false]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.renderVerticalGridLines = function (renderVerticalGridLines) {\n if (!arguments.length) {\n return _renderVerticalGridLine;\n }\n _renderVerticalGridLine = renderVerticalGridLines;\n return _chart;\n };\n\n /**\n * Calculates the minimum x value to display in the chart. Includes xAxisPadding if set.\n * @method xAxisMin\n * @memberof dc.coordinateGridMixin\n * @instance\n * @returns {*}\n */\n _chart.xAxisMin = function () {\n var min = d3.min(_chart.data(), function (e) {\n return _chart.keyAccessor()(e);\n });\n return dc.utils.subtract(min, _xAxisPadding, _xAxisPaddingUnit);\n };\n\n /**\n * Calculates the maximum x value to display in the chart. Includes xAxisPadding if set.\n * @method xAxisMax\n * @memberof dc.coordinateGridMixin\n * @instance\n * @returns {*}\n */\n _chart.xAxisMax = function () {\n var max = d3.max(_chart.data(), function (e) {\n return _chart.keyAccessor()(e);\n });\n return dc.utils.add(max, _xAxisPadding, _xAxisPaddingUnit);\n };\n\n /**\n * Calculates the minimum y value to display in the chart. Includes yAxisPadding if set.\n * @method yAxisMin\n * @memberof dc.coordinateGridMixin\n * @instance\n * @returns {*}\n */\n _chart.yAxisMin = function () {\n var min = d3.min(_chart.data(), function (e) {\n return _chart.valueAccessor()(e);\n });\n return dc.utils.subtract(min, _yAxisPadding);\n };\n\n /**\n * Calculates the maximum y value to display in the chart. Includes yAxisPadding if set.\n * @method yAxisMax\n * @memberof dc.coordinateGridMixin\n * @instance\n * @returns {*}\n */\n _chart.yAxisMax = function () {\n var max = d3.max(_chart.data(), function (e) {\n return _chart.valueAccessor()(e);\n });\n return dc.utils.add(max, _yAxisPadding);\n };\n\n /**\n * Set or get y axis padding for the elastic y axis. The padding will be added to the top and\n * bottom of the y axis if elasticY is turned on; otherwise it is ignored.\n *\n * Padding can be an integer or percentage in string (e.g. '10%'). Padding can be applied to\n * number or date axes. When padding a date axis, an integer represents number of days being padded\n * and a percentage string will be treated the same as an integer.\n * @method yAxisPadding\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Number|String} [padding=0]\n * @returns {Number|dc.coordinateGridMixin}\n */\n _chart.yAxisPadding = function (padding) {\n if (!arguments.length) {\n return _yAxisPadding;\n }\n _yAxisPadding = padding;\n return _chart;\n };\n\n _chart.yAxisHeight = function () {\n return _chart.effectiveHeight();\n };\n\n /**\n * Set or get the rounding function used to quantize the selection when brushing is enabled.\n * @method round\n * @memberof dc.coordinateGridMixin\n * @instance\n * @example\n * // set x unit round to by month, this will make sure range selection brush will\n * // select whole months\n * chart.round(d3.time.month.round);\n * @param {Function} [round]\n * @returns {Function|dc.coordinateGridMixin}\n */\n _chart.round = function (round) {\n if (!arguments.length) {\n return _round;\n }\n _round = round;\n return _chart;\n };\n\n _chart._rangeBandPadding = function (_) {\n if (!arguments.length) {\n return _rangeBandPadding;\n }\n _rangeBandPadding = _;\n return _chart;\n };\n\n _chart._outerRangeBandPadding = function (_) {\n if (!arguments.length) {\n return _outerRangeBandPadding;\n }\n _outerRangeBandPadding = _;\n return _chart;\n };\n\n dc.override(_chart, 'filter', function (_) {\n if (!arguments.length) {\n return _chart._filter();\n }\n\n _chart._filter(_);\n\n if (_) {\n _chart.brush().extent(_);\n } else {\n _chart.brush().clear();\n }\n\n return _chart;\n });\n\n _chart.brush = function (_) {\n if (!arguments.length) {\n return _brush;\n }\n _brush = _;\n return _chart;\n };\n\n function brushHeight () {\n return _chart._xAxisY() - _chart.margins().top;\n }\n\n _chart.renderBrush = function (g) {\n if (_brushOn) {\n _brush.on('brush', _chart._brushing);\n _brush.on('brushstart', _chart._disableMouseZoom);\n _brush.on('brushend', configureMouseZoom);\n\n var gBrush = g.append('g')\n .attr('class', 'brush')\n .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart.margins().top + ')')\n .call(_brush.x(_chart.x()));\n _chart.setBrushY(gBrush, false);\n _chart.setHandlePaths(gBrush);\n\n if (_chart.hasFilter()) {\n _chart.redrawBrush(g, false);\n }\n }\n };\n\n _chart.setHandlePaths = function (gBrush) {\n gBrush.selectAll('.resize').append('path').attr('d', _chart.resizeHandlePath);\n };\n\n _chart.setBrushY = function (gBrush) {\n gBrush.selectAll('rect')\n .attr('height', brushHeight());\n gBrush.selectAll('.resize path')\n .attr('d', _chart.resizeHandlePath);\n };\n\n _chart.extendBrush = function () {\n var extent = _brush.extent();\n if (_chart.round()) {\n extent[0] = extent.map(_chart.round())[0];\n extent[1] = extent.map(_chart.round())[1];\n\n _g.select('.brush')\n .call(_brush.extent(extent));\n }\n return extent;\n };\n\n _chart.brushIsEmpty = function (extent) {\n return _brush.empty() || !extent || extent[1] <= extent[0];\n };\n\n _chart._brushing = function () {\n var extent = _chart.extendBrush();\n\n _chart.redrawBrush(_g, false);\n\n if (_chart.brushIsEmpty(extent)) {\n dc.events.trigger(function () {\n _chart.filter(null);\n _chart.redrawGroup();\n }, dc.constants.EVENT_DELAY);\n } else {\n var rangedFilter = dc.filters.RangedFilter(extent[0], extent[1]);\n\n dc.events.trigger(function () {\n _chart.replaceFilter(rangedFilter);\n _chart.redrawGroup();\n }, dc.constants.EVENT_DELAY);\n }\n };\n\n _chart.redrawBrush = function (g, doTransition) {\n if (_brushOn) {\n if (_chart.filter() && _chart.brush().empty()) {\n _chart.brush().extent(_chart.filter());\n }\n\n var gBrush = dc.optionalTransition(doTransition, _chart.transitionDuration(), _chart.transitionDelay())(g.select('g.brush'));\n _chart.setBrushY(gBrush);\n gBrush.call(_chart.brush()\n .x(_chart.x())\n .extent(_chart.brush().extent()));\n }\n\n _chart.fadeDeselectedArea();\n };\n\n _chart.fadeDeselectedArea = function () {\n // do nothing, sub-chart should override this function\n };\n\n // borrowed from Crossfilter example\n _chart.resizeHandlePath = function (d) {\n var e = +(d === 'e'), x = e ? 1 : -1, y = brushHeight() / 3;\n return 'M' + (0.5 * x) + ',' + y +\n 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6) +\n 'V' + (2 * y - 6) +\n 'A6,6 0 0 ' + e + ' ' + (0.5 * x) + ',' + (2 * y) +\n 'Z' +\n 'M' + (2.5 * x) + ',' + (y + 8) +\n 'V' + (2 * y - 8) +\n 'M' + (4.5 * x) + ',' + (y + 8) +\n 'V' + (2 * y - 8);\n };\n\n function getClipPathId () {\n return _chart.anchorName().replace(/[ .#=\\[\\]\"]/g, '-') + '-clip';\n }\n\n /**\n * Get or set the padding in pixels for the clip path. Once set padding will be applied evenly to\n * the top, left, right, and bottom when the clip path is generated. If set to zero, the clip area\n * will be exactly the chart body area minus the margins.\n * @method clipPadding\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Number} [padding=5]\n * @returns {Number|dc.coordinateGridMixin}\n */\n _chart.clipPadding = function (padding) {\n if (!arguments.length) {\n return _clipPadding;\n }\n _clipPadding = padding;\n return _chart;\n };\n\n function generateClipPath () {\n var defs = dc.utils.appendOrSelect(_parent, 'defs');\n // cannot select elements; bug in WebKit, must select by id\n // https://groups.google.com/forum/#!topic/d3-js/6EpAzQ2gU9I\n var id = getClipPathId();\n var chartBodyClip = dc.utils.appendOrSelect(defs, '#' + id, 'clipPath').attr('id', id);\n\n var padding = _clipPadding * 2;\n\n dc.utils.appendOrSelect(chartBodyClip, 'rect')\n .attr('width', _chart.xAxisLength() + padding)\n .attr('height', _chart.yAxisHeight() + padding)\n .attr('transform', 'translate(-' + _clipPadding + ', -' + _clipPadding + ')');\n }\n\n _chart._preprocessData = function () {};\n\n _chart._doRender = function () {\n _chart.resetSvg();\n\n _chart._preprocessData();\n\n _chart._generateG();\n generateClipPath();\n\n drawChart(true);\n\n configureMouseZoom();\n\n return _chart;\n };\n\n _chart._doRedraw = function () {\n _chart._preprocessData();\n\n drawChart(false);\n generateClipPath();\n\n return _chart;\n };\n\n function drawChart (render) {\n if (_chart.isOrdinal()) {\n _brushOn = false;\n }\n\n prepareXAxis(_chart.g(), render);\n _chart._prepareYAxis(_chart.g());\n\n _chart.plotData();\n\n if (_chart.elasticX() || _resizing || render) {\n _chart.renderXAxis(_chart.g());\n }\n\n if (_chart.elasticY() || _resizing || render) {\n _chart.renderYAxis(_chart.g());\n }\n\n if (render) {\n _chart.renderBrush(_chart.g(), false);\n } else {\n _chart.redrawBrush(_chart.g(), _resizing);\n }\n _chart.fadeDeselectedArea();\n _resizing = false;\n }\n\n function configureMouseZoom () {\n if (_mouseZoomable) {\n _chart._enableMouseZoom();\n } else if (_hasBeenMouseZoomable) {\n _chart._disableMouseZoom();\n }\n }\n\n _chart._enableMouseZoom = function () {\n _hasBeenMouseZoomable = true;\n _zoom.x(_chart.x())\n .scaleExtent(_zoomScale)\n .size([_chart.width(), _chart.height()])\n .duration(_chart.transitionDuration());\n _chart.root().call(_zoom);\n };\n\n _chart._disableMouseZoom = function () {\n _chart.root().call(_nullZoom);\n };\n\n function zoomHandler () {\n _refocused = true;\n if (_zoomOutRestrict) {\n var constraint = _xOriginalDomain;\n if (_rangeChart) {\n constraint = intersectExtents(constraint, _rangeChart.x().domain());\n }\n var constrained = constrainExtent(_chart.x().domain(), constraint);\n if (constrained) {\n _chart.x().domain(constrained);\n }\n }\n\n var domain = _chart.x().domain();\n var domFilter = dc.filters.RangedFilter(domain[0], domain[1]);\n\n _chart.replaceFilter(domFilter);\n _chart.rescale();\n _chart.redraw();\n\n if (_rangeChart && !rangesEqual(_chart.filter(), _rangeChart.filter())) {\n dc.events.trigger(function () {\n _rangeChart.replaceFilter(domFilter);\n _rangeChart.redraw();\n });\n }\n\n _chart._invokeZoomedListener();\n\n dc.events.trigger(function () {\n _chart.redrawGroup();\n }, dc.constants.EVENT_DELAY);\n\n _refocused = !rangesEqual(domain, _xOriginalDomain);\n }\n\n function intersectExtents (ext1, ext2) {\n if (ext1[0] > ext2[1] || ext1[1] < ext2[0]) {\n console.warn('could not intersect extents');\n }\n return [Math.max(ext1[0], ext2[0]), Math.min(ext1[1], ext2[1])];\n }\n\n function constrainExtent (extent, constraint) {\n var size = extent[1] - extent[0];\n if (extent[0] < constraint[0]) {\n return [constraint[0], Math.min(constraint[1], dc.utils.add(constraint[0], size, 'millis'))];\n } else if (extent[1] > constraint[1]) {\n return [Math.max(constraint[0], dc.utils.subtract(constraint[1], size, 'millis')), constraint[1]];\n } else {\n return null;\n }\n }\n\n /**\n * Zoom this chart to focus on the given range. The given range should be an array containing only\n * 2 elements (`[start, end]`) defining a range in the x domain. If the range is not given or set\n * to null, then the zoom will be reset. _For focus to work elasticX has to be turned off;\n * otherwise focus will be ignored.\n * @method focus\n * @memberof dc.coordinateGridMixin\n * @instance\n * @example\n * chart.on('renderlet', function(chart) {\n * // smooth the rendering through event throttling\n * dc.events.trigger(function(){\n * // focus some other chart to the range selected by user on this chart\n * someOtherChart.focus(chart.filter());\n * });\n * })\n * @param {Array} [range]\n */\n _chart.focus = function (range) {\n if (hasRangeSelected(range)) {\n _chart.x().domain(range);\n } else {\n _chart.x().domain(_xOriginalDomain);\n }\n\n _zoom.x(_chart.x());\n zoomHandler();\n };\n\n _chart.refocused = function () {\n return _refocused;\n };\n\n _chart.focusChart = function (c) {\n if (!arguments.length) {\n return _focusChart;\n }\n _focusChart = c;\n _chart.on('filtered', function (chart) {\n if (!chart.filter()) {\n dc.events.trigger(function () {\n _focusChart.x().domain(_focusChart.xOriginalDomain());\n });\n } else if (!rangesEqual(chart.filter(), _focusChart.filter())) {\n dc.events.trigger(function () {\n _focusChart.focus(chart.filter());\n });\n }\n });\n return _chart;\n };\n\n function rangesEqual (range1, range2) {\n if (!range1 && !range2) {\n return true;\n } else if (!range1 || !range2) {\n return false;\n } else if (range1.length === 0 && range2.length === 0) {\n return true;\n } else if (range1[0].valueOf() === range2[0].valueOf() &&\n range1[1].valueOf() === range2[1].valueOf()) {\n return true;\n }\n return false;\n }\n\n /**\n * Turn on/off the brush-based range filter. When brushing is on then user can drag the mouse\n * across a chart with a quantitative scale to perform range filtering based on the extent of the\n * brush, or click on the bars of an ordinal bar chart or slices of a pie chart to filter and\n * un-filter them. However turning on the brush filter will disable other interactive elements on\n * the chart such as highlighting, tool tips, and reference lines. Zooming will still be possible\n * if enabled, but only via scrolling (panning will be disabled.)\n * @method brushOn\n * @memberof dc.coordinateGridMixin\n * @instance\n * @param {Boolean} [brushOn=true]\n * @returns {Boolean|dc.coordinateGridMixin}\n */\n _chart.brushOn = function (brushOn) {\n if (!arguments.length) {\n return _brushOn;\n }\n _brushOn = brushOn;\n return _chart;\n };\n\n function hasRangeSelected (range) {\n return range instanceof Array && range.length > 1;\n }\n\n return _chart;\n};\n\n/**\n * Stack Mixin is an mixin that provides cross-chart support of stackability using d3.layout.stack.\n * @name stackMixin\n * @memberof dc\n * @mixin\n * @param {Object} _chart\n * @returns {dc.stackMixin}\n */\ndc.stackMixin = function (_chart) {\n\n function prepareValues (layer, layerIdx) {\n var valAccessor = layer.accessor || _chart.valueAccessor();\n layer.name = String(layer.name || layerIdx);\n layer.values = layer.group.all().map(function (d, i) {\n return {\n x: _chart.keyAccessor()(d, i),\n y: layer.hidden ? null : valAccessor(d, i),\n data: d,\n layer: layer.name,\n hidden: layer.hidden\n };\n });\n\n layer.values = layer.values.filter(domainFilter());\n return layer.values;\n }\n\n var _stackLayout = d3.layout.stack()\n .values(prepareValues);\n\n var _stack = [];\n var _titles = {};\n\n var _hidableStacks = false;\n var _evadeDomainFilter = false;\n\n function domainFilter () {\n if (!_chart.x() || _evadeDomainFilter) {\n return d3.functor(true);\n }\n var xDomain = _chart.x().domain();\n if (_chart.isOrdinal()) {\n // TODO #416\n //var domainSet = d3.set(xDomain);\n return function () {\n return true; //domainSet.has(p.x);\n };\n }\n if (_chart.elasticX()) {\n return function () { return true; };\n }\n return function (p) {\n //return true;\n return p.x >= xDomain[0] && p.x <= xDomain[xDomain.length - 1];\n };\n }\n\n /**\n * Stack a new crossfilter group onto this chart with an optional custom value accessor. All stacks\n * in the same chart will share the same key accessor and therefore the same set of keys.\n *\n * For example, in a stacked bar chart, the bars of each stack will be positioned using the same set\n * of keys on the x axis, while stacked vertically. If name is specified then it will be used to\n * generate the legend label.\n * @method stack\n * @memberof dc.stackMixin\n * @instance\n * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group-map-reduce crossfilter.group}\n * @example\n * // stack group using default accessor\n * chart.stack(valueSumGroup)\n * // stack group using custom accessor\n * .stack(avgByDayGroup, function(d){return d.value.avgByDay;});\n * @param {crossfilter.group} group\n * @param {String} [name]\n * @param {Function} [accessor]\n * @returns {Array<{group: crossfilter.group, name: String, accessor: Function}>|dc.stackMixin}\n */\n _chart.stack = function (group, name, accessor) {\n if (!arguments.length) {\n return _stack;\n }\n\n if (arguments.length <= 2) {\n accessor = name;\n }\n\n var layer = {group: group};\n if (typeof name === 'string') {\n layer.name = name;\n }\n if (typeof accessor === 'function') {\n layer.accessor = accessor;\n }\n _stack.push(layer);\n\n return _chart;\n };\n\n dc.override(_chart, 'group', function (g, n, f) {\n if (!arguments.length) {\n return _chart._group();\n }\n _stack = [];\n _titles = {};\n _chart.stack(g, n);\n if (f) {\n _chart.valueAccessor(f);\n }\n return _chart._group(g, n);\n });\n\n /**\n * Allow named stacks to be hidden or shown by clicking on legend items.\n * This does not affect the behavior of hideStack or showStack.\n * @method hidableStacks\n * @memberof dc.stackMixin\n * @instance\n * @param {Boolean} [hidableStacks=false]\n * @returns {Boolean|dc.stackMixin}\n */\n _chart.hidableStacks = function (hidableStacks) {\n if (!arguments.length) {\n return _hidableStacks;\n }\n _hidableStacks = hidableStacks;\n return _chart;\n };\n\n function findLayerByName (n) {\n var i = _stack.map(dc.pluck('name')).indexOf(n);\n return _stack[i];\n }\n\n /**\n * Hide all stacks on the chart with the given name.\n * The chart must be re-rendered for this change to appear.\n * @method hideStack\n * @memberof dc.stackMixin\n * @instance\n * @param {String} stackName\n * @returns {dc.stackMixin}\n */\n _chart.hideStack = function (stackName) {\n var layer = findLayerByName(stackName);\n if (layer) {\n layer.hidden = true;\n }\n return _chart;\n };\n\n /**\n * Show all stacks on the chart with the given name.\n * The chart must be re-rendered for this change to appear.\n * @method showStack\n * @memberof dc.stackMixin\n * @instance\n * @param {String} stackName\n * @returns {dc.stackMixin}\n */\n _chart.showStack = function (stackName) {\n var layer = findLayerByName(stackName);\n if (layer) {\n layer.hidden = false;\n }\n return _chart;\n };\n\n _chart.getValueAccessorByIndex = function (index) {\n return _stack[index].accessor || _chart.valueAccessor();\n };\n\n _chart.yAxisMin = function () {\n var min = d3.min(flattenStack(), function (p) {\n return (p.y < 0) ? (p.y + p.y0) : p.y0;\n });\n\n return dc.utils.subtract(min, _chart.yAxisPadding());\n\n };\n\n _chart.yAxisMax = function () {\n var max = d3.max(flattenStack(), function (p) {\n return (p.y > 0) ? (p.y + p.y0) : p.y0;\n });\n\n return dc.utils.add(max, _chart.yAxisPadding());\n };\n\n function flattenStack () {\n var valueses = _chart.data().map(function (layer) { return layer.values; });\n return Array.prototype.concat.apply([], valueses);\n }\n\n _chart.xAxisMin = function () {\n var min = d3.min(flattenStack(), dc.pluck('x'));\n return dc.utils.subtract(min, _chart.xAxisPadding(), _chart.xAxisPaddingUnit());\n };\n\n _chart.xAxisMax = function () {\n var max = d3.max(flattenStack(), dc.pluck('x'));\n return dc.utils.add(max, _chart.xAxisPadding(), _chart.xAxisPaddingUnit());\n };\n\n /**\n * Set or get the title function. Chart class will use this function to render svg title (usually interpreted by\n * browser as tooltips) for each child element in the chart, i.e. a slice in a pie chart or a bubble in a bubble chart.\n * Almost every chart supports title function however in grid coordinate chart you need to turn off brush in order to\n * use title otherwise the brush layer will block tooltip trigger.\n *\n * If the first argument is a stack name, the title function will get or set the title for that stack. If stackName\n * is not provided, the first stack is implied.\n * @method title\n * @memberof dc.stackMixin\n * @instance\n * @example\n * // set a title function on 'first stack'\n * chart.title('first stack', function(d) { return d.key + ': ' + d.value; });\n * // get a title function from 'second stack'\n * var secondTitleFunction = chart.title('second stack');\n * @param {String} [stackName]\n * @param {Function} [titleAccessor]\n * @returns {String|dc.stackMixin}\n */\n dc.override(_chart, 'title', function (stackName, titleAccessor) {\n if (!stackName) {\n return _chart._title();\n }\n\n if (typeof stackName === 'function') {\n return _chart._title(stackName);\n }\n if (stackName === _chart._groupName && typeof titleAccessor === 'function') {\n return _chart._title(titleAccessor);\n }\n\n if (typeof titleAccessor !== 'function') {\n return _titles[stackName] || _chart._title();\n }\n\n _titles[stackName] = titleAccessor;\n\n return _chart;\n });\n\n /**\n * Gets or sets the stack layout algorithm, which computes a baseline for each stack and\n * propagates it to the next.\n * @method stackLayout\n * @memberof dc.stackMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Stack-Layout.md d3.layout.stack}\n * @param {Function} [stack=d3.layout.stack]\n * @returns {Function|dc.stackMixin}\n */\n _chart.stackLayout = function (stack) {\n if (!arguments.length) {\n return _stackLayout;\n }\n _stackLayout = stack;\n if (_stackLayout.values() === d3.layout.stack().values()) {\n _stackLayout.values(prepareValues);\n }\n return _chart;\n };\n\n /**\n * Since dc.js 2.0, there has been {@link https://github.com/dc-js/dc.js/issues/949 an issue}\n * where points are filtered to the current domain. While this is a useful optimization, it is\n * incorrectly implemented: the next point outside the domain is required in order to draw lines\n * that are clipped to the bounds, as well as bars that are partly clipped.\n *\n * A fix will be included in dc.js 2.1.x, but a workaround is needed for dc.js 2.0 and until\n * that fix is published, so set this flag to skip any filtering of points.\n *\n * Once the bug is fixed, this flag will have no effect, and it will be deprecated.\n * @method evadeDomainFilter\n * @memberof dc.stackMixin\n * @instance\n * @param {Boolean} [evadeDomainFilter=false]\n * @returns {Boolean|dc.stackMixin}\n */\n _chart.evadeDomainFilter = function (evadeDomainFilter) {\n if (!arguments.length) {\n return _evadeDomainFilter;\n }\n _evadeDomainFilter = evadeDomainFilter;\n return _chart;\n };\n\n function visability (l) {\n return !l.hidden;\n }\n\n _chart.data(function () {\n var layers = _stack.filter(visability);\n return layers.length ? _chart.stackLayout()(layers) : [];\n });\n\n _chart._ordinalXDomain = function () {\n var flat = flattenStack().map(dc.pluck('data'));\n var ordered = _chart._computeOrderedGroups(flat);\n return ordered.map(_chart.keyAccessor());\n };\n\n _chart.colorAccessor(function (d) {\n var layer = this.layer || this.name || d.name || d.layer;\n return layer;\n });\n\n _chart.legendables = function () {\n return _stack.map(function (layer, i) {\n return {\n chart: _chart,\n name: layer.name,\n hidden: layer.hidden || false,\n color: _chart.getColor.call(layer, layer.values, i)\n };\n });\n };\n\n _chart.isLegendableHidden = function (d) {\n var layer = findLayerByName(d.name);\n return layer ? layer.hidden : false;\n };\n\n _chart.legendToggle = function (d) {\n if (_hidableStacks) {\n if (_chart.isLegendableHidden(d)) {\n _chart.showStack(d.name);\n } else {\n _chart.hideStack(d.name);\n }\n //_chart.redraw();\n _chart.renderGroup();\n }\n };\n\n return _chart;\n};\n\n/**\n * Cap is a mixin that groups small data elements below a _cap_ into an *others* grouping for both the\n * Row and Pie Charts.\n *\n * The top ordered elements in the group up to the cap amount will be kept in the chart, and the rest\n * will be replaced with an *others* element, with value equal to the sum of the replaced values. The\n * keys of the elements below the cap limit are recorded in order to filter by those keys when the\n * others* element is clicked.\n * @name capMixin\n * @memberof dc\n * @mixin\n * @param {Object} _chart\n * @returns {dc.capMixin}\n */\ndc.capMixin = function (_chart) {\n\n var _cap = Infinity;\n\n var _othersLabel = 'Others';\n\n var _othersGrouper = function (topRows) {\n var topRowsSum = d3.sum(topRows, _chart.valueAccessor()),\n allRows = _chart.group().all(),\n allRowsSum = d3.sum(allRows, _chart.valueAccessor()),\n topKeys = topRows.map(_chart.keyAccessor()),\n allKeys = allRows.map(_chart.keyAccessor()),\n topSet = d3.set(topKeys),\n others = allKeys.filter(function (d) {return !topSet.has(d);});\n if (allRowsSum > topRowsSum) {\n return topRows.concat([{\n 'others': others,\n 'key': _chart.othersLabel(),\n 'value': allRowsSum - topRowsSum\n }]);\n }\n return topRows;\n };\n\n _chart.cappedKeyAccessor = function (d, i) {\n if (d.others) {\n return d.key;\n }\n return _chart.keyAccessor()(d, i);\n };\n\n _chart.cappedValueAccessor = function (d, i) {\n if (d.others) {\n return d.value;\n }\n return _chart.valueAccessor()(d, i);\n };\n\n _chart.data(function (group) {\n if (_cap === Infinity) {\n return _chart._computeOrderedGroups(group.all());\n } else {\n var topRows = group.top(_cap); // ordered by crossfilter group order (default value)\n topRows = _chart._computeOrderedGroups(topRows); // re-order using ordering (default key)\n if (_othersGrouper) {\n return _othersGrouper(topRows);\n }\n return topRows;\n }\n });\n\n /**\n * Get or set the count of elements to that will be included in the cap. If there is an\n * {@link dc.capMixin#othersGrouper othersGrouper}, any further elements will be combined in an\n * extra element with its name determined by {@link dc.capMixin#othersLabel othersLabel}.\n *\n * Up through dc.js 2.0.*, capping uses\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_top group.top(N)},\n * which selects the largest items according to\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_order group.order()}.\n * The chart then sorts the items according to {@link dc.baseMixin#ordering baseMixin.ordering()}.\n * So the two values essentially have to agree, but if the former is incorrect (it's easy to\n * forget about `group.order()`), the latter will mask the problem. This also makes\n * {@link https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups fake groups} difficult to\n * implement.\n *\n * In dc.js 2.1 and forward, only\n * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_all group.all()}\n * and `baseMixin.ordering()` are used.\n * @method cap\n * @memberof dc.capMixin\n * @instance\n * @param {Number} [count=Infinity]\n * @returns {Number|dc.capMixin}\n */\n _chart.cap = function (count) {\n if (!arguments.length) {\n return _cap;\n }\n _cap = count;\n return _chart;\n };\n\n /**\n * Get or set the label for *Others* slice when slices cap is specified.\n * @method othersLabel\n * @memberof dc.capMixin\n * @instance\n * @param {String} [label=\"Others\"]\n * @returns {String|dc.capMixin}\n */\n _chart.othersLabel = function (label) {\n if (!arguments.length) {\n return _othersLabel;\n }\n _othersLabel = label;\n return _chart;\n };\n\n /**\n * Get or set the grouper function that will perform the insertion of data for the *Others* slice\n * if the slices cap is specified. If set to a falsy value, no others will be added. By default the\n * grouper function computes the sum of all values below the cap.\n * @method othersGrouper\n * @memberof dc.capMixin\n * @instance\n * @example\n * // Do not show others\n * chart.othersGrouper(null);\n * // Default others grouper\n * chart.othersGrouper(function (topRows) {\n * var topRowsSum = d3.sum(topRows, _chart.valueAccessor()),\n * allRows = _chart.group().all(),\n * allRowsSum = d3.sum(allRows, _chart.valueAccessor()),\n * topKeys = topRows.map(_chart.keyAccessor()),\n * allKeys = allRows.map(_chart.keyAccessor()),\n * topSet = d3.set(topKeys),\n * others = allKeys.filter(function (d) {return !topSet.has(d);});\n * if (allRowsSum > topRowsSum) {\n * return topRows.concat([{\n * 'others': others,\n * 'key': _chart.othersLabel(),\n * 'value': allRowsSum - topRowsSum\n * }]);\n * }\n * return topRows;\n * });\n * // Custom others grouper\n * chart.othersGrouper(function (data) {\n * // compute the value for others, presumably the sum of all values below the cap\n * var othersSum = yourComputeOthersValueLogic(data)\n *\n * // the keys are needed to properly filter when the others element is clicked\n * var othersKeys = yourComputeOthersKeysArrayLogic(data);\n *\n * // add the others row to the dataset\n * data.push({'key': 'Others', 'value': othersSum, 'others': othersKeys });\n *\n * return data;\n * });\n * @param {Function} [grouperFunction]\n * @returns {Function|dc.capMixin}\n */\n _chart.othersGrouper = function (grouperFunction) {\n if (!arguments.length) {\n return _othersGrouper;\n }\n _othersGrouper = grouperFunction;\n return _chart;\n };\n\n dc.override(_chart, 'onClick', function (d) {\n if (d.others) {\n _chart.filter([d.others]);\n }\n _chart._onClick(d);\n });\n\n return _chart;\n};\n\n/**\n * This Mixin provides reusable functionalities for any chart that needs to visualize data using bubbles.\n * @name bubbleMixin\n * @memberof dc\n * @mixin\n * @mixes dc.colorMixin\n * @param {Object} _chart\n * @returns {dc.bubbleMixin}\n */\ndc.bubbleMixin = function (_chart) {\n var _maxBubbleRelativeSize = 0.3;\n var _minRadiusWithLabel = 10;\n\n _chart.BUBBLE_NODE_CLASS = 'node';\n _chart.BUBBLE_CLASS = 'bubble';\n _chart.MIN_RADIUS = 10;\n\n _chart = dc.colorMixin(_chart);\n\n _chart.renderLabel(true);\n\n _chart.data(function (group) {\n return group.top(Infinity);\n });\n\n var _r = d3.scale.linear().domain([0, 100]);\n\n var _rValueAccessor = function (d) {\n return d.r;\n };\n\n /**\n * Get or set the bubble radius scale. By default the bubble chart uses\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md#linear d3.scale.linear().domain([0, 100])}\n * as its radius scale.\n * @method r\n * @memberof dc.bubbleMixin\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale}\n * @param {d3.scale} [bubbleRadiusScale=d3.scale.linear().domain([0, 100])]\n * @returns {d3.scale|dc.bubbleMixin}\n */\n _chart.r = function (bubbleRadiusScale) {\n if (!arguments.length) {\n return _r;\n }\n _r = bubbleRadiusScale;\n return _chart;\n };\n\n /**\n * Get or set the radius value accessor function. If set, the radius value accessor function will\n * be used to retrieve a data value for each bubble. The data retrieved then will be mapped using\n * the r scale to the actual bubble radius. This allows you to encode a data dimension using bubble\n * size.\n * @method radiusValueAccessor\n * @memberof dc.bubbleMixin\n * @instance\n * @param {Function} [radiusValueAccessor]\n * @returns {Function|dc.bubbleMixin}\n */\n _chart.radiusValueAccessor = function (radiusValueAccessor) {\n if (!arguments.length) {\n return _rValueAccessor;\n }\n _rValueAccessor = radiusValueAccessor;\n return _chart;\n };\n\n _chart.rMin = function () {\n var min = d3.min(_chart.data(), function (e) {\n return _chart.radiusValueAccessor()(e);\n });\n return min;\n };\n\n _chart.rMax = function () {\n var max = d3.max(_chart.data(), function (e) {\n return _chart.radiusValueAccessor()(e);\n });\n return max;\n };\n\n _chart.bubbleR = function (d) {\n var value = _chart.radiusValueAccessor()(d);\n var r = _chart.r()(value);\n if (isNaN(r) || value <= 0) {\n r = 0;\n }\n return r;\n };\n\n var labelFunction = function (d) {\n return _chart.label()(d);\n };\n\n var shouldLabel = function (d) {\n return (_chart.bubbleR(d) > _minRadiusWithLabel);\n };\n\n var labelOpacity = function (d) {\n return shouldLabel(d) ? 1 : 0;\n };\n\n var labelPointerEvent = function (d) {\n return shouldLabel(d) ? 'all' : 'none';\n };\n\n _chart._doRenderLabel = function (bubbleGEnter) {\n if (_chart.renderLabel()) {\n var label = bubbleGEnter.select('text');\n\n if (label.empty()) {\n label = bubbleGEnter.append('text')\n .attr('text-anchor', 'middle')\n .attr('dy', '.3em')\n .on('click', _chart.onClick);\n }\n\n label\n .attr('opacity', 0)\n .attr('pointer-events', labelPointerEvent)\n .text(labelFunction);\n dc.transition(label, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('opacity', labelOpacity);\n }\n };\n\n _chart.doUpdateLabels = function (bubbleGEnter) {\n if (_chart.renderLabel()) {\n var labels = bubbleGEnter.select('text')\n .attr('pointer-events', labelPointerEvent)\n .text(labelFunction);\n dc.transition(labels, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('opacity', labelOpacity);\n }\n };\n\n var titleFunction = function (d) {\n return _chart.title()(d);\n };\n\n _chart._doRenderTitles = function (g) {\n if (_chart.renderTitle()) {\n var title = g.select('title');\n\n if (title.empty()) {\n g.append('title').text(titleFunction);\n }\n }\n };\n\n _chart.doUpdateTitles = function (g) {\n if (_chart.renderTitle()) {\n g.select('title').text(titleFunction);\n }\n };\n\n /**\n * Get or set the minimum radius. This will be used to initialize the radius scale's range.\n * @method minRadius\n * @memberof dc.bubbleMixin\n * @instance\n * @param {Number} [radius=10]\n * @returns {Number|dc.bubbleMixin}\n */\n _chart.minRadius = function (radius) {\n if (!arguments.length) {\n return _chart.MIN_RADIUS;\n }\n _chart.MIN_RADIUS = radius;\n return _chart;\n };\n\n /**\n * Get or set the minimum radius for label rendering. If a bubble's radius is less than this value\n * then no label will be rendered.\n * @method minRadiusWithLabel\n * @memberof dc.bubbleMixin\n * @instance\n * @param {Number} [radius=10]\n * @returns {Number|dc.bubbleMixin}\n */\n\n _chart.minRadiusWithLabel = function (radius) {\n if (!arguments.length) {\n return _minRadiusWithLabel;\n }\n _minRadiusWithLabel = radius;\n return _chart;\n };\n\n /**\n * Get or set the maximum relative size of a bubble to the length of x axis. This value is useful\n * when the difference in radius between bubbles is too great.\n * @method maxBubbleRelativeSize\n * @memberof dc.bubbleMixin\n * @instance\n * @param {Number} [relativeSize=0.3]\n * @returns {Number|dc.bubbleMixin}\n */\n _chart.maxBubbleRelativeSize = function (relativeSize) {\n if (!arguments.length) {\n return _maxBubbleRelativeSize;\n }\n _maxBubbleRelativeSize = relativeSize;\n return _chart;\n };\n\n _chart.fadeDeselectedArea = function () {\n if (_chart.hasFilter()) {\n _chart.selectAll('g.' + _chart.BUBBLE_NODE_CLASS).each(function (d) {\n if (_chart.isSelectedNode(d)) {\n _chart.highlightSelected(this);\n } else {\n _chart.fadeDeselected(this);\n }\n });\n } else {\n _chart.selectAll('g.' + _chart.BUBBLE_NODE_CLASS).each(function () {\n _chart.resetHighlight(this);\n });\n }\n };\n\n _chart.isSelectedNode = function (d) {\n return _chart.hasFilter(d.key);\n };\n\n _chart.onClick = function (d) {\n var filter = d.key;\n dc.events.trigger(function () {\n _chart.filter(filter);\n _chart.redrawGroup();\n });\n };\n\n return _chart;\n};\n\n/**\n * The pie chart implementation is usually used to visualize a small categorical distribution. The pie\n * chart uses keyAccessor to determine the slices, and valueAccessor to calculate the size of each\n * slice relative to the sum of all values. Slices are ordered by {@link dc.baseMixin#ordering ordering}\n * which defaults to sorting by key.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * @class pieChart\n * @memberof dc\n * @mixes dc.capMixin\n * @mixes dc.colorMixin\n * @mixes dc.baseMixin\n * @example\n * // create a pie chart under #chart-container1 element using the default global chart group\n * var chart1 = dc.pieChart('#chart-container1');\n * // create a pie chart under #chart-container2 element using chart group A\n * var chart2 = dc.pieChart('#chart-container2', 'chartGroupA');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.pieChart}\n */\ndc.pieChart = function (parent, chartGroup) {\n var DEFAULT_MIN_ANGLE_FOR_LABEL = 0.5;\n\n var _sliceCssClass = 'pie-slice';\n var _labelCssClass = 'pie-label';\n var _sliceGroupCssClass = 'pie-slice-group';\n var _labelGroupCssClass = 'pie-label-group';\n var _emptyCssClass = 'empty-chart';\n var _emptyTitle = 'empty';\n\n var _radius,\n _givenRadius, // specified radius, if any\n _innerRadius = 0,\n _externalRadiusPadding = 0;\n\n var _g;\n var _cx;\n var _cy;\n var _minAngleForLabel = DEFAULT_MIN_ANGLE_FOR_LABEL;\n var _externalLabelRadius;\n var _drawPaths = false;\n var _chart = dc.capMixin(dc.colorMixin(dc.baseMixin({})));\n\n _chart.colorAccessor(_chart.cappedKeyAccessor);\n\n _chart.title(function (d) {\n return _chart.cappedKeyAccessor(d) + ': ' + _chart.cappedValueAccessor(d);\n });\n\n /**\n * Get or set the maximum number of slices the pie chart will generate. The top slices are determined by\n * value from high to low. Other slices exeeding the cap will be rolled up into one single *Others* slice.\n * @method slicesCap\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [cap]\n * @returns {Number|dc.pieChart}\n */\n _chart.slicesCap = _chart.cap;\n\n _chart.label(_chart.cappedKeyAccessor);\n _chart.renderLabel(true);\n\n _chart.transitionDuration(350);\n _chart.transitionDelay(0);\n\n _chart._doRender = function () {\n _chart.resetSvg();\n\n _g = _chart.svg()\n .append('g')\n .attr('transform', 'translate(' + _chart.cx() + ',' + _chart.cy() + ')');\n\n _g.append('g').attr('class', _sliceGroupCssClass);\n _g.append('g').attr('class', _labelGroupCssClass);\n\n drawChart();\n\n return _chart;\n };\n\n function drawChart () {\n // set radius from chart size if none given, or if given radius is too large\n var maxRadius = d3.min([_chart.width(), _chart.height()]) / 2;\n _radius = _givenRadius && _givenRadius < maxRadius ? _givenRadius : maxRadius;\n\n var arc = buildArcs();\n\n var pie = pieLayout();\n var pieData;\n // if we have data...\n if (d3.sum(_chart.data(), _chart.valueAccessor())) {\n pieData = pie(_chart.data());\n _g.classed(_emptyCssClass, false);\n } else {\n // otherwise we'd be getting NaNs, so override\n // note: abuse others for its ignoring the value accessor\n pieData = pie([{key: _emptyTitle, value: 1, others: [_emptyTitle]}]);\n _g.classed(_emptyCssClass, true);\n }\n\n if (_g) {\n var slices = _g.select('g.' + _sliceGroupCssClass)\n .selectAll('g.' + _sliceCssClass)\n .data(pieData);\n\n var labels = _g.select('g.' + _labelGroupCssClass)\n .selectAll('text.' + _labelCssClass)\n .data(pieData);\n\n createElements(slices, labels, arc, pieData);\n\n updateElements(pieData, arc);\n\n removeElements(slices, labels);\n\n highlightFilter();\n\n dc.transition(_g, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', 'translate(' + _chart.cx() + ',' + _chart.cy() + ')');\n }\n }\n\n function createElements (slices, labels, arc, pieData) {\n var slicesEnter = createSliceNodes(slices);\n\n createSlicePath(slicesEnter, arc);\n\n createTitles(slicesEnter);\n\n createLabels(labels, pieData, arc);\n }\n\n function createSliceNodes (slices) {\n var slicesEnter = slices\n .enter()\n .append('g')\n .attr('class', function (d, i) {\n return _sliceCssClass + ' _' + i;\n });\n return slicesEnter;\n }\n\n function createSlicePath (slicesEnter, arc) {\n var slicePath = slicesEnter.append('path')\n .attr('fill', fill)\n .on('click', onClick)\n .attr('d', function (d, i) {\n return safeArc(d, i, arc);\n });\n\n var transition = dc.transition(slicePath, _chart.transitionDuration(), _chart.transitionDelay());\n if (transition.attrTween) {\n transition.attrTween('d', tweenPie);\n }\n }\n\n function createTitles (slicesEnter) {\n if (_chart.renderTitle()) {\n slicesEnter.append('title').text(function (d) {\n return _chart.title()(d.data);\n });\n }\n }\n\n _chart._applyLabelText = function (labels) {\n labels\n .text(function (d) {\n var data = d.data;\n if ((sliceHasNoData(data) || sliceTooSmall(d)) && !isSelectedSlice(d)) {\n return '';\n }\n return _chart.label()(d.data);\n });\n };\n\n function positionLabels (labels, arc) {\n _chart._applyLabelText(labels);\n dc.transition(labels, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', function (d) {\n return labelPosition(d, arc);\n })\n .attr('text-anchor', 'middle');\n }\n\n function highlightSlice (i, whether) {\n _chart.select('g.pie-slice._' + i)\n .classed('highlight', whether);\n }\n\n function createLabels (labels, pieData, arc) {\n if (_chart.renderLabel()) {\n var labelsEnter = labels\n .enter()\n .append('text')\n .attr('class', function (d, i) {\n var classes = _sliceCssClass + ' ' + _labelCssClass + ' _' + i;\n if (_externalLabelRadius) {\n classes += ' external';\n }\n return classes;\n })\n .on('click', onClick)\n .on('mouseover', function (d, i) {\n highlightSlice(i, true);\n })\n .on('mouseout', function (d, i) {\n highlightSlice(i, false);\n });\n positionLabels(labelsEnter, arc);\n if (_externalLabelRadius && _drawPaths) {\n updateLabelPaths(pieData, arc);\n }\n }\n }\n\n function updateLabelPaths (pieData, arc) {\n var polyline = _g.selectAll('polyline.' + _sliceCssClass)\n .data(pieData);\n\n polyline\n .enter()\n .append('polyline')\n .attr('class', function (d, i) {\n return 'pie-path _' + i + ' ' + _sliceCssClass;\n })\n .on('click', onClick)\n .on('mouseover', function (d, i) {\n highlightSlice(i, true);\n })\n .on('mouseout', function (d, i) {\n highlightSlice(i, false);\n });\n\n polyline.exit().remove();\n var arc2 = d3.svg.arc()\n .outerRadius(_radius - _externalRadiusPadding + _externalLabelRadius)\n .innerRadius(_radius - _externalRadiusPadding);\n var transition = dc.transition(polyline, _chart.transitionDuration(), _chart.transitionDelay());\n // this is one rare case where d3.selection differs from d3.transition\n if (transition.attrTween) {\n transition\n .attrTween('points', function (d) {\n var current = this._current || d;\n current = {startAngle: current.startAngle, endAngle: current.endAngle};\n var interpolate = d3.interpolate(current, d);\n this._current = interpolate(0);\n return function (t) {\n var d2 = interpolate(t);\n return [arc.centroid(d2), arc2.centroid(d2)];\n };\n });\n } else {\n transition.attr('points', function (d) {\n return [arc.centroid(d), arc2.centroid(d)];\n });\n }\n transition.style('visibility', function (d) {\n return d.endAngle - d.startAngle < 0.0001 ? 'hidden' : 'visible';\n });\n\n }\n\n function updateElements (pieData, arc) {\n updateSlicePaths(pieData, arc);\n updateLabels(pieData, arc);\n updateTitles(pieData);\n }\n\n function updateSlicePaths (pieData, arc) {\n var slicePaths = _g.selectAll('g.' + _sliceCssClass)\n .data(pieData)\n .select('path')\n .attr('d', function (d, i) {\n return safeArc(d, i, arc);\n });\n var transition = dc.transition(slicePaths, _chart.transitionDuration(), _chart.transitionDelay());\n if (transition.attrTween) {\n transition.attrTween('d', tweenPie);\n }\n transition.attr('fill', fill);\n }\n\n function updateLabels (pieData, arc) {\n if (_chart.renderLabel()) {\n var labels = _g.selectAll('text.' + _labelCssClass)\n .data(pieData);\n positionLabels(labels, arc);\n if (_externalLabelRadius && _drawPaths) {\n updateLabelPaths(pieData, arc);\n }\n }\n }\n\n function updateTitles (pieData) {\n if (_chart.renderTitle()) {\n _g.selectAll('g.' + _sliceCssClass)\n .data(pieData)\n .select('title')\n .text(function (d) {\n return _chart.title()(d.data);\n });\n }\n }\n\n function removeElements (slices, labels) {\n slices.exit().remove();\n labels.exit().remove();\n }\n\n function highlightFilter () {\n if (_chart.hasFilter()) {\n _chart.selectAll('g.' + _sliceCssClass).each(function (d) {\n if (isSelectedSlice(d)) {\n _chart.highlightSelected(this);\n } else {\n _chart.fadeDeselected(this);\n }\n });\n } else {\n _chart.selectAll('g.' + _sliceCssClass).each(function () {\n _chart.resetHighlight(this);\n });\n }\n }\n\n /**\n * Get or set the external radius padding of the pie chart. This will force the radius of the\n * pie chart to become smaller or larger depending on the value.\n * @method externalRadiusPadding\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [externalRadiusPadding=0]\n * @returns {Number|dc.pieChart}\n */\n _chart.externalRadiusPadding = function (externalRadiusPadding) {\n if (!arguments.length) {\n return _externalRadiusPadding;\n }\n _externalRadiusPadding = externalRadiusPadding;\n return _chart;\n };\n\n /**\n * Get or set the inner radius of the pie chart. If the inner radius is greater than 0px then the\n * pie chart will be rendered as a doughnut chart.\n * @method innerRadius\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [innerRadius=0]\n * @returns {Number|dc.pieChart}\n */\n _chart.innerRadius = function (innerRadius) {\n if (!arguments.length) {\n return _innerRadius;\n }\n _innerRadius = innerRadius;\n return _chart;\n };\n\n /**\n * Get or set the outer radius. If the radius is not set, it will be half of the minimum of the\n * chart width and height.\n * @method radius\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [radius]\n * @returns {Number|dc.pieChart}\n */\n _chart.radius = function (radius) {\n if (!arguments.length) {\n return _givenRadius;\n }\n _givenRadius = radius;\n return _chart;\n };\n\n /**\n * Get or set center x coordinate position. Default is center of svg.\n * @method cx\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [cx]\n * @returns {Number|dc.pieChart}\n */\n _chart.cx = function (cx) {\n if (!arguments.length) {\n return (_cx || _chart.width() / 2);\n }\n _cx = cx;\n return _chart;\n };\n\n /**\n * Get or set center y coordinate position. Default is center of svg.\n * @method cy\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [cy]\n * @returns {Number|dc.pieChart}\n */\n _chart.cy = function (cy) {\n if (!arguments.length) {\n return (_cy || _chart.height() / 2);\n }\n _cy = cy;\n return _chart;\n };\n\n function buildArcs () {\n return d3.svg.arc()\n .outerRadius(_radius - _externalRadiusPadding)\n .innerRadius(_innerRadius);\n }\n\n function isSelectedSlice (d) {\n return _chart.hasFilter(_chart.cappedKeyAccessor(d.data));\n }\n\n _chart._doRedraw = function () {\n drawChart();\n return _chart;\n };\n\n /**\n * Get or set the minimal slice angle for label rendering. Any slice with a smaller angle will not\n * display a slice label.\n * @method minAngleForLabel\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [minAngleForLabel=0.5]\n * @returns {Number|dc.pieChart}\n */\n _chart.minAngleForLabel = function (minAngleForLabel) {\n if (!arguments.length) {\n return _minAngleForLabel;\n }\n _minAngleForLabel = minAngleForLabel;\n return _chart;\n };\n\n function pieLayout () {\n return d3.layout.pie().sort(null).value(_chart.cappedValueAccessor);\n }\n\n function sliceTooSmall (d) {\n var angle = (d.endAngle - d.startAngle);\n return isNaN(angle) || angle < _minAngleForLabel;\n }\n\n function sliceHasNoData (d) {\n return _chart.cappedValueAccessor(d) === 0;\n }\n\n function tweenPie (b) {\n b.innerRadius = _innerRadius;\n var current = this._current;\n if (isOffCanvas(current)) {\n current = {startAngle: 0, endAngle: 0};\n } else {\n // only interpolate startAngle & endAngle, not the whole data object\n current = {startAngle: current.startAngle, endAngle: current.endAngle};\n }\n var i = d3.interpolate(current, b);\n this._current = i(0);\n return function (t) {\n return safeArc(i(t), 0, buildArcs());\n };\n }\n\n function isOffCanvas (current) {\n return !current || isNaN(current.startAngle) || isNaN(current.endAngle);\n }\n\n function fill (d, i) {\n return _chart.getColor(d.data, i);\n }\n\n function onClick (d, i) {\n if (_g.attr('class') !== _emptyCssClass) {\n _chart.onClick(d.data, i);\n }\n }\n\n function safeArc (d, i, arc) {\n var path = arc(d, i);\n if (path.indexOf('NaN') >= 0) {\n path = 'M0,0';\n }\n return path;\n }\n\n /**\n * Title to use for the only slice when there is no data.\n * @method emptyTitle\n * @memberof dc.pieChart\n * @instance\n * @param {String} [title]\n * @returns {String|dc.pieChart}\n */\n _chart.emptyTitle = function (title) {\n if (arguments.length === 0) {\n return _emptyTitle;\n }\n _emptyTitle = title;\n return _chart;\n };\n\n /**\n * Position slice labels offset from the outer edge of the chart.\n *\n * The argument specifies the extra radius to be added for slice labels.\n * @method externalLabels\n * @memberof dc.pieChart\n * @instance\n * @param {Number} [externalLabelRadius]\n * @returns {Number|dc.pieChart}\n */\n _chart.externalLabels = function (externalLabelRadius) {\n if (arguments.length === 0) {\n return _externalLabelRadius;\n } else if (externalLabelRadius) {\n _externalLabelRadius = externalLabelRadius;\n } else {\n _externalLabelRadius = undefined;\n }\n\n return _chart;\n };\n\n /**\n * Get or set whether to draw lines from pie slices to their labels.\n *\n * @method drawPaths\n * @memberof dc.pieChart\n * @instance\n * @param {Boolean} [drawPaths]\n * @returns {Boolean|dc.pieChart}\n */\n _chart.drawPaths = function (drawPaths) {\n if (arguments.length === 0) {\n return _drawPaths;\n }\n _drawPaths = drawPaths;\n return _chart;\n };\n\n function labelPosition (d, arc) {\n var centroid;\n if (_externalLabelRadius) {\n centroid = d3.svg.arc()\n .outerRadius(_radius - _externalRadiusPadding + _externalLabelRadius)\n .innerRadius(_radius - _externalRadiusPadding + _externalLabelRadius)\n .centroid(d);\n } else {\n centroid = arc.centroid(d);\n }\n if (isNaN(centroid[0]) || isNaN(centroid[1])) {\n return 'translate(0,0)';\n } else {\n return 'translate(' + centroid + ')';\n }\n }\n\n _chart.legendables = function () {\n return _chart.data().map(function (d, i) {\n var legendable = {name: d.key, data: d.value, others: d.others, chart: _chart};\n legendable.color = _chart.getColor(d, i);\n return legendable;\n });\n };\n\n _chart.legendHighlight = function (d) {\n highlightSliceFromLegendable(d, true);\n };\n\n _chart.legendReset = function (d) {\n highlightSliceFromLegendable(d, false);\n };\n\n _chart.legendToggle = function (d) {\n _chart.onClick({key: d.name, others: d.others});\n };\n\n function highlightSliceFromLegendable (legendable, highlighted) {\n _chart.selectAll('g.pie-slice').each(function (d) {\n if (legendable.name === d.data.key) {\n d3.select(this).classed('highlight', highlighted);\n }\n });\n }\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * Concrete bar chart/histogram implementation.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * - {@link http://dc-js.github.com/dc.js/crime/index.html Canadian City Crime Stats}\n * @class barChart\n * @memberof dc\n * @mixes dc.stackMixin\n * @mixes dc.coordinateGridMixin\n * @example\n * // create a bar chart under #chart-container1 element using the default global chart group\n * var chart1 = dc.barChart('#chart-container1');\n * // create a bar chart under #chart-container2 element using chart group A\n * var chart2 = dc.barChart('#chart-container2', 'chartGroupA');\n * // create a sub-chart under a composite parent chart\n * var chart3 = dc.barChart(compositeChart);\n * @param {String|node|d3.selection|dc.compositeChart} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector}\n * specifying a dom block element such as a div; or a dom element or d3 selection. If the bar\n * chart is a sub-chart in a {@link dc.compositeChart Composite Chart} then pass in the parent\n * composite chart instance instead.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.barChart}\n */\ndc.barChart = function (parent, chartGroup) {\n var MIN_BAR_WIDTH = 1;\n var DEFAULT_GAP_BETWEEN_BARS = 2;\n var LABEL_PADDING = 3;\n\n var _chart = dc.stackMixin(dc.coordinateGridMixin({}));\n\n var _gap = DEFAULT_GAP_BETWEEN_BARS;\n var _centerBar = false;\n var _alwaysUseRounding = false;\n\n var _barWidth;\n\n dc.override(_chart, 'rescale', function () {\n _chart._rescale();\n _barWidth = undefined;\n return _chart;\n });\n\n dc.override(_chart, 'render', function () {\n if (_chart.round() && _centerBar && !_alwaysUseRounding) {\n dc.logger.warn('By default, brush rounding is disabled if bars are centered. ' +\n 'See dc.js bar chart API documentation for details.');\n }\n\n return _chart._render();\n });\n\n _chart.label(function (d) {\n return dc.utils.printSingleValue(d.y0 + d.y);\n }, false);\n\n _chart.plotData = function () {\n var layers = _chart.chartBodyG().selectAll('g.stack')\n .data(_chart.data());\n\n calculateBarWidth();\n\n layers\n .enter()\n .append('g')\n .attr('class', function (d, i) {\n return 'stack ' + '_' + i;\n });\n\n var last = layers.size() - 1;\n layers.each(function (d, i) {\n var layer = d3.select(this);\n\n renderBars(layer, i, d);\n\n if (_chart.renderLabel() && last === i) {\n renderLabels(layer, i, d);\n }\n });\n };\n\n function barHeight (d) {\n return dc.utils.safeNumber(Math.abs(_chart.y()(d.y + d.y0) - _chart.y()(d.y0)));\n }\n\n function renderLabels (layer, layerIndex, d) {\n var labels = layer.selectAll('text.barLabel')\n .data(d.values, dc.pluck('x'));\n\n labels.enter()\n .append('text')\n .attr('class', 'barLabel')\n .attr('text-anchor', 'middle');\n\n if (_chart.isOrdinal()) {\n labels.on('click', _chart.onClick);\n labels.attr('cursor', 'pointer');\n }\n\n dc.transition(labels, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('x', function (d) {\n var x = _chart.x()(d.x);\n if (!_centerBar) {\n x += _barWidth / 2;\n }\n return dc.utils.safeNumber(x);\n })\n .attr('y', function (d) {\n var y = _chart.y()(d.y + d.y0);\n\n if (d.y < 0) {\n y -= barHeight(d);\n }\n\n return dc.utils.safeNumber(y - LABEL_PADDING);\n })\n .text(function (d) {\n return _chart.label()(d);\n });\n\n dc.transition(labels.exit(), _chart.transitionDuration(), _chart.transitionDelay())\n .attr('height', 0)\n .remove();\n }\n\n function renderBars (layer, layerIndex, d) {\n var bars = layer.selectAll('rect.bar')\n .data(d.values, dc.pluck('x'));\n\n var enter = bars.enter()\n .append('rect')\n .attr('class', 'bar')\n .attr('fill', dc.pluck('data', _chart.getColor))\n .attr('y', _chart.yAxisHeight())\n .attr('height', 0);\n\n if (_chart.renderTitle()) {\n enter.append('title').text(dc.pluck('data', _chart.title(d.name)));\n }\n\n if (_chart.isOrdinal()) {\n bars.on('click', _chart.onClick);\n }\n\n dc.transition(bars, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('x', function (d) {\n var x = _chart.x()(d.x);\n if (_centerBar) {\n x -= _barWidth / 2;\n }\n if (_chart.isOrdinal() && _gap !== undefined) {\n x += _gap / 2;\n }\n return dc.utils.safeNumber(x);\n })\n .attr('y', function (d) {\n var y = _chart.y()(d.y + d.y0);\n\n if (d.y < 0) {\n y -= barHeight(d);\n }\n\n return dc.utils.safeNumber(y);\n })\n .attr('width', _barWidth)\n .attr('height', function (d) {\n return barHeight(d);\n })\n .attr('fill', dc.pluck('data', _chart.getColor))\n .select('title').text(dc.pluck('data', _chart.title(d.name)));\n\n dc.transition(bars.exit(), _chart.transitionDuration(), _chart.transitionDelay())\n .attr('x', function (d) { return _chart.x()(d.x); })\n .attr('width', _barWidth * 0.9)\n .remove();\n }\n\n function calculateBarWidth () {\n if (_barWidth === undefined) {\n var numberOfBars = _chart.xUnitCount();\n\n // please can't we always use rangeBands for bar charts?\n if (_chart.isOrdinal() && _gap === undefined) {\n _barWidth = Math.floor(_chart.x().rangeBand());\n } else if (_gap) {\n _barWidth = Math.floor((_chart.xAxisLength() - (numberOfBars - 1) * _gap) / numberOfBars);\n } else {\n _barWidth = Math.floor(_chart.xAxisLength() / (1 + _chart.barPadding()) / numberOfBars);\n }\n\n if (_barWidth === Infinity || isNaN(_barWidth) || _barWidth < MIN_BAR_WIDTH) {\n _barWidth = MIN_BAR_WIDTH;\n }\n }\n }\n\n _chart.fadeDeselectedArea = function () {\n var bars = _chart.chartBodyG().selectAll('rect.bar');\n var extent = _chart.brush().extent();\n\n if (_chart.isOrdinal()) {\n if (_chart.hasFilter()) {\n bars.classed(dc.constants.SELECTED_CLASS, function (d) {\n return _chart.hasFilter(d.x);\n });\n bars.classed(dc.constants.DESELECTED_CLASS, function (d) {\n return !_chart.hasFilter(d.x);\n });\n } else {\n bars.classed(dc.constants.SELECTED_CLASS, false);\n bars.classed(dc.constants.DESELECTED_CLASS, false);\n }\n } else {\n if (!_chart.brushIsEmpty(extent)) {\n var start = extent[0];\n var end = extent[1];\n\n bars.classed(dc.constants.DESELECTED_CLASS, function (d) {\n return d.x < start || d.x >= end;\n });\n } else {\n bars.classed(dc.constants.DESELECTED_CLASS, false);\n }\n }\n };\n\n /**\n * Whether the bar chart will render each bar centered around the data position on the x-axis.\n * @method centerBar\n * @memberof dc.barChart\n * @instance\n * @param {Boolean} [centerBar=false]\n * @returns {Boolean|dc.barChart}\n */\n _chart.centerBar = function (centerBar) {\n if (!arguments.length) {\n return _centerBar;\n }\n _centerBar = centerBar;\n return _chart;\n };\n\n dc.override(_chart, 'onClick', function (d) {\n _chart._onClick(d.data);\n });\n\n /**\n * Get or set the spacing between bars as a fraction of bar size. Valid values are between 0-1.\n * Setting this value will also remove any previously set {@link dc.barChart#gap gap}. See the\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal_rangeBands d3 docs}\n * for a visual description of how the padding is applied.\n * @method barPadding\n * @memberof dc.barChart\n * @instance\n * @param {Number} [barPadding=0]\n * @returns {Number|dc.barChart}\n */\n _chart.barPadding = function (barPadding) {\n if (!arguments.length) {\n return _chart._rangeBandPadding();\n }\n _chart._rangeBandPadding(barPadding);\n _gap = undefined;\n return _chart;\n };\n\n _chart._useOuterPadding = function () {\n return _gap === undefined;\n };\n\n /**\n * Get or set the outer padding on an ordinal bar chart. This setting has no effect on non-ordinal charts.\n * Will pad the width by `padding * barWidth` on each side of the chart.\n * @method outerPadding\n * @memberof dc.barChart\n * @instance\n * @param {Number} [padding=0.5]\n * @returns {Number|dc.barChart}\n */\n _chart.outerPadding = _chart._outerRangeBandPadding;\n\n /**\n * Manually set fixed gap (in px) between bars instead of relying on the default auto-generated\n * gap. By default the bar chart implementation will calculate and set the gap automatically\n * based on the number of data points and the length of the x axis.\n * @method gap\n * @memberof dc.barChart\n * @instance\n * @param {Number} [gap=2]\n * @returns {Number|dc.barChart}\n */\n _chart.gap = function (gap) {\n if (!arguments.length) {\n return _gap;\n }\n _gap = gap;\n return _chart;\n };\n\n _chart.extendBrush = function () {\n var extent = _chart.brush().extent();\n if (_chart.round() && (!_centerBar || _alwaysUseRounding)) {\n extent[0] = extent.map(_chart.round())[0];\n extent[1] = extent.map(_chart.round())[1];\n\n _chart.chartBodyG().select('.brush')\n .call(_chart.brush().extent(extent));\n }\n\n return extent;\n };\n\n /**\n * Set or get whether rounding is enabled when bars are centered. If false, using\n * rounding with centered bars will result in a warning and rounding will be ignored. This flag\n * has no effect if bars are not {@link dc.barChart#centerBar centered}.\n * When using standard d3.js rounding methods, the brush often doesn't align correctly with\n * centered bars since the bars are offset. The rounding function must add an offset to\n * compensate, such as in the following example.\n * @method alwaysUseRounding\n * @memberof dc.barChart\n * @instance\n * @example\n * chart.round(function(n) { return Math.floor(n) + 0.5; });\n * @param {Boolean} [alwaysUseRounding=false]\n * @returns {Boolean|dc.barChart}\n */\n _chart.alwaysUseRounding = function (alwaysUseRounding) {\n if (!arguments.length) {\n return _alwaysUseRounding;\n }\n _alwaysUseRounding = alwaysUseRounding;\n return _chart;\n };\n\n function colorFilter (color, inv) {\n return function () {\n var item = d3.select(this);\n var match = item.attr('fill') === color;\n return inv ? !match : match;\n };\n }\n\n _chart.legendHighlight = function (d) {\n if (!_chart.isLegendableHidden(d)) {\n _chart.g().selectAll('rect.bar')\n .classed('highlight', colorFilter(d.color))\n .classed('fadeout', colorFilter(d.color, true));\n }\n };\n\n _chart.legendReset = function () {\n _chart.g().selectAll('rect.bar')\n .classed('highlight', false)\n .classed('fadeout', false);\n };\n\n dc.override(_chart, 'xAxisMax', function () {\n var max = this._xAxisMax();\n if ('resolution' in _chart.xUnits()) {\n var res = _chart.xUnits().resolution;\n max += res;\n }\n return max;\n });\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * Concrete line/area chart implementation.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * - {@link http://dc-js.github.com/dc.js/crime/index.html Canadian City Crime Stats}\n * @class lineChart\n * @memberof dc\n * @mixes dc.stackMixin\n * @mixes dc.coordinateGridMixin\n * @example\n * // create a line chart under #chart-container1 element using the default global chart group\n * var chart1 = dc.lineChart('#chart-container1');\n * // create a line chart under #chart-container2 element using chart group A\n * var chart2 = dc.lineChart('#chart-container2', 'chartGroupA');\n * // create a sub-chart under a composite parent chart\n * var chart3 = dc.lineChart(compositeChart);\n * @param {String|node|d3.selection|dc.compositeChart} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector}\n * specifying a dom block element such as a div; or a dom element or d3 selection. If the line\n * chart is a sub-chart in a {@link dc.compositeChart Composite Chart} then pass in the parent\n * composite chart instance instead.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.lineChart}\n */\ndc.lineChart = function (parent, chartGroup) {\n var DEFAULT_DOT_RADIUS = 5;\n var TOOLTIP_G_CLASS = 'dc-tooltip';\n var DOT_CIRCLE_CLASS = 'dot';\n var Y_AXIS_REF_LINE_CLASS = 'yRef';\n var X_AXIS_REF_LINE_CLASS = 'xRef';\n var DEFAULT_DOT_OPACITY = 1e-6;\n var LABEL_PADDING = 3;\n\n var _chart = dc.stackMixin(dc.coordinateGridMixin({}));\n var _renderArea = false;\n var _dotRadius = DEFAULT_DOT_RADIUS;\n var _dataPointRadius = null;\n var _dataPointFillOpacity = DEFAULT_DOT_OPACITY;\n var _dataPointStrokeOpacity = DEFAULT_DOT_OPACITY;\n var _interpolate = 'linear';\n var _tension = 0.7;\n var _defined;\n var _dashStyle;\n var _xyTipsOn = true;\n\n _chart.transitionDuration(500);\n _chart.transitionDelay(0);\n _chart._rangeBandPadding(1);\n\n _chart.plotData = function () {\n var chartBody = _chart.chartBodyG();\n var layersList = chartBody.select('g.stack-list');\n\n if (layersList.empty()) {\n layersList = chartBody.append('g').attr('class', 'stack-list');\n }\n\n var layers = layersList.selectAll('g.stack').data(_chart.data());\n\n var layersEnter = layers\n .enter()\n .append('g')\n .attr('class', function (d, i) {\n return 'stack ' + '_' + i;\n });\n\n drawLine(layersEnter, layers);\n\n drawArea(layersEnter, layers);\n\n drawDots(chartBody, layers);\n\n if (_chart.renderLabel()) {\n drawLabels(layers);\n }\n };\n\n /**\n * Gets or sets the interpolator to use for lines drawn, by string name, allowing e.g. step\n * functions, splines, and cubic interpolation. This is passed to\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_interpolate d3.svg.line.interpolate} and\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_interpolate d3.svg.area.interpolate},\n * where you can find a complete list of valid arguments.\n * @method interpolate\n * @memberof dc.lineChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_interpolate d3.svg.line.interpolate}\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_interpolate d3.svg.area.interpolate}\n * @param {String} [interpolate='linear']\n * @returns {String|dc.lineChart}\n */\n _chart.interpolate = function (interpolate) {\n if (!arguments.length) {\n return _interpolate;\n }\n _interpolate = interpolate;\n return _chart;\n };\n\n /**\n * Gets or sets the tension to use for lines drawn, in the range 0 to 1.\n * This parameter further customizes the interpolation behavior. It is passed to\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_tension d3.svg.line.tension} and\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_tension d3.svg.area.tension}.\n * @method tension\n * @memberof dc.lineChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_interpolate d3.svg.line.interpolate}\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_interpolate d3.svg.area.interpolate}\n * @param {Number} [tension=0.7]\n * @returns {Number|dc.lineChart}\n */\n _chart.tension = function (tension) {\n if (!arguments.length) {\n return _tension;\n }\n _tension = tension;\n return _chart;\n };\n\n /**\n * Gets or sets a function that will determine discontinuities in the line which should be\n * skipped: the path will be broken into separate subpaths if some points are undefined.\n * This function is passed to\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_defined d3.svg.line.defined}\n *\n * Note: crossfilter will sometimes coerce nulls to 0, so you may need to carefully write\n * custom reduce functions to get this to work, depending on your data. See\n * {@link https://github.com/dc-js/dc.js/issues/615#issuecomment-49089248 this GitHub comment}\n * for more details and an example.\n * @method defined\n * @memberof dc.lineChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_defined d3.svg.line.defined}\n * @param {Function} [defined]\n * @returns {Function|dc.lineChart}\n */\n _chart.defined = function (defined) {\n if (!arguments.length) {\n return _defined;\n }\n _defined = defined;\n return _chart;\n };\n\n /**\n * Set the line's d3 dashstyle. This value becomes the 'stroke-dasharray' of line. Defaults to empty\n * array (solid line).\n * @method dashStyle\n * @memberof dc.lineChart\n * @instance\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray stroke-dasharray}\n * @example\n * // create a Dash Dot Dot Dot\n * chart.dashStyle([3,1,1,1]);\n * @param {Array} [dashStyle=[]]\n * @returns {Array|dc.lineChart}\n */\n _chart.dashStyle = function (dashStyle) {\n if (!arguments.length) {\n return _dashStyle;\n }\n _dashStyle = dashStyle;\n return _chart;\n };\n\n /**\n * Get or set render area flag. If the flag is set to true then the chart will render the area\n * beneath each line and the line chart effectively becomes an area chart.\n * @method renderArea\n * @memberof dc.lineChart\n * @instance\n * @param {Boolean} [renderArea=false]\n * @returns {Boolean|dc.lineChart}\n */\n _chart.renderArea = function (renderArea) {\n if (!arguments.length) {\n return _renderArea;\n }\n _renderArea = renderArea;\n return _chart;\n };\n\n function colors (d, i) {\n return _chart.getColor.call(d, d.values, i);\n }\n\n function drawLine (layersEnter, layers) {\n var line = d3.svg.line()\n .x(function (d) {\n return _chart.x()(d.x);\n })\n .y(function (d) {\n return _chart.y()(d.y + d.y0);\n })\n .interpolate(_interpolate)\n .tension(_tension);\n if (_defined) {\n line.defined(_defined);\n }\n\n var path = layersEnter.append('path')\n .attr('class', 'line')\n .attr('stroke', colors);\n if (_dashStyle) {\n path.attr('stroke-dasharray', _dashStyle);\n }\n\n dc.transition(layers.select('path.line'), _chart.transitionDuration(), _chart.transitionDelay())\n //.ease('linear')\n .attr('stroke', colors)\n .attr('d', function (d) {\n return safeD(line(d.values));\n });\n }\n\n function drawArea (layersEnter, layers) {\n if (_renderArea) {\n var area = d3.svg.area()\n .x(function (d) {\n return _chart.x()(d.x);\n })\n .y(function (d) {\n return _chart.y()(d.y + d.y0);\n })\n .y0(function (d) {\n return _chart.y()(d.y0);\n })\n .interpolate(_interpolate)\n .tension(_tension);\n if (_defined) {\n area.defined(_defined);\n }\n\n layersEnter.append('path')\n .attr('class', 'area')\n .attr('fill', colors)\n .attr('d', function (d) {\n return safeD(area(d.values));\n });\n\n dc.transition(layers.select('path.area'), _chart.transitionDuration(), _chart.transitionDelay())\n //.ease('linear')\n .attr('fill', colors)\n .attr('d', function (d) {\n return safeD(area(d.values));\n });\n }\n }\n\n function safeD (d) {\n return (!d || d.indexOf('NaN') >= 0) ? 'M0,0' : d;\n }\n\n function drawDots (chartBody, layers) {\n if (_chart.xyTipsOn() === 'always' || (!_chart.brushOn() && _chart.xyTipsOn())) {\n var tooltipListClass = TOOLTIP_G_CLASS + '-list';\n var tooltips = chartBody.select('g.' + tooltipListClass);\n\n if (tooltips.empty()) {\n tooltips = chartBody.append('g').attr('class', tooltipListClass);\n }\n\n layers.each(function (d, layerIndex) {\n var points = d.values;\n if (_defined) {\n points = points.filter(_defined);\n }\n\n var g = tooltips.select('g.' + TOOLTIP_G_CLASS + '._' + layerIndex);\n if (g.empty()) {\n g = tooltips.append('g').attr('class', TOOLTIP_G_CLASS + ' _' + layerIndex);\n }\n\n createRefLines(g);\n\n var dots = g.selectAll('circle.' + DOT_CIRCLE_CLASS)\n .data(points, dc.pluck('x'));\n\n dots.enter()\n .append('circle')\n .attr('class', DOT_CIRCLE_CLASS)\n .attr('r', getDotRadius())\n .style('fill-opacity', _dataPointFillOpacity)\n .style('stroke-opacity', _dataPointStrokeOpacity)\n .attr('fill', _chart.getColor)\n .on('mousemove', function () {\n var dot = d3.select(this);\n showDot(dot);\n showRefLines(dot, g);\n })\n .on('mouseout', function () {\n var dot = d3.select(this);\n hideDot(dot);\n hideRefLines(g);\n });\n\n dots.call(renderTitle, d);\n\n dc.transition(dots, _chart.transitionDuration())\n .attr('cx', function (d) {\n return dc.utils.safeNumber(_chart.x()(d.x));\n })\n .attr('cy', function (d) {\n return dc.utils.safeNumber(_chart.y()(d.y + d.y0));\n })\n .attr('fill', _chart.getColor);\n\n dots.exit().remove();\n });\n }\n }\n\n _chart.label(function (d) {\n return dc.utils.printSingleValue(d.y0 + d.y);\n }, false);\n\n function drawLabels (layers) {\n layers.each(function (d, layerIndex) {\n var layer = d3.select(this);\n var labels = layer.selectAll('text.lineLabel')\n .data(d.values, dc.pluck('x'));\n\n labels.enter()\n .append('text')\n .attr('class', 'lineLabel')\n .attr('text-anchor', 'middle');\n\n dc.transition(labels, _chart.transitionDuration())\n .attr('x', function (d) {\n return dc.utils.safeNumber(_chart.x()(d.x));\n })\n .attr('y', function (d) {\n var y = _chart.y()(d.y + d.y0) - LABEL_PADDING;\n return dc.utils.safeNumber(y);\n })\n .text(function (d) {\n return _chart.label()(d);\n });\n\n dc.transition(labels.exit(), _chart.transitionDuration())\n .attr('height', 0)\n .remove();\n });\n }\n\n function createRefLines (g) {\n var yRefLine = g.select('path.' + Y_AXIS_REF_LINE_CLASS).empty() ?\n g.append('path').attr('class', Y_AXIS_REF_LINE_CLASS) : g.select('path.' + Y_AXIS_REF_LINE_CLASS);\n yRefLine.style('display', 'none').attr('stroke-dasharray', '5,5');\n\n var xRefLine = g.select('path.' + X_AXIS_REF_LINE_CLASS).empty() ?\n g.append('path').attr('class', X_AXIS_REF_LINE_CLASS) : g.select('path.' + X_AXIS_REF_LINE_CLASS);\n xRefLine.style('display', 'none').attr('stroke-dasharray', '5,5');\n }\n\n function showDot (dot) {\n dot.style('fill-opacity', 0.8);\n dot.style('stroke-opacity', 0.8);\n dot.attr('r', _dotRadius);\n return dot;\n }\n\n function showRefLines (dot, g) {\n var x = dot.attr('cx');\n var y = dot.attr('cy');\n var yAxisX = (_chart._yAxisX() - _chart.margins().left);\n var yAxisRefPathD = 'M' + yAxisX + ' ' + y + 'L' + (x) + ' ' + (y);\n var xAxisRefPathD = 'M' + x + ' ' + _chart.yAxisHeight() + 'L' + x + ' ' + y;\n g.select('path.' + Y_AXIS_REF_LINE_CLASS).style('display', '').attr('d', yAxisRefPathD);\n g.select('path.' + X_AXIS_REF_LINE_CLASS).style('display', '').attr('d', xAxisRefPathD);\n }\n\n function getDotRadius () {\n return _dataPointRadius || _dotRadius;\n }\n\n function hideDot (dot) {\n dot.style('fill-opacity', _dataPointFillOpacity)\n .style('stroke-opacity', _dataPointStrokeOpacity)\n .attr('r', getDotRadius());\n }\n\n function hideRefLines (g) {\n g.select('path.' + Y_AXIS_REF_LINE_CLASS).style('display', 'none');\n g.select('path.' + X_AXIS_REF_LINE_CLASS).style('display', 'none');\n }\n\n function renderTitle (dot, d) {\n if (_chart.renderTitle()) {\n dot.select('title').remove();\n dot.append('title').text(dc.pluck('data', _chart.title(d.name)));\n }\n }\n\n /**\n * Turn on/off the mouseover behavior of an individual data point which renders a circle and x/y axis\n * dashed lines back to each respective axis. This is ignored if the chart\n * {@link dc.coordinateGridMixin#brushOn brush} is on\n * @method xyTipsOn\n * @memberof dc.lineChart\n * @instance\n * @param {Boolean} [xyTipsOn=false]\n * @returns {Boolean|dc.lineChart}\n */\n _chart.xyTipsOn = function (xyTipsOn) {\n if (!arguments.length) {\n return _xyTipsOn;\n }\n _xyTipsOn = xyTipsOn;\n return _chart;\n };\n\n /**\n * Get or set the radius (in px) for dots displayed on the data points.\n * @method dotRadius\n * @memberof dc.lineChart\n * @instance\n * @param {Number} [dotRadius=5]\n * @returns {Number|dc.lineChart}\n */\n _chart.dotRadius = function (dotRadius) {\n if (!arguments.length) {\n return _dotRadius;\n }\n _dotRadius = dotRadius;\n return _chart;\n };\n\n /**\n * Always show individual dots for each datapoint.\n *\n * If `options` is falsy, it disables data point rendering. If no `options` are provided, the\n * current `options` values are instead returned.\n * @method renderDataPoints\n * @memberof dc.lineChart\n * @instance\n * @example\n * chart.renderDataPoints({radius: 2, fillOpacity: 0.8, strokeOpacity: 0.8})\n * @param {{fillOpacity: Number, strokeOpacity: Number, radius: Number}} [options={fillOpacity: 0.8, strokeOpacity: 0.8, radius: 2}]\n * @returns {{fillOpacity: Number, strokeOpacity: Number, radius: Number}|dc.lineChart}\n */\n _chart.renderDataPoints = function (options) {\n if (!arguments.length) {\n return {\n fillOpacity: _dataPointFillOpacity,\n strokeOpacity: _dataPointStrokeOpacity,\n radius: _dataPointRadius\n };\n } else if (!options) {\n _dataPointFillOpacity = DEFAULT_DOT_OPACITY;\n _dataPointStrokeOpacity = DEFAULT_DOT_OPACITY;\n _dataPointRadius = null;\n } else {\n _dataPointFillOpacity = options.fillOpacity || 0.8;\n _dataPointStrokeOpacity = options.strokeOpacity || 0.8;\n _dataPointRadius = options.radius || 2;\n }\n return _chart;\n };\n\n function colorFilter (color, dashstyle, inv) {\n return function () {\n var item = d3.select(this);\n var match = (item.attr('stroke') === color &&\n item.attr('stroke-dasharray') === ((dashstyle instanceof Array) ?\n dashstyle.join(',') : null)) || item.attr('fill') === color;\n return inv ? !match : match;\n };\n }\n\n _chart.legendHighlight = function (d) {\n if (!_chart.isLegendableHidden(d)) {\n _chart.g().selectAll('path.line, path.area')\n .classed('highlight', colorFilter(d.color, d.dashstyle))\n .classed('fadeout', colorFilter(d.color, d.dashstyle, true));\n }\n };\n\n _chart.legendReset = function () {\n _chart.g().selectAll('path.line, path.area')\n .classed('highlight', false)\n .classed('fadeout', false);\n };\n\n dc.override(_chart, 'legendables', function () {\n var legendables = _chart._legendables();\n if (!_dashStyle) {\n return legendables;\n }\n return legendables.map(function (l) {\n l.dashstyle = _dashStyle;\n return l;\n });\n });\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * The data count widget is a simple widget designed to display the number of records selected by the\n * current filters out of the total number of records in the data set. Once created the data count widget\n * will automatically update the text content of child elements with the following classes:\n *\n * * `.total-count` - total number of records\n * * `.filter-count` - number of records matched by the current filters\n *\n * Note: this widget works best for the specific case of showing the number of records out of a\n * total. If you want a more general-purpose numeric display, please use the\n * {@link dc.numberDisplay} widget instead.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * @class dataCount\n * @memberof dc\n * @mixes dc.baseMixin\n * @example\n * var ndx = crossfilter(data);\n * var all = ndx.groupAll();\n *\n * dc.dataCount('.dc-data-count')\n * .dimension(ndx)\n * .group(all);\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.dataCount}\n */\ndc.dataCount = function (parent, chartGroup) {\n var _formatNumber = d3.format(',d');\n var _chart = dc.baseMixin({});\n var _html = {some: '', all: ''};\n\n /**\n * Gets or sets an optional object specifying HTML templates to use depending how many items are\n * selected. The text `%total-count` will replaced with the total number of records, and the text\n * `%filter-count` will be replaced with the number of selected records.\n * - all: HTML template to use if all items are selected\n * - some: HTML template to use if not all items are selected\n * @method html\n * @memberof dc.dataCount\n * @instance\n * @example\n * counter.html({\n * some: '%filter-count out of %total-count records selected',\n * all: 'All records selected. Click on charts to apply filters'\n * })\n * @param {{some:String, all: String}} [options]\n * @returns {{some:String, all: String}|dc.dataCount}\n */\n _chart.html = function (options) {\n if (!arguments.length) {\n return _html;\n }\n if (options.all) {\n _html.all = options.all;\n }\n if (options.some) {\n _html.some = options.some;\n }\n return _chart;\n };\n\n /**\n * Gets or sets an optional function to format the filter count and total count.\n * @method formatNumber\n * @memberof dc.dataCount\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md d3.format}\n * @example\n * counter.formatNumber(d3.format('.2g'))\n * @param {Function} [formatter=d3.format('.2g')]\n * @returns {Function|dc.dataCount}\n */\n _chart.formatNumber = function (formatter) {\n if (!arguments.length) {\n return _formatNumber;\n }\n _formatNumber = formatter;\n return _chart;\n };\n\n _chart._doRender = function () {\n var tot = _chart.dimension().size(),\n val = _chart.group().value();\n var all = _formatNumber(tot);\n var selected = _formatNumber(val);\n\n if ((tot === val) && (_html.all !== '')) {\n _chart.root().html(_html.all.replace('%total-count', all).replace('%filter-count', selected));\n } else if (_html.some !== '') {\n _chart.root().html(_html.some.replace('%total-count', all).replace('%filter-count', selected));\n } else {\n _chart.selectAll('.total-count').text(all);\n _chart.selectAll('.filter-count').text(selected);\n }\n return _chart;\n };\n\n _chart._doRedraw = function () {\n return _chart._doRender();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * The data table is a simple widget designed to list crossfilter focused data set (rows being\n * filtered) in a good old tabular fashion.\n *\n * Note: Unlike other charts, the data table (and data grid chart) use the {@link dc.dataTable#group group} attribute as a\n * keying function for {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#nest nesting} the data\n * together in groups. Do not pass in a crossfilter group as this will not work.\n *\n * Another interesting feature of the data table is that you can pass a crossfilter group to the `dimension`, as\n * long as you specify the {@link dc.dataTable#order order} as `d3.descending`, since the data\n * table will use `dimension.top()` to fetch the data in that case, and the method is equally\n * supported on the crossfilter group as the crossfilter dimension.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * - {@link http://dc-js.github.io/dc.js/examples/table-on-aggregated-data.html dataTable on a crossfilter group}\n * ({@link https://github.com/dc-js/dc.js/blob/develop/web/examples/table-on-aggregated-data.html source})\n * @class dataTable\n * @memberof dc\n * @mixes dc.baseMixin\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.dataTable}\n */\ndc.dataTable = function (parent, chartGroup) {\n var LABEL_CSS_CLASS = 'dc-table-label';\n var ROW_CSS_CLASS = 'dc-table-row';\n var COLUMN_CSS_CLASS = 'dc-table-column';\n var GROUP_CSS_CLASS = 'dc-table-group';\n var HEAD_CSS_CLASS = 'dc-table-head';\n\n var _chart = dc.baseMixin({});\n\n var _size = 25;\n var _columns = [];\n var _sortBy = function (d) {\n return d;\n };\n var _order = d3.ascending;\n var _beginSlice = 0;\n var _endSlice;\n var _showGroups = true;\n\n _chart._doRender = function () {\n _chart.selectAll('tbody').remove();\n\n renderRows(renderGroups());\n\n return _chart;\n };\n\n _chart._doColumnValueFormat = function (v, d) {\n return ((typeof v === 'function') ?\n v(d) : // v as function\n ((typeof v === 'string') ?\n d[v] : // v is field name string\n v.format(d) // v is Object, use fn (element 2)\n )\n );\n };\n\n _chart._doColumnHeaderFormat = function (d) {\n // if 'function', convert to string representation\n // show a string capitalized\n // if an object then display its label string as-is.\n return (typeof d === 'function') ?\n _chart._doColumnHeaderFnToString(d) :\n ((typeof d === 'string') ?\n _chart._doColumnHeaderCapitalize(d) : String(d.label));\n };\n\n _chart._doColumnHeaderCapitalize = function (s) {\n // capitalize\n return s.charAt(0).toUpperCase() + s.slice(1);\n };\n\n _chart._doColumnHeaderFnToString = function (f) {\n // columnString(f) {\n var s = String(f);\n var i1 = s.indexOf('return ');\n if (i1 >= 0) {\n var i2 = s.lastIndexOf(';');\n if (i2 >= 0) {\n s = s.substring(i1 + 7, i2);\n var i3 = s.indexOf('numberFormat');\n if (i3 >= 0) {\n s = s.replace('numberFormat', '');\n }\n }\n }\n return s;\n };\n\n function renderGroups () {\n // The 'original' example uses all 'functions'.\n // If all 'functions' are used, then don't remove/add a header, and leave\n // the html alone. This preserves the functionality of earlier releases.\n // A 2nd option is a string representing a field in the data.\n // A third option is to supply an Object such as an array of 'information', and\n // supply your own _doColumnHeaderFormat and _doColumnValueFormat functions to\n // create what you need.\n var bAllFunctions = true;\n _columns.forEach(function (f) {\n bAllFunctions = bAllFunctions & (typeof f === 'function');\n });\n\n if (!bAllFunctions) {\n // ensure one thead\n var thead = _chart.selectAll('thead').data([0]);\n thead.enter().append('thead');\n thead.exit().remove();\n\n // with one tr\n var headrow = thead.selectAll('tr').data([0]);\n headrow.enter().append('tr');\n headrow.exit().remove();\n\n // with a th for each column\n var headcols = headrow.selectAll('th')\n .data(_columns);\n headcols.enter().append('th');\n headcols.exit().remove();\n\n headcols\n .attr('class', HEAD_CSS_CLASS)\n .html(function (d) {\n return (_chart._doColumnHeaderFormat(d));\n\n });\n }\n\n var groups = _chart.root().selectAll('tbody')\n .data(nestEntries(), function (d) {\n return _chart.keyAccessor()(d);\n });\n\n var rowGroup = groups\n .enter()\n .append('tbody');\n\n if (_showGroups === true) {\n rowGroup\n .append('tr')\n .attr('class', GROUP_CSS_CLASS)\n .append('td')\n .attr('class', LABEL_CSS_CLASS)\n .attr('colspan', _columns.length)\n .html(function (d) {\n return _chart.keyAccessor()(d);\n });\n }\n\n groups.exit().remove();\n\n return rowGroup;\n }\n\n function nestEntries () {\n var entries;\n if (_order === d3.ascending) {\n entries = _chart.dimension().bottom(_size);\n } else {\n entries = _chart.dimension().top(_size);\n }\n\n return d3.nest()\n .key(_chart.group())\n .sortKeys(_order)\n .entries(entries.sort(function (a, b) {\n return _order(_sortBy(a), _sortBy(b));\n }).slice(_beginSlice, _endSlice));\n }\n\n function renderRows (groups) {\n var rows = groups.order()\n .selectAll('tr.' + ROW_CSS_CLASS)\n .data(function (d) {\n return d.values;\n });\n\n var rowEnter = rows.enter()\n .append('tr')\n .attr('class', ROW_CSS_CLASS);\n\n _columns.forEach(function (v, i) {\n rowEnter.append('td')\n .attr('class', COLUMN_CSS_CLASS + ' _' + i)\n .html(function (d) {\n return _chart._doColumnValueFormat(v, d);\n });\n });\n\n rows.exit().remove();\n\n return rows;\n }\n\n _chart._doRedraw = function () {\n return _chart._doRender();\n };\n\n /**\n * Get or set the group function for the data table. The group function takes a data row and\n * returns the key to specify to {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_nest d3.nest}\n * to split rows into groups.\n *\n * Do not pass in a crossfilter group as this will not work.\n * @method group\n * @memberof dc.dataTable\n * @instance\n * @example\n * // group rows by the value of their field\n * chart\n * .group(function(d) { return d.field; })\n * @param {Function} groupFunction Function taking a row of data and returning the nest key.\n * @returns {Function|dc.dataTable}\n */\n\n /**\n * Get or set the table size which determines the number of rows displayed by the widget.\n * @method size\n * @memberof dc.dataTable\n * @instance\n * @param {Number} [size=25]\n * @returns {Number|dc.dataTable}\n */\n _chart.size = function (size) {\n if (!arguments.length) {\n return _size;\n }\n _size = size;\n return _chart;\n };\n\n /**\n * Get or set the index of the beginning slice which determines which entries get displayed\n * by the widget. Useful when implementing pagination.\n *\n * Note: the sortBy function will determine how the rows are ordered for pagination purposes.\n\n * See the {@link http://dc-js.github.io/dc.js/examples/table-pagination.html table pagination example}\n * to see how to implement the pagination user interface using `beginSlice` and `endSlice`.\n * @method beginSlice\n * @memberof dc.dataTable\n * @instance\n * @param {Number} [beginSlice=0]\n * @returns {Number|dc.dataTable}\n */\n _chart.beginSlice = function (beginSlice) {\n if (!arguments.length) {\n return _beginSlice;\n }\n _beginSlice = beginSlice;\n return _chart;\n };\n\n /**\n * Get or set the index of the end slice which determines which entries get displayed by the\n * widget. Useful when implementing pagination. See {@link dc.dataTable#beginSlice `beginSlice`} for more information.\n * @method endSlice\n * @memberof dc.dataTable\n * @instance\n * @param {Number|undefined} [endSlice=undefined]\n * @returns {Number|dc.dataTable}\n */\n _chart.endSlice = function (endSlice) {\n if (!arguments.length) {\n return _endSlice;\n }\n _endSlice = endSlice;\n return _chart;\n };\n\n /**\n * Get or set column functions. The data table widget supports several methods of specifying the\n * columns to display.\n *\n * The original method uses an array of functions to generate dynamic columns. Column functions\n * are simple javascript functions with only one input argument `d` which represents a row in\n * the data set. The return value of these functions will be used to generate the content for\n * each cell. However, this method requires the HTML for the table to have a fixed set of column\n * headers.\n *\n *
    chart.columns([\n     *     function(d) { return d.date; },\n     *     function(d) { return d.open; },\n     *     function(d) { return d.close; },\n     *     function(d) { return numberFormat(d.close - d.open); },\n     *     function(d) { return d.volume; }\n     * ]);\n     * 
    \n *\n * In the second method, you can list the columns to read from the data without specifying it as\n * a function, except where necessary (ie, computed columns). Note the data element name is\n * capitalized when displayed in the table header. You can also mix in functions as necessary,\n * using the third `{label, format}` form, as shown below.\n *\n *
    chart.columns([\n     *     \"date\",    // d[\"date\"], ie, a field accessor; capitalized automatically\n     *     \"open\",    // ...\n     *     \"close\",   // ...\n     *     {\n     *         label: \"Change\",\n     *         format: function (d) {\n     *             return numberFormat(d.close - d.open);\n     *         }\n     *     },\n     *     \"volume\"   // d[\"volume\"], ie, a field accessor; capitalized automatically\n     * ]);\n     * 
    \n *\n * In the third example, we specify all fields using the `{label, format}` method:\n *
    chart.columns([\n     *     {\n     *         label: \"Date\",\n     *         format: function (d) { return d.date; }\n     *     },\n     *     {\n     *         label: \"Open\",\n     *         format: function (d) { return numberFormat(d.open); }\n     *     },\n     *     {\n     *         label: \"Close\",\n     *         format: function (d) { return numberFormat(d.close); }\n     *     },\n     *     {\n     *         label: \"Change\",\n     *         format: function (d) { return numberFormat(d.close - d.open); }\n     *     },\n     *     {\n     *         label: \"Volume\",\n     *         format: function (d) { return d.volume; }\n     *     }\n     * ]);\n     * 
    \n *\n * You may wish to override the dataTable functions `_doColumnHeaderCapitalize` and\n * `_doColumnHeaderFnToString`, which are used internally to translate the column information or\n * function into a displayed header. The first one is used on the \"string\" column specifier; the\n * second is used to transform a stringified function into something displayable. For the Stock\n * example, the function for Change becomes the table header **d.close - d.open**.\n *\n * Finally, you can even specify a completely different form of column definition. To do this,\n * override `_chart._doColumnHeaderFormat` and `_chart._doColumnValueFormat` Be aware that\n * fields without numberFormat specification will be displayed just as they are stored in the\n * data, unformatted.\n * @method columns\n * @memberof dc.dataTable\n * @instance\n * @param {Array} [columns=[]]\n * @returns {Array}|dc.dataTable}\n */\n _chart.columns = function (columns) {\n if (!arguments.length) {\n return _columns;\n }\n _columns = columns;\n return _chart;\n };\n\n /**\n * Get or set sort-by function. This function works as a value accessor at row level and returns a\n * particular field to be sorted by.\n * @method sortBy\n * @memberof dc.dataTable\n * @instance\n * @example\n * chart.sortBy(function(d) {\n * return d.date;\n * });\n * @param {Function} [sortBy=identity function]\n * @returns {Function|dc.dataTable}\n */\n _chart.sortBy = function (sortBy) {\n if (!arguments.length) {\n return _sortBy;\n }\n _sortBy = sortBy;\n return _chart;\n };\n\n /**\n * Get or set sort order. If the order is `d3.ascending`, the data table will use\n * `dimension().bottom()` to fetch the data; otherwise it will use `dimension().top()`\n * @method order\n * @memberof dc.dataTable\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending}\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending}\n * @example\n * chart.order(d3.descending);\n * @param {Function} [order=d3.ascending]\n * @returns {Function|dc.dataTable}\n */\n _chart.order = function (order) {\n if (!arguments.length) {\n return _order;\n }\n _order = order;\n return _chart;\n };\n\n /**\n * Get or set if group rows will be shown. The dataTable {@link dc.dataTable#group group}\n * function must be specified even if groups are not shown.\n * @method showGroups\n * @memberof dc.dataTable\n * @instance\n * @example\n * chart\n * .group([value], [name])\n * .showGroups(true|false);\n * @param {Boolean} [showGroups=true]\n * @returns {Boolean|dc.dataTable}\n */\n _chart.showGroups = function (showGroups) {\n if (!arguments.length) {\n return _showGroups;\n }\n _showGroups = showGroups;\n return _chart;\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * Data grid is a simple widget designed to list the filtered records, providing\n * a simple way to define how the items are displayed.\n *\n * Note: Unlike other charts, the data grid chart (and data table) use the {@link dc.dataGrid#group group} attribute as a keying function\n * for {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#nest nesting} the data together in groups.\n * Do not pass in a crossfilter group as this will not work.\n *\n * Examples:\n * - {@link http://europarl.me/dc.js/web/ep/index.html List of members of the european parliament}\n * @class dataGrid\n * @memberof dc\n * @mixes dc.baseMixin\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.dataGrid}\n */\ndc.dataGrid = function (parent, chartGroup) {\n var LABEL_CSS_CLASS = 'dc-grid-label';\n var ITEM_CSS_CLASS = 'dc-grid-item';\n var GROUP_CSS_CLASS = 'dc-grid-group';\n var GRID_CSS_CLASS = 'dc-grid-top';\n\n var _chart = dc.baseMixin({});\n\n var _size = 999; // shouldn't be needed, but you might\n var _html = function (d) { return 'you need to provide an html() handling param: ' + JSON.stringify(d); };\n var _sortBy = function (d) {\n return d;\n };\n var _order = d3.ascending;\n var _beginSlice = 0, _endSlice;\n\n var _htmlGroup = function (d) {\n return '

    ' +\n _chart.keyAccessor()(d) + '

    ';\n };\n\n _chart._doRender = function () {\n _chart.selectAll('div.' + GRID_CSS_CLASS).remove();\n\n renderItems(renderGroups());\n\n return _chart;\n };\n\n function renderGroups () {\n var groups = _chart.root().selectAll('div.' + GRID_CSS_CLASS)\n .data(nestEntries(), function (d) {\n return _chart.keyAccessor()(d);\n });\n\n var itemGroup = groups\n .enter()\n .append('div')\n .attr('class', GRID_CSS_CLASS);\n\n if (_htmlGroup) {\n itemGroup\n .html(function (d) {\n return _htmlGroup(d);\n });\n }\n\n groups.exit().remove();\n return itemGroup;\n }\n\n function nestEntries () {\n var entries = _chart.dimension().top(_size);\n\n return d3.nest()\n .key(_chart.group())\n .sortKeys(_order)\n .entries(entries.sort(function (a, b) {\n return _order(_sortBy(a), _sortBy(b));\n }).slice(_beginSlice, _endSlice));\n }\n\n function renderItems (groups) {\n var items = groups.order()\n .selectAll('div.' + ITEM_CSS_CLASS)\n .data(function (d) {\n return d.values;\n });\n\n items.enter()\n .append('div')\n .attr('class', ITEM_CSS_CLASS)\n .html(function (d) {\n return _html(d);\n });\n\n items.exit().remove();\n\n return items;\n }\n\n _chart._doRedraw = function () {\n return _chart._doRender();\n };\n\n /**\n * Get or set the group function for the data grid. The group function takes a data row and\n * returns the key to specify to {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_nest d3.nest}\n * to split rows into groups.\n *\n * Do not pass in a crossfilter group as this will not work.\n * @method group\n * @memberof dc.dataGrid\n * @instance\n * @example\n * // group rows by the value of their field\n * chart\n * .group(function(d) { return d.field; })\n * @param {Function} groupFunction Function taking a row of data and returning the nest key.\n * @returns {Function|dc.dataTable}\n */\n\n /**\n * Get or set the index of the beginning slice which determines which entries get displayed by the widget.\n * Useful when implementing pagination.\n * @method beginSlice\n * @memberof dc.dataGrid\n * @instance\n * @param {Number} [beginSlice=0]\n * @returns {Number|dc.dataGrid}\n */\n _chart.beginSlice = function (beginSlice) {\n if (!arguments.length) {\n return _beginSlice;\n }\n _beginSlice = beginSlice;\n return _chart;\n };\n\n /**\n * Get or set the index of the end slice which determines which entries get displayed by the widget.\n * Useful when implementing pagination.\n * @method endSlice\n * @memberof dc.dataGrid\n * @instance\n * @param {Number} [endSlice]\n * @returns {Number|dc.dataGrid}\n */\n _chart.endSlice = function (endSlice) {\n if (!arguments.length) {\n return _endSlice;\n }\n _endSlice = endSlice;\n return _chart;\n };\n\n /**\n * Get or set the grid size which determines the number of items displayed by the widget.\n * @method size\n * @memberof dc.dataGrid\n * @instance\n * @param {Number} [size=999]\n * @returns {Number|dc.dataGrid}\n */\n _chart.size = function (size) {\n if (!arguments.length) {\n return _size;\n }\n _size = size;\n return _chart;\n };\n\n /**\n * Get or set the function that formats an item. The data grid widget uses a\n * function to generate dynamic html. Use your favourite templating engine or\n * generate the string directly.\n * @method html\n * @memberof dc.dataGrid\n * @instance\n * @example\n * chart.html(function (d) { return '
    '+data.exampleString+'
    ';});\n * @param {Function} [html]\n * @returns {Function|dc.dataGrid}\n */\n _chart.html = function (html) {\n if (!arguments.length) {\n return _html;\n }\n _html = html;\n return _chart;\n };\n\n /**\n * Get or set the function that formats a group label.\n * @method htmlGroup\n * @memberof dc.dataGrid\n * @instance\n * @example\n * chart.htmlGroup (function (d) { return '

    '.d.key . 'with ' . d.values.length .' items

    '});\n * @param {Function} [htmlGroup]\n * @returns {Function|dc.dataGrid}\n */\n _chart.htmlGroup = function (htmlGroup) {\n if (!arguments.length) {\n return _htmlGroup;\n }\n _htmlGroup = htmlGroup;\n return _chart;\n };\n\n /**\n * Get or set sort-by function. This function works as a value accessor at the item\n * level and returns a particular field to be sorted.\n * @method sortBy\n * @memberof dc.dataGrid\n * @instance\n * @example\n * chart.sortBy(function(d) {\n * return d.date;\n * });\n * @param {Function} [sortByFunction]\n * @returns {Function|dc.dataGrid}\n */\n _chart.sortBy = function (sortByFunction) {\n if (!arguments.length) {\n return _sortBy;\n }\n _sortBy = sortByFunction;\n return _chart;\n };\n\n /**\n * Get or set sort the order function.\n * @method order\n * @memberof dc.dataGrid\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending}\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending}\n * @example\n * chart.order(d3.descending);\n * @param {Function} [order=d3.ascending]\n * @returns {Function|dc.dataGrid}\n */\n _chart.order = function (order) {\n if (!arguments.length) {\n return _order;\n }\n _order = order;\n return _chart;\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * A concrete implementation of a general purpose bubble chart that allows data visualization using the\n * following dimensions:\n * - x axis position\n * - y axis position\n * - bubble radius\n * - color\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * - {@link http://dc-js.github.com/dc.js/vc/index.html US Venture Capital Landscape 2011}\n * @class bubbleChart\n * @memberof dc\n * @mixes dc.bubbleMixin\n * @mixes dc.coordinateGridMixin\n * @example\n * // create a bubble chart under #chart-container1 element using the default global chart group\n * var bubbleChart1 = dc.bubbleChart('#chart-container1');\n * // create a bubble chart under #chart-container2 element using chart group A\n * var bubbleChart2 = dc.bubbleChart('#chart-container2', 'chartGroupA');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.bubbleChart}\n */\ndc.bubbleChart = function (parent, chartGroup) {\n var _chart = dc.bubbleMixin(dc.coordinateGridMixin({}));\n\n var _elasticRadius = false;\n var _sortBubbleSize = false;\n\n _chart.transitionDuration(750);\n\n _chart.transitionDelay(0);\n\n var bubbleLocator = function (d) {\n return 'translate(' + (bubbleX(d)) + ',' + (bubbleY(d)) + ')';\n };\n\n /**\n * Turn on or off the elastic bubble radius feature, or return the value of the flag. If this\n * feature is turned on, then bubble radii will be automatically rescaled to fit the chart better.\n * @method elasticRadius\n * @memberof dc.bubbleChart\n * @instance\n * @param {Boolean} [elasticRadius=false]\n * @returns {Boolean|dc.bubbleChart}\n */\n _chart.elasticRadius = function (elasticRadius) {\n if (!arguments.length) {\n return _elasticRadius;\n }\n _elasticRadius = elasticRadius;\n return _chart;\n };\n\n /**\n * Turn on or off the bubble sorting feature, or return the value of the flag. If enabled,\n * bubbles will be sorted by their radius, with smaller bubbles in front.\n * @method sortBubbleSize\n * @memberof dc.bubbleChart\n * @instance\n * @param {Boolean} [sortBubbleSize=false]\n * @returns {Boolean|dc.bubbleChart}\n */\n _chart.sortBubbleSize = function (sortBubbleSize) {\n if (!arguments.length) {\n return _sortBubbleSize;\n }\n _sortBubbleSize = sortBubbleSize;\n return _chart;\n };\n\n _chart.plotData = function () {\n if (_elasticRadius) {\n _chart.r().domain([_chart.rMin(), _chart.rMax()]);\n }\n\n _chart.r().range([_chart.MIN_RADIUS, _chart.xAxisLength() * _chart.maxBubbleRelativeSize()]);\n\n var data = _chart.data();\n if (_sortBubbleSize) {\n // sort descending so smaller bubbles are on top\n var radiusAccessor = _chart.radiusValueAccessor();\n data.sort(function (a, b) { return d3.descending(radiusAccessor(a), radiusAccessor(b)); });\n }\n var bubbleG = _chart.chartBodyG().selectAll('g.' + _chart.BUBBLE_NODE_CLASS)\n .data(data, function (d) { return d.key; });\n if (_sortBubbleSize) {\n // Call order here to update dom order based on sort\n bubbleG.order();\n }\n\n renderNodes(bubbleG);\n\n updateNodes(bubbleG);\n\n removeNodes(bubbleG);\n\n _chart.fadeDeselectedArea();\n };\n\n function renderNodes (bubbleG) {\n var bubbleGEnter = bubbleG.enter().append('g');\n\n bubbleGEnter\n .attr('class', _chart.BUBBLE_NODE_CLASS)\n .attr('transform', bubbleLocator)\n .append('circle').attr('class', function (d, i) {\n return _chart.BUBBLE_CLASS + ' _' + i;\n })\n .on('click', _chart.onClick)\n .attr('fill', _chart.getColor)\n .attr('r', 0);\n dc.transition(bubbleG, _chart.transitionDuration(), _chart.transitionDelay())\n .select('circle.' + _chart.BUBBLE_CLASS)\n .attr('r', function (d) {\n return _chart.bubbleR(d);\n })\n .attr('opacity', function (d) {\n return (_chart.bubbleR(d) > 0) ? 1 : 0;\n });\n\n _chart._doRenderLabel(bubbleGEnter);\n\n _chart._doRenderTitles(bubbleGEnter);\n }\n\n function updateNodes (bubbleG) {\n dc.transition(bubbleG, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', bubbleLocator)\n .select('circle.' + _chart.BUBBLE_CLASS)\n .attr('fill', _chart.getColor)\n .attr('r', function (d) {\n return _chart.bubbleR(d);\n })\n .attr('opacity', function (d) {\n return (_chart.bubbleR(d) > 0) ? 1 : 0;\n });\n\n _chart.doUpdateLabels(bubbleG);\n _chart.doUpdateTitles(bubbleG);\n }\n\n function removeNodes (bubbleG) {\n bubbleG.exit().remove();\n }\n\n function bubbleX (d) {\n var x = _chart.x()(_chart.keyAccessor()(d));\n if (isNaN(x)) {\n x = 0;\n }\n return x;\n }\n\n function bubbleY (d) {\n var y = _chart.y()(_chart.valueAccessor()(d));\n if (isNaN(y)) {\n y = 0;\n }\n return y;\n }\n\n _chart.renderBrush = function () {\n // override default x axis brush from parent chart\n };\n\n _chart.redrawBrush = function () {\n // override default x axis brush from parent chart\n _chart.fadeDeselectedArea();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * Composite charts are a special kind of chart that render multiple charts on the same Coordinate\n * Grid. You can overlay (compose) different bar/line/area charts in a single composite chart to\n * achieve some quite flexible charting effects.\n * @class compositeChart\n * @memberof dc\n * @mixes dc.coordinateGridMixin\n * @example\n * // create a composite chart under #chart-container1 element using the default global chart group\n * var compositeChart1 = dc.compositeChart('#chart-container1');\n * // create a composite chart under #chart-container2 element using chart group A\n * var compositeChart2 = dc.compositeChart('#chart-container2', 'chartGroupA');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.compositeChart}\n */\ndc.compositeChart = function (parent, chartGroup) {\n\n var SUB_CHART_CLASS = 'sub';\n var DEFAULT_RIGHT_Y_AXIS_LABEL_PADDING = 12;\n\n var _chart = dc.coordinateGridMixin({});\n var _children = [];\n\n var _childOptions = {};\n\n var _shareColors = false,\n _shareTitle = true,\n _alignYAxes = false;\n\n var _rightYAxis = d3.svg.axis(),\n _rightYAxisLabel = 0,\n _rightYAxisLabelPadding = DEFAULT_RIGHT_Y_AXIS_LABEL_PADDING,\n _rightY,\n _rightAxisGridLines = false;\n\n _chart._mandatoryAttributes([]);\n _chart.transitionDuration(500);\n _chart.transitionDelay(0);\n\n dc.override(_chart, '_generateG', function () {\n var g = this.__generateG();\n\n for (var i = 0; i < _children.length; ++i) {\n var child = _children[i];\n\n generateChildG(child, i);\n\n if (!child.dimension()) {\n child.dimension(_chart.dimension());\n }\n if (!child.group()) {\n child.group(_chart.group());\n }\n\n child.chartGroup(_chart.chartGroup());\n child.svg(_chart.svg());\n child.xUnits(_chart.xUnits());\n child.transitionDuration(_chart.transitionDuration(), _chart.transitionDelay());\n child.brushOn(_chart.brushOn());\n child.renderTitle(_chart.renderTitle());\n child.elasticX(_chart.elasticX());\n }\n\n return g;\n });\n\n _chart._brushing = function () {\n var extent = _chart.extendBrush();\n var brushIsEmpty = _chart.brushIsEmpty(extent);\n\n for (var i = 0; i < _children.length; ++i) {\n _children[i].replaceFilter(brushIsEmpty ? null : extent);\n }\n };\n\n _chart._prepareYAxis = function () {\n var left = (leftYAxisChildren().length !== 0);\n var right = (rightYAxisChildren().length !== 0);\n var ranges = calculateYAxisRanges(left, right);\n\n if (left) { prepareLeftYAxis(ranges); }\n if (right) { prepareRightYAxis(ranges); }\n\n if (leftYAxisChildren().length > 0 && !_rightAxisGridLines) {\n _chart._renderHorizontalGridLinesForAxis(_chart.g(), _chart.y(), _chart.yAxis());\n } else if (rightYAxisChildren().length > 0) {\n _chart._renderHorizontalGridLinesForAxis(_chart.g(), _rightY, _rightYAxis);\n }\n };\n\n _chart.renderYAxis = function () {\n if (leftYAxisChildren().length !== 0) {\n _chart.renderYAxisAt('y', _chart.yAxis(), _chart.margins().left);\n _chart.renderYAxisLabel('y', _chart.yAxisLabel(), -90);\n }\n\n if (rightYAxisChildren().length !== 0) {\n _chart.renderYAxisAt('yr', _chart.rightYAxis(), _chart.width() - _chart.margins().right);\n _chart.renderYAxisLabel('yr', _chart.rightYAxisLabel(), 90, _chart.width() - _rightYAxisLabelPadding);\n }\n };\n\n function calculateYAxisRanges (left, right) {\n var lyAxisMin, lyAxisMax, ryAxisMin, ryAxisMax;\n var ranges;\n\n if (left) {\n lyAxisMin = yAxisMin();\n lyAxisMax = yAxisMax();\n }\n\n if (right) {\n ryAxisMin = rightYAxisMin();\n ryAxisMax = rightYAxisMax();\n }\n\n if (_chart.alignYAxes() && left && right) {\n ranges = alignYAxisRanges(lyAxisMin, lyAxisMax, ryAxisMin, ryAxisMax);\n }\n\n return ranges || {\n lyAxisMin: lyAxisMin,\n lyAxisMax: lyAxisMax,\n ryAxisMin: ryAxisMin,\n ryAxisMax: ryAxisMax\n };\n }\n\n function alignYAxisRanges (lyAxisMin, lyAxisMax, ryAxisMin, ryAxisMax) {\n // since the two series will share a zero, each Y is just a multiple\n // of the other. and the ratio should be the ratio of the ranges of the\n // input data, so that they come out the same height. so we just min/max\n\n // note: both ranges already include zero due to the stack mixin (#667)\n // if #667 changes, we can reconsider whether we want data height or\n // height from zero to be equal. and it will be possible for the axes\n // to be aligned but not visible.\n var extentRatio = (ryAxisMax - ryAxisMin) / (lyAxisMax - lyAxisMin);\n\n return {\n lyAxisMin: Math.min(lyAxisMin, ryAxisMin / extentRatio),\n lyAxisMax: Math.max(lyAxisMax, ryAxisMax / extentRatio),\n ryAxisMin: Math.min(ryAxisMin, lyAxisMin * extentRatio),\n ryAxisMax: Math.max(ryAxisMax, lyAxisMax * extentRatio)\n };\n }\n\n function prepareRightYAxis (ranges) {\n var needDomain = _chart.rightY() === undefined || _chart.elasticY(),\n needRange = needDomain || _chart.resizing();\n if (_chart.rightY() === undefined) {\n _chart.rightY(d3.scale.linear());\n }\n if (needDomain) {\n _chart.rightY().domain([ranges.ryAxisMin, ranges.ryAxisMax]);\n }\n if (needRange) {\n _chart.rightY().rangeRound([_chart.yAxisHeight(), 0]);\n }\n\n _chart.rightY().range([_chart.yAxisHeight(), 0]);\n _chart.rightYAxis(_chart.rightYAxis().scale(_chart.rightY()));\n\n _chart.rightYAxis().orient('right');\n }\n\n function prepareLeftYAxis (ranges) {\n var needDomain = _chart.y() === undefined || _chart.elasticY(),\n needRange = needDomain || _chart.resizing();\n if (_chart.y() === undefined) {\n _chart.y(d3.scale.linear());\n }\n if (needDomain) {\n _chart.y().domain([ranges.lyAxisMin, ranges.lyAxisMax]);\n }\n if (needRange) {\n _chart.y().rangeRound([_chart.yAxisHeight(), 0]);\n }\n\n _chart.y().range([_chart.yAxisHeight(), 0]);\n _chart.yAxis(_chart.yAxis().scale(_chart.y()));\n\n _chart.yAxis().orient('left');\n }\n\n function generateChildG (child, i) {\n child._generateG(_chart.g());\n child.g().attr('class', SUB_CHART_CLASS + ' _' + i);\n }\n\n _chart.plotData = function () {\n for (var i = 0; i < _children.length; ++i) {\n var child = _children[i];\n\n if (!child.g()) {\n generateChildG(child, i);\n }\n\n if (_shareColors) {\n child.colors(_chart.colors());\n }\n\n child.x(_chart.x());\n\n child.xAxis(_chart.xAxis());\n\n if (child.useRightYAxis()) {\n child.y(_chart.rightY());\n child.yAxis(_chart.rightYAxis());\n } else {\n child.y(_chart.y());\n child.yAxis(_chart.yAxis());\n }\n\n child.plotData();\n\n child._activateRenderlets();\n }\n };\n\n /**\n * Get or set whether to draw gridlines from the right y axis. Drawing from the left y axis is the\n * default behavior. This option is only respected when subcharts with both left and right y-axes\n * are present.\n * @method useRightAxisGridLines\n * @memberof dc.compositeChart\n * @instance\n * @param {Boolean} [useRightAxisGridLines=false]\n * @returns {Boolean|dc.compositeChart}\n */\n _chart.useRightAxisGridLines = function (useRightAxisGridLines) {\n if (!arguments) {\n return _rightAxisGridLines;\n }\n\n _rightAxisGridLines = useRightAxisGridLines;\n return _chart;\n };\n\n /**\n * Get or set chart-specific options for all child charts. This is equivalent to calling\n * {@link dc.baseMixin#options .options} on each child chart.\n * @method childOptions\n * @memberof dc.compositeChart\n * @instance\n * @param {Object} [childOptions]\n * @returns {Object|dc.compositeChart}\n */\n _chart.childOptions = function (childOptions) {\n if (!arguments.length) {\n return _childOptions;\n }\n _childOptions = childOptions;\n _children.forEach(function (child) {\n child.options(_childOptions);\n });\n return _chart;\n };\n\n _chart.fadeDeselectedArea = function () {\n for (var i = 0; i < _children.length; ++i) {\n var child = _children[i];\n child.brush(_chart.brush());\n child.fadeDeselectedArea();\n }\n };\n\n /**\n * Set or get the right y axis label.\n * @method rightYAxisLabel\n * @memberof dc.compositeChart\n * @instance\n * @param {String} [rightYAxisLabel]\n * @param {Number} [padding]\n * @returns {String|dc.compositeChart}\n */\n _chart.rightYAxisLabel = function (rightYAxisLabel, padding) {\n if (!arguments.length) {\n return _rightYAxisLabel;\n }\n _rightYAxisLabel = rightYAxisLabel;\n _chart.margins().right -= _rightYAxisLabelPadding;\n _rightYAxisLabelPadding = (padding === undefined) ? DEFAULT_RIGHT_Y_AXIS_LABEL_PADDING : padding;\n _chart.margins().right += _rightYAxisLabelPadding;\n return _chart;\n };\n\n /**\n * Combine the given charts into one single composite coordinate grid chart.\n * @method compose\n * @memberof dc.compositeChart\n * @instance\n * @example\n * moveChart.compose([\n * // when creating sub-chart you need to pass in the parent chart\n * dc.lineChart(moveChart)\n * .group(indexAvgByMonthGroup) // if group is missing then parent's group will be used\n * .valueAccessor(function (d){return d.value.avg;})\n * // most of the normal functions will continue to work in a composed chart\n * .renderArea(true)\n * .stack(monthlyMoveGroup, function (d){return d.value;})\n * .title(function (d){\n * var value = d.value.avg?d.value.avg:d.value;\n * if(isNaN(value)) value = 0;\n * return dateFormat(d.key) + '\\n' + numberFormat(value);\n * }),\n * dc.barChart(moveChart)\n * .group(volumeByMonthGroup)\n * .centerBar(true)\n * ]);\n * @param {Array} [subChartArray]\n * @returns {dc.compositeChart}\n */\n _chart.compose = function (subChartArray) {\n _children = subChartArray;\n _children.forEach(function (child) {\n child.height(_chart.height());\n child.width(_chart.width());\n child.margins(_chart.margins());\n\n if (_shareTitle) {\n child.title(_chart.title());\n }\n\n child.options(_childOptions);\n });\n return _chart;\n };\n\n /**\n * Returns the child charts which are composed into the composite chart.\n * @method children\n * @memberof dc.compositeChart\n * @instance\n * @returns {Array}\n */\n _chart.children = function () {\n return _children;\n };\n\n /**\n * Get or set color sharing for the chart. If set, the {@link dc.colorMixin#colors .colors()} value from this chart\n * will be shared with composed children. Additionally if the child chart implements\n * Stackable and has not set a custom .colorAccessor, then it will generate a color\n * specific to its order in the composition.\n * @method shareColors\n * @memberof dc.compositeChart\n * @instance\n * @param {Boolean} [shareColors=false]\n * @returns {Boolean|dc.compositeChart}\n */\n _chart.shareColors = function (shareColors) {\n if (!arguments.length) {\n return _shareColors;\n }\n _shareColors = shareColors;\n return _chart;\n };\n\n /**\n * Get or set title sharing for the chart. If set, the {@link dc.baseMixin#title .title()} value from\n * this chart will be shared with composed children.\n * @method shareTitle\n * @memberof dc.compositeChart\n * @instance\n * @param {Boolean} [shareTitle=true]\n * @returns {Boolean|dc.compositeChart}\n */\n _chart.shareTitle = function (shareTitle) {\n if (!arguments.length) {\n return _shareTitle;\n }\n _shareTitle = shareTitle;\n return _chart;\n };\n\n /**\n * Get or set the y scale for the right axis. The right y scale is typically automatically\n * generated by the chart implementation.\n * @method rightY\n * @memberof dc.compositeChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale}\n * @param {d3.scale} [yScale]\n * @returns {d3.scale|dc.compositeChart}\n */\n _chart.rightY = function (yScale) {\n if (!arguments.length) {\n return _rightY;\n }\n _rightY = yScale;\n _chart.rescale();\n return _chart;\n };\n\n /**\n * Get or set alignment between left and right y axes. A line connecting '0' on both y axis\n * will be parallel to x axis. This only has effect when {@link #dc.coordinateGridMixin+elasticY elasticY} is true.\n * @method alignYAxes\n * @memberof dc.compositeChart\n * @instance\n * @param {Boolean} [alignYAxes=false]\n * @returns {Chart}\n */\n _chart.alignYAxes = function (alignYAxes) {\n if (!arguments.length) {\n return _alignYAxes;\n }\n _alignYAxes = alignYAxes;\n _chart.rescale();\n return _chart;\n };\n\n function leftYAxisChildren () {\n return _children.filter(function (child) {\n return !child.useRightYAxis();\n });\n }\n\n function rightYAxisChildren () {\n return _children.filter(function (child) {\n return child.useRightYAxis();\n });\n }\n\n function getYAxisMin (charts) {\n return charts.map(function (c) {\n return c.yAxisMin();\n });\n }\n\n delete _chart.yAxisMin;\n function yAxisMin () {\n return d3.min(getYAxisMin(leftYAxisChildren()));\n }\n\n function rightYAxisMin () {\n return d3.min(getYAxisMin(rightYAxisChildren()));\n }\n\n function getYAxisMax (charts) {\n return charts.map(function (c) {\n return c.yAxisMax();\n });\n }\n\n delete _chart.yAxisMax;\n function yAxisMax () {\n return dc.utils.add(d3.max(getYAxisMax(leftYAxisChildren())), _chart.yAxisPadding());\n }\n\n function rightYAxisMax () {\n return dc.utils.add(d3.max(getYAxisMax(rightYAxisChildren())), _chart.yAxisPadding());\n }\n\n function getAllXAxisMinFromChildCharts () {\n return _children.map(function (c) {\n return c.xAxisMin();\n });\n }\n\n dc.override(_chart, 'xAxisMin', function () {\n return dc.utils.subtract(d3.min(getAllXAxisMinFromChildCharts()), _chart.xAxisPadding());\n });\n\n function getAllXAxisMaxFromChildCharts () {\n return _children.map(function (c) {\n return c.xAxisMax();\n });\n }\n\n dc.override(_chart, 'xAxisMax', function () {\n return dc.utils.add(d3.max(getAllXAxisMaxFromChildCharts()), _chart.xAxisPadding());\n });\n\n _chart.legendables = function () {\n return _children.reduce(function (items, child) {\n if (_shareColors) {\n child.colors(_chart.colors());\n }\n items.push.apply(items, child.legendables());\n return items;\n }, []);\n };\n\n _chart.legendHighlight = function (d) {\n for (var j = 0; j < _children.length; ++j) {\n var child = _children[j];\n child.legendHighlight(d);\n }\n };\n\n _chart.legendReset = function (d) {\n for (var j = 0; j < _children.length; ++j) {\n var child = _children[j];\n child.legendReset(d);\n }\n };\n\n _chart.legendToggle = function () {\n console.log('composite should not be getting legendToggle itself');\n };\n\n /**\n * Set or get the right y axis used by the composite chart. This function is most useful when y\n * axis customization is required. The y axis in dc.js is an instance of a [d3 axis\n * object](https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis) therefore it supports any valid\n * d3 axis manipulation.\n *\n * **Caution**: The y axis is usually generated internally by dc; resetting it may cause\n * unexpected results.\n * @method rightYAxis\n * @memberof dc.compositeChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis}\n * @example\n * // customize y axis tick format\n * chart.rightYAxis().tickFormat(function (v) {return v + '%';});\n * // customize y axis tick values\n * chart.rightYAxis().tickValues([0, 100, 200, 300]);\n * @param {d3.svg.axis} [rightYAxis]\n * @returns {d3.svg.axis|dc.compositeChart}\n */\n _chart.rightYAxis = function (rightYAxis) {\n if (!arguments.length) {\n return _rightYAxis;\n }\n _rightYAxis = rightYAxis;\n return _chart;\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * A series chart is a chart that shows multiple series of data overlaid on one chart, where the\n * series is specified in the data. It is a specialization of Composite Chart and inherits all\n * composite features other than recomposing the chart.\n *\n * Examples:\n * - {@link http://dc-js.github.io/dc.js/examples/series.html Series Chart}\n * @class seriesChart\n * @memberof dc\n * @mixes dc.compositeChart\n * @example\n * // create a series chart under #chart-container1 element using the default global chart group\n * var seriesChart1 = dc.seriesChart(\"#chart-container1\");\n * // create a series chart under #chart-container2 element using chart group A\n * var seriesChart2 = dc.seriesChart(\"#chart-container2\", \"chartGroupA\");\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.seriesChart}\n */\ndc.seriesChart = function (parent, chartGroup) {\n var _chart = dc.compositeChart(parent, chartGroup);\n\n function keySort (a, b) {\n return d3.ascending(_chart.keyAccessor()(a), _chart.keyAccessor()(b));\n }\n\n var _charts = {};\n var _chartFunction = dc.lineChart;\n var _seriesAccessor;\n var _seriesSort = d3.ascending;\n var _valueSort = keySort;\n\n _chart._mandatoryAttributes().push('seriesAccessor', 'chart');\n _chart.shareColors(true);\n\n _chart._preprocessData = function () {\n var keep = [];\n var childrenChanged;\n var nester = d3.nest().key(_seriesAccessor);\n if (_seriesSort) {\n nester.sortKeys(_seriesSort);\n }\n if (_valueSort) {\n nester.sortValues(_valueSort);\n }\n var nesting = nester.entries(_chart.data());\n var children =\n nesting.map(function (sub, i) {\n var subChart = _charts[sub.key] || _chartFunction.call(_chart, _chart, chartGroup, sub.key, i);\n if (!_charts[sub.key]) {\n childrenChanged = true;\n }\n _charts[sub.key] = subChart;\n keep.push(sub.key);\n return subChart\n .dimension(_chart.dimension())\n .group({all: d3.functor(sub.values)}, sub.key)\n .keyAccessor(_chart.keyAccessor())\n .valueAccessor(_chart.valueAccessor())\n .brushOn(_chart.brushOn());\n });\n // this works around the fact compositeChart doesn't really\n // have a removal interface\n Object.keys(_charts)\n .filter(function (c) {return keep.indexOf(c) === -1;})\n .forEach(function (c) {\n clearChart(c);\n childrenChanged = true;\n });\n _chart._compose(children);\n if (childrenChanged && _chart.legend()) {\n _chart.legend().render();\n }\n };\n\n function clearChart (c) {\n if (_charts[c].g()) {\n _charts[c].g().remove();\n }\n delete _charts[c];\n }\n\n function resetChildren () {\n Object.keys(_charts).map(clearChart);\n _charts = {};\n }\n\n /**\n * Get or set the chart function, which generates the child charts.\n * @method chart\n * @memberof dc.seriesChart\n * @instance\n * @example\n * // put interpolation on the line charts used for the series\n * chart.chart(function(c) { return dc.lineChart(c).interpolate('basis'); })\n * // do a scatter series chart\n * chart.chart(dc.scatterPlot)\n * @param {Function} [chartFunction=dc.lineChart]\n * @returns {Function|dc.seriesChart}\n */\n _chart.chart = function (chartFunction) {\n if (!arguments.length) {\n return _chartFunction;\n }\n _chartFunction = chartFunction;\n resetChildren();\n return _chart;\n };\n\n /**\n * **mandatory**\n *\n * Get or set accessor function for the displayed series. Given a datum, this function\n * should return the series that datum belongs to.\n * @method seriesAccessor\n * @memberof dc.seriesChart\n * @instance\n * @example\n * // simple series accessor\n * chart.seriesAccessor(function(d) { return \"Expt: \" + d.key[0]; })\n * @param {Function} [accessor]\n * @returns {Function|dc.seriesChart}\n */\n _chart.seriesAccessor = function (accessor) {\n if (!arguments.length) {\n return _seriesAccessor;\n }\n _seriesAccessor = accessor;\n resetChildren();\n return _chart;\n };\n\n /**\n * Get or set a function to sort the list of series by, given series values.\n * @method seriesSort\n * @memberof dc.seriesChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending}\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending}\n * @example\n * chart.seriesSort(d3.descending);\n * @param {Function} [sortFunction=d3.ascending]\n * @returns {Function|dc.seriesChart}\n */\n _chart.seriesSort = function (sortFunction) {\n if (!arguments.length) {\n return _seriesSort;\n }\n _seriesSort = sortFunction;\n resetChildren();\n return _chart;\n };\n\n /**\n * Get or set a function to sort each series values by. By default this is the key accessor which,\n * for example, will ensure a lineChart series connects its points in increasing key/x order,\n * rather than haphazardly.\n * @method valueSort\n * @memberof dc.seriesChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending}\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending}\n * @example\n * // Default value sort\n * _chart.valueSort(function keySort (a, b) {\n * return d3.ascending(_chart.keyAccessor()(a), _chart.keyAccessor()(b));\n * });\n * @param {Function} [sortFunction]\n * @returns {Function|dc.seriesChart}\n */\n _chart.valueSort = function (sortFunction) {\n if (!arguments.length) {\n return _valueSort;\n }\n _valueSort = sortFunction;\n resetChildren();\n return _chart;\n };\n\n // make compose private\n _chart._compose = _chart.compose;\n delete _chart.compose;\n\n return _chart;\n};\n\n/**\n * The geo choropleth chart is designed as an easy way to create a crossfilter driven choropleth map\n * from GeoJson data. This chart implementation was inspired by\n * {@link http://bl.ocks.org/4060606 the great d3 choropleth example}.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/vc/index.html US Venture Capital Landscape 2011}\n * @class geoChoroplethChart\n * @memberof dc\n * @mixes dc.colorMixin\n * @mixes dc.baseMixin\n * @example\n * // create a choropleth chart under '#us-chart' element using the default global chart group\n * var chart1 = dc.geoChoroplethChart('#us-chart');\n * // create a choropleth chart under '#us-chart2' element using chart group A\n * var chart2 = dc.compositeChart('#us-chart2', 'chartGroupA');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.geoChoroplethChart}\n */\ndc.geoChoroplethChart = function (parent, chartGroup) {\n var _chart = dc.colorMixin(dc.baseMixin({}));\n\n _chart.colorAccessor(function (d) {\n return d || 0;\n });\n\n var _geoPath = d3.geo.path();\n var _projectionFlag;\n\n var _geoJsons = [];\n\n _chart._doRender = function () {\n _chart.resetSvg();\n for (var layerIndex = 0; layerIndex < _geoJsons.length; ++layerIndex) {\n var states = _chart.svg().append('g')\n .attr('class', 'layer' + layerIndex);\n\n var regionG = states.selectAll('g.' + geoJson(layerIndex).name)\n .data(geoJson(layerIndex).data)\n .enter()\n .append('g')\n .attr('class', geoJson(layerIndex).name);\n\n regionG\n .append('path')\n .attr('fill', 'white')\n .attr('d', _geoPath);\n\n regionG.append('title');\n\n plotData(layerIndex);\n }\n _projectionFlag = false;\n };\n\n function plotData (layerIndex) {\n var data = generateLayeredData();\n\n if (isDataLayer(layerIndex)) {\n var regionG = renderRegionG(layerIndex);\n\n renderPaths(regionG, layerIndex, data);\n\n renderTitle(regionG, layerIndex, data);\n }\n }\n\n function generateLayeredData () {\n var data = {};\n var groupAll = _chart.data();\n for (var i = 0; i < groupAll.length; ++i) {\n data[_chart.keyAccessor()(groupAll[i])] = _chart.valueAccessor()(groupAll[i]);\n }\n return data;\n }\n\n function isDataLayer (layerIndex) {\n return geoJson(layerIndex).keyAccessor;\n }\n\n function renderRegionG (layerIndex) {\n var regionG = _chart.svg()\n .selectAll(layerSelector(layerIndex))\n .classed('selected', function (d) {\n return isSelected(layerIndex, d);\n })\n .classed('deselected', function (d) {\n return isDeselected(layerIndex, d);\n })\n .attr('class', function (d) {\n var layerNameClass = geoJson(layerIndex).name;\n var regionClass = dc.utils.nameToId(geoJson(layerIndex).keyAccessor(d));\n var baseClasses = layerNameClass + ' ' + regionClass;\n if (isSelected(layerIndex, d)) {\n baseClasses += ' selected';\n }\n if (isDeselected(layerIndex, d)) {\n baseClasses += ' deselected';\n }\n return baseClasses;\n });\n return regionG;\n }\n\n function layerSelector (layerIndex) {\n return 'g.layer' + layerIndex + ' g.' + geoJson(layerIndex).name;\n }\n\n function isSelected (layerIndex, d) {\n return _chart.hasFilter() && _chart.hasFilter(getKey(layerIndex, d));\n }\n\n function isDeselected (layerIndex, d) {\n return _chart.hasFilter() && !_chart.hasFilter(getKey(layerIndex, d));\n }\n\n function getKey (layerIndex, d) {\n return geoJson(layerIndex).keyAccessor(d);\n }\n\n function geoJson (index) {\n return _geoJsons[index];\n }\n\n function renderPaths (regionG, layerIndex, data) {\n var paths = regionG\n .select('path')\n .attr('fill', function () {\n var currentFill = d3.select(this).attr('fill');\n if (currentFill) {\n return currentFill;\n }\n return 'none';\n })\n .on('click', function (d) {\n return _chart.onClick(d, layerIndex);\n });\n\n dc.transition(paths, _chart.transitionDuration(), _chart.transitionDelay()).attr('fill', function (d, i) {\n return _chart.getColor(data[geoJson(layerIndex).keyAccessor(d)], i);\n });\n }\n\n _chart.onClick = function (d, layerIndex) {\n var selectedRegion = geoJson(layerIndex).keyAccessor(d);\n dc.events.trigger(function () {\n _chart.filter(selectedRegion);\n _chart.redrawGroup();\n });\n };\n\n function renderTitle (regionG, layerIndex, data) {\n if (_chart.renderTitle()) {\n regionG.selectAll('title').text(function (d) {\n var key = getKey(layerIndex, d);\n var value = data[key];\n return _chart.title()({key: key, value: value});\n });\n }\n }\n\n _chart._doRedraw = function () {\n for (var layerIndex = 0; layerIndex < _geoJsons.length; ++layerIndex) {\n plotData(layerIndex);\n if (_projectionFlag) {\n _chart.svg().selectAll('g.' + geoJson(layerIndex).name + ' path').attr('d', _geoPath);\n }\n }\n _projectionFlag = false;\n };\n\n /**\n * **mandatory**\n *\n * Use this function to insert a new GeoJson map layer. This function can be invoked multiple times\n * if you have multiple GeoJson data layers to render on top of each other. If you overlay multiple\n * layers with the same name the new overlay will override the existing one.\n * @method overlayGeoJson\n * @memberof dc.geoChoroplethChart\n * @instance\n * @see {@link http://geojson.org/ GeoJSON}\n * @see {@link https://github.com/topojson/topojson/wiki TopoJSON}\n * @see {@link https://github.com/topojson/topojson-1.x-api-reference/blob/master/API-Reference.md#wiki-feature topojson.feature}\n * @example\n * // insert a layer for rendering US states\n * chart.overlayGeoJson(statesJson.features, 'state', function(d) {\n * return d.properties.name;\n * });\n * @param {geoJson} json - a geojson feed\n * @param {String} name - name of the layer\n * @param {Function} keyAccessor - accessor function used to extract 'key' from the GeoJson data. The key extracted by\n * this function should match the keys returned by the crossfilter groups.\n * @returns {dc.geoChoroplethChart}\n */\n _chart.overlayGeoJson = function (json, name, keyAccessor) {\n for (var i = 0; i < _geoJsons.length; ++i) {\n if (_geoJsons[i].name === name) {\n _geoJsons[i].data = json;\n _geoJsons[i].keyAccessor = keyAccessor;\n return _chart;\n }\n }\n _geoJsons.push({name: name, data: json, keyAccessor: keyAccessor});\n return _chart;\n };\n\n /**\n * Set custom geo projection function. See the available\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Projections.md d3 geo projection functions}.\n * @method projection\n * @memberof dc.geoChoroplethChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Projections.md d3.geo.projection}\n * @see {@link https://github.com/d3/d3-geo-projection Extended d3.geo.projection}\n * @param {d3.projection} [projection=d3.geo.albersUsa()]\n * @returns {dc.geoChoroplethChart}\n */\n _chart.projection = function (projection) {\n _geoPath.projection(projection);\n _projectionFlag = true;\n return _chart;\n };\n\n /**\n * Returns all GeoJson layers currently registered with this chart. The returned array is a\n * reference to this chart's internal data structure, so any modification to this array will also\n * modify this chart's internal registration.\n * @method geoJsons\n * @memberof dc.geoChoroplethChart\n * @instance\n * @returns {Array<{name:String, data: Object, accessor: Function}>}\n */\n _chart.geoJsons = function () {\n return _geoJsons;\n };\n\n /**\n * Returns the {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Paths.md#path d3.geo.path} object used to\n * render the projection and features. Can be useful for figuring out the bounding box of the\n * feature set and thus a way to calculate scale and translation for the projection.\n * @method geoPath\n * @memberof dc.geoChoroplethChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Paths.md#path d3.geo.path}\n * @returns {d3.geo.path}\n */\n _chart.geoPath = function () {\n return _geoPath;\n };\n\n /**\n * Remove a GeoJson layer from this chart by name\n * @method removeGeoJson\n * @memberof dc.geoChoroplethChart\n * @instance\n * @param {String} name\n * @returns {dc.geoChoroplethChart}\n */\n _chart.removeGeoJson = function (name) {\n var geoJsons = [];\n\n for (var i = 0; i < _geoJsons.length; ++i) {\n var layer = _geoJsons[i];\n if (layer.name !== name) {\n geoJsons.push(layer);\n }\n }\n\n _geoJsons = geoJsons;\n\n return _chart;\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * The bubble overlay chart is quite different from the typical bubble chart. With the bubble overlay\n * chart you can arbitrarily place bubbles on an existing svg or bitmap image, thus changing the\n * typical x and y positioning while retaining the capability to visualize data using bubble radius\n * and coloring.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/crime/index.html Canadian City Crime Stats}\n * @class bubbleOverlay\n * @memberof dc\n * @mixes dc.bubbleMixin\n * @mixes dc.baseMixin\n * @example\n * // create a bubble overlay chart on top of the '#chart-container1 svg' element using the default global chart group\n * var bubbleChart1 = dc.bubbleOverlayChart('#chart-container1').svg(d3.select('#chart-container1 svg'));\n * // create a bubble overlay chart on top of the '#chart-container2 svg' element using chart group A\n * var bubbleChart2 = dc.compositeChart('#chart-container2', 'chartGroupA').svg(d3.select('#chart-container2 svg'));\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.bubbleOverlay}\n */\ndc.bubbleOverlay = function (parent, chartGroup) {\n var BUBBLE_OVERLAY_CLASS = 'bubble-overlay';\n var BUBBLE_NODE_CLASS = 'node';\n var BUBBLE_CLASS = 'bubble';\n\n /**\n * **mandatory**\n *\n * Set the underlying svg image element. Unlike other dc charts this chart will not generate a svg\n * element; therefore the bubble overlay chart will not work if this function is not invoked. If the\n * underlying image is a bitmap, then an empty svg will need to be created on top of the image.\n * @method svg\n * @memberof dc.bubbleOverlay\n * @instance\n * @example\n * // set up underlying svg element\n * chart.svg(d3.select('#chart svg'));\n * @param {SVGElement|d3.selection} [imageElement]\n * @returns {dc.bubbleOverlay}\n */\n var _chart = dc.bubbleMixin(dc.baseMixin({}));\n var _g;\n var _points = [];\n\n _chart.transitionDuration(750);\n\n _chart.transitionDelay(0);\n\n _chart.radiusValueAccessor(function (d) {\n return d.value;\n });\n\n /**\n * **mandatory**\n *\n * Set up a data point on the overlay. The name of a data point should match a specific 'key' among\n * data groups generated using keyAccessor. If a match is found (point name <-> data group key)\n * then a bubble will be generated at the position specified by the function. x and y\n * value specified here are relative to the underlying svg.\n * @method point\n * @memberof dc.bubbleOverlay\n * @instance\n * @param {String} name\n * @param {Number} x\n * @param {Number} y\n * @returns {dc.bubbleOverlay}\n */\n _chart.point = function (name, x, y) {\n _points.push({name: name, x: x, y: y});\n return _chart;\n };\n\n _chart._doRender = function () {\n _g = initOverlayG();\n\n _chart.r().range([_chart.MIN_RADIUS, _chart.width() * _chart.maxBubbleRelativeSize()]);\n\n initializeBubbles();\n\n _chart.fadeDeselectedArea();\n\n return _chart;\n };\n\n function initOverlayG () {\n _g = _chart.select('g.' + BUBBLE_OVERLAY_CLASS);\n if (_g.empty()) {\n _g = _chart.svg().append('g').attr('class', BUBBLE_OVERLAY_CLASS);\n }\n return _g;\n }\n\n function initializeBubbles () {\n var data = mapData();\n\n _points.forEach(function (point) {\n var nodeG = getNodeG(point, data);\n\n var circle = nodeG.select('circle.' + BUBBLE_CLASS);\n\n if (circle.empty()) {\n circle = nodeG.append('circle')\n .attr('class', BUBBLE_CLASS)\n .attr('r', 0)\n .attr('fill', _chart.getColor)\n .on('click', _chart.onClick);\n }\n\n dc.transition(circle, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('r', function (d) {\n return _chart.bubbleR(d);\n });\n\n _chart._doRenderLabel(nodeG);\n\n _chart._doRenderTitles(nodeG);\n });\n }\n\n function mapData () {\n var data = {};\n _chart.data().forEach(function (datum) {\n data[_chart.keyAccessor()(datum)] = datum;\n });\n return data;\n }\n\n function getNodeG (point, data) {\n var bubbleNodeClass = BUBBLE_NODE_CLASS + ' ' + dc.utils.nameToId(point.name);\n\n var nodeG = _g.select('g.' + dc.utils.nameToId(point.name));\n\n if (nodeG.empty()) {\n nodeG = _g.append('g')\n .attr('class', bubbleNodeClass)\n .attr('transform', 'translate(' + point.x + ',' + point.y + ')');\n }\n\n nodeG.datum(data[point.name]);\n\n return nodeG;\n }\n\n _chart._doRedraw = function () {\n updateBubbles();\n\n _chart.fadeDeselectedArea();\n\n return _chart;\n };\n\n function updateBubbles () {\n var data = mapData();\n\n _points.forEach(function (point) {\n var nodeG = getNodeG(point, data);\n\n var circle = nodeG.select('circle.' + BUBBLE_CLASS);\n\n dc.transition(circle, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('r', function (d) {\n return _chart.bubbleR(d);\n })\n .attr('fill', _chart.getColor);\n\n _chart.doUpdateLabels(nodeG);\n\n _chart.doUpdateTitles(nodeG);\n });\n }\n\n _chart.debug = function (flag) {\n if (flag) {\n var debugG = _chart.select('g.' + dc.constants.DEBUG_GROUP_CLASS);\n\n if (debugG.empty()) {\n debugG = _chart.svg()\n .append('g')\n .attr('class', dc.constants.DEBUG_GROUP_CLASS);\n }\n\n var debugText = debugG.append('text')\n .attr('x', 10)\n .attr('y', 20);\n\n debugG\n .append('rect')\n .attr('width', _chart.width())\n .attr('height', _chart.height())\n .on('mousemove', function () {\n var position = d3.mouse(debugG.node());\n var msg = position[0] + ', ' + position[1];\n debugText.text(msg);\n });\n } else {\n _chart.selectAll('.debug').remove();\n }\n\n return _chart;\n };\n\n _chart.anchor(parent, chartGroup);\n\n return _chart;\n};\n\n/**\n * Concrete row chart implementation.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * @class rowChart\n * @memberof dc\n * @mixes dc.capMixin\n * @mixes dc.marginMixin\n * @mixes dc.colorMixin\n * @mixes dc.baseMixin\n * @example\n * // create a row chart under #chart-container1 element using the default global chart group\n * var chart1 = dc.rowChart('#chart-container1');\n * // create a row chart under #chart-container2 element using chart group A\n * var chart2 = dc.rowChart('#chart-container2', 'chartGroupA');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.rowChart}\n */\ndc.rowChart = function (parent, chartGroup) {\n\n var _g;\n\n var _labelOffsetX = 10;\n var _labelOffsetY = 15;\n var _hasLabelOffsetY = false;\n var _dyOffset = '0.35em'; // this helps center labels https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#svg_text\n var _titleLabelOffsetX = 2;\n\n var _gap = 5;\n\n var _fixedBarHeight = false;\n var _rowCssClass = 'row';\n var _titleRowCssClass = 'titlerow';\n var _renderTitleLabel = false;\n\n var _chart = dc.capMixin(dc.marginMixin(dc.colorMixin(dc.baseMixin({}))));\n\n var _x;\n\n var _elasticX;\n\n var _xAxis = d3.svg.axis().orient('bottom');\n\n var _rowData;\n\n _chart.rowsCap = _chart.cap;\n\n function calculateAxisScale () {\n if (!_x || _elasticX) {\n var extent = d3.extent(_rowData, _chart.cappedValueAccessor);\n if (extent[0] > 0) {\n extent[0] = 0;\n }\n if (extent[1] < 0) {\n extent[1] = 0;\n }\n _x = d3.scale.linear().domain(extent)\n .range([0, _chart.effectiveWidth()]);\n }\n _xAxis.scale(_x);\n }\n\n function drawAxis () {\n var axisG = _g.select('g.axis');\n\n calculateAxisScale();\n\n if (axisG.empty()) {\n axisG = _g.append('g').attr('class', 'axis');\n }\n axisG.attr('transform', 'translate(0, ' + _chart.effectiveHeight() + ')');\n\n dc.transition(axisG, _chart.transitionDuration(), _chart.transitionDelay())\n .call(_xAxis);\n }\n\n _chart._doRender = function () {\n _chart.resetSvg();\n\n _g = _chart.svg()\n .append('g')\n .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart.margins().top + ')');\n\n drawChart();\n\n return _chart;\n };\n\n _chart.title(function (d) {\n return _chart.cappedKeyAccessor(d) + ': ' + _chart.cappedValueAccessor(d);\n });\n\n _chart.label(_chart.cappedKeyAccessor);\n\n /**\n * Gets or sets the x scale. The x scale can be any d3\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md quantitive scale}.\n * @method x\n * @memberof dc.rowChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md quantitive scale}\n * @param {d3.scale} [scale]\n * @returns {d3.scale|dc.rowChart}\n */\n _chart.x = function (scale) {\n if (!arguments.length) {\n return _x;\n }\n _x = scale;\n return _chart;\n };\n\n function drawGridLines () {\n _g.selectAll('g.tick')\n .select('line.grid-line')\n .remove();\n\n _g.selectAll('g.tick')\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('y1', 0)\n .attr('x2', 0)\n .attr('y2', function () {\n return -_chart.effectiveHeight();\n });\n }\n\n function drawChart () {\n _rowData = _chart.data();\n\n drawAxis();\n drawGridLines();\n\n var rows = _g.selectAll('g.' + _rowCssClass)\n .data(_rowData);\n\n createElements(rows);\n removeElements(rows);\n updateElements(rows);\n }\n\n function createElements (rows) {\n var rowEnter = rows.enter()\n .append('g')\n .attr('class', function (d, i) {\n return _rowCssClass + ' _' + i;\n });\n\n rowEnter.append('rect').attr('width', 0);\n\n createLabels(rowEnter);\n }\n\n function removeElements (rows) {\n rows.exit().remove();\n }\n\n function rootValue () {\n var root = _x(0);\n return (root === -Infinity || root !== root) ? _x(1) : root;\n }\n\n function updateElements (rows) {\n var n = _rowData.length;\n\n var height;\n if (!_fixedBarHeight) {\n height = (_chart.effectiveHeight() - (n + 1) * _gap) / n;\n } else {\n height = _fixedBarHeight;\n }\n\n // vertically align label in center unless they override the value via property setter\n if (!_hasLabelOffsetY) {\n _labelOffsetY = height / 2;\n }\n\n var rect = rows.attr('transform', function (d, i) {\n return 'translate(0,' + ((i + 1) * _gap + i * height) + ')';\n }).select('rect')\n .attr('height', height)\n .attr('fill', _chart.getColor)\n .on('click', onClick)\n .classed('deselected', function (d) {\n return (_chart.hasFilter()) ? !isSelectedRow(d) : false;\n })\n .classed('selected', function (d) {\n return (_chart.hasFilter()) ? isSelectedRow(d) : false;\n });\n\n dc.transition(rect, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('width', function (d) {\n return Math.abs(rootValue() - _x(_chart.valueAccessor()(d)));\n })\n .attr('transform', translateX);\n\n createTitles(rows);\n updateLabels(rows);\n }\n\n function createTitles (rows) {\n if (_chart.renderTitle()) {\n rows.select('title').remove();\n rows.append('title').text(_chart.title());\n }\n }\n\n function createLabels (rowEnter) {\n if (_chart.renderLabel()) {\n rowEnter.append('text')\n .on('click', onClick);\n }\n if (_chart.renderTitleLabel()) {\n rowEnter.append('text')\n .attr('class', _titleRowCssClass)\n .on('click', onClick);\n }\n }\n\n function updateLabels (rows) {\n if (_chart.renderLabel()) {\n var lab = rows.select('text')\n .attr('x', _labelOffsetX)\n .attr('y', _labelOffsetY)\n .attr('dy', _dyOffset)\n .on('click', onClick)\n .attr('class', function (d, i) {\n return _rowCssClass + ' _' + i;\n })\n .text(function (d) {\n return _chart.label()(d);\n });\n dc.transition(lab, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', translateX);\n }\n if (_chart.renderTitleLabel()) {\n var titlelab = rows.select('.' + _titleRowCssClass)\n .attr('x', _chart.effectiveWidth() - _titleLabelOffsetX)\n .attr('y', _labelOffsetY)\n .attr('dy', _dyOffset)\n .attr('text-anchor', 'end')\n .on('click', onClick)\n .attr('class', function (d, i) {\n return _titleRowCssClass + ' _' + i ;\n })\n .text(function (d) {\n return _chart.title()(d);\n });\n dc.transition(titlelab, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', translateX);\n }\n }\n\n /**\n * Turn on/off Title label rendering (values) using SVG style of text-anchor 'end'.\n * @method renderTitleLabel\n * @memberof dc.rowChart\n * @instance\n * @param {Boolean} [renderTitleLabel=false]\n * @returns {Boolean|dc.rowChart}\n */\n _chart.renderTitleLabel = function (renderTitleLabel) {\n if (!arguments.length) {\n return _renderTitleLabel;\n }\n _renderTitleLabel = renderTitleLabel;\n return _chart;\n };\n\n function onClick (d) {\n _chart.onClick(d);\n }\n\n function translateX (d) {\n var x = _x(_chart.cappedValueAccessor(d)),\n x0 = rootValue(),\n s = x > x0 ? x0 : x;\n return 'translate(' + s + ',0)';\n }\n\n _chart._doRedraw = function () {\n drawChart();\n return _chart;\n };\n\n /**\n * Get the x axis for the row chart instance. Note: not settable for row charts.\n * See the {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3 axis object}\n * documention for more information.\n * @method xAxis\n * @memberof dc.rowChart\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis}\n * @example\n * // customize x axis tick format\n * chart.xAxis().tickFormat(function (v) {return v + '%';});\n * // customize x axis tick values\n * chart.xAxis().tickValues([0, 100, 200, 300]);\n * @returns {d3.svg.axis}\n */\n _chart.xAxis = function () {\n return _xAxis;\n };\n\n /**\n * Get or set the fixed bar height. Default is [false] which will auto-scale bars.\n * For example, if you want to fix the height for a specific number of bars (useful in TopN charts)\n * you could fix height as follows (where count = total number of bars in your TopN and gap is\n * your vertical gap space).\n * @method fixedBarHeight\n * @memberof dc.rowChart\n * @instance\n * @example\n * chart.fixedBarHeight( chartheight - (count + 1) * gap / count);\n * @param {Boolean|Number} [fixedBarHeight=false]\n * @returns {Boolean|Number|dc.rowChart}\n */\n _chart.fixedBarHeight = function (fixedBarHeight) {\n if (!arguments.length) {\n return _fixedBarHeight;\n }\n _fixedBarHeight = fixedBarHeight;\n return _chart;\n };\n\n /**\n * Get or set the vertical gap space between rows on a particular row chart instance.\n * @method gap\n * @memberof dc.rowChart\n * @instance\n * @param {Number} [gap=5]\n * @returns {Number|dc.rowChart}\n */\n _chart.gap = function (gap) {\n if (!arguments.length) {\n return _gap;\n }\n _gap = gap;\n return _chart;\n };\n\n /**\n * Get or set the elasticity on x axis. If this attribute is set to true, then the x axis will rescle to auto-fit the\n * data range when filtered.\n * @method elasticX\n * @memberof dc.rowChart\n * @instance\n * @param {Boolean} [elasticX]\n * @returns {Boolean|dc.rowChart}\n */\n _chart.elasticX = function (elasticX) {\n if (!arguments.length) {\n return _elasticX;\n }\n _elasticX = elasticX;\n return _chart;\n };\n\n /**\n * Get or set the x offset (horizontal space to the top left corner of a row) for labels on a particular row chart.\n * @method labelOffsetX\n * @memberof dc.rowChart\n * @instance\n * @param {Number} [labelOffsetX=10]\n * @returns {Number|dc.rowChart}\n */\n _chart.labelOffsetX = function (labelOffsetX) {\n if (!arguments.length) {\n return _labelOffsetX;\n }\n _labelOffsetX = labelOffsetX;\n return _chart;\n };\n\n /**\n * Get or set the y offset (vertical space to the top left corner of a row) for labels on a particular row chart.\n * @method labelOffsetY\n * @memberof dc.rowChart\n * @instance\n * @param {Number} [labelOffsety=15]\n * @returns {Number|dc.rowChart}\n */\n _chart.labelOffsetY = function (labelOffsety) {\n if (!arguments.length) {\n return _labelOffsetY;\n }\n _labelOffsetY = labelOffsety;\n _hasLabelOffsetY = true;\n return _chart;\n };\n\n /**\n * Get of set the x offset (horizontal space between right edge of row and right edge or text.\n * @method titleLabelOffsetX\n * @memberof dc.rowChart\n * @instance\n * @param {Number} [titleLabelOffsetX=2]\n * @returns {Number|dc.rowChart}\n */\n _chart.titleLabelOffsetX = function (titleLabelOffsetX) {\n if (!arguments.length) {\n return _titleLabelOffsetX;\n }\n _titleLabelOffsetX = titleLabelOffsetX;\n return _chart;\n };\n\n function isSelectedRow (d) {\n return _chart.hasFilter(_chart.cappedKeyAccessor(d));\n }\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * Legend is a attachable widget that can be added to other dc charts to render horizontal legend\n * labels.\n *\n * Examples:\n * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}\n * - {@link http://dc-js.github.com/dc.js/crime/index.html Canadian City Crime Stats}\n * @class legend\n * @memberof dc\n * @example\n * chart.legend(dc.legend().x(400).y(10).itemHeight(13).gap(5))\n * @returns {dc.legend}\n */\ndc.legend = function () {\n var LABEL_GAP = 2;\n\n var _legend = {},\n _parent,\n _x = 0,\n _y = 0,\n _itemHeight = 12,\n _gap = 5,\n _horizontal = false,\n _legendWidth = 560,\n _itemWidth = 70,\n _autoItemWidth = false,\n _legendText = dc.pluck('name'),\n _maxItems;\n\n var _g;\n\n _legend.parent = function (p) {\n if (!arguments.length) {\n return _parent;\n }\n _parent = p;\n return _legend;\n };\n\n _legend.render = function () {\n _parent.svg().select('g.dc-legend').remove();\n _g = _parent.svg().append('g')\n .attr('class', 'dc-legend')\n .attr('transform', 'translate(' + _x + ',' + _y + ')');\n var legendables = _parent.legendables();\n\n if (_maxItems !== undefined) {\n legendables = legendables.slice(0, _maxItems);\n }\n\n var itemEnter = _g.selectAll('g.dc-legend-item')\n .data(legendables)\n .enter()\n .append('g')\n .attr('class', 'dc-legend-item')\n .on('mouseover', function (d) {\n _parent.legendHighlight(d);\n })\n .on('mouseout', function (d) {\n _parent.legendReset(d);\n })\n .on('click', function (d) {\n d.chart.legendToggle(d);\n });\n\n _g.selectAll('g.dc-legend-item')\n .classed('fadeout', function (d) {\n return d.chart.isLegendableHidden(d);\n });\n\n if (legendables.some(dc.pluck('dashstyle'))) {\n itemEnter\n .append('line')\n .attr('x1', 0)\n .attr('y1', _itemHeight / 2)\n .attr('x2', _itemHeight)\n .attr('y2', _itemHeight / 2)\n .attr('stroke-width', 2)\n .attr('stroke-dasharray', dc.pluck('dashstyle'))\n .attr('stroke', dc.pluck('color'));\n } else {\n itemEnter\n .append('rect')\n .attr('width', _itemHeight)\n .attr('height', _itemHeight)\n .attr('fill', function (d) {return d ? d.color : 'blue';});\n }\n\n itemEnter.append('text')\n .text(_legendText)\n .attr('x', _itemHeight + LABEL_GAP)\n .attr('y', function () {\n return _itemHeight / 2 + (this.clientHeight ? this.clientHeight : 13) / 2 - 2;\n });\n\n var _cumulativeLegendTextWidth = 0;\n var row = 0;\n itemEnter.attr('transform', function (d, i) {\n if (_horizontal) {\n var itemWidth = _autoItemWidth === true ? this.getBBox().width + _gap : _itemWidth;\n if ((_cumulativeLegendTextWidth + itemWidth) > _legendWidth && _cumulativeLegendTextWidth > 0) {\n ++row;\n _cumulativeLegendTextWidth = 0;\n }\n var translateBy = 'translate(' + _cumulativeLegendTextWidth + ',' + row * legendItemHeight() + ')';\n _cumulativeLegendTextWidth += itemWidth;\n return translateBy;\n } else {\n return 'translate(0,' + i * legendItemHeight() + ')';\n }\n });\n };\n\n function legendItemHeight () {\n return _gap + _itemHeight;\n }\n\n /**\n * Set or get x coordinate for legend widget.\n * @method x\n * @memberof dc.legend\n * @instance\n * @param {Number} [x=0]\n * @returns {Number|dc.legend}\n */\n _legend.x = function (x) {\n if (!arguments.length) {\n return _x;\n }\n _x = x;\n return _legend;\n };\n\n /**\n * Set or get y coordinate for legend widget.\n * @method y\n * @memberof dc.legend\n * @instance\n * @param {Number} [y=0]\n * @returns {Number|dc.legend}\n */\n _legend.y = function (y) {\n if (!arguments.length) {\n return _y;\n }\n _y = y;\n return _legend;\n };\n\n /**\n * Set or get gap between legend items.\n * @method gap\n * @memberof dc.legend\n * @instance\n * @param {Number} [gap=5]\n * @returns {Number|dc.legend}\n */\n _legend.gap = function (gap) {\n if (!arguments.length) {\n return _gap;\n }\n _gap = gap;\n return _legend;\n };\n\n /**\n * Set or get legend item height.\n * @method itemHeight\n * @memberof dc.legend\n * @instance\n * @param {Number} [itemHeight=12]\n * @returns {Number|dc.legend}\n */\n _legend.itemHeight = function (itemHeight) {\n if (!arguments.length) {\n return _itemHeight;\n }\n _itemHeight = itemHeight;\n return _legend;\n };\n\n /**\n * Position legend horizontally instead of vertically.\n * @method horizontal\n * @memberof dc.legend\n * @instance\n * @param {Boolean} [horizontal=false]\n * @returns {Boolean|dc.legend}\n */\n _legend.horizontal = function (horizontal) {\n if (!arguments.length) {\n return _horizontal;\n }\n _horizontal = horizontal;\n return _legend;\n };\n\n /**\n * Maximum width for horizontal legend.\n * @method legendWidth\n * @memberof dc.legend\n * @instance\n * @param {Number} [legendWidth=500]\n * @returns {Number|dc.legend}\n */\n _legend.legendWidth = function (legendWidth) {\n if (!arguments.length) {\n return _legendWidth;\n }\n _legendWidth = legendWidth;\n return _legend;\n };\n\n /**\n * Legend item width for horizontal legend.\n * @method itemWidth\n * @memberof dc.legend\n * @instance\n * @param {Number} [itemWidth=70]\n * @returns {Number|dc.legend}\n */\n _legend.itemWidth = function (itemWidth) {\n if (!arguments.length) {\n return _itemWidth;\n }\n _itemWidth = itemWidth;\n return _legend;\n };\n\n /**\n * Turn automatic width for legend items on or off. If true, {@link dc.legend#itemWidth itemWidth} is ignored.\n * This setting takes into account the {@link dc.legend#gap gap}.\n * @method autoItemWidth\n * @memberof dc.legend\n * @instance\n * @param {Boolean} [autoItemWidth=false]\n * @returns {Boolean|dc.legend}\n */\n _legend.autoItemWidth = function (autoItemWidth) {\n if (!arguments.length) {\n return _autoItemWidth;\n }\n _autoItemWidth = autoItemWidth;\n return _legend;\n };\n\n /**\n * Set or get the legend text function. The legend widget uses this function to render the legend\n * text for each item. If no function is specified the legend widget will display the names\n * associated with each group.\n * @method legendText\n * @memberof dc.legend\n * @instance\n * @param {Function} [legendText]\n * @returns {Function|dc.legend}\n * @example\n * // default legendText\n * legend.legendText(dc.pluck('name'))\n *\n * // create numbered legend items\n * chart.legend(dc.legend().legendText(function(d, i) { return i + '. ' + d.name; }))\n *\n * // create legend displaying group counts\n * chart.legend(dc.legend().legendText(function(d) { return d.name + ': ' d.data; }))\n **/\n _legend.legendText = function (legendText) {\n if (!arguments.length) {\n return _legendText;\n }\n _legendText = legendText;\n return _legend;\n };\n\n /**\n * Maximum number of legend items to display\n * @method maxItems\n * @memberof dc.legend\n * @instance\n * @param {Number} [maxItems]\n * @return {dc.legend}\n */\n _legend.maxItems = function (maxItems) {\n if (!arguments.length) {\n return _maxItems;\n }\n _maxItems = dc.utils.isNumber(maxItems) ? maxItems : undefined;\n return _legend;\n };\n\n return _legend;\n};\n\n/**\n * A scatter plot chart\n *\n * Examples:\n * - {@link http://dc-js.github.io/dc.js/examples/scatter.html Scatter Chart}\n * - {@link http://dc-js.github.io/dc.js/examples/multi-scatter.html Multi-Scatter Chart}\n * @class scatterPlot\n * @memberof dc\n * @mixes dc.coordinateGridMixin\n * @example\n * // create a scatter plot under #chart-container1 element using the default global chart group\n * var chart1 = dc.scatterPlot('#chart-container1');\n * // create a scatter plot under #chart-container2 element using chart group A\n * var chart2 = dc.scatterPlot('#chart-container2', 'chartGroupA');\n * // create a sub-chart under a composite parent chart\n * var chart3 = dc.scatterPlot(compositeChart);\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.scatterPlot}\n */\ndc.scatterPlot = function (parent, chartGroup) {\n var _chart = dc.coordinateGridMixin({});\n var _symbol = d3.svg.symbol();\n\n var _existenceAccessor = function (d) { return d.value; };\n\n var originalKeyAccessor = _chart.keyAccessor();\n _chart.keyAccessor(function (d) { return originalKeyAccessor(d)[0]; });\n _chart.valueAccessor(function (d) { return originalKeyAccessor(d)[1]; });\n _chart.colorAccessor(function () { return _chart._groupName; });\n\n _chart.title(function (d) {\n // this basically just counteracts the setting of its own key/value accessors\n // see https://github.com/dc-js/dc.js/issues/702\n return _chart.keyAccessor()(d) + ',' + _chart.valueAccessor()(d) + ': ' +\n _chart.existenceAccessor()(d);\n });\n\n var _locator = function (d) {\n return 'translate(' + _chart.x()(_chart.keyAccessor()(d)) + ',' +\n _chart.y()(_chart.valueAccessor()(d)) + ')';\n };\n\n var _highlightedSize = 7;\n var _symbolSize = 5;\n var _excludedSize = 3;\n var _excludedColor = null;\n var _excludedOpacity = 1.0;\n var _emptySize = 0;\n var _emptyOpacity = 0;\n var _nonemptyOpacity = 1;\n var _emptyColor = null;\n var _filtered = [];\n\n function elementSize (d, i) {\n if (!_existenceAccessor(d)) {\n return Math.pow(_emptySize, 2);\n } else if (_filtered[i]) {\n return Math.pow(_symbolSize, 2);\n } else {\n return Math.pow(_excludedSize, 2);\n }\n }\n _symbol.size(elementSize);\n\n dc.override(_chart, '_filter', function (filter) {\n if (!arguments.length) {\n return _chart.__filter();\n }\n\n return _chart.__filter(dc.filters.RangedTwoDimensionalFilter(filter));\n });\n\n _chart.plotData = function () {\n var symbols = _chart.chartBodyG().selectAll('path.symbol')\n .data(_chart.data());\n\n symbols\n .enter()\n .append('path')\n .attr('class', 'symbol')\n .attr('opacity', 0)\n .attr('fill', _chart.getColor)\n .attr('transform', _locator);\n\n symbols.call(renderTitles, _chart.data());\n\n symbols.each(function (d, i) {\n _filtered[i] = !_chart.filter() || _chart.filter().isFiltered([d.key[0], d.key[1]]);\n });\n\n dc.transition(symbols, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('opacity', function (d, i) {\n if (!_existenceAccessor(d)) {\n return _emptyOpacity;\n } else if (_filtered[i]) {\n return _nonemptyOpacity;\n } else {\n return _chart.excludedOpacity();\n }\n })\n .attr('fill', function (d, i) {\n if (_emptyColor && !_existenceAccessor(d)) {\n return _emptyColor;\n } else if (_chart.excludedColor() && !_filtered[i]) {\n return _chart.excludedColor();\n } else {\n return _chart.getColor(d);\n }\n })\n .attr('transform', _locator)\n .attr('d', _symbol);\n\n dc.transition(symbols.exit(), _chart.transitionDuration(), _chart.transitionDelay())\n .attr('opacity', 0).remove();\n };\n\n function renderTitles (symbol, d) {\n if (_chart.renderTitle()) {\n symbol.selectAll('title').remove();\n symbol.append('title').text(function (d) {\n return _chart.title()(d);\n });\n }\n }\n\n /**\n * Get or set the existence accessor. If a point exists, it is drawn with\n * {@link dc.scatterPlot#symbolSize symbolSize} radius and\n * opacity 1; if it does not exist, it is drawn with\n * {@link dc.scatterPlot#emptySize emptySize} radius and opacity 0. By default,\n * the existence accessor checks if the reduced value is truthy.\n * @method existenceAccessor\n * @memberof dc.scatterPlot\n * @instance\n * @see {@link dc.scatterPlot#symbolSize symbolSize}\n * @see {@link dc.scatterPlot#emptySize emptySize}\n * @example\n * // default accessor\n * chart.existenceAccessor(function (d) { return d.value; });\n * @param {Function} [accessor]\n * @returns {Function|dc.scatterPlot}\n */\n _chart.existenceAccessor = function (accessor) {\n if (!arguments.length) {\n return _existenceAccessor;\n }\n _existenceAccessor = accessor;\n return this;\n };\n\n /**\n * Get or set the symbol type used for each point. By default the symbol is a circle.\n * Type can be a constant or an accessor.\n * @method symbol\n * @memberof dc.scatterPlot\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_type d3.svg.symbol.type}\n * @example\n * // Circle type\n * chart.symbol('circle');\n * // Square type\n * chart.symbol('square');\n * @param {String|Function} [type='circle']\n * @returns {String|Function|dc.scatterPlot}\n */\n _chart.symbol = function (type) {\n if (!arguments.length) {\n return _symbol.type();\n }\n _symbol.type(type);\n return _chart;\n };\n\n /**\n * Get or set the symbol generator. By default `dc.scatterPlot` will use\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol d3.svg.symbol()}\n * to generate symbols. `dc.scatterPlot` will set the\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size size accessor}\n * on the symbol generator.\n * @method customSymbol\n * @memberof dc.scatterPlot\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol d3.svg.symbol}\n * @see {@link https://stackoverflow.com/questions/25332120/create-additional-d3-js-symbols Create additional D3.js symbols}\n * @param {String|Function} [customSymbol=d3.svg.symbol()]\n * @returns {String|Function|dc.scatterPlot}\n */\n _chart.customSymbol = function (customSymbol) {\n if (!arguments.length) {\n return _symbol;\n }\n _symbol = customSymbol;\n _symbol.size(elementSize);\n return _chart;\n };\n\n /**\n * Set or get radius for symbols.\n * @method symbolSize\n * @memberof dc.scatterPlot\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size}\n * @param {Number} [symbolSize=3]\n * @returns {Number|dc.scatterPlot}\n */\n _chart.symbolSize = function (symbolSize) {\n if (!arguments.length) {\n return _symbolSize;\n }\n _symbolSize = symbolSize;\n return _chart;\n };\n\n /**\n * Set or get radius for highlighted symbols.\n * @method highlightedSize\n * @memberof dc.scatterPlot\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size}\n * @param {Number} [highlightedSize=5]\n * @returns {Number|dc.scatterPlot}\n */\n _chart.highlightedSize = function (highlightedSize) {\n if (!arguments.length) {\n return _highlightedSize;\n }\n _highlightedSize = highlightedSize;\n return _chart;\n };\n\n /**\n * Set or get size for symbols excluded from this chart's filter. If null, no\n * special size is applied for symbols based on their filter status.\n * @method excludedSize\n * @memberof dc.scatterPlot\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size}\n * @param {Number} [excludedSize=null]\n * @returns {Number|dc.scatterPlot}\n */\n _chart.excludedSize = function (excludedSize) {\n if (!arguments.length) {\n return _excludedSize;\n }\n _excludedSize = excludedSize;\n return _chart;\n };\n\n /**\n * Set or get color for symbols excluded from this chart's filter. If null, no\n * special color is applied for symbols based on their filter status.\n * @method excludedColor\n * @memberof dc.scatterPlot\n * @instance\n * @param {Number} [excludedColor=null]\n * @returns {Number|dc.scatterPlot}\n */\n _chart.excludedColor = function (excludedColor) {\n if (!arguments.length) {\n return _excludedColor;\n }\n _excludedColor = excludedColor;\n return _chart;\n };\n\n /**\n * Set or get opacity for symbols excluded from this chart's filter.\n * @method excludedOpacity\n * @memberof dc.scatterPlot\n * @instance\n * @param {Number} [excludedOpacity=1.0]\n * @returns {Number|dc.scatterPlot}\n */\n _chart.excludedOpacity = function (excludedOpacity) {\n if (!arguments.length) {\n return _excludedOpacity;\n }\n _excludedOpacity = excludedOpacity;\n return _chart;\n };\n\n /**\n * Set or get radius for symbols when the group is empty.\n * @method emptySize\n * @memberof dc.scatterPlot\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size}\n * @param {Number} [emptySize=0]\n * @returns {Number|dc.scatterPlot}\n */\n _chart.hiddenSize = _chart.emptySize = function (emptySize) {\n if (!arguments.length) {\n return _emptySize;\n }\n _emptySize = emptySize;\n return _chart;\n };\n\n /**\n * Set or get color for symbols when the group is empty. If null, just use the\n * {@link dc.colorMixin#colors colorMixin.colors} color scale zero value.\n * @name emptyColor\n * @memberof dc.scatterPlot\n * @instance\n * @param {String} [emptyColor=null]\n * @return {String}\n * @return {dc.scatterPlot}/\n */\n _chart.emptyColor = function (emptyColor) {\n if (!arguments.length) {\n return _emptyColor;\n }\n _emptyColor = emptyColor;\n return _chart;\n };\n\n /**\n * Set or get opacity for symbols when the group is empty.\n * @name emptyOpacity\n * @memberof dc.scatterPlot\n * @instance\n * @param {Number} [emptyOpacity=0]\n * @return {Number}\n * @return {dc.scatterPlot}\n */\n _chart.emptyOpacity = function (emptyOpacity) {\n if (!arguments.length) {\n return _emptyOpacity;\n }\n _emptyOpacity = emptyOpacity;\n return _chart;\n };\n\n /**\n * Set or get opacity for symbols when the group is not empty.\n * @name nonemptyOpacity\n * @memberof dc.scatterPlot\n * @instance\n * @param {Number} [nonemptyOpacity=1]\n * @return {Number}\n * @return {dc.scatterPlot}\n */\n _chart.nonemptyOpacity = function (nonemptyOpacity) {\n if (!arguments.length) {\n return _emptyOpacity;\n }\n _nonemptyOpacity = nonemptyOpacity;\n return _chart;\n };\n\n _chart.legendables = function () {\n return [{chart: _chart, name: _chart._groupName, color: _chart.getColor()}];\n };\n\n _chart.legendHighlight = function (d) {\n resizeSymbolsWhere(function (symbol) {\n return symbol.attr('fill') === d.color;\n }, _highlightedSize);\n _chart.chartBodyG().selectAll('.chart-body path.symbol').filter(function () {\n return d3.select(this).attr('fill') !== d.color;\n }).classed('fadeout', true);\n };\n\n _chart.legendReset = function (d) {\n resizeSymbolsWhere(function (symbol) {\n return symbol.attr('fill') === d.color;\n }, _symbolSize);\n _chart.chartBodyG().selectAll('.chart-body path.symbol').filter(function () {\n return d3.select(this).attr('fill') !== d.color;\n }).classed('fadeout', false);\n };\n\n function resizeSymbolsWhere (condition, size) {\n var symbols = _chart.chartBodyG().selectAll('.chart-body path.symbol').filter(function () {\n return condition(d3.select(this));\n });\n var oldSize = _symbol.size();\n _symbol.size(Math.pow(size, 2));\n dc.transition(symbols, _chart.transitionDuration(), _chart.transitionDelay()).attr('d', _symbol);\n _symbol.size(oldSize);\n }\n\n _chart.setHandlePaths = function () {\n // no handle paths for poly-brushes\n };\n\n _chart.extendBrush = function () {\n var extent = _chart.brush().extent();\n if (_chart.round()) {\n extent[0] = extent[0].map(_chart.round());\n extent[1] = extent[1].map(_chart.round());\n\n _chart.g().select('.brush')\n .call(_chart.brush().extent(extent));\n }\n return extent;\n };\n\n _chart.brushIsEmpty = function (extent) {\n return _chart.brush().empty() || !extent || extent[0][0] >= extent[1][0] || extent[0][1] >= extent[1][1];\n };\n\n _chart._brushing = function () {\n var extent = _chart.extendBrush();\n\n _chart.redrawBrush(_chart.g());\n\n if (_chart.brushIsEmpty(extent)) {\n dc.events.trigger(function () {\n _chart.filter(null);\n _chart.redrawGroup();\n });\n\n } else {\n var ranged2DFilter = dc.filters.RangedTwoDimensionalFilter(extent);\n dc.events.trigger(function () {\n _chart.filter(null);\n _chart.filter(ranged2DFilter);\n _chart.redrawGroup();\n }, dc.constants.EVENT_DELAY);\n\n }\n };\n\n _chart.setBrushY = function (gBrush) {\n gBrush.call(_chart.brush().y(_chart.y()));\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * A display of a single numeric value.\n * Unlike other charts, you do not need to set a dimension. Instead a group object must be provided and\n * a valueAccessor that returns a single value.\n * @class numberDisplay\n * @memberof dc\n * @mixes dc.baseMixin\n * @example\n * // create a number display under #chart-container1 element using the default global chart group\n * var display1 = dc.numberDisplay('#chart-container1');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.numberDisplay}\n */\ndc.numberDisplay = function (parent, chartGroup) {\n var SPAN_CLASS = 'number-display';\n var _formatNumber = d3.format('.2s');\n var _chart = dc.baseMixin({});\n var _html = {one: '', some: '', none: ''};\n var _lastValue;\n\n // dimension not required\n _chart._mandatoryAttributes(['group']);\n\n /**\n * Gets or sets an optional object specifying HTML templates to use depending on the number\n * displayed. The text `%number` will be replaced with the current value.\n * - one: HTML template to use if the number is 1\n * - zero: HTML template to use if the number is 0\n * - some: HTML template to use otherwise\n * @method html\n * @memberof dc.numberDisplay\n * @instance\n * @example\n * numberWidget.html({\n * one:'%number record',\n * some:'%number records',\n * none:'no records'})\n * @param {{one:String, some:String, none:String}} [html={one: '', some: '', none: ''}]\n * @returns {{one:String, some:String, none:String}|dc.numberDisplay}\n */\n _chart.html = function (html) {\n if (!arguments.length) {\n return _html;\n }\n if (html.none) {\n _html.none = html.none;//if none available\n } else if (html.one) {\n _html.none = html.one;//if none not available use one\n } else if (html.some) {\n _html.none = html.some;//if none and one not available use some\n }\n if (html.one) {\n _html.one = html.one;//if one available\n } else if (html.some) {\n _html.one = html.some;//if one not available use some\n }\n if (html.some) {\n _html.some = html.some;//if some available\n } else if (html.one) {\n _html.some = html.one;//if some not available use one\n }\n return _chart;\n };\n\n /**\n * Calculate and return the underlying value of the display.\n * @method value\n * @memberof dc.numberDisplay\n * @instance\n * @returns {Number}\n */\n _chart.value = function () {\n return _chart.data();\n };\n\n _chart.data(function (group) {\n var valObj = group.value ? group.value() : group.top(1)[0];\n return _chart.valueAccessor()(valObj);\n });\n\n _chart.transitionDuration(250); // good default\n _chart.transitionDelay(0);\n\n _chart._doRender = function () {\n var newValue = _chart.value(),\n span = _chart.selectAll('.' + SPAN_CLASS);\n\n if (span.empty()) {\n span = span.data([0])\n .enter()\n .append('span')\n .attr('class', SPAN_CLASS);\n }\n\n span.transition()\n .duration(_chart.transitionDuration())\n .delay(_chart.transitionDelay())\n .ease('quad-out-in')\n .tween('text', function () {\n // [XA] don't try and interpolate from Infinity, else this breaks.\n var interpStart = isFinite(_lastValue) ? _lastValue : 0;\n var interp = d3.interpolateNumber(interpStart || 0, newValue);\n _lastValue = newValue;\n return function (t) {\n var html = null, num = _chart.formatNumber()(interp(t));\n if (newValue === 0 && (_html.none !== '')) {\n html = _html.none;\n } else if (newValue === 1 && (_html.one !== '')) {\n html = _html.one;\n } else if (_html.some !== '') {\n html = _html.some;\n }\n this.innerHTML = html ? html.replace('%number', num) : num;\n };\n });\n };\n\n _chart._doRedraw = function () {\n return _chart._doRender();\n };\n\n /**\n * Get or set a function to format the value for the display.\n * @method formatNumber\n * @memberof dc.numberDisplay\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md d3.format}\n * @param {Function} [formatter=d3.format('.2s')]\n * @returns {Function|dc.numberDisplay}\n */\n _chart.formatNumber = function (formatter) {\n if (!arguments.length) {\n return _formatNumber;\n }\n _formatNumber = formatter;\n return _chart;\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n/**\n * A heat map is matrix that represents the values of two dimensions of data using colors.\n * @class heatMap\n * @memberof dc\n * @mixes dc.colorMixin\n * @mixes dc.marginMixin\n * @mixes dc.baseMixin\n * @example\n * // create a heat map under #chart-container1 element using the default global chart group\n * var heatMap1 = dc.heatMap('#chart-container1');\n * // create a heat map under #chart-container2 element using chart group A\n * var heatMap2 = dc.heatMap('#chart-container2', 'chartGroupA');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.heatMap}\n */\ndc.heatMap = function (parent, chartGroup) {\n\n var DEFAULT_BORDER_RADIUS = 6.75;\n\n var _chartBody;\n\n var _cols;\n var _rows;\n var _xBorderRadius = DEFAULT_BORDER_RADIUS;\n var _yBorderRadius = DEFAULT_BORDER_RADIUS;\n\n var _chart = dc.colorMixin(dc.marginMixin(dc.baseMixin({})));\n _chart._mandatoryAttributes(['group']);\n _chart.title(_chart.colorAccessor());\n\n var _colsLabel = function (d) {\n return d;\n };\n var _rowsLabel = function (d) {\n return d;\n };\n\n /**\n * Set or get the column label function. The chart class uses this function to render\n * column labels on the X axis. It is passed the column name.\n * @method colsLabel\n * @memberof dc.heatMap\n * @instance\n * @example\n * // the default label function just returns the name\n * chart.colsLabel(function(d) { return d; });\n * @param {Function} [labelFunction=function(d) { return d; }]\n * @returns {Function|dc.heatMap}\n */\n _chart.colsLabel = function (labelFunction) {\n if (!arguments.length) {\n return _colsLabel;\n }\n _colsLabel = labelFunction;\n return _chart;\n };\n\n /**\n * Set or get the row label function. The chart class uses this function to render\n * row labels on the Y axis. It is passed the row name.\n * @method rowsLabel\n * @memberof dc.heatMap\n * @instance\n * @example\n * // the default label function just returns the name\n * chart.rowsLabel(function(d) { return d; });\n * @param {Function} [labelFunction=function(d) { return d; }]\n * @returns {Function|dc.heatMap}\n */\n _chart.rowsLabel = function (labelFunction) {\n if (!arguments.length) {\n return _rowsLabel;\n }\n _rowsLabel = labelFunction;\n return _chart;\n };\n\n var _xAxisOnClick = function (d) { filterAxis(0, d); };\n var _yAxisOnClick = function (d) { filterAxis(1, d); };\n var _boxOnClick = function (d) {\n var filter = d.key;\n dc.events.trigger(function () {\n _chart.filter(filter);\n _chart.redrawGroup();\n });\n };\n\n function filterAxis (axis, value) {\n var cellsOnAxis = _chart.selectAll('.box-group').filter(function (d) {\n return d.key[axis] === value;\n });\n var unfilteredCellsOnAxis = cellsOnAxis.filter(function (d) {\n return !_chart.hasFilter(d.key);\n });\n dc.events.trigger(function () {\n var selection = unfilteredCellsOnAxis.empty() ? cellsOnAxis : unfilteredCellsOnAxis;\n var filters = selection.data().map(function (kv) {\n return dc.filters.TwoDimensionalFilter(kv.key);\n });\n _chart._filter([filters]);\n _chart.redrawGroup();\n });\n }\n\n dc.override(_chart, 'filter', function (filter) {\n if (!arguments.length) {\n return _chart._filter();\n }\n\n return _chart._filter(dc.filters.TwoDimensionalFilter(filter));\n });\n\n function uniq (d, i, a) {\n return !i || a[i - 1] !== d;\n }\n\n /**\n * Gets or sets the values used to create the rows of the heatmap, as an array. By default, all\n * the values will be fetched from the data using the value accessor, and they will be sorted in\n * ascending order.\n * @method rows\n * @memberof dc.heatMap\n * @instance\n * @param {Array} [rows]\n * @returns {Array|dc.heatMap}\n */\n _chart.rows = function (rows) {\n if (arguments.length) {\n _rows = rows;\n return _chart;\n }\n if (_rows) {\n return _rows;\n }\n var rowValues = _chart.data().map(_chart.valueAccessor());\n rowValues.sort(d3.ascending);\n return d3.scale.ordinal().domain(rowValues.filter(uniq));\n };\n\n /**\n * Gets or sets the keys used to create the columns of the heatmap, as an array. By default, all\n * the values will be fetched from the data using the key accessor, and they will be sorted in\n * ascending order.\n * @method cols\n * @memberof dc.heatMap\n * @instance\n * @param {Array} [cols]\n * @returns {Array|dc.heatMap}\n */\n _chart.cols = function (cols) {\n if (arguments.length) {\n _cols = cols;\n return _chart;\n }\n if (_cols) {\n return _cols;\n }\n var colValues = _chart.data().map(_chart.keyAccessor());\n colValues.sort(d3.ascending);\n return d3.scale.ordinal().domain(colValues.filter(uniq));\n };\n\n _chart._doRender = function () {\n _chart.resetSvg();\n\n _chartBody = _chart.svg()\n .append('g')\n .attr('class', 'heatmap')\n .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart.margins().top + ')');\n\n return _chart._doRedraw();\n };\n\n _chart._doRedraw = function () {\n var rows = _chart.rows(),\n cols = _chart.cols(),\n rowCount = rows.domain().length,\n colCount = cols.domain().length,\n boxWidth = Math.floor(_chart.effectiveWidth() / colCount),\n boxHeight = Math.floor(_chart.effectiveHeight() / rowCount);\n\n cols.rangeRoundBands([0, _chart.effectiveWidth()]);\n rows.rangeRoundBands([_chart.effectiveHeight(), 0]);\n\n var boxes = _chartBody.selectAll('g.box-group').data(_chart.data(), function (d, i) {\n return _chart.keyAccessor()(d, i) + '\\0' + _chart.valueAccessor()(d, i);\n });\n var gEnter = boxes.enter().append('g')\n .attr('class', 'box-group');\n\n gEnter.append('rect')\n .attr('class', 'heat-box')\n .attr('fill', 'white')\n .on('click', _chart.boxOnClick());\n\n if (_chart.renderTitle()) {\n gEnter.append('title');\n boxes.select('title').text(_chart.title());\n }\n\n dc.transition(boxes.select('rect'), _chart.transitionDuration(), _chart.transitionDelay())\n .attr('x', function (d, i) { return cols(_chart.keyAccessor()(d, i)); })\n .attr('y', function (d, i) { return rows(_chart.valueAccessor()(d, i)); })\n .attr('rx', _xBorderRadius)\n .attr('ry', _yBorderRadius)\n .attr('fill', _chart.getColor)\n .attr('width', boxWidth)\n .attr('height', boxHeight);\n\n boxes.exit().remove();\n\n var gCols = _chartBody.select('g.cols');\n if (gCols.empty()) {\n gCols = _chartBody.append('g').attr('class', 'cols axis');\n }\n var gColsText = gCols.selectAll('text').data(cols.domain());\n gColsText.enter().append('text')\n .attr('x', function (d) { return cols(d) + boxWidth / 2; })\n .style('text-anchor', 'middle')\n .attr('y', _chart.effectiveHeight())\n .attr('dy', 12)\n .on('click', _chart.xAxisOnClick())\n .text(_chart.colsLabel());\n dc.transition(gColsText, _chart.transitionDuration(), _chart.transitionDelay())\n .text(_chart.colsLabel())\n .attr('x', function (d) { return cols(d) + boxWidth / 2; })\n .attr('y', _chart.effectiveHeight());\n gColsText.exit().remove();\n var gRows = _chartBody.select('g.rows');\n if (gRows.empty()) {\n gRows = _chartBody.append('g').attr('class', 'rows axis');\n }\n var gRowsText = gRows.selectAll('text').data(rows.domain());\n gRowsText.enter().append('text')\n .attr('dy', 6)\n .style('text-anchor', 'end')\n .attr('x', 0)\n .attr('dx', -2)\n .on('click', _chart.yAxisOnClick())\n .text(_chart.rowsLabel());\n dc.transition(gRowsText, _chart.transitionDuration(), _chart.transitionDelay())\n .text(_chart.rowsLabel())\n .attr('y', function (d) { return rows(d) + boxHeight / 2; });\n gRowsText.exit().remove();\n\n if (_chart.hasFilter()) {\n _chart.selectAll('g.box-group').each(function (d) {\n if (_chart.isSelectedNode(d)) {\n _chart.highlightSelected(this);\n } else {\n _chart.fadeDeselected(this);\n }\n });\n } else {\n _chart.selectAll('g.box-group').each(function () {\n _chart.resetHighlight(this);\n });\n }\n return _chart;\n };\n\n /**\n * Gets or sets the handler that fires when an individual cell is clicked in the heatmap.\n * By default, filtering of the cell will be toggled.\n * @method boxOnClick\n * @memberof dc.heatMap\n * @instance\n * @example\n * // default box on click handler\n * chart.boxOnClick(function (d) {\n * var filter = d.key;\n * dc.events.trigger(function () {\n * _chart.filter(filter);\n * _chart.redrawGroup();\n * });\n * });\n * @param {Function} [handler]\n * @returns {Function|dc.heatMap}\n */\n _chart.boxOnClick = function (handler) {\n if (!arguments.length) {\n return _boxOnClick;\n }\n _boxOnClick = handler;\n return _chart;\n };\n\n /**\n * Gets or sets the handler that fires when a column tick is clicked in the x axis.\n * By default, if any cells in the column are unselected, the whole column will be selected,\n * otherwise the whole column will be unselected.\n * @method xAxisOnClick\n * @memberof dc.heatMap\n * @instance\n * @param {Function} [handler]\n * @returns {Function|dc.heatMap}\n */\n _chart.xAxisOnClick = function (handler) {\n if (!arguments.length) {\n return _xAxisOnClick;\n }\n _xAxisOnClick = handler;\n return _chart;\n };\n\n /**\n * Gets or sets the handler that fires when a row tick is clicked in the y axis.\n * By default, if any cells in the row are unselected, the whole row will be selected,\n * otherwise the whole row will be unselected.\n * @method yAxisOnClick\n * @memberof dc.heatMap\n * @instance\n * @param {Function} [handler]\n * @returns {Function|dc.heatMap}\n */\n _chart.yAxisOnClick = function (handler) {\n if (!arguments.length) {\n return _yAxisOnClick;\n }\n _yAxisOnClick = handler;\n return _chart;\n };\n\n /**\n * Gets or sets the X border radius. Set to 0 to get full rectangles.\n * @method xBorderRadius\n * @memberof dc.heatMap\n * @instance\n * @param {Number} [xBorderRadius=6.75]\n * @returns {Number|dc.heatMap}\n */\n _chart.xBorderRadius = function (xBorderRadius) {\n if (!arguments.length) {\n return _xBorderRadius;\n }\n _xBorderRadius = xBorderRadius;\n return _chart;\n };\n\n /**\n * Gets or sets the Y border radius. Set to 0 to get full rectangles.\n * @method yBorderRadius\n * @memberof dc.heatMap\n * @instance\n * @param {Number} [yBorderRadius=6.75]\n * @returns {Number|dc.heatMap}\n */\n _chart.yBorderRadius = function (yBorderRadius) {\n if (!arguments.length) {\n return _yBorderRadius;\n }\n _yBorderRadius = yBorderRadius;\n return _chart;\n };\n\n _chart.isSelectedNode = function (d) {\n return _chart.hasFilter(d.key);\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n// https://github.com/d3/d3-plugins/blob/master/box/box.js\n(function () {\n\n // Inspired by http://informationandvisualization.de/blog/box-plot\n d3.box = function () {\n var width = 1,\n height = 1,\n duration = 0,\n delay = 0,\n domain = null,\n value = Number,\n whiskers = boxWhiskers,\n quartiles = boxQuartiles,\n tickFormat = null;\n\n // For each small multiple…\n function box (g) {\n g.each(function (d, i) {\n d = d.map(value).sort(d3.ascending);\n var g = d3.select(this),\n n = d.length,\n min = d[0],\n max = d[n - 1];\n\n // Compute quartiles. Must return exactly 3 elements.\n var quartileData = d.quartiles = quartiles(d);\n\n // Compute whiskers. Must return exactly 2 elements, or null.\n var whiskerIndices = whiskers && whiskers.call(this, d, i),\n whiskerData = whiskerIndices && whiskerIndices.map(function (i) { return d[i]; });\n\n // Compute outliers. If no whiskers are specified, all data are 'outliers'.\n // We compute the outliers as indices, so that we can join across transitions!\n var outlierIndices = whiskerIndices ?\n d3.range(0, whiskerIndices[0]).concat(d3.range(whiskerIndices[1] + 1, n)) : d3.range(n);\n\n // Compute the new x-scale.\n var x1 = d3.scale.linear()\n .domain(domain && domain.call(this, d, i) || [min, max])\n .range([height, 0]);\n\n // Retrieve the old x-scale, if this is an update.\n var x0 = this.__chart__ || d3.scale.linear()\n .domain([0, Infinity])\n .range(x1.range());\n\n // Stash the new scale.\n this.__chart__ = x1;\n\n // Note: the box, median, and box tick elements are fixed in number,\n // so we only have to handle enter and update. In contrast, the outliers\n // and other elements are variable, so we need to exit them! Variable\n // elements also fade in and out.\n\n // Update center line: the vertical line spanning the whiskers.\n var center = g.selectAll('line.center')\n .data(whiskerData ? [whiskerData] : []);\n\n center.enter().insert('line', 'rect')\n .attr('class', 'center')\n .attr('x1', width / 2)\n .attr('y1', function (d) { return x0(d[0]); })\n .attr('x2', width / 2)\n .attr('y2', function (d) { return x0(d[1]); })\n .style('opacity', 1e-6)\n .transition()\n .duration(duration)\n .delay(delay)\n .style('opacity', 1)\n .attr('y1', function (d) { return x1(d[0]); })\n .attr('y2', function (d) { return x1(d[1]); });\n\n center.transition()\n .duration(duration)\n .delay(delay)\n .style('opacity', 1)\n .attr('x1', width / 2)\n .attr('x2', width / 2)\n .attr('y1', function (d) { return x1(d[0]); })\n .attr('y2', function (d) { return x1(d[1]); });\n\n center.exit().transition()\n .duration(duration)\n .delay(delay)\n .style('opacity', 1e-6)\n .attr('y1', function (d) { return x1(d[0]); })\n .attr('y2', function (d) { return x1(d[1]); })\n .remove();\n\n // Update innerquartile box.\n var box = g.selectAll('rect.box')\n .data([quartileData]);\n\n box.enter().append('rect')\n .attr('class', 'box')\n .attr('x', 0)\n .attr('y', function (d) { return x0(d[2]); })\n .attr('width', width)\n .attr('height', function (d) { return x0(d[0]) - x0(d[2]); })\n .transition()\n .duration(duration)\n .delay(delay)\n .attr('y', function (d) { return x1(d[2]); })\n .attr('height', function (d) { return x1(d[0]) - x1(d[2]); });\n\n box.transition()\n .duration(duration)\n .delay(delay)\n .attr('width', width)\n .attr('y', function (d) { return x1(d[2]); })\n .attr('height', function (d) { return x1(d[0]) - x1(d[2]); });\n\n // Update median line.\n var medianLine = g.selectAll('line.median')\n .data([quartileData[1]]);\n\n medianLine.enter().append('line')\n .attr('class', 'median')\n .attr('x1', 0)\n .attr('y1', x0)\n .attr('x2', width)\n .attr('y2', x0)\n .transition()\n .duration(duration)\n .delay(delay)\n .attr('y1', x1)\n .attr('y2', x1);\n\n medianLine.transition()\n .duration(duration)\n .delay(delay)\n .attr('x1', 0)\n .attr('x2', width)\n .attr('y1', x1)\n .attr('y2', x1);\n\n // Update whiskers.\n var whisker = g.selectAll('line.whisker')\n .data(whiskerData || []);\n\n whisker.enter().insert('line', 'circle, text')\n .attr('class', 'whisker')\n .attr('x1', 0)\n .attr('y1', x0)\n .attr('x2', width)\n .attr('y2', x0)\n .style('opacity', 1e-6)\n .transition()\n .duration(duration)\n .delay(delay)\n .attr('y1', x1)\n .attr('y2', x1)\n .style('opacity', 1);\n\n whisker.transition()\n .duration(duration)\n .delay(delay)\n .attr('x1', 0)\n .attr('x2', width)\n .attr('y1', x1)\n .attr('y2', x1)\n .style('opacity', 1);\n\n whisker.exit().transition()\n .duration(duration)\n .delay(delay)\n .attr('y1', x1)\n .attr('y2', x1)\n .style('opacity', 1e-6)\n .remove();\n\n // Update outliers.\n var outlier = g.selectAll('circle.outlier')\n .data(outlierIndices, Number);\n\n outlier.enter().insert('circle', 'text')\n .attr('class', 'outlier')\n .attr('r', 5)\n .attr('cx', width / 2)\n .attr('cy', function (i) { return x0(d[i]); })\n .style('opacity', 1e-6)\n .transition()\n .duration(duration)\n .delay(delay)\n .attr('cy', function (i) { return x1(d[i]); })\n .style('opacity', 1);\n\n outlier.transition()\n .duration(duration)\n .delay(delay)\n .attr('cx', width / 2)\n .attr('cy', function (i) { return x1(d[i]); })\n .style('opacity', 1);\n\n outlier.exit().transition()\n .duration(duration)\n .delay(delay)\n .attr('cy', function (i) { return x1(d[i]); })\n .style('opacity', 1e-6)\n .remove();\n\n // Compute the tick format.\n var format = tickFormat || x1.tickFormat(8);\n\n // Update box ticks.\n var boxTick = g.selectAll('text.box')\n .data(quartileData);\n\n boxTick.enter().append('text')\n .attr('class', 'box')\n .attr('dy', '.3em')\n .attr('dx', function (d, i) { return i & 1 ? 6 : -6; })\n .attr('x', function (d, i) { return i & 1 ? width : 0; })\n .attr('y', x0)\n .attr('text-anchor', function (d, i) { return i & 1 ? 'start' : 'end'; })\n .text(format)\n .transition()\n .duration(duration)\n .delay(delay)\n .attr('y', x1);\n\n boxTick.transition()\n .duration(duration)\n .delay(delay)\n .text(format)\n .attr('x', function (d, i) { return i & 1 ? width : 0; })\n .attr('y', x1);\n\n // Update whisker ticks. These are handled separately from the box\n // ticks because they may or may not exist, and we want don't want\n // to join box ticks pre-transition with whisker ticks post-.\n var whiskerTick = g.selectAll('text.whisker')\n .data(whiskerData || []);\n\n whiskerTick.enter().append('text')\n .attr('class', 'whisker')\n .attr('dy', '.3em')\n .attr('dx', 6)\n .attr('x', width)\n .attr('y', x0)\n .text(format)\n .style('opacity', 1e-6)\n .transition()\n .duration(duration)\n .delay(delay)\n .attr('y', x1)\n .style('opacity', 1);\n\n whiskerTick.transition()\n .duration(duration)\n .delay(delay)\n .text(format)\n .attr('x', width)\n .attr('y', x1)\n .style('opacity', 1);\n\n whiskerTick.exit().transition()\n .duration(duration)\n .delay(delay)\n .attr('y', x1)\n .style('opacity', 1e-6)\n .remove();\n });\n d3.timer.flush();\n }\n\n box.width = function (x) {\n if (!arguments.length) {\n return width;\n }\n width = x;\n return box;\n };\n\n box.height = function (x) {\n if (!arguments.length) {\n return height;\n }\n height = x;\n return box;\n };\n\n box.tickFormat = function (x) {\n if (!arguments.length) {\n return tickFormat;\n }\n tickFormat = x;\n return box;\n };\n\n box.duration = function (x) {\n if (!arguments.length) {\n return duration;\n }\n duration = x;\n return box;\n };\n\n box.domain = function (x) {\n if (!arguments.length) {\n return domain;\n }\n domain = x === null ? x : d3.functor(x);\n return box;\n };\n\n box.value = function (x) {\n if (!arguments.length) {\n return value;\n }\n value = x;\n return box;\n };\n\n box.whiskers = function (x) {\n if (!arguments.length) {\n return whiskers;\n }\n whiskers = x;\n return box;\n };\n\n box.quartiles = function (x) {\n if (!arguments.length) {\n return quartiles;\n }\n quartiles = x;\n return box;\n };\n\n return box;\n };\n\n function boxWhiskers (d) {\n return [0, d.length - 1];\n }\n\n function boxQuartiles (d) {\n return [\n d3.quantile(d, 0.25),\n d3.quantile(d, 0.5),\n d3.quantile(d, 0.75)\n ];\n }\n\n})();\n\n\n/**\n * A box plot is a chart that depicts numerical data via their quartile ranges.\n *\n * Examples:\n * - {@link http://dc-js.github.io/dc.js/examples/box-plot-time.html Box plot time example}\n * - {@link http://dc-js.github.io/dc.js/examples/box-plot.html Box plot example}\n * @class boxPlot\n * @memberof dc\n * @mixes dc.coordinateGridMixin\n * @example\n * // create a box plot under #chart-container1 element using the default global chart group\n * var boxPlot1 = dc.boxPlot('#chart-container1');\n * // create a box plot under #chart-container2 element using chart group A\n * var boxPlot2 = dc.boxPlot('#chart-container2', 'chartGroupA');\n * @param {String|node|d3.selection} parent - Any valid\n * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying\n * a dom block element such as a div; or a dom element or d3 selection.\n * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.\n * Interaction with a chart will only trigger events and redraws within the chart's group.\n * @returns {dc.boxPlot}\n */\ndc.boxPlot = function (parent, chartGroup) {\n var _chart = dc.coordinateGridMixin({});\n\n // Returns a function to compute the interquartile range.\n function DEFAULT_WHISKERS_IQR (k) {\n return function (d) {\n var q1 = d.quartiles[0],\n q3 = d.quartiles[2],\n iqr = (q3 - q1) * k,\n i = -1,\n j = d.length;\n do { ++i; } while (d[i] < q1 - iqr);\n do { --j; } while (d[j] > q3 + iqr);\n return [i, j];\n };\n }\n\n var _whiskerIqrFactor = 1.5;\n var _whiskersIqr = DEFAULT_WHISKERS_IQR;\n var _whiskers = _whiskersIqr(_whiskerIqrFactor);\n\n var _box = d3.box();\n var _tickFormat = null;\n\n var _boxWidth = function (innerChartWidth, xUnits) {\n if (_chart.isOrdinal()) {\n return _chart.x().rangeBand();\n } else {\n return innerChartWidth / (1 + _chart.boxPadding()) / xUnits;\n }\n };\n\n // default padding to handle min/max whisker text\n _chart.yAxisPadding(12);\n\n // default to ordinal\n _chart.x(d3.scale.ordinal());\n _chart.xUnits(dc.units.ordinal);\n\n // valueAccessor should return an array of values that can be coerced into numbers\n // or if data is overloaded for a static array of arrays, it should be `Number`.\n // Empty arrays are not included.\n _chart.data(function (group) {\n return group.all().map(function (d) {\n d.map = function (accessor) { return accessor.call(d, d); };\n return d;\n }).filter(function (d) {\n var values = _chart.valueAccessor()(d);\n return values.length !== 0;\n });\n });\n\n /**\n * Get or set the spacing between boxes as a fraction of box size. Valid values are within 0-1.\n * See the {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal_rangeBands d3 docs}\n * for a visual description of how the padding is applied.\n * @method boxPadding\n * @memberof dc.boxPlot\n * @instance\n * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal_rangeBands d3.scale.ordinal.rangeBands}\n * @param {Number} [padding=0.8]\n * @returns {Number|dc.boxPlot}\n */\n _chart.boxPadding = _chart._rangeBandPadding;\n _chart.boxPadding(0.8);\n\n /**\n * Get or set the outer padding on an ordinal box chart. This setting has no effect on non-ordinal charts\n * or on charts with a custom {@link dc.boxPlot#boxWidth .boxWidth}. Will pad the width by\n * `padding * barWidth` on each side of the chart.\n * @method outerPadding\n * @memberof dc.boxPlot\n * @instance\n * @param {Number} [padding=0.5]\n * @returns {Number|dc.boxPlot}\n */\n _chart.outerPadding = _chart._outerRangeBandPadding;\n _chart.outerPadding(0.5);\n\n /**\n * Get or set the numerical width of the boxplot box. The width may also be a function taking as\n * parameters the chart width excluding the right and left margins, as well as the number of x\n * units.\n * @example\n * // Using numerical parameter\n * chart.boxWidth(10);\n * // Using function\n * chart.boxWidth((innerChartWidth, xUnits) { ... });\n * @method boxWidth\n * @memberof dc.boxPlot\n * @instance\n * @param {Number|Function} [boxWidth=0.5]\n * @returns {Number|Function|dc.boxPlot}\n */\n _chart.boxWidth = function (boxWidth) {\n if (!arguments.length) {\n return _boxWidth;\n }\n _boxWidth = d3.functor(boxWidth);\n return _chart;\n };\n\n var boxTransform = function (d, i) {\n var xOffset = _chart.x()(_chart.keyAccessor()(d, i));\n return 'translate(' + xOffset + ', 0)';\n };\n\n _chart._preprocessData = function () {\n if (_chart.elasticX()) {\n _chart.x().domain([]);\n }\n };\n\n _chart.plotData = function () {\n var _calculatedBoxWidth = _boxWidth(_chart.effectiveWidth(), _chart.xUnitCount());\n\n _box.whiskers(_whiskers)\n .width(_calculatedBoxWidth)\n .height(_chart.effectiveHeight())\n .value(_chart.valueAccessor())\n .domain(_chart.y().domain())\n .duration(_chart.transitionDuration())\n .tickFormat(_tickFormat);\n\n var boxesG = _chart.chartBodyG().selectAll('g.box').data(_chart.data(), _chart.keyAccessor());\n\n renderBoxes(boxesG);\n updateBoxes(boxesG);\n removeBoxes(boxesG);\n\n _chart.fadeDeselectedArea();\n };\n\n function renderBoxes (boxesG) {\n var boxesGEnter = boxesG.enter().append('g');\n\n boxesGEnter\n .attr('class', 'box')\n .attr('transform', boxTransform)\n .call(_box)\n .on('click', function (d) {\n _chart.filter(_chart.keyAccessor()(d));\n _chart.redrawGroup();\n });\n }\n\n function updateBoxes (boxesG) {\n dc.transition(boxesG, _chart.transitionDuration(), _chart.transitionDelay())\n .attr('transform', boxTransform)\n .call(_box)\n .each(function () {\n d3.select(this).select('rect.box').attr('fill', _chart.getColor);\n });\n }\n\n function removeBoxes (boxesG) {\n boxesG.exit().remove().call(_box);\n }\n\n _chart.fadeDeselectedArea = function () {\n if (_chart.hasFilter()) {\n if (_chart.isOrdinal()) {\n _chart.g().selectAll('g.box').each(function (d) {\n if (_chart.isSelectedNode(d)) {\n _chart.highlightSelected(this);\n } else {\n _chart.fadeDeselected(this);\n }\n });\n } else {\n var extent = _chart.brush().extent();\n var start = extent[0];\n var end = extent[1];\n var keyAccessor = _chart.keyAccessor();\n _chart.g().selectAll('g.box').each(function (d) {\n var key = keyAccessor(d);\n if (key < start || key >= end) {\n _chart.fadeDeselected(this);\n } else {\n _chart.highlightSelected(this);\n }\n });\n }\n } else {\n _chart.g().selectAll('g.box').each(function () {\n _chart.resetHighlight(this);\n });\n }\n };\n\n _chart.isSelectedNode = function (d) {\n return _chart.hasFilter(_chart.keyAccessor()(d));\n };\n\n _chart.yAxisMin = function () {\n var min = d3.min(_chart.data(), function (e) {\n return d3.min(_chart.valueAccessor()(e));\n });\n return dc.utils.subtract(min, _chart.yAxisPadding());\n };\n\n _chart.yAxisMax = function () {\n var max = d3.max(_chart.data(), function (e) {\n return d3.max(_chart.valueAccessor()(e));\n });\n return dc.utils.add(max, _chart.yAxisPadding());\n };\n\n /**\n * Set the numerical format of the boxplot median, whiskers and quartile labels. Defaults to\n * integer formatting.\n * @example\n * // format ticks to 2 decimal places\n * chart.tickFormat(d3.format('.2f'));\n * @method tickFormat\n * @memberof dc.boxPlot\n * @instance\n * @param {Function} [tickFormat]\n * @returns {Number|Function|dc.boxPlot}\n */\n _chart.tickFormat = function (tickFormat) {\n if (!arguments.length) {\n return _tickFormat;\n }\n _tickFormat = tickFormat;\n return _chart;\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n\n// Renamed functions\n\ndc.abstractBubbleChart = dc.bubbleMixin;\ndc.baseChart = dc.baseMixin;\ndc.capped = dc.capMixin;\ndc.colorChart = dc.colorMixin;\ndc.coordinateGridChart = dc.coordinateGridMixin;\ndc.marginable = dc.marginMixin;\ndc.stackableChart = dc.stackMixin;\n\n// Expose d3 and crossfilter, so that clients in browserify\n// case can obtain them if they need them.\ndc.d3 = d3;\ndc.crossfilter = crossfilter;\n\nreturn dc;}\n if(typeof define === \"function\" && define.amd) {\n define([\"d3\", \"crossfilter2\"], _dc);\n } else if(typeof module === \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter2');\n // When using npm + browserify, 'crossfilter' is a function,\n // since package.json specifies index.js as main function, and it\n // does special handling. When using bower + browserify,\n // there's no main in bower.json (in fact, there's no bower.json),\n // so we need to fix it.\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n module.exports = _dc(_d3, _crossfilter);\n } else {\n this.dc = _dc(d3, crossfilter);\n }\n}\n)();\n\n//# sourceMappingURL=dc.js.map","module.exports = {\n PluginManifest: require('./lib/PluginManifest'),\n PluginStore: require('./lib/PluginStore'),\n}\n","import Reflux from 'reflux';\nimport _ from 'lodash';\n\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst AlertConditionsActions = ActionsProvider.getActions('AlertConditions');\n\nconst AlertConditionsStore = Reflux.createStore({\n listenables: AlertConditionsActions,\n allAlertConditions: undefined,\n availableConditions: undefined,\n\n getInitialState() {\n return {\n availableConditions: this.availableConditions,\n allAlertConditions: this.allAlertConditions,\n };\n },\n\n available() {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlertConditionsApiController.available().url);\n const promise = fetch('GET', url).then((response) => {\n this.availableConditions = response;\n this.trigger({ availableConditions: this.availableConditions });\n });\n\n AlertConditionsActions.available.promise(promise);\n return promise;\n },\n\n delete(streamId, alertConditionId) {\n const failCallback = (error) => {\n UserNotification.error(`Removing Alert Condition failed with status: ${error}`,\n 'Could not remove Alert Conditions');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.delete(streamId, alertConditionId).url);\n const promise = fetch('DELETE', url).then(() => {\n AlertConditionsActions.listAll();\n UserNotification.success('Condition deleted successfully');\n }, failCallback);\n AlertConditionsActions.delete.promise(promise);\n return promise;\n },\n\n listAll() {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlertConditionsApiController.list().url);\n const promise = fetch('GET', url).then(\n (response) => {\n this.allAlertConditions = response.conditions;\n this.trigger({ allAlertConditions: this.allAlertConditions });\n return this.allAlertConditions;\n },\n (error) => {\n UserNotification.error(`Fetching alert conditions failed with status: ${error}`,\n 'Could not get alert conditions');\n },\n );\n AlertConditionsActions.listAll.promise(promise);\n },\n\n list(streamId) {\n const failCallback = (error) => {\n UserNotification.error(`Fetching Alert Conditions failed with status: ${error}`,\n 'Could not retrieve Alert Conditions');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.list(streamId).url);\n const promise = fetch('GET', url).then((response) => {\n const conditions = response.conditions.map((condition) => {\n const cond = _.clone(condition);\n cond.stream_id = streamId;\n return cond;\n });\n this.trigger({ alertConditions: conditions });\n return conditions;\n }, failCallback);\n\n AlertConditionsActions.list.promise(promise);\n return promise;\n },\n save(streamId, alertCondition) {\n const failCallback = (error) => {\n UserNotification.error(`Saving Alert Condition failed with status: ${error}`,\n 'Could not save Alert Condition');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.create(streamId).url);\n const promise = fetch('POST', url, alertCondition).then((response) => {\n UserNotification.success('Condition created successfully');\n return response.alert_condition_id;\n }, failCallback);\n\n AlertConditionsActions.save.promise(promise);\n return promise;\n },\n update(streamId, alertConditionId, request) {\n const failCallback = (error) => {\n UserNotification.error(`Saving Alert Condition failed with status: ${error}`,\n 'Could not save Alert Condition');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.update(streamId, alertConditionId).url);\n const promise = fetch('PUT', url, request).then((response) => {\n UserNotification.success('Condition updated successfully');\n return response;\n }, failCallback);\n\n AlertConditionsActions.update.promise(promise);\n return promise;\n },\n get(streamId, conditionId, failureCallback) {\n const failCallback = (error) => {\n UserNotification.error(`Fetching Alert Condition ${conditionId} failed with status: ${error}`,\n 'Could not retrieve Alert Condition');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.get(streamId, conditionId).url);\n const promise = fetch('GET', url);\n promise.then(\n (response) => {\n this.trigger({ alertCondition: response });\n return response;\n },\n (error) => {\n return (typeof failureCallback === 'function' ? failureCallback(error) : failCallback(error));\n },\n );\n\n AlertConditionsActions.get.promise(promise);\n },\n\n test(streamId, conditionId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamAlertsApiController.test(streamId, conditionId).url);\n const promise = fetch('POST', url);\n\n AlertConditionsActions.test.promise(promise);\n },\n});\n\nexport default AlertConditionsStore;\n","import Reflux from 'reflux';\n\nconst SessionActions = Reflux.createActions({\n login: { asyncResult: true },\n logout: { asyncResult: true },\n validate: { asyncResult: true },\n});\n\nexport default SessionActions;\n","import Reflux from 'reflux';\n\nconst SingleNodeActions = Reflux.createActions({\n get: { asyncResult: true },\n});\n\nexport default SingleNodeActions;\n","// @flow strict\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nconst ToolsStore = Reflux.createStore({\n testNaturalDate(text: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.naturalDateTest(text);\n const promise = fetch('GET', URLUtils.qualifyUrl(url));\n\n promise.catch((errorThrown) => {\n if (errorThrown.additional.status !== 422) {\n UserNotification.error(`Loading keyword preview failed with status: ${errorThrown}`,\n 'Could not load keyword preview');\n }\n });\n\n return promise;\n },\n testGrok(pattern: string, namedCapturesOnly: boolean, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.grokTest();\n const promise = fetch('POST', URLUtils.qualifyUrl(url), {\n pattern: pattern,\n string: string,\n named_captures_only: namedCapturesOnly,\n });\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'We were not able to run the grok extraction. Please check your parameters.');\n });\n\n return promise;\n },\n testJSON(flatten: boolean, listSeparator: string, keySeparator: string, kvSeparator: string, replaceKeyWhitespace: boolean, keyWhitespaceReplacement: string, keyPrefix: string, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.jsonTest();\n const payload = {\n flatten: flatten,\n list_separator: listSeparator,\n key_separator: keySeparator,\n kv_separator: kvSeparator,\n replace_key_whitespace: replaceKeyWhitespace,\n key_whitespace_replacement: keyWhitespaceReplacement,\n key_prefix: keyPrefix,\n string: string,\n };\n\n const promise = fetch('POST', URLUtils.qualifyUrl(url), payload);\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'We were not able to run the JSON extraction. Please check your parameters.');\n });\n\n return promise;\n },\n testRegexValidity(regex: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.regexValidate(regex);\n const promise = fetch('GET', URLUtils.qualifyUrl(url));\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'Could not validate regular expression. Make sure that it is valid.');\n });\n\n return promise;\n },\n testRegex(regex: string, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.regexTest();\n const promise = fetch('POST', URLUtils.qualifyUrl(url), {\n regex: regex,\n string: string,\n });\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'Could not try regular expression. Make sure that it is valid.');\n });\n\n return promise;\n },\n testRegexReplace(regex: string, replacement: string, replaceAll: boolean, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.regexReplaceTest();\n const payload = {\n regex: regex,\n replacement: replacement,\n replace_all: replaceAll,\n string: string,\n };\n const promise = fetch('POST', URLUtils.qualifyUrl(url), payload);\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'Could not try regular expression. Make sure that it is valid.');\n });\n\n return promise;\n },\n testSplitAndIndex(splitBy: string, index: number, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.splitAndIndexTest();\n const payload = {\n split_by: splitBy,\n index: index,\n string: string,\n };\n\n const promise = fetch('POST', URLUtils.qualifyUrl(url), payload);\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'We were not able to run the split and index extraction. Please check your parameters.');\n });\n\n return promise;\n },\n testSubstring(beginIndex: number, endIndex: number, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.substringTest();\n const payload = {\n start: beginIndex,\n end: endIndex,\n string: string,\n };\n\n const promise = fetch('POST', URLUtils.qualifyUrl(url), payload);\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'We were not able to run the substring extraction. Please check index boundaries.');\n });\n\n return promise;\n },\n testContainsString(searchString: string, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.containsStringTest();\n const promise = fetch('POST', URLUtils.qualifyUrl(url), {\n search_string: searchString,\n string: string,\n });\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`,\n 'Could not check if field contains the string');\n });\n\n return promise;\n },\n\n testLookupTable(lookupTableName: string, string: string): Promise {\n const { url } = ApiRoutes.ToolsApiController.lookupTableTest();\n const promise = fetch('POST', URLUtils.qualifyUrl(url), {\n lookup_table_name: lookupTableName,\n string: string,\n });\n\n promise.catch((errorThrown) => {\n UserNotification.error(`Details: ${errorThrown}`, 'Could not check if lookup table translates the string');\n });\n\n return promise;\n },\n});\n\nexport default ToolsStore;\n","import Reflux from 'reflux';\n\nconst AlertsActions = Reflux.createActions({\n get: { asyncResult: true },\n list: { asyncResult: true },\n listPaginated: { asyncResult: true },\n listAllPaginated: { asyncResult: true },\n listAllStreams: { asyncResult: true },\n});\n\nexport default AlertsActions;\n","/**\n * UAParser.js v0.7.17\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman \n * Dual licensed under GPLv2 & MIT\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.17',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var margedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n margedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n margedRegexes[i] = regexes[i];\n }\n }\n return margedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n //var result = {},\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\n\n /*// construct object barebones\n for (p = 0; p < args[1].length; p++) {\n q = args[1][p];\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\n }*/\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n // console.log(this);\n //return this;\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]+)*/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n\n // Trident based\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser/Baidu\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]+)*/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\n ], [NAME, VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [NAME, VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\n // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\\/([\\w\\.-]+)/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]+)*/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n\n /* /////////////////////\n // Media players BEGIN\n ////////////////////////\n\n , [\n\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\n /(coremedia) v((\\d+)[\\w\\._]+)/i\n ], [NAME, VERSION], [\n\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\n ], [NAME, VERSION], [\n\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\n ], [NAME, VERSION], [\n\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\n // NSPlayer/PSP-InternetRadioPlayer/Videos\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\n ], [NAME, VERSION], [\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\n ], [NAME, VERSION], [\n\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\n ], [[NAME, 'Flip Player'], VERSION], [\n\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\n ], [NAME], [\n\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\n // Gstreamer\n ], [NAME, VERSION], [\n\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\n // Java/urllib/requests/wget/cURL\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\n ], [NAME, VERSION], [\n\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\n // MPlayer SVN\n ], [NAME, VERSION], [\n\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\n ], [NAME, VERSION], [\n\n /(mplayer)/i, // MPlayer (no other info)\n /(yourmuze)/i, // YourMuze\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\n ], [NAME], [\n\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\n ], [NAME, VERSION], [\n\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\n ], [NAME, VERSION], [\n\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\n ], [NAME, VERSION], [\n\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\n ], [NAME, VERSION], [\n\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\n // inlight radio\n ], [NAME], [\n\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\n // SoundTap/Totem/Stagefright/Streamium\n ], [NAME, VERSION], [\n\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\n ], [NAME, VERSION], [\n\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\n ], [NAME, VERSION], [\n\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\n ], [[NAME, /-/g, ' '], VERSION], [\n\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\n // Windows Media Server\n ], [VERSION, [NAME, 'Windows']], [\n\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\n ], [NAME, VERSION], [\n\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\n ], [[NAME, 'rad.io'], VERSION]\n\n //////////////////////\n // Media players END\n ////////////////////*/\n\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/[\\w\\.]+.*silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/[\\w\\.]+.*silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]+)*/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\n /(zte)-(\\w+)*/i, // ZTE\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]+)*/i\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?(:?\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w+)*/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)*/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w+)*/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]+)*/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w+)*/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel xl|pixel)\\s/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+)?)\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)?(?:[\\s_]*[\\w\\s]+)?)\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\n\n /android.+a000(1)\\s+build/i // OnePlus\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Venue[\\d\\s]*)\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(zte)?.+(k\\d{2})\\s+build/i // ZTE K Series Tablet\n ], [[VENDOR, 'ZTE'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2}x?.*)\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(.+)\\s+build/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?.+)\\s+build/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?.+)\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_?)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-?)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(.*\\b)\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q.+)\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /(android.+)[;\\/].+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n\n\n /*//////////////////////////\n // TODO: move to string map\n ////////////////////////////\n\n /(C6603)/i // Sony Xperia Z C6603\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /(C6903)/i // Sony Xperia Z 1\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /(SM-G900[F|H])/i // Samsung Galaxy S5\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G7102)/i // Samsung Galaxy Grand 2\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G313HZ)/i // Samsung Galaxy V\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n\n /(T3C)/i // Advan Vandroid T3C\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN S4A)/i // Advan Vandroid S4A\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\n\n /(V972M)/i // ZTE V972M\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\n\n /////////////\n // END TODO\n ///////////*/\n\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]+).*(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s]+\\w)*/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]+)*/i, // Blackberry\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]+)*/i,\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\n /linux;.+(sailfish);/i // Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]+)*/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w+)*/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]+)*/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]+)*/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]+)*/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.]+\\d)*/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]+)*/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]+(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]+\\w)*/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]+)*/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.]*)*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\n /(unix)\\s?([\\w\\.]+)*/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n /*\n var Browser = function (name, version) {\n this[NAME] = name;\n this[VERSION] = version;\n };\n var CPU = function (arch) {\n this[ARCHITECTURE] = arch;\n };\n var Device = function (vendor, model, type) {\n this[VENDOR] = vendor;\n this[MODEL] = model;\n this[TYPE] = type;\n };\n var Engine = Browser;\n var OS = Browser;\n */\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n //var browser = new Browser();\n //var cpu = new CPU();\n //var device = new Device();\n //var engine = new Engine();\n //var os = new OS();\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n //browser = new Browser();\n //cpu = new CPU();\n //device = new Device();\n //engine = new Engine();\n //os = new OS();\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n //UAParser.Utils = util;\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n // TODO: test!!!!!!!!\n /*\n if (require && require.main === module && process) {\n // cli\n var jsonize = function (arr) {\n var res = [];\n for (var i in arr) {\n res.push(new UAParser(arr[i]).getResult());\n }\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\n };\n if (process.stdin.isTTY) {\n // via args\n jsonize(process.argv.slice(2));\n } else {\n // via pipe\n var str = '';\n process.stdin.on('readable', function() {\n var read = process.stdin.read();\n if (read !== null) {\n str += read;\n }\n });\n process.stdin.on('end', function () {\n jsonize(str.replace(/\\n$/, '').split('\\n'));\n });\n }\n }\n */\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if (typeof $ !== UNDEF_TYPE) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","import Reflux from 'reflux';\n\nconst AlarmCallbackHistoryActions = Reflux.createActions({\n list: { asyncResult: true },\n});\n\nexport default AlarmCallbackHistoryActions;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","// @flow strict\n\nimport * as Immutable from 'immutable';\nimport ObjectID from 'bson-objectid';\n\nimport Query from '../queries/Query';\nimport Parameter from '../parameters/Parameter';\nimport type { ParameterJson } from '../parameters/Parameter';\nimport type { QueryJson } from '../queries/Query';\n\ntype SearchId = string;\ntype InternalState = {\n id: SearchId,\n queries: Immutable.Set,\n parameters: Immutable.Set,\n};\n\nexport type SearchJson = {\n id: SearchId,\n queries: Array,\n parameters: Array,\n};\n\nexport type QuerySet = Immutable.Set;\n\nexport default class Search {\n _value: InternalState;\n\n constructor(id: SearchId, queries: Array, parameters: Array) {\n this._value = { id, queries: Immutable.OrderedSet(queries), parameters: Immutable.Set(parameters) };\n }\n\n static create(): Search {\n // eslint-disable-next-line no-use-before-define\n return new Builder()\n .newId()\n .queries([])\n .parameters([])\n .build();\n }\n\n get id(): SearchId {\n return this._value.id;\n }\n\n get queries(): QuerySet {\n return this._value.queries;\n }\n\n get parameters(): Immutable.Set {\n return this._value.parameters;\n }\n\n get requiredParameters(): Immutable.Set {\n return this.parameters\n .filter(p => (!p.optional && !p.defaultValue));\n }\n\n // eslint-disable-next-line no-use-before-define\n toBuilder(): Builder {\n const { id, queries, parameters } = this._value;\n // eslint-disable-next-line no-use-before-define\n return new Builder(Immutable.Map({ id, queries, parameters }));\n }\n\n toJSON(): SearchJson {\n const { id, queries, parameters } = this._value;\n return {\n id,\n queries: queries.toJS(),\n parameters: parameters.toJS(),\n };\n }\n\n static fromJSON(value: SearchJson): Search {\n const { id, parameters } = value;\n\n const queries = value.queries.map(q => Query.fromJSON(q));\n return new Search(id, queries, parameters.map(p => Parameter.fromJSON(p)));\n }\n\n // eslint-disable-next-line no-use-before-define\n static builder(): Builder {\n // eslint-disable-next-line no-use-before-define\n return new Builder();\n }\n}\n\nclass Builder {\n value: Immutable.Map;\n\n constructor(value: Immutable.Map = Immutable.Map()) {\n this.value = value;\n }\n\n id(value: SearchId): Builder {\n return new Builder(this.value.set('id', value));\n }\n\n newId(): Builder {\n return this.id(ObjectID().toString());\n }\n\n queries(value: Array): Builder {\n return new Builder(this.value.set('queries', value));\n }\n\n parameters(value: Array): Builder {\n return new Builder(this.value.set('parameters', value));\n }\n\n build(): Search {\n const { id, queries, parameters } = this.value.toObject();\n return new Search(id, queries, parameters);\n }\n}\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst IndexerOverviewActions = ActionsProvider.getActions('IndexerOverview');\n\nconst IndexerOverviewStore = Reflux.createStore({\n listenables: [IndexerOverviewActions],\n list(indexSetId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerOverviewApiResource.list(indexSetId).url);\n const promise = fetch('GET', url);\n promise.then(\n (response) => {\n this.trigger({ indexerOverview: response, indexerOverviewError: undefined });\n },\n (error) => {\n if (error.additional && error.additional.status === 503) {\n const errorMessage = (error.additional.body && error.additional.body.message\n ? error.additional.body.message\n : 'Elasticsearch is unavailable. Check your configuration and logs for more information.');\n this.trigger({ indexerOverviewError: errorMessage });\n }\n },\n );\n\n IndexerOverviewActions.list.promise(promise);\n\n return promise;\n },\n});\n\nexport default IndexerOverviewStore;\n","import Reflux from 'reflux';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst RefreshActions = ActionsProvider.getActions('Refresh');\n\nconst RefreshStore = Reflux.createStore({\n listenables: [RefreshActions],\n interval: 5 * 1000,\n enabled: false,\n\n getInitialState() {\n return {\n interval: this.interval,\n enabled: this.enabled,\n };\n },\n\n changeInterval(newValue) {\n this.interval = newValue;\n this._update();\n },\n\n disable() {\n this.enabled = false;\n this._update();\n },\n\n enable() {\n this.enabled = true;\n this._update();\n },\n\n _update() {\n this.trigger(this.getInitialState());\n },\n});\n\nexport default RefreshStore;\n","import CombinedProvider from './CombinedProvider';\n\n/* eslint-disable import/no-require, global-require */\nconst actions = {\n AlarmCallbackHistory: () => require('actions/alarmcallbacks/AlarmCallbackHistoryActions'),\n AlarmCallbacks: () => require('actions/alarmcallbacks/AlarmCallbacksActions'),\n AlertConditions: () => require('actions/alertconditions/AlertConditionsActions'),\n AlertNotifications: () => require('actions/alertnotifications/AlertNotificationsActions'),\n Alerts: () => require('actions/alerts/AlertsActions'),\n Authentication: () => require('actions/authentication/AuthenticationActions'),\n AvailableEventDefinitionTypes: () => require('actions/event-definitions/AvailableEventDefinitionTypesActions'),\n Catalog: () => require('actions/content-packs/CatalogActions'),\n ClusterTraffic: () => require('actions/cluster/ClusterTrafficActions'),\n CodecTypes: () => require('actions/codecs/CodecTypesActions'),\n CollectorConfigurations: () => require('actions/sidecars/CollectorConfigurationsActions'),\n Collectors: () => require('actions/sidecars/CollectorsActions'),\n Configuration: () => require('actions/configurations/ConfigurationActions'),\n Configurations: () => require('actions/configurations/ConfigurationActions'),\n ConfigurationVariable: () => require('actions/sidecars/ConfigurationVariableActions'),\n ContentPacks: () => require('actions/content-packs/ContentPacksActions'),\n Dashboards: () => require('actions/dashboards/DashboardsActions'),\n Decorators: () => require('actions/decorators/DecoratorsActions'),\n Deflector: () => require('actions/indices/DeflectorActions'),\n EventDefinitions: () => require('actions/event-definitions/EventDefinitionsActions'),\n EventNotifications: () => require('actions/event-notifications/EventNotificationsActions'),\n Events: () => require('actions/events/EventsActions'),\n Extractors: () => require('actions/extractors/ExtractorsActions'),\n FieldQuickValues: () => require('actions/field-analyzers/FieldQuickValuesActions'),\n GettingStarted: () => require('actions/gettingstarted/GettingStartedActions'),\n HistogramData: () => require('actions/sources/HistogramDataActions'),\n IndexerCluster: () => require('actions/indexers/IndexerClusterActions'),\n IndexerOverview: () => require('actions/indexers/IndexerOverviewActions'),\n IndexRanges: () => require('actions/indices/IndexRangesActions'),\n IndexSets: () => require('actions/indices/IndexSetsActions'),\n Indices: () => require('actions/indices/IndicesActions'),\n IndicesConfiguration: () => require('actions/indices/IndicesConfigurationActions'),\n Inputs: () => require('actions/inputs/InputsActions'),\n InputTypes: () => require('actions/inputs/InputTypesActions'),\n Ldap: () => require('actions/ldap/LdapActions'),\n LdapGroups: () => require('actions/ldap/LdapGroupsActions'),\n Loggers: () => require('actions/system/LoggersActions'),\n LookupTableCaches: () => require('actions/lookup-tables/LookupTableCachesActions'),\n LookupTableDataAdapters: () => require('actions/lookup-tables/LookupTableDataAdaptersActions'),\n LookupTables: () => require('actions/lookup-tables/LookupTablesActions'),\n MessageCounts: () => require('actions/messages/MessageCountsActions'),\n Messages: () => require('actions/messages/MessagesActions'),\n Metrics: () => require('actions/metrics/MetricsActions'),\n Nodes: () => require('actions/nodes/NodesActions'),\n Notifications: () => require('actions/notifications/NotificationsActions'),\n PipelineConnections: () => require('actions/pipelines/PipelineConnectionsActions'),\n Pipelines: () => require('actions/pipelines/PipelinesActions'),\n FilterPreview: () => require('actions/event-definitions/FilterPreviewActions'),\n Refresh: () => require('actions/tools/RefreshActions'),\n Rules: () => require('actions/rules/RulesActions'),\n SavedSearches: () => require('actions/search/SavedSearchesActions'),\n ServerAvailability: () => require('actions/sessions/ServerAvailabilityActions'),\n Session: () => require('actions/sessions/SessionActions'),\n Sidecars: () => require('actions/sidecars/SidecarsActions'),\n SidecarsAdministration: () => require('actions/sidecars/SidecarsAdministrationActions'),\n Simulator: () => require('actions/simulator/SimulatorActions'),\n SingleNode: () => require('actions/nodes/SingleNodeActions'),\n Streams: () => require('actions/streams/StreamsActions'),\n SystemJobs: () => require('actions/systemjobs/SystemJobsActions'),\n Widgets: () => require('actions/widgets/WidgetsActions'),\n};\n\nconst stores = {\n AlarmCallbackHistory: () => require('stores/alarmcallbacks/AlarmCallbackHistoryStore'),\n AlarmCallbacks: () => require('stores/alarmcallbacks/AlarmCallbacksStore'),\n AlertConditions: () => require('stores/alertconditions/AlertConditionsStore'),\n AlertNotifications: () => require('stores/alertnotifications/AlertNotificationsStore'),\n Alerts: () => require('stores/alerts/AlertsStore'),\n Authentication: () => require('stores/authentication/AuthenticationStore'),\n AvailableEventDefinitionTypes: () => require('stores/event-definitions/AvailableEventDefinitionTypesStore'),\n Catalog: () => require('stores/content-packs/CatalogStore'),\n ClusterOverview: () => require('stores/cluster/ClusterOverviewStore'),\n ClusterTraffic: () => require('stores/cluster/ClusterTrafficStore'),\n CodecTypes: () => require('stores/codecs/CodecTypesStore'),\n CollectorConfigurations: () => require('stores/sidecars/CollectorConfigurationsStore'),\n Collectors: () => require('stores/sidecars/CollectorsStore'),\n ContentPacks: () => require('stores/content-packs/ContentPacksStore'),\n Configuration: () => require('stores/configurations/ConfigurationsStore'),\n Configurations: () => require('stores/configurations/ConfigurationsStore'),\n CurrentUser: () => require('stores/users/CurrentUserStore'),\n Dashboards: () => require('stores/dashboards/DashboardsStore'),\n Decorators: () => require('stores/decorators/DecoratorsStore'),\n Deflector: () => require('stores/indices/DeflectorStore'),\n EventDefinitions: () => require('stores/event-definitions/EventDefinitionsStore'),\n EventNotifications: () => require('stores/event-notifications/EventNotificationsStore'),\n Events: () => require('stores/events/EventsStore'),\n Extractors: () => require('stores/extractors/ExtractorsStore'),\n FieldGraphs: () => require('stores/field-analyzers/FieldGraphsStore'),\n FieldQuickValues: () => require('stores/field-analyzers/FieldQuickValuesStore'),\n Fields: () => require('stores/fields/FieldsStore'),\n FieldStatistics: () => require('stores/field-analyzers/FieldStatisticsStore'),\n Focus: () => require('stores/tools/FocusStore'),\n GettingStarted: () => require('stores/gettingstarted/GettingStartedStore'),\n GlobalThroughput: () => require('stores/metrics/GlobalThroughputStore'),\n GrokPatterns: () => require('stores/grok-patterns/GrokPatternsStore'),\n HistogramData: () => require('stores/sources/HistogramDataStore'),\n IndexerCluster: () => require('stores/indexers/IndexerClusterStore'),\n IndexerFailures: () => require('stores/indexers/IndexerFailuresStore'),\n IndexerOverview: () => require('stores/indexers/IndexerOverviewStore'),\n IndexRanges: () => require('stores/indices/IndexRangesStore'),\n IndexSets: () => require('stores/indices/IndexSetsStore'),\n Indices: () => require('stores/indices/IndicesStore'),\n IndicesConfiguration: () => require('stores/indices/IndicesConfigurationStore'),\n Inputs: () => require('stores/inputs/InputsStore'),\n InputStates: () => require('stores/inputs/InputStatesStore'),\n InputStaticFields: () => require('stores/inputs/InputStaticFieldsStore'),\n InputTypes: () => require('stores/inputs/InputTypesStore'),\n Journal: () => require('stores/journal/JournalStore'),\n LdapGroups: () => require('stores/ldap/LdapGroupsStore'),\n Ldap: () => require('stores/ldap/LdapStore'),\n Loggers: () => require('stores/system/LoggersStore'),\n LookupTables: () => require('stores/lookup-tables/LookupTablesStore'),\n LookupTableCaches: () => require('stores/lookup-tables/LookupTableCachesStore'),\n LookupTableDataAdapters: () => require('stores/lookup-tables/LookupTableDataAdaptersStore'),\n MessageCounts: () => require('stores/messages/MessageCountsStore'),\n MessageFields: () => require('stores/messages/MessageFieldsStore'),\n Messages: () => require('stores/messages/MessagesStore'),\n Metrics: () => require('stores/metrics/MetricsStore'),\n Nodes: () => require('stores/nodes/NodesStore'),\n Notifications: () => require('stores/notifications/NotificationsStore'),\n Outputs: () => require('stores/outputs/OutputsStore'),\n PipelineConnections: () => require('stores/pipelines/PipelineConnectionsStore'),\n Pipelines: () => require('stores/pipelines/PipelinesStore'),\n Plugins: () => require('stores/plugins/PluginsStore'),\n Preferences: () => require('stores/users/PreferencesStore'),\n FilterPreview: () => require('stores/event-definitions/FilterPreviewStore'),\n Refresh: () => require('stores/tools/RefreshStore'),\n Roles: () => require('stores/users/RolesStore'),\n Rules: () => require('stores/rules/RulesStore'),\n SavedSearches: () => require('stores/search/SavedSearchesStore'),\n Search: () => require('stores/search/SearchStore'),\n ServerAvailability: () => require('stores/sessions/ServerAvailabilityStore'),\n Session: () => require('stores/sessions/SessionStore'),\n Sidecars: () => require('stores/sidecars/SidecarsStore'),\n SidecarsAdministration: () => require('stores/sidecars/SidecarsAdministrationStore'),\n Simulator: () => require('stores/simulator/SimulatorStore'),\n SingleNode: () => require('stores/nodes/SingleNodeStore'),\n Sources: () => require('stores/sources/SourcesStore'),\n Startpage: () => require('stores/users/StartpageStore'),\n StreamRules: () => require('stores/streams/StreamRulesStore'),\n Streams: () => require('stores/streams/StreamsStore'),\n System: () => require('stores/system/SystemStore'),\n SystemJobs: () => require('stores/systemjobs/SystemJobsStore'),\n SystemLoadBalancer: () => require('stores/load-balancer/SystemLoadBalancerStore'),\n SystemMessages: () => require('stores/systemmessages/SystemMessagesStore'),\n SystemProcessing: () => require('stores/system-processing/SystemProcessingStore'),\n SystemShutdown: () => require('stores/system-shutdown/SystemShutdownStore'),\n ConfigurationVariable: () => require('stores/sidecars/ConfigurationVariableStore'),\n Tools: () => require('stores/tools/ToolsStore'),\n UniversalSearch: () => require('stores/search/UniversalSearchStore'),\n Users: () => require('stores/users/UsersStore'),\n Widgets: () => require('stores/widgets/WidgetsStore'),\n};\n/* eslint-enable import/no-require, global-require */\n\nexport default () => {\n Object.keys(actions).forEach(key => CombinedProvider.registerAction(key, actions[key]));\n Object.keys(stores).forEach(key => CombinedProvider.registerStore(key, stores[key]));\n};\n","import Reflux from 'reflux';\n\nconst IndexRangesActions = Reflux.createActions({\n list: { asyncResult: true },\n recalculate: { asyncResult: true },\n recalculateIndex: { asyncResult: true },\n});\n\nexport default IndexRangesActions;\n","import Reflux from 'reflux';\nimport URI from 'urijs';\nimport lodash from 'lodash';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { EventDefinitionsActions } = CombinedProvider.get('EventDefinitions');\n\nconst EventDefinitionsStore = Reflux.createStore({\n listenables: [EventDefinitionsActions],\n sourceUrl: '/events/definitions',\n all: undefined,\n eventDefinitions: undefined,\n query: undefined,\n pagination: {\n count: undefined,\n page: undefined,\n pageSize: undefined,\n total: undefined,\n grandTotal: undefined,\n },\n\n getInitialState() {\n return this.getState();\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n getState() {\n return {\n all: this.all,\n eventDefinitions: this.eventDefinitions,\n query: this.query,\n pagination: this.pagination,\n };\n },\n\n eventDefinitionsUrl({ segments = [], query = {} }) {\n const uri = new URI(this.sourceUrl);\n const nextSegments = lodash.concat(uri.segment(), segments);\n uri.segmentCoded(nextSegments);\n uri.query(query);\n\n return URLUtils.qualifyUrl(uri.resource());\n },\n\n refresh() {\n if (this.all) {\n this.listAll();\n }\n if (this.pagination.page) {\n this.listPaginated({\n query: this.query,\n page: this.pagination.page,\n pageSize: this.pagination.pageSize,\n });\n }\n },\n\n listAll() {\n const promise = fetch('GET', this.eventDefinitionsUrl({ query: { per_page: 0 } }));\n\n promise.then((response) => {\n this.all = response.event_definitions;\n this.propagateChanges();\n return response;\n });\n\n EventDefinitionsActions.listAll.promise(promise);\n },\n\n listPaginated({ query = '', page = 1, pageSize = 10 }) {\n const promise = fetch('GET', this.eventDefinitionsUrl({\n query: {\n query: query,\n page: page,\n per_page: pageSize,\n },\n }));\n\n promise.then((response) => {\n this.eventDefinitions = response.event_definitions;\n this.query = response.query;\n this.pagination = {\n count: response.count,\n page: response.page,\n pageSize: response.per_page,\n total: response.total,\n grandTotal: response.grand_total,\n };\n this.propagateChanges();\n return response;\n });\n\n EventDefinitionsActions.listPaginated.promise(promise);\n },\n\n get(eventDefinitionId) {\n const promise = fetch('GET', this.eventDefinitionsUrl({ segments: [eventDefinitionId] }));\n promise.catch((error) => {\n if (error.status === 404) {\n UserNotification.error(`Unable to find Event Definition with id <${eventDefinitionId}>, please ensure it wasn't deleted.`,\n 'Could not retrieve Event Definition');\n }\n });\n EventDefinitionsActions.get.promise(promise);\n },\n\n setAlertFlag(eventDefinition) {\n const isAlert = eventDefinition.notifications.length > 0;\n return Object.assign({}, eventDefinition, { alert: isAlert });\n },\n\n create(eventDefinition) {\n const promise = fetch('POST', this.eventDefinitionsUrl({}), this.setAlertFlag(eventDefinition));\n promise.then(\n (response) => {\n UserNotification.success('Event Definition created successfully',\n `Event Definition \"${eventDefinition.title}\" was created successfully.`);\n this.refresh();\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Creating Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not save Event Definition');\n }\n },\n );\n EventDefinitionsActions.create.promise(promise);\n },\n\n update(eventDefinitionId, eventDefinition) {\n const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinitionId] }),\n this.setAlertFlag(eventDefinition));\n promise.then(\n (response) => {\n UserNotification.success('Event Definition updated successfully',\n `Event Definition \"${eventDefinition.title}\" was updated successfully.`);\n this.refresh();\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Updating Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not update Event Definition');\n }\n },\n );\n EventDefinitionsActions.update.promise(promise);\n },\n\n delete(eventDefinition) {\n const promise = fetch('DELETE', this.eventDefinitionsUrl({ segments: [eventDefinition.id] }));\n\n promise.then(\n () => {\n UserNotification.success('Event Definition deleted successfully',\n `Event Definition \"${eventDefinition.title}\" was deleted successfully.`);\n this.refresh();\n },\n (error) => {\n UserNotification.error(`Deleting Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not delete Event Definition');\n },\n );\n\n EventDefinitionsActions.delete.promise(promise);\n },\n});\n\nexport default EventDefinitionsStore;\n","import Reflux from 'reflux';\n\nconst LoggersActions = Reflux.createActions({\n loggers: { asyncResult: true },\n subsystems: { asyncResult: true },\n setSubsystemLoggerLevel: { asyncResult: true },\n});\n\nexport default LoggersActions;\n","import Reflux from 'reflux';\n\nconst ConfigurationActions = Reflux.createActions({\n list: { asyncResult: true },\n listSearchesClusterConfig: { asyncResult: true },\n listMessageProcessorsConfig: { asyncResult: true },\n listEventsClusterConfig: { asyncResult: true },\n listWhiteListConfig: { asyncResult: true },\n update: { asyncResult: true },\n updateWhitelist: { asyncResult: true },\n updateMessageProcessorsConfig: { asyncResult: true },\n});\n\nexport default ConfigurationActions;\n","import Reflux from 'reflux';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst IndexSetsActions = ActionsProvider.getActions('IndexSets');\n\nconst IndexSetsStore = Reflux.createStore({\n listenables: [IndexSetsActions],\n\n list(stats) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.list(stats).url);\n const promise = fetch('GET', url);\n promise\n .then(\n response => this.trigger({\n indexSetsCount: response.total,\n indexSets: response.index_sets,\n indexSetStats: response.stats,\n }),\n (error) => {\n UserNotification.error(`Fetching index sets list failed: ${error.message}`,\n 'Could not retrieve index sets.');\n },\n );\n\n IndexSetsActions.list.promise(promise);\n },\n\n listPaginated(skip, limit, stats) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.listPaginated(skip, limit, stats).url);\n const promise = fetch('GET', url);\n promise\n .then(\n response => this.trigger({\n indexSetsCount: response.total,\n indexSets: response.index_sets,\n indexSetStats: response.stats,\n }),\n (error) => {\n UserNotification.error(`Fetching index sets list failed: ${this._errorMessage(error)}`,\n 'Could not retrieve index sets.');\n },\n );\n\n IndexSetsActions.listPaginated.promise(promise);\n },\n\n get(indexSetId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.get(indexSetId).url);\n const promise = fetch('GET', url);\n promise.then(\n (response) => {\n this.trigger({ indexSet: response });\n return response;\n },\n (error) => {\n UserNotification.error(`Fetching index set '${indexSetId}' failed with status: ${this._errorMessage(error)}`, 'Could not retrieve index set.');\n },\n );\n\n IndexSetsActions.get.promise(promise);\n },\n\n update(indexSet) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.get(indexSet.id).url);\n const promise = fetch('PUT', url, indexSet);\n promise.then(\n (response) => {\n UserNotification.success(`Successfully updated index set '${indexSet.title}'`, 'Success');\n this.trigger({ indexSet: response });\n return response;\n },\n (error) => {\n UserNotification.error(`Updating index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not update index set.');\n },\n );\n\n IndexSetsActions.update.promise(promise);\n },\n\n create(indexSet) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.create().url);\n const promise = fetch('POST', url, indexSet);\n promise.then(\n (response) => {\n UserNotification.success(`Successfully created index set '${indexSet.title}'`, 'Success');\n this.trigger({ indexSet: response });\n return response;\n },\n (error) => {\n UserNotification.error(`Creating index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not create index set.');\n },\n );\n\n IndexSetsActions.create.promise(promise);\n },\n\n delete(indexSet, deleteIndices) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.delete(indexSet.id, deleteIndices).url);\n const promise = fetch('DELETE', url);\n promise.then(\n () => {\n UserNotification.success(`Successfully deleted index set '${indexSet.title}'`, 'Success');\n },\n (error) => {\n UserNotification.error(`Deleting index set '${indexSet.title}' failed with status: ${this._errorMessage(error)}`, 'Could not delete index set.');\n },\n );\n\n IndexSetsActions.delete.promise(promise);\n },\n\n setDefault(indexSet) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.setDefault(indexSet.id).url);\n const promise = fetch('PUT', url);\n promise.then(\n () => {\n UserNotification.success(`Successfully set index set '${indexSet.title}' as default`, 'Success');\n },\n (error) => {\n UserNotification.error(`Setting index set '${indexSet.title}' as default failed with status: ${this._errorMessage(error)}`, 'Could not set default index set.');\n },\n );\n\n IndexSetsActions.setDefault.promise(promise);\n },\n\n stats() {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexSetsApiController.stats().url);\n const promise = fetch('GET', url);\n promise\n .then(\n response => this.trigger({\n globalIndexSetStats: {\n indices: response.indices,\n documents: response.documents,\n size: response.size,\n },\n }),\n (error) => {\n UserNotification.error(`Fetching global index stats failed: ${error.message}`,\n 'Could not retrieve global index stats.');\n },\n );\n\n IndexSetsActions.stats.promise(promise);\n },\n\n _errorMessage(error) {\n try {\n return error.additional.body.message;\n } catch (e) {\n return error.message;\n }\n },\n});\n\nexport default IndexSetsStore;\n","import Qs from 'qs';\nimport URI from 'urijs';\nimport AppConfig from 'util/AppConfig';\nimport UAParser from 'ua-parser-js';\n\nconst URLUtils = {\n parser: new UAParser(),\n qualifyUrl(url) {\n return new URI(AppConfig.gl2ServerUrl() + url).normalizePathname().toString();\n },\n appPrefixed(url) {\n return this.concatURLPath(AppConfig.gl2AppPathPrefix(), url);\n },\n getParsedSearch(location) {\n let search = {};\n let query = location.search;\n if (query) {\n if (query.indexOf('?') === 0 && query.length > 1) {\n query = query.substr(1, query.length - 1);\n search = Qs.parse(query);\n }\n }\n\n return search;\n },\n getParsedHash(location) {\n let result = {};\n let { hash } = location;\n if (hash) {\n if (hash.indexOf('#') === 0 && hash.length > 1) {\n hash = hash.substr(1, hash.length - 1);\n result = Qs.parse(hash);\n }\n }\n return result;\n },\n replaceHashParam(name, newValue) {\n const origHash = this.getParsedHash(window.location);\n origHash[name] = newValue;\n window.location.replace(`#${Qs.stringify(origHash)}`);\n },\n concatURLPath(...allArgs) {\n const args = Array(allArgs.length);\n for (let i = 0; i < allArgs.length; i++) {\n args[i] = allArgs[i];\n }\n\n const joinedPath = `/${args.join('/')}`;\n return joinedPath.replace(/[\\/]+/g, '/');\n },\n areCredentialsInURLSupported() {\n const browser = this.parser.getBrowser();\n return browser.name !== 'IE' && browser.name !== 'Edge';\n },\n};\n\nexport default URLUtils;\n","const StringUtils = {\n tempDocument: document.createElement('textarea'),\n capitalizeFirstLetter(text) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n },\n escapeHTML(text) {\n this.tempDocument.textContent = text;\n return this.tempDocument.innerHTML;\n },\n unescapeHTML(text) {\n this.tempDocument.innerHTML = text;\n return this.tempDocument.textContent;\n },\n pluralize(number, singular, plural) {\n return (number === 1 || number === '1' ? singular : plural);\n },\n stringify(text) {\n return (typeof text === 'object' ? JSON.stringify(text) : String(text)) || '';\n },\n};\n\nexport default StringUtils;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(578);","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport Promise from 'bluebird';\n\nconst SystemStore = Reflux.createStore({\n system: undefined,\n locales: undefined,\n init() {\n this.info().then((response) => {\n this.trigger({ system: response });\n this.system = response;\n });\n this.systemLocales().then((response) => {\n this.trigger({ locales: response });\n this.locales = response.locales;\n });\n },\n getInitialState() {\n return { system: this.system, locales: this.locales };\n },\n info() {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemApiController.info().url);\n\n return fetch('GET', url);\n },\n jvm() {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemApiController.jvm().url);\n\n return fetch('GET', url);\n },\n systemLocales() {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemApiController.locales().url);\n\n return fetch('GET', url);\n },\n elasticsearchVersion() {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterApiResource.elasticsearchStats().url);\n\n const promise = new Promise((resolve, reject) => {\n fetch('GET', url).then((response) => {\n const splitVersion = response.cluster_version.split('.');\n\n resolve({ major: splitVersion[0], minor: splitVersion[1], patch: splitVersion[2] });\n }).catch(reject);\n });\n\n return promise;\n },\n});\n\nexport default SystemStore;\n","import Reflux from 'reflux';\nimport Qs from 'qs';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport Routes from 'routing/Routes';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nconst SavedSearchesActions = ActionsProvider.getActions('SavedSearches');\nconst SearchStore = StoreProvider.getStore('Search');\n\nconst SavedSearchesStore = Reflux.createStore({\n listenables: [SavedSearchesActions],\n sourceUrl: '/search/saved',\n savedSearches: undefined,\n\n init() {\n this.trigger({ savedSearches: this.savedSearches });\n },\n\n list() {\n const promise = fetch('GET', URLUtils.qualifyUrl(URLUtils.concatURLPath(this.sourceUrl)))\n .then(\n (response) => {\n this.savedSearches = response.searches;\n this.trigger({ savedSearches: this.savedSearches });\n return response;\n },\n (error) => {\n UserNotification.error(`Fetching saved searches failed with status: ${error}`,\n 'Could not get saved searches');\n },\n );\n\n SavedSearchesActions.list.promise(promise);\n },\n\n getSavedSearch(searchId) {\n let currentSavedSearch;\n for (let i = 0; i < this.savedSearches.length && !currentSavedSearch; i++) {\n if (this.savedSearches[i].id === searchId) {\n currentSavedSearch = this.savedSearches[i];\n }\n }\n\n return currentSavedSearch;\n },\n\n isValidTitle(searchId, title) {\n for (let i = 0; i < this.savedSearches.length; i++) {\n const savedSearch = this.savedSearches[i];\n if (savedSearch.id !== searchId && savedSearch.title === title) {\n return false;\n }\n }\n\n return true;\n },\n\n execute(searchId, streamId, width) {\n const savedSearch = this.getSavedSearch(searchId);\n if (!savedSearch) {\n // show notification\n SavedSearchesActions.load.triggerPromise();\n return;\n }\n\n const searchQuery = {\n saved: searchId,\n width: width,\n };\n for (const paramName in savedSearch.query) {\n if (Object.hasOwnProperty.call(savedSearch.query, paramName)) {\n const effectiveParamName = (paramName.toLowerCase() === 'query' ? 'q' : paramName.toLowerCase());\n searchQuery[effectiveParamName] = savedSearch.query[paramName];\n }\n }\n\n let url;\n if (streamId) {\n url = Routes.stream_search(streamId);\n } else {\n url = Routes.SEARCH;\n }\n url = `${url}?${Qs.stringify(searchQuery)}`;\n SearchStore.executeSearch(url);\n },\n\n _createOrUpdate(title, searchId) {\n const originalSearchParams = SearchStore.getOriginalSearchParamsWithFields();\n const queryParams = originalSearchParams.set('rangeType', originalSearchParams.get('range_type')).delete('range_type');\n const params = { title: title, query: queryParams.toJS() };\n\n let url;\n let verb;\n\n if (!searchId) {\n url = ApiRoutes.SavedSearchesApiController.create().url;\n verb = 'POST';\n } else {\n url = ApiRoutes.SavedSearchesApiController.update(searchId).url;\n verb = 'PUT';\n }\n\n return fetch(verb, URLUtils.qualifyUrl(url), JSON.stringify(params));\n },\n\n create(title) {\n const promise = this._createOrUpdate(title);\n promise\n .then(\n (response) => {\n UserNotification.success(`Search criteria saved as \"${title}\".`);\n SavedSearchesActions.list.triggerPromise();\n return response;\n },\n (error) => {\n UserNotification.error(`Saving search criteria failed with status: ${error}`,\n 'Could not save search criteria');\n },\n );\n\n SavedSearchesActions.create.promise(promise);\n },\n\n update(searchId, title) {\n const promise = this._createOrUpdate(title, searchId);\n promise\n .then(\n (response) => {\n UserNotification.success(`Saved search \"${title}\" was updated.`);\n SavedSearchesActions.list.triggerPromise();\n return response;\n },\n (error) => {\n UserNotification.error(`Updating saved search \"${title}\" failed with status: ${error}`,\n 'Could not update saved search');\n },\n );\n\n SavedSearchesActions.update.promise(promise);\n },\n\n delete(searchId) {\n const savedSearch = this.savedSearches.find(s => s.id === searchId);\n const title = savedSearch ? `\"${savedSearch.title}\"` : searchId;\n const { url } = ApiRoutes.SavedSearchesApiController.delete(searchId);\n const promise = fetch('DELETE', URLUtils.qualifyUrl(url));\n promise\n .then(\n (response) => {\n UserNotification.success(`Saved search ${title} was deleted successfully.`);\n SearchStore.savedSearchDeleted(searchId);\n SavedSearchesActions.list.triggerPromise();\n return response;\n },\n (error) => {\n UserNotification.error(`Deleting saved search ${title} failed with status: ${error}`,\n 'Could not delete saved search');\n },\n );\n\n SavedSearchesActions.delete.promise(promise);\n },\n});\n\nexport default SavedSearchesStore;\n","import Reflux from 'reflux';\nimport $ from 'jquery';\n\nconst FocusStore = Reflux.createStore({\n focus: true,\n init() {\n $(window).on('blur', () => { this.trigger({ focus: false }); this.focus = false; });\n $(window).on('focus', () => { this.trigger({ focus: true }); this.focus = true; });\n },\n getInitialState() {\n return { focus: this.focus };\n },\n});\n\nexport default FocusStore;\n","import Reflux from 'reflux';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst AlertsActions = ActionsProvider.getActions('Alerts');\n\nconst AlertsStore = Reflux.createStore({\n listenables: [AlertsActions],\n\n list(stream, since) {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.list(stream.id, since).url);\n const promise = fetch('GET', url);\n promise\n .then(\n response => this.trigger({ alerts: response }),\n (error) => {\n UserNotification.error(`Fetching alerts for stream \"${stream.title}\" failed with status: ${error.message}`,\n `Could not retrieve alerts for stream \"${stream.title}\".`);\n },\n );\n\n AlertsActions.list.promise(promise);\n },\n\n listPaginated(streamId, skip, limit, state = 'any') {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.listPaginated(streamId, skip, limit, state).url);\n const promise = fetch('GET', url);\n promise\n .then(\n response => this.trigger({ alerts: response }),\n (error) => {\n UserNotification.error(`Fetching alerts failed with status: ${error.message}`, 'Could not retrieve alerts.');\n },\n );\n\n AlertsActions.listPaginated.promise(promise);\n },\n\n listAllPaginated(skip, limit, state) {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.listAllPaginated(skip, limit, state).url);\n const promise = fetch('GET', url);\n promise.then(\n response => this.trigger({ alerts: response }),\n (error) => {\n UserNotification.error(`Fetching alerts failed with status: ${error.message}`, 'Could not retrieve alerts.');\n },\n );\n\n AlertsActions.listAllPaginated.promise(promise);\n },\n\n listAllStreams(since) {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.listAllStreams(since).url);\n const promise = fetch('GET', url);\n promise\n .then(\n response => this.trigger({ alerts: response }),\n (error) => {\n UserNotification.error(`Fetching alerts failed with status: ${error.message}`, 'Could not retrieve alerts.');\n },\n );\n\n AlertsActions.listAllStreams.promise(promise);\n },\n\n get(alertId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlertsApiController.get(alertId).url);\n const promise = fetch('GET', url);\n promise.then(\n (response) => {\n this.trigger({ alert: response });\n return response;\n },\n (error) => {\n UserNotification.error(`Fetching alert '${alertId}' failed with status: ${error.message}`, 'Could not retrieve alert.');\n },\n );\n\n AlertsActions.get.promise(promise);\n },\n});\n\nexport default AlertsStore;\n","import Reflux from 'reflux';\n\nconst IndexSetsActions = Reflux.createActions({\n list: { asyncResult: true },\n listPaginated: { asyncResult: true },\n get: { asyncResult: true },\n update: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n setDefault: { asyncResult: true },\n stats: { asyncResult: true },\n});\n\nexport default IndexSetsActions;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst LdapActions = ActionsProvider.getActions('Ldap');\n\nconst LdapStore = Reflux.createStore({\n listenables: [LdapActions],\n sourceUrl: '/system/ldap/',\n ldapSettings: undefined,\n\n getInitialState() {\n return { ldapSettings: this.ldapSettings };\n },\n\n loadSettings() {\n const url = URLUtils.qualifyUrl(`${this.sourceUrl}/settings`);\n\n const promise = fetch('GET', url);\n promise.then((response) => {\n this.ldapSettings = response;\n this.trigger({ ldapSettings: response });\n });\n\n LdapActions.loadSettings.promise(promise);\n },\n\n update(newLdapSettings) {\n const url = URLUtils.qualifyUrl(`${this.sourceUrl}/settings`);\n\n const promise = fetch('PUT', url, newLdapSettings);\n promise.then(\n () => {\n this.loadSettings();\n UserNotification.success('LDAP settings saved successfully');\n },\n error => UserNotification.error(`Saving LDAP settings failed: ${error}`, 'Could not save LDAP settings'),\n );\n\n LdapActions.update.promise(promise);\n },\n\n _ldapTest(payload) {\n const url = URLUtils.qualifyUrl(`${this.sourceUrl}/test`);\n return fetch('POST', url, payload);\n },\n\n testServerConnection(newLdapSettings) {\n const payload = {\n test_connect_only: true,\n ldap_uri: newLdapSettings.ldap_uri,\n system_username: newLdapSettings.system_username,\n system_password: newLdapSettings.system_password,\n use_start_tls: newLdapSettings.use_start_tls,\n trust_all_certificates: newLdapSettings.trust_all_certificates,\n active_directory: newLdapSettings.active_directory,\n };\n\n const promise = this._ldapTest(payload);\n\n LdapActions.testServerConnection.promise(promise);\n },\n\n testLogin(newLdapSettings, principal, password) {\n const payload = {\n test_connect_only: false,\n principal: principal,\n password: password,\n ldap_uri: newLdapSettings.ldap_uri,\n system_username: newLdapSettings.system_username,\n system_password: newLdapSettings.system_password,\n use_start_tls: newLdapSettings.use_start_tls,\n trust_all_certificates: newLdapSettings.trust_all_certificates,\n active_directory: newLdapSettings.active_directory,\n search_base: newLdapSettings.search_base,\n search_pattern: newLdapSettings.search_pattern,\n group_search_base: newLdapSettings.group_search_base,\n group_id_attribute: newLdapSettings.group_id_attribute,\n group_search_pattern: newLdapSettings.group_search_pattern,\n };\n\n const promise = this._ldapTest(payload);\n\n LdapActions.testLogin.promise(promise);\n },\n});\n\nexport default LdapStore;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst IndicesActions = ActionsProvider.getActions('Indices');\n\nconst IndicesStore = Reflux.createStore({\n listenables: [IndicesActions],\n indices: undefined,\n closedIndices: undefined,\n registrations: {},\n\n getInitialState() {\n return { indices: this.indices, closedIndices: this.closedIndices };\n },\n list(indexSetId) {\n const urlList = URLUtils.qualifyUrl(ApiRoutes.IndicesApiController.list(indexSetId).url);\n const promise = fetch('GET', urlList).then((response) => {\n this.indices = response.all.indices;\n this.closedIndices = response.closed.indices;\n this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n return { indices: this.indices, closedIndices: this.closedIndices };\n });\n\n IndicesActions.list.promise(promise);\n },\n listAll() {\n const urlList = URLUtils.qualifyUrl(ApiRoutes.IndicesApiController.listAll().url);\n const promise = fetch('GET', urlList).then((response) => {\n this.indices = response.all.indices;\n this.closedIndices = response.closed.indices;\n this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n return { indices: this.indices, closedIndices: this.closedIndices };\n });\n\n IndicesActions.listAll.promise(promise);\n },\n multiple() {\n const indexNames = Object.keys(this.registrations);\n if (indexNames.length <= 0) {\n return;\n }\n const urlList = URLUtils.qualifyUrl(ApiRoutes.IndicesApiController.multiple().url);\n const request = { indices: indexNames };\n const promise = fetch('POST', urlList, request).then((response) => {\n if (!this.indices) {\n this.indices = response;\n } else {\n Object.keys(response).forEach((indexName) => {\n this.indices[indexName] = response[indexName];\n });\n }\n this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n return { indices: this.indices, closedIndices: this.closedIndices };\n });\n\n IndicesActions.multiple.promise(promise);\n },\n close(indexName) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndicesApiController.close(indexName).url);\n const promise = fetch('POST', url);\n\n IndicesActions.close.promise(promise);\n },\n delete(indexName) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndicesApiController.delete(indexName).url);\n const promise = fetch('DELETE', url);\n\n IndicesActions.delete.promise(promise);\n },\n reopen(indexName) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndicesApiController.reopen(indexName).url);\n const promise = fetch('POST', url);\n\n IndicesActions.reopen.promise(promise);\n },\n subscribe(indexName) {\n this.registrations[indexName] = this.registrations[indexName] ? this.registrations[indexName] + 1 : 1;\n },\n unsubscribe(indexName) {\n this.registrations[indexName] = this.registrations[indexName] > 0 ? this.registrations[indexName] - 1 : 0;\n if (this.registrations[indexName] === 0) {\n delete this.registrations[indexName];\n }\n },\n});\n\nexport default IndicesStore;\n","import Reflux from 'reflux';\nimport md5 from 'md5';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst MessageFieldsStore = Reflux.createStore({\n listenables: [],\n fields: undefined,\n\n init() {\n this.list();\n },\n getInitialState() {\n return { fields: this.fields };\n },\n list() {\n const url = URLUtils.qualifyUrl(ApiRoutes.MessageFieldsApiController.list().url);\n const promise = fetch('GET', url).then((response) => {\n const result = response.fields.map((field) => {\n return {\n hash: md5(field),\n name: field,\n standard_selected: (field === 'message' || field === 'source'),\n };\n });\n this.fields = result;\n this.trigger(this.getInitialState());\n return result;\n });\n return promise;\n },\n});\n\nexport default MessageFieldsStore;\n","// @flow strict\nimport chroma from 'chroma-js';\n\nexport const TIMESTAMP_FIELD = 'timestamp';\nexport const DEFAULT_MESSAGE_FIELDS = [TIMESTAMP_FIELD, 'source'];\nexport const Messages = {\n DEFAULT_LIMIT: 150,\n};\n\nexport const DEFAULT_RANGE_TYPE = 'relative';\nexport const DEFAULT_TIMERANGE = { type: DEFAULT_RANGE_TYPE, range: 300 };\n\nexport const DEFAULT_HIGHLIGHT_COLOR = '#ffec3d';\nexport const DEFAULT_CUSTOM_HIGHLIGHT_RANGE = chroma.scale(['lightyellow', 'lightgreen', 'lightblue', 'red']).mode('lch').colors(40);\n\nexport const TimeUnits = {\n seconds: 'Seconds',\n minutes: 'Minutes',\n hours: 'Hours',\n days: 'Days',\n weeks: 'Weeks',\n months: 'Months',\n};\n\nexport type TimeUnit = $Keys;\n\nexport const dashboardsPath = '/dashboards';\nexport const viewsPath = '/views';\nexport const searchPath = '/search';\nexport const newDashboardsPath = `${dashboardsPath}/new`;\nexport const dashboardsTvPath = `${dashboardsPath}/tv/:viewId`;\nexport const extendedSearchPath = '/extendedsearch';\nexport const showSearchPath = `${searchPath}/:viewId`;\nexport const showViewsPath = `${viewsPath}/:viewId`;\nexport const showDashboardsPath = `${dashboardsPath}/:viewId`;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { Builder } from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst ServerAvailabilityActions = ActionsProvider.getActions('ServerAvailability');\n\nconst ServerAvailabilityStore = Reflux.createStore({\n listenables: [ServerAvailabilityActions],\n server: { up: true },\n init() {\n this.ping();\n },\n getInitialState() {\n return { server: this.server };\n },\n ping() {\n return new Builder('GET', URLUtils.qualifyUrl(ApiRoutes.ping().url))\n // Make sure to request JSON to avoid a redirect which breaks in Firefox (see https://github.com/Graylog2/graylog2-server/issues/3312)\n .setHeader('Accept', 'application/json')\n .setHeader('X-Graylog-No-Session-Extension', 'true')\n .build()\n .then(\n () => ServerAvailabilityActions.reportSuccess(),\n error => ServerAvailabilityActions.reportError(error),\n );\n },\n reportError(error) {\n if (this.server.up) {\n this.server = { up: false, error: error };\n this.trigger({ server: this.server });\n }\n },\n reportSuccess() {\n if (!this.server.up) {\n this.server = { up: true };\n this.trigger({ server: this.server });\n }\n },\n});\n\nexport default ServerAvailabilityStore;\n","import Reflux from 'reflux';\nimport moment from 'moment';\n\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst IndexerFailuresStore = Reflux.createStore({\n listenables: [],\n\n list(limit, offset) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.list(limit, offset).url);\n return fetch('GET', url);\n },\n\n count(since) {\n const momentSince = since.format ? since : moment(since);\n const isoSince = momentSince.format('YYYY-MM-DDTHH:mm:ss.SSS');\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.count(isoSince).url);\n\n return fetch('GET', url);\n },\n});\n\nexport default IndexerFailuresStore;\n","import CombinedProvider from 'injection/CombinedProvider';\n\nclass ActionsProvider {\n getActions(actionsName) {\n const result = CombinedProvider.get(actionsName);\n if (!result[`${actionsName}Actions`]) {\n throw new Error(`Requested actions \"${actionsName}\" is not registered.`);\n }\n return result[`${actionsName}Actions`];\n }\n}\n\nif (typeof window.actionsProvider === 'undefined') {\n window.actionsProvider = new ActionsProvider();\n}\n\nexport default window.actionsProvider;\n","\nvar MACHINE_ID = Math.floor(Math.random() * 0xFFFFFF);\nvar index = ObjectID.index = parseInt(Math.random() * 0xFFFFFF, 10);\nvar pid = (typeof process === 'undefined' || typeof process.pid !== 'number' ? Math.floor(Math.random() * 100000) : process.pid) % 0xFFFF;\n\n/**\n * Determine if an object is Buffer\n *\n * Author: Feross Aboukhadijeh \n * License: MIT\n *\n */\nvar isBuffer = function (obj) {\n return !!(\n obj != null &&\n obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj)\n )\n};\n\n/**\n * Create a new immutable ObjectID instance\n *\n * @class Represents the BSON ObjectID type\n * @param {String|Number} arg Can be a 24 byte hex string, 12 byte binary string or a Number.\n * @return {Object} instance of ObjectID.\n */\nfunction ObjectID(arg) {\n if(!(this instanceof ObjectID)) return new ObjectID(arg);\n if(arg && ((arg instanceof ObjectID) || arg._bsontype===\"ObjectID\"))\n return arg;\n\n var buf;\n\n if(isBuffer(arg) || (Array.isArray(arg) && arg.length===12)) {\n buf = Array.prototype.slice.call(arg);\n }\n else if(typeof arg === \"string\") {\n if(arg.length!==12 && !ObjectID.isValid(arg))\n throw new Error(\"Argument passed in must be a single String of 12 bytes or a string of 24 hex characters\");\n\n buf = buffer(arg);\n }\n else if(/number|undefined/.test(typeof arg)) {\n buf = buffer(generate(arg));\n }\n\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n get: function() { return String.fromCharCode.apply(this, buf); }\n });\n Object.defineProperty(this, \"str\", {\n get: function() { return buf.map(hex.bind(this, 2)).join(''); }\n });\n}\nmodule.exports = ObjectID;\nObjectID.generate = generate;\nObjectID.default = ObjectID;\n\n/**\n * Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID.\n *\n * @param {Number} time an integer number representing a number of seconds.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromTime = function(time){\n time = parseInt(time, 10) % 0xFFFFFFFF;\n return new ObjectID(hex(8,time)+\"0000000000000000\");\n};\n\n/**\n * Creates an ObjectID from a hex string representation of an ObjectID.\n *\n * @param {String} hexString create a ObjectID from a passed in 24 byte hexstring.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromHexString = function(hexString) {\n if(!ObjectID.isValid(hexString))\n throw new Error(\"Invalid ObjectID hex string\");\n\n return new ObjectID(hexString);\n};\n\n/**\n * Checks if a value is a valid bson ObjectId\n *\n * @param {String} objectid Can be a 24 byte hex string or an instance of ObjectID.\n * @return {Boolean} return true if the value is a valid bson ObjectID, return false otherwise.\n * @api public\n *\n * THE NATIVE DOCUMENTATION ISN'T CLEAR ON THIS GUY!\n * http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html#objectid-isvalid\n */\nObjectID.isValid = function(objectid) {\n if(!objectid) return false;\n\n //call .toString() to get the hex if we're\n // working with an instance of ObjectID\n return /^[0-9A-F]{24}$/i.test(objectid.toString());\n};\n\n/**\n * set a custom machineID\n * \n * @param {String|Number} machineid Can be a string, hex-string or a number\n * @return {void}\n * @api public\n */\nObjectID.setMachineID = function(arg) {\n var machineID;\n\n if(typeof arg === \"string\") {\n // hex string\n machineID = parseInt(arg, 16);\n \n // any string\n if(isNaN(machineID)) {\n arg = ('000000' + arg).substr(-7,6);\n\n machineID = \"\";\n for(var i = 0;i<6; i++) {\n machineID += (arg.charCodeAt(i));\n }\n }\n }\n else if(/number|undefined/.test(typeof arg)) {\n machineID = arg | 0;\n }\n\n MACHINE_ID = (machineID & 0xFFFFFF);\n}\n\n/**\n * get the machineID\n * \n * @return {number}\n * @api public\n */\nObjectID.getMachineID = function() {\n return MACHINE_ID;\n}\n\nObjectID.prototype = {\n _bsontype: 'ObjectID',\n constructor: ObjectID,\n\n /**\n * Return the ObjectID id as a 24 byte hex string representation\n *\n * @return {String} return the 24 byte hex string representation.\n * @api public\n */\n toHexString: function() {\n return this.str;\n },\n\n /**\n * Compares the equality of this ObjectID with `otherID`.\n *\n * @param {Object} other ObjectID instance to compare against.\n * @return {Boolean} the result of comparing two ObjectID's\n * @api public\n */\n equals: function (other){\n return !!other && this.str === other.toString();\n },\n\n /**\n * Returns the generation date (accurate up to the second) that this ID was generated.\n *\n * @return {Date} the generation date\n * @api public\n */\n getTimestamp: function(){\n return new Date(parseInt(this.str.substr(0,8), 16) * 1000);\n }\n};\n\nfunction next() {\n return index = (index+1) % 0xFFFFFF;\n}\n\nfunction generate(time) {\n if (typeof time !== 'number')\n time = Date.now()/1000;\n\n //keep it in the ring!\n time = parseInt(time, 10) % 0xFFFFFFFF;\n\n //FFFFFFFF FFFFFF FFFF FFFFFF\n return hex(8,time) + hex(6,MACHINE_ID) + hex(4,pid) + hex(6,next());\n}\n\nfunction hex(length, n) {\n n = n.toString(16);\n return (n.length===length)? n : \"00000000\".substring(n.length, length) + n;\n}\n\nfunction buffer(str) {\n var i=0,out=[];\n\n if(str.length===24)\n for(;i<24; out.push(parseInt(str[i]+str[i+1], 16)),i+=2);\n\n else if(str.length===12)\n for(;i<12; out.push(str.charCodeAt(i)),i++);\n\n return out;\n}\n\nvar inspect = (Symbol && Symbol.for('nodejs.util.inspect.custom')) || 'inspect';\n\n/**\n * Converts to a string representation of this Id.\n *\n * @return {String} return the 24 byte hex string representation.\n * @api private\n */\nObjectID.prototype[inspect] = function() { return \"ObjectID(\"+this+\")\" };\nObjectID.prototype.toJSON = ObjectID.prototype.toHexString;\nObjectID.prototype.toString = ObjectID.prototype.toHexString;\n","// @flow strict\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\ntype Output = {\n id: string,\n title: string,\n type: string,\n};\n\nconst OutputsStore = Reflux.createStore({\n OUTPUTS_URL: URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.index().url),\n\n load(callback: (outputs: Array) => void) {\n fetch('GET', this.OUTPUTS_URL)\n .then(callback, this._failCallback);\n },\n loadForStreamId(streamId: string, callback: (outputs: Array) => void) {\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamOutputsApiController.index(streamId).url);\n fetch('GET', url)\n .then(callback, this._failCallback);\n },\n loadAvailableTypes(callback: (available: any) => void) {\n const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.availableTypes().url);\n fetch('GET', url)\n .then(callback, this._failCallback);\n },\n loadAvailable(typeName: string, callback: (available: any) => void) {\n const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.availableTypes().url);\n fetch('GET', url)\n .then((resp) => {\n return resp.types[typeName];\n }, this._failCallback)\n .then(callback);\n },\n remove(outputId: string, callback: (error: any) => void) {\n const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.delete(outputId).url);\n fetch('DELETE', url)\n .then(callback, (error) => {\n UserNotification.error(`Terminating output failed with status: ${error}`,\n 'Could not terminate output');\n });\n },\n save(output: any, callback: (output: Output) => void) {\n const failCallback = (error) => {\n UserNotification.error(`Saving Output \"${output.title}\" failed with status: ${error}`,\n 'Could not save Output');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.create().url);\n\n fetch('POST', url, output)\n .then(callback, failCallback);\n },\n update(output: Output, deltas: any, callback: (output: Output) => void) {\n const failCallback = (error) => {\n UserNotification.error(`Updating Output \"${output.title}\" failed with status: ${error}`,\n 'Could not update Output');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.OutputsApiController.update(output.id).url);\n\n fetch('PUT', url, deltas)\n .then(callback, failCallback);\n },\n _failCallback(error: string) {\n UserNotification.error(`Loading outputs failed with status: ${error}`,\n 'Could not load outputs');\n },\n});\n\nexport default OutputsStore;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(104);","import Reflux from 'reflux';\n\nconst InputsActions = Reflux.createActions({\n list: { asyncResult: true },\n get: { asyncResult: true },\n getOptional: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n});\n\nexport default InputsActions;\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { NodesActions } = CombinedProvider.get('Nodes');\nconst { SessionStore } = CombinedProvider.get('Session');\n\nconst NodesStore = Reflux.createStore({\n listenables: [NodesActions],\n nodes: undefined,\n clusterId: undefined,\n nodeCount: 0,\n INTERVAL: 5000, // 5 seconds\n promises: {},\n\n init() {\n if (this.nodes === undefined) {\n this._triggerList();\n setInterval(this._triggerList, this.INTERVAL);\n }\n },\n\n _triggerList() {\n if (SessionStore.isLoggedIn()) {\n NodesActions.list();\n }\n },\n\n getInitialState() {\n return this.getNodesInfo();\n },\n\n getNodesInfo() {\n return { nodes: this.nodes, clusterId: this.clusterId, nodeCount: this.nodeCount };\n },\n\n list() {\n const promise = this.promises.list || fetchPeriodically('GET', URLUtils.qualifyUrl(ApiRoutes.ClusterApiResource.list().url))\n .then((response) => {\n this.nodes = {};\n if (response.nodes) {\n response.nodes.forEach((node) => {\n this.nodes[node.node_id] = node;\n });\n this.clusterId = this._clusterId();\n this.nodeCount = this._nodeCount();\n this._propagateState();\n }\n return response;\n })\n .finally(() => delete this.promises.list);\n\n this.promises.list = promise;\n\n NodesActions.list.promise(promise);\n },\n\n getNode(nodeId) {\n return this.nodes[nodeId];\n },\n\n _clusterId() {\n const nodeInCluster = Object.keys(this.nodes).map(id => this.nodes[id]).find(node => node.cluster_id);\n return (nodeInCluster ? nodeInCluster.cluster_id.toUpperCase() : undefined);\n },\n\n _nodeCount() {\n return Object.keys(this.nodes).length;\n },\n\n _propagateState() {\n this.trigger(this.getNodesInfo());\n },\n});\n\nexport default NodesStore;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport lodash from 'lodash';\n\nconst { ConfigurationVariableActions } = CombinedProvider.get('ConfigurationVariable');\n\nconst ConfigurationVariableStore = Reflux.createStore({\n listenables: [ConfigurationVariableActions],\n sourceUrl: '/sidecar/configuration_variables',\n\n all() {\n const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl));\n promise\n .catch(\n (error) => {\n UserNotification.error(`Fetching configuration variables failed with status: ${error}`,\n 'Could not retrieve configuration variables');\n },\n );\n\n ConfigurationVariableActions.all.promise(promise);\n },\n\n save(configurationVariable) {\n const request = {\n id: configurationVariable.id,\n name: configurationVariable.name,\n description: configurationVariable.description,\n content: configurationVariable.content,\n };\n\n let url = URLUtils.qualifyUrl(`${this.sourceUrl}`);\n let method;\n let action;\n if (configurationVariable.id === '') {\n method = 'POST';\n action = 'created';\n } else {\n url += `/${configurationVariable.id}`;\n method = 'PUT';\n action = 'updated';\n }\n\n const promise = fetch(method, url, request);\n promise\n .then(() => {\n UserNotification.success(`Configuration variable \"${configurationVariable.name}\" successfully ${action}`);\n }, (error) => {\n UserNotification.error(`Saving variable \"${configurationVariable.name}\" failed with status: ${error.message}`,\n 'Could not save variable');\n });\n\n ConfigurationVariableActions.save.promise(promise);\n },\n\n getConfigurations(configurationVariable) {\n const url = URLUtils.qualifyUrl(`${this.sourceUrl}/${configurationVariable.id}/configurations`);\n const promise = fetch('GET', url);\n promise.catch(\n (error) => {\n UserNotification.error(`Fetching configurations for this variable failed with status: ${error}`);\n },\n );\n ConfigurationVariableActions.getConfigurations.promise(promise);\n },\n\n delete(configurationVariable) {\n const url = URLUtils.qualifyUrl(`${this.sourceUrl}/${configurationVariable.id}`);\n const promise = fetch('DELETE', url);\n promise\n .then(() => {\n UserNotification.success(`Configuration variable \"${configurationVariable.name}\" successfully deleted`);\n }, (error) => {\n UserNotification.error(`Deleting variable \"${configurationVariable.name}\" failed with status: ${error.message}`,\n 'Could not delete variable');\n });\n\n ConfigurationVariableActions.delete.promise(promise);\n },\n\n validate(configurationVariable) {\n // set minimum api defaults for faster validation feedback\n const payload = {\n id: ' ',\n name: ' ',\n content: ' ',\n };\n lodash.merge(payload, configurationVariable);\n\n const promise = fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl}/validate`), payload);\n promise.catch(\n (error) => {\n UserNotification.error(`Validating variable \"${configurationVariable.name}\" failed with status: ${error.message}`,\n 'Could not validate variable');\n },\n );\n\n ConfigurationVariableActions.validate.promise(promise);\n },\n\n});\n\nexport default ConfigurationVariableStore;\n","import Reflux from 'reflux';\n\nconst LdapActions = Reflux.createActions({\n loadSettings: { asyncResult: true },\n update: { asyncResult: true },\n testServerConnection: { asyncResult: true },\n testLogin: { asyncResult: true },\n});\n\nexport default LdapActions;\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport UserNotification from 'util/UserNotification';\nimport URI from 'urijs';\n\nimport HistogramFormatter from 'logic/graphs/HistogramFormatter';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst HistogramDataActions = ActionsProvider.getActions('HistogramData');\n\nconst HistogramDataStore = Reflux.createStore({\n listenables: [HistogramDataActions],\n sourceUrl: '/search/universal/relative/histogram',\n histogram: undefined,\n\n getInitialState() {\n return { histogram: this.histogram };\n },\n\n load(range, sourceNames, maxDataPoints) {\n const url = URI(URLUtils.qualifyUrl(this.sourceUrl));\n const urlQuery = {};\n\n if (typeof sourceNames !== 'undefined' && sourceNames instanceof Array) {\n urlQuery.query = sourceNames.map(source => `source:${source}`).join(' OR ');\n } else {\n urlQuery.query = '*';\n }\n\n let interval = 'minute';\n const rangeAsNumber = Number(range);\n if (rangeAsNumber >= 365 * 24 * 60 * 60 || rangeAsNumber === 0) {\n // for years and all interval will be day\n interval = 'day';\n } else if (rangeAsNumber >= 31 * 24 * 60 * 60) {\n // for months interval will be hour\n interval = 'hour';\n }\n\n urlQuery.range = range;\n urlQuery.interval = interval;\n\n url.query(urlQuery);\n\n const promise = fetch('GET', url.toString())\n .then(\n (response) => {\n response.histogram = HistogramFormatter.format(response.results, response.queried_timerange, interval,\n maxDataPoints, rangeAsNumber === 0, null);\n return response;\n },\n (error) => {\n UserNotification.warning(`Loading of histogram data failed with status: ${error}`,\n 'Could not load histogram data');\n },\n );\n\n HistogramDataActions.load.promise(promise);\n },\n});\n\nexport default HistogramDataStore;\n","import Reflux from 'reflux';\n\nconst LookupTableDataAdaptersActions = Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getTypes: { asyncResult: true },\n lookup: { asyncResult: true },\n validate: { asyncResult: true },\n});\n\nexport default LookupTableDataAdaptersActions;\n","import Reflux from 'reflux';\n\nconst HistogramDataActions = Reflux.createActions({\n load: { asyncResult: true },\n});\n\nexport default HistogramDataActions;\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst JournalStore = Reflux.createStore({\n sourceUrl: nodeId => `/cluster/${nodeId}/journal`,\n\n get(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl(nodeId)));\n promise.catch((error) => {\n UserNotification.error(`Getting journal information on node ${nodeId} failed: ${error}`, 'Could not get journal information');\n });\n\n return promise;\n },\n});\n\nexport default JournalStore;\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","import Reflux from 'reflux';\n\nconst ServerAvailabilityActions = Reflux.createActions([\n 'reportError',\n 'reportSuccess',\n]);\n\nexport default ServerAvailabilityActions;\n","import Immutable from 'immutable';\n\nexport default class Constraint {\n constructor(type, version, plugin = 'server') {\n this._value = { type, plugin, version };\n }\n\n get type() {\n return this._value.type;\n }\n\n get plugin() {\n return this._value.plugin;\n }\n\n get version() {\n return this._value.version;\n }\n\n toBuilder() {\n const { type, plugin, version } = this._value;\n // eslint-disable-next-line no-use-before-define\n return new Builder(Immutable.Map({ type, plugin, version }));\n }\n\n static create(type, version, plugin = 'server') {\n return new Constraint(type, version, plugin);\n }\n\n toJSON() {\n const { type, plugin, version } = this._value;\n\n if (plugin === 'server') {\n return {\n type,\n version,\n };\n }\n\n return {\n type,\n plugin,\n version,\n };\n }\n\n equals(other) {\n if (!other.version || !other.plugin || !other.type) {\n return false;\n }\n\n return other.version === this.version\n && other.type === this.type\n && other.plugin === this.plugin;\n }\n\n static fromJSON(value) {\n const { type, version, plugin } = value;\n return Constraint.create(type, version, plugin);\n }\n\n static builder() {\n // eslint-disable-next-line no-use-before-define\n return new Builder()\n .plugin('server');\n }\n}\n\nclass Builder {\n constructor(value = Immutable.Map()) {\n this.value = value;\n }\n\n type(value) {\n return new Builder(this.value.set('type', value));\n }\n\n plugin(value) {\n return new Builder(this.value.set('plugin', value));\n }\n\n version(value) {\n return new Builder(this.value.set('version', value));\n }\n\n build() {\n const { type, plugin, version } = this.value.toObject();\n return new Constraint(type, version, plugin);\n }\n}\n","export default class ValueRefHelper {\n static VALUE_REF_VALUE_FIELD = '@value';\n\n static VALUE_REF_TYPE_FIELD = '@type';\n\n static VALUE_REF_PARAMETER_VALUE = 'parameter';\n\n static dataIsValueRef(data) {\n if (!data) {\n return false;\n }\n if (typeof data.has === 'function') {\n return data.size === 2 && data.has(ValueRefHelper.VALUE_REF_TYPE_FIELD) && data.has(ValueRefHelper.VALUE_REF_VALUE_FIELD);\n }\n const keys = Object.keys(data);\n return keys.length === 2 && keys.includes(ValueRefHelper.VALUE_REF_TYPE_FIELD)\n && keys.includes(ValueRefHelper.VALUE_REF_VALUE_FIELD);\n }\n\n static dataValueIsParameter(data) {\n if (!data) {\n return false;\n }\n if (typeof data.get === 'function') {\n return ValueRefHelper.dataIsValueRef(data) && data.get(ValueRefHelper.VALUE_REF_TYPE_FIELD) === ValueRefHelper.VALUE_REF_PARAMETER_VALUE;\n }\n return ValueRefHelper.dataIsValueRef(data) && data[ValueRefHelper.VALUE_REF_TYPE_FIELD] === ValueRefHelper.VALUE_REF_PARAMETER_VALUE;\n }\n\n static createValueRef(type, value) {\n return { [this.VALUE_REF_TYPE_FIELD]: type, [this.VALUE_REF_VALUE_FIELD]: value };\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar PluginStore =\n/*#__PURE__*/\nfunction () {\n function PluginStore() {\n _classCallCheck(this, PluginStore);\n }\n\n _createClass(PluginStore, null, [{\n key: \"register\",\n value: function register(plugin) {\n if (!window.plugins) {\n window.plugins = [];\n }\n\n window.plugins.push(plugin);\n }\n }, {\n key: \"unregister\",\n value: function unregister(plugin) {\n if (!window.plugins) {\n return;\n }\n\n window.plugins.forEach(function (item, idx) {\n if (item.metadata && plugin.metadata && item.metadata.name === plugin.metadata.name) {\n window.plugins.splice(idx, 1);\n }\n });\n }\n }, {\n key: \"get\",\n value: function get() {\n if (!window.plugins) {\n window.plugins = [];\n }\n\n return window.plugins;\n }\n }, {\n key: \"exports\",\n value: function exports(entity) {\n return [].concat.apply([], this.get().map(function (plugin) {\n return plugin.exports && plugin.exports[entity] ? plugin.exports[entity] : [];\n }));\n }\n }]);\n\n return PluginStore;\n}();\n\nvar _default = PluginStore;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\nreturn $.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n} ) );\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\n\nconst SystemMessagesStore = Reflux.createStore({\n listenables: [],\n\n all(page) {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemMessagesApiController.all(page).url);\n\n return fetchPeriodically('GET', url);\n },\n});\n\nexport default SystemMessagesStore;\n","import Reflux from 'reflux';\n\nconst LookupTablesActions = Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getErrors: { asyncResult: true },\n lookup: { asyncResult: true },\n purgeKey: { asyncResult: true },\n purgeAll: { asyncResult: true },\n validate: { asyncResult: true },\n});\n\nexport default LookupTablesActions;\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst PluginsStore = Reflux.createStore({\n sourceUrl: nodeId => `/cluster/${nodeId}/plugins`,\n\n list(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl(nodeId)))\n .then(\n response => response.plugins,\n error => UserNotification.error(`Getting plugins on node \"${nodeId}\" failed: ${error}`, 'Could not get plugins'),\n );\n\n return promise;\n },\n});\n\nexport default PluginsStore;\n","import Reflux from 'reflux';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst AlarmCallbacksActions = ActionsProvider.getActions('AlarmCallbacks');\n\nconst AlarmCallbacksStore = Reflux.createStore({\n listenables: [AlarmCallbacksActions],\n\n list(streamId) {\n const failCallback = error => UserNotification.error(`Fetching alert notifications failed with status: ${error.message}`,\n 'Could not retrieve alert notification');\n\n const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.list(streamId).url);\n const promise = fetch('GET', url).then(response => response.alarmcallbacks, failCallback);\n\n AlarmCallbacksActions.list.promise(promise);\n },\n save(streamId, alarmCallback) {\n const failCallback = (error) => {\n const errorMessage = (error.additional && error.additional.status === 400 ? error.additional.body.message : error.message);\n UserNotification.error(`Saving alert notification failed with status: ${errorMessage}`,\n 'Could not save alert notification');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.create(streamId).url);\n\n const promise = fetch('POST', url, alarmCallback);\n promise.then(\n () => UserNotification.success('Alert notification saved successfully'),\n failCallback,\n );\n\n AlarmCallbacksActions.save.promise(promise);\n },\n delete(streamId, alarmCallbackId) {\n const failCallback = error => UserNotification.error(`Removing alert notification failed with status: ${error.message}`,\n 'Could not remove alert notification');\n\n const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.delete(streamId, alarmCallbackId).url);\n\n const promise = fetch('DELETE', url);\n promise.then(\n () => UserNotification.success('Alert notification deleted successfully'),\n failCallback,\n );\n\n AlarmCallbacksActions.delete.promise(promise);\n },\n update(streamId, alarmCallbackId, deltas) {\n const failCallback = (error) => {\n const errorMessage = (error.additional && error.additional.status === 400 ? error.additional.body.message : error.message);\n UserNotification.error(`Updating alert notification '${alarmCallbackId}' failed with status: ${errorMessage}`,\n 'Could not update alert notification');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbacksApiController.update(streamId, alarmCallbackId).url);\n\n const promise = fetch('PUT', url, deltas);\n promise.then(\n () => UserNotification.success('Alert notification updated successfully'),\n failCallback,\n );\n\n AlarmCallbacksActions.update.promise(promise);\n },\n});\n\nexport default AlarmCallbacksStore;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport UserNotification from 'util/UserNotification';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { SearchStore } = CombinedProvider.get('Search');\nconst { FieldQuickValuesActions } = CombinedProvider.get('FieldQuickValues');\n\nconst FieldQuickValuesStore = Reflux.createStore({\n listenables: [FieldQuickValuesActions],\n\n get(field, options = {}) {\n const { order, tableSize, stackedFields } = options;\n\n this.trigger({ loading: true });\n const originalSearchURLParams = SearchStore.getOriginalSearchURLParams();\n const streamId = SearchStore.searchInStream ? SearchStore.searchInStream.id : null;\n\n const rangeType = originalSearchURLParams.get('rangetype');\n const timerange = {};\n switch (rangeType) {\n case 'relative':\n timerange.range = originalSearchURLParams.get('relative');\n break;\n case 'absolute':\n timerange.from = originalSearchURLParams.get('from');\n timerange.to = originalSearchURLParams.get('to');\n break;\n case 'keyword':\n timerange.keyword = originalSearchURLParams.get('keyword');\n break;\n default:\n // Do nothing\n }\n\n const { url } = ApiRoutes.UniversalSearchApiController.fieldTerms(\n rangeType,\n originalSearchURLParams.get('q') || '*',\n field,\n order,\n tableSize,\n stackedFields,\n timerange,\n streamId,\n );\n\n const promise = fetch('GET', URLUtils.qualifyUrl(url));\n promise.then(\n (response) => {\n this.trigger({ data: response, loading: false });\n },\n (error) => {\n UserNotification.error(`Loading quick values failed with status: ${error}`,\n 'Could not load quick values');\n },\n );\n\n FieldQuickValuesActions.get.promise(promise);\n },\n\n getHistogram(field, fieldQueryObjects, options = {}) {\n const { order, limit, stackedFields, interval } = options;\n\n this.trigger({ loading: true });\n const originalSearchURLParams = SearchStore.getOriginalSearchURLParams();\n const streamId = SearchStore.searchInStream ? SearchStore.searchInStream.id : null;\n\n const rangeType = originalSearchURLParams.get('rangetype');\n const timerange = {};\n switch (rangeType) {\n case 'relative':\n timerange.range = originalSearchURLParams.get('relative');\n break;\n case 'absolute':\n timerange.from = originalSearchURLParams.get('from');\n timerange.to = originalSearchURLParams.get('to');\n break;\n case 'keyword':\n timerange.keyword = originalSearchURLParams.get('keyword');\n break;\n default:\n // Do nothing\n }\n\n // Build a new query that scopes the result to the requested field terms\n const query = SearchStore.appendFieldQueryObjectToQueryString(originalSearchURLParams.get('q') || '*', fieldQueryObjects, SearchStore.AND_OPERATOR);\n\n const { url } = ApiRoutes.UniversalSearchApiController.fieldTermsHistogram(\n rangeType,\n query,\n field,\n order,\n limit,\n stackedFields,\n timerange,\n interval,\n streamId,\n );\n\n const promise = fetch('GET', URLUtils.qualifyUrl(url));\n promise.then(\n (response) => {\n this.trigger({ data: response, loading: false });\n },\n (error) => {\n UserNotification.error(`Loading quick values histogram failed with status: ${error}`,\n 'Could not load quick values histogram');\n },\n );\n\n FieldQuickValuesActions.getHistogram.promise(promise);\n },\n});\n\nexport default FieldQuickValuesStore;\n","/*!\n * jQuery UI Scroll Parent 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\nreturn $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n} ) );\n","import Reflux from 'reflux';\n\nconst SidecarsAdministrationActions = Reflux.createActions({\n list: { asyncResult: true },\n refreshList: { asyncResult: true },\n setAction: { asyncResult: true },\n});\n\nexport default SidecarsAdministrationActions;\n","// @flow strict\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\ntype Preference = {\n name: string,\n value: any,\n};\n\ntype PreferencesMap = {\n [index: string]: any,\n};\n\ntype PreferencesResponse = {\n preferences: PreferencesMap,\n};\n\nconst PreferencesStore = Reflux.createStore({\n URL: URLUtils.qualifyUrl('/users/'),\n convertPreferenceMapToArray(preferencesAsMap: PreferencesMap): Array {\n let preferences = Object.keys(preferencesAsMap)\n .map((name) => {\n return {\n name: name,\n value: preferencesAsMap[name],\n };\n });\n preferences = preferences.sort((t1: Preference, t2: Preference) => t1.name.localeCompare(t2.name));\n return preferences;\n },\n convertPreferenceArrayToMap(preferences: Array): PreferencesMap {\n const preferencesAsMap = {};\n preferences.forEach((element) => {\n // TODO: Converting all preferences to booleans for now, we should change this when we support more types\n preferencesAsMap[element.name] = element.value === true || element.value === 'true';\n });\n return preferencesAsMap;\n },\n saveUserPreferences(preferences: Array, callback: (preferences: Array) => void): void {\n if (!this._userName) {\n throw new Error('Need to load user preferences before you can save them');\n }\n const preferencesAsMap = this.convertPreferenceArrayToMap(preferences);\n const url = `${this.URL + this._userName}/preferences`;\n fetch('PUT', url, { preferences: preferencesAsMap })\n .then(() => {\n UserNotification.success('User preferences successfully saved');\n callback(preferences);\n }, (errorThrown) => {\n UserNotification.error(`Saving of preferences for \"${this._userName}\" failed with status: ${errorThrown}`,\n 'Could not save user preferences');\n });\n },\n loadUserPreferences(userName: string, callback: (preferences: Array) => void): void {\n this._userName = userName;\n\n const url = this.URL + userName;\n const successCallback = (data: PreferencesResponse) => {\n const sortedArray = this.convertPreferenceMapToArray(data.preferences);\n callback(sortedArray);\n };\n const failCallback = (errorThrown) => {\n UserNotification.error(\n `Loading of user preferences for \"${userName}\" failed with status: ${errorThrown}. Try reloading the page`,\n 'Could not retrieve user preferences from server',\n );\n };\n fetch('GET', url)\n .then(successCallback, failCallback);\n },\n});\n\nexport default PreferencesStore;\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nconst NodesStore = StoreProvider.getStore('Nodes');\nconst SystemProcessingStore = StoreProvider.getStore('SystemProcessing');\nconst SystemLoadBalancerStore = StoreProvider.getStore('SystemLoadBalancer');\n\nconst ClusterOverviewStore = Reflux.createStore({\n sourceUrl: '/cluster',\n clusterOverview: undefined,\n\n init() {\n this.cluster();\n this.listenTo(SystemProcessingStore, this.cluster);\n this.listenTo(SystemLoadBalancerStore, this.cluster);\n this.listenTo(NodesStore, this.cluster);\n },\n\n getInitialState() {\n return { clusterOverview: this.clusterOverview };\n },\n\n cluster() {\n const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl));\n promise.then(\n (response) => {\n this.clusterOverview = response;\n this.trigger({ clusterOverview: this.clusterOverview });\n },\n error => UserNotification.error(`Getting cluster overview failed: ${error}`, 'Could not get cluster overview'),\n );\n\n return promise;\n },\n\n threadDump(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/threaddump`))\n .then(\n (response) => {\n return response.threaddump;\n },\n error => UserNotification.error(`Getting thread dump for node '${nodeId}' failed: ${error}`, 'Could not get thread dump'),\n );\n\n return promise;\n },\n\n processbufferDump(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/processbufferdump`))\n .then(\n (response) => {\n return response.processbuffer_dump;\n },\n error => UserNotification.error(`Getting process buffer dump for node '${nodeId}' failed: ${error}`, 'Could not get process buffer dump'),\n );\n\n return promise;\n },\n\n jvm(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/jvm`));\n promise.catch(error => UserNotification.error(`Getting JVM information for node '${nodeId}' failed: ${error}`, 'Could not get JVM information'));\n\n return promise;\n },\n});\n\nexport default ClusterOverviewStore;\n","import Reflux from 'reflux';\n\nconst SimulatorActions = Reflux.createActions({\n simulate: { asyncResult: true },\n});\n\nexport default SimulatorActions;\n","import moment from 'moment-timezone';\nimport AppConfig from 'util/AppConfig';\nimport StoreProvider from 'injection/StoreProvider';\n\nconst CurrentUserStore = StoreProvider.getStore('CurrentUser');\n\nlet currentUser = CurrentUserStore.get();\nCurrentUserStore.listen(state => currentUser = state.currentUser);\n\nclass DateTime {\n static get Formats() {\n return {\n DATE: 'YYYY-MM-DD',\n DATETIME: 'YYYY-MM-DD HH:mm:ss', // Use to show local times when decimal second precision is not important\n DATETIME_TZ: 'YYYY-MM-DD HH:mm:ss Z', // Use when decimal second precision is not important, but TZ is\n TIMESTAMP: 'YYYY-MM-DD HH:mm:ss.SSS', // Use to show local times when decimal second precision is important (e.g. search results)\n TIMESTAMP_TZ: 'YYYY-MM-DD HH:mm:ss.SSS Z', // Use to show times when decimal second precision is important, in a different TZ\n COMPLETE: 'dddd D MMMM YYYY, HH:mm ZZ', // Easy to read date time, specially useful for graphs\n ISO_8601: 'YYYY-MM-DDTHH:mm:ss.SSSZ', // Standard, but not really nice to read. Mostly used for machine communication\n };\n }\n\n // Discards TZ information and treats date time as user's local. Helpful when getting a Javascript Date object\n static ignoreTZ(dateTime) {\n return new DateTime(moment(dateTime).format(DateTime.Formats.TIMESTAMP));\n }\n\n // Converts UTC without TZ information into user's local time\n static fromUTCDateTime(dateTime) {\n return new DateTime(moment.utc(dateTime));\n }\n\n static _cleanDateTimeString(dateTimeString) {\n if (dateTimeString instanceof String) {\n return dateTimeString.trim();\n }\n return dateTimeString;\n }\n\n static getAcceptedFormats() {\n // First date format matching the date wins, so we order them by strictness\n return [\n DateTime.Formats.ISO_8601,\n DateTime.Formats.TIMESTAMP_TZ,\n DateTime.Formats.DATETIME_TZ,\n DateTime.Formats.TIMESTAMP,\n DateTime.Formats.DATETIME,\n DateTime.Formats.COMPLETE,\n DateTime.Formats.DATE,\n ];\n }\n\n // Tries to parse the given string using `.getAcceptedFormats`\n static parseFromString(dateTimeString) {\n const parsedDateTime = moment.tz(DateTime._cleanDateTimeString(dateTimeString), DateTime.getAcceptedFormats(), true, DateTime.getUserTimezone());\n if (!parsedDateTime.isValid()) {\n throw new Error(`Date time ${dateTimeString} is not valid`);\n }\n\n return new DateTime(parsedDateTime);\n }\n\n static getUserTimezone() {\n if (currentUser && currentUser.timezone) {\n return currentUser.timezone;\n }\n return this.getBrowserTimezone() || AppConfig.rootTimeZone() || 'UTC';\n }\n\n static getBrowserTimezone() {\n return moment.tz.guess();\n }\n\n constructor(dateTime) {\n if (!dateTime) {\n this.dateTime = DateTime.now();\n return;\n }\n // Always use user's local time\n this.dateTime = moment.tz(dateTime, DateTime.getUserTimezone());\n }\n\n static now() {\n return moment.tz(moment(), DateTime.getUserTimezone());\n }\n\n // Converts the DateTime to the user's browser local time\n toBrowserLocalTime() {\n const localOffset = (new Date()).getTimezoneOffset();\n this.dateTime.utcOffset(-localOffset);\n return this;\n }\n\n // Changes the timezone of the DateTime\n toTimeZone(tz) {\n this.dateTime.tz(tz);\n return this;\n }\n\n toRelativeString() {\n return this.dateTime.fromNow();\n }\n\n // Returns internal moment object\n toMoment() {\n return this.dateTime;\n }\n\n // Returns a Javascript Date object\n toDate() {\n return this.dateTime.toDate();\n }\n\n // Returns an ISO_8601 formatted string\n toISOString() {\n return this.dateTime.toISOString();\n }\n\n toString(format) {\n let effectiveFormat = format;\n if (format === undefined || format === null) {\n if (this.dateTime.milliseconds() === 0) {\n effectiveFormat = DateTime.Formats.DATETIME;\n } else {\n effectiveFormat = DateTime.Formats.TIMESTAMP;\n }\n }\n return this.dateTime.format(effectiveFormat);\n }\n}\n\nexport default DateTime;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst SystemJobsActions = ActionsProvider.getActions('SystemJobs');\n\nconst SystemJobsStore = Reflux.createStore({\n listenables: [SystemJobsActions],\n\n jobsById: {},\n\n getInitialState() {\n return { jobs: this.jobs, jobsById: this.jobsById };\n },\n list() {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.list().url);\n const promise = fetchPeriodically('GET', url).then((response) => {\n this.jobs = response;\n this.trigger({ jobs: response });\n\n return response;\n });\n SystemJobsActions.list.promise(promise);\n },\n getJob(jobId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.getJob(jobId).url);\n const promise = fetch('GET', url).then((response) => {\n this.jobsById[response.id] = response;\n this.trigger({ jobsById: this.jobsById });\n\n return response;\n }, () => {\n // If we get an error (probably 404 because the job is gone), remove the job from the cache and trigger an update.\n delete (this.jobsById[jobId]);\n this.trigger({ jobsById: this.jobsById });\n });\n SystemJobsActions.getJob.promise(promise);\n },\n cancelJob(jobId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.cancelJob(jobId).url);\n const promise = fetch('DELETE', url).then((response) => {\n delete (this.jobsById[response.id]);\n });\n\n SystemJobsActions.cancelJob.promise(promise);\n },\n});\n\nexport default SystemJobsStore;\n","import Qs from 'qs';\n\nconst ApiRoutes = {\n AlarmCallbacksApiController: {\n available: () => { return { url: '/alerts/callbacks/types' }; },\n create: (streamId) => { return { url: `/streams/${streamId}/alarmcallbacks` }; },\n delete: (streamId, alarmCallbackId) => { return { url: `/streams/${streamId}/alarmcallbacks/${alarmCallbackId}` }; },\n listAll: () => { return { url: '/alerts/callbacks' }; },\n list: (streamId) => { return { url: `/streams/${streamId}/alarmcallbacks` }; },\n testAlert: (alarmCallbackId) => { return { url: `/alerts/callbacks/${alarmCallbackId}/test` }; },\n update: (streamId, alarmCallbackId) => { return { url: `/streams/${streamId}/alarmcallbacks/${alarmCallbackId}` }; },\n },\n AlarmCallbackHistoryApiController: {\n list: (streamId, alertId) => { return { url: `/streams/${streamId}/alerts/${alertId}/history` }; },\n },\n AlertsApiController: {\n get: (alertId) => { return { url: `/streams/alerts/${alertId}` }; },\n list: (streamId, since) => { return { url: `/streams/${streamId}/alerts?since=${since}` }; },\n listPaginated: (streamId, skip, limit, state) => { return { url: `/streams/${streamId}/alerts/paginated?skip=${skip}&limit=${limit}&state=${state}` }; },\n listAllPaginated: (skip, limit, state) => { return { url: `/streams/alerts/paginated?skip=${skip}&limit=${limit}&state=${state}` }; },\n listAllStreams: (since) => { return { url: `/streams/alerts?since=${since}` }; },\n },\n AlertConditionsApiController: {\n available: () => { return { url: '/alerts/conditions/types' }; },\n list: () => { return { url: '/alerts/conditions' }; },\n },\n CatalogsController: {\n showEntityIndex: () => { return { url: '/system/catalog' }; },\n queryEntities: () => { return { url: '/system/catalog' }; },\n },\n CodecTypesController: {\n list: () => { return { url: '/system/codecs/types/all' }; },\n },\n ContentPacksController: {\n list: () => { return { url: '/system/content_packs/latest' }; },\n get: (contentPackId) => { return { url: `/system/content_packs/${contentPackId}` }; },\n getRev: (contentPackId, revision) => { return { url: `/system/content_packs/${contentPackId}/${revision}` }; },\n downloadRev: (contentPackId, revision) => { return { url: `/system/content_packs/${contentPackId}/${revision}/download` }; },\n create: () => { return { url: '/system/content_packs' }; },\n delete: (contentPackId) => { return { url: `/system/content_packs/${contentPackId}` }; },\n deleteRev: (contentPackId, revision) => { return { url: `/system/content_packs/${contentPackId}/${revision}` }; },\n install: (contentPackId, revision) => { return { url: `/system/content_packs/${contentPackId}/${revision}/installations` }; },\n installList: (contentPackId) => { return { url: `/system/content_packs/${contentPackId}/installations` }; },\n uninstall: (contentPackId, installId) => { return { url: `/system/content_packs/${contentPackId}/installations/${installId}` }; },\n uninstallDetails: (contentPackId, installId) => { return { url: `/system/content_packs/${contentPackId}/installations/${installId}/uninstall_details` }; },\n },\n CountsApiController: {\n total: () => { return { url: '/count/total' }; },\n indexSetTotal: (indexSetId) => { return { url: `/count/${indexSetId}/total` }; },\n },\n ClusterApiResource: {\n list: () => { return { url: '/system/cluster/nodes' }; },\n node: () => { return { url: '/system/cluster/node' }; },\n elasticsearchStats: () => { return { url: '/system/cluster/stats/elasticsearch' }; },\n },\n GrokPatternsController: {\n test: () => { return { url: '/system/grok/test' }; },\n },\n DashboardsApiController: {\n create: () => { return { url: '/dashboards' }; },\n index: () => { return { url: '/dashboards' }; },\n get: (id) => { return { url: `/dashboards/${id}` }; },\n delete: (id) => { return { url: `/dashboards/${id}` }; },\n update: (id) => { return { url: `/dashboards/${id}` }; },\n addWidget: (id) => { return { url: `/dashboards/${id}/widgets` }; },\n removeWidget: (dashboardId, widgetId) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}` }; },\n widget: (dashboardId, widgetId) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}` }; },\n updateWidget: (dashboardId, widgetId) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}` }; },\n widgetValue: (dashboardId, widgetId) => { return { url: `/dashboards/${dashboardId}/widgets/${widgetId}/value` }; },\n updatePositions: (dashboardId) => { return { url: `/dashboards/${dashboardId}/positions` }; },\n },\n DecoratorsResource: {\n available: () => { return { url: '/search/decorators/available' }; },\n create: () => { return { url: '/search/decorators' }; },\n get: () => { return { url: '/search/decorators' }; },\n remove: (decoratorId) => { return { url: `/search/decorators/${decoratorId}` }; },\n update: (decoratorId) => { return { url: `/search/decorators/${decoratorId}` }; },\n },\n DeflectorApiController: {\n cycle: (indexSetId) => { return { url: `/cluster/deflector/${indexSetId}/cycle` }; },\n list: (indexSetId) => { return { url: `/system/deflector/${indexSetId}` }; },\n },\n IndexerClusterApiController: {\n health: () => { return { url: '/system/indexer/cluster/health' }; },\n name: () => { return { url: '/system/indexer/cluster/name' }; },\n },\n IndexerFailuresApiController: {\n count: (since) => { return { url: `/system/indexer/failures/count?since=${since}` }; },\n list: (limit, offset) => { return { url: `/system/indexer/failures?limit=${limit}&offset=${offset}` }; },\n },\n IndexerOverviewApiResource: {\n list: (indexSetId) => { return { url: `/system/indexer/overview/${indexSetId}` }; },\n },\n IndexRangesApiController: {\n list: () => { return { url: '/system/indices/ranges' }; },\n rebuild: (indexSetId) => { return { url: `/system/indices/ranges/index_set/${indexSetId}/rebuild` }; },\n rebuildSingle: (index) => { return { url: `/system/indices/ranges/${index}/rebuild` }; },\n },\n IndexSetsApiController: {\n list: (stats) => { return { url: `/system/indices/index_sets?stats=${stats}` }; },\n listPaginated: (skip, limit, stats) => { return { url: `/system/indices/index_sets?skip=${skip}&limit=${limit}&stats=${stats}` }; },\n get: (indexSetId) => { return { url: `/system/indices/index_sets/${indexSetId}` }; },\n create: () => { return { url: '/system/indices/index_sets' }; },\n delete: (indexSetId, deleteIndices) => { return { url: `/system/indices/index_sets/${indexSetId}?delete_indices=${deleteIndices}` }; },\n setDefault: (indexSetId) => { return { url: `/system/indices/index_sets/${indexSetId}/default` }; },\n stats: () => { return { url: '/system/indices/index_sets/stats' }; },\n },\n IndicesApiController: {\n close: (indexName) => { return { url: `/system/indexer/indices/${indexName}/close` }; },\n delete: (indexName) => { return { url: `/system/indexer/indices/${indexName}` }; },\n list: (indexSetId) => { return { url: `/system/indexer/indices/${indexSetId}/list` }; },\n listAll: () => { return { url: '/system/indexer/indices' }; },\n listClosed: (indexSetId) => { return { url: `/system/indexer/indices/${indexSetId}/closed` }; },\n multiple: () => { return { url: '/system/indexer/indices/multiple' }; },\n reopen: (indexName) => { return { url: `/system/indexer/indices/${indexName}/reopen` }; },\n },\n InputsApiController: {\n list: () => { return { url: '/system/inputs' }; },\n get: (id) => { return { url: `/system/inputs/${id}` }; },\n globalRecentMessage: (inputId) => { return { url: `/${inputId}` }; },\n },\n InputStatesController: {\n start: (inputId) => { return { url: `/system/inputstates/${inputId}` }; },\n stop: (inputId) => { return { url: `/system/inputstates/${inputId}` }; },\n },\n ClusterInputStatesController: {\n list: () => { return { url: '/cluster/inputstates' }; },\n start: (inputId) => { return { url: `/cluster/inputstates/${inputId}` }; },\n stop: (inputId) => { return { url: `/cluster/inputstates/${inputId}` }; },\n },\n ClusterLoggersResource: {\n loggers: () => { return { url: '/cluster/system/loggers' }; },\n subsystems: () => { return { url: '/cluster/system/loggers/subsystems' }; },\n setSubsystemLoggerLevel: (nodeId, subsystem, loglevel) => { return { url: `/cluster/system/loggers/${nodeId}/subsystems/${subsystem}/level/${loglevel}` }; },\n },\n MessageFieldsApiController: {\n list: () => { return { url: '/system/fields' }; },\n },\n MetricsApiController: {\n multiple: () => { return { url: '/system/metrics/multiple' }; },\n byNamespace: (namespace) => { return { url: `/system/metrics/namespace/${namespace}` }; },\n },\n ClusterMetricsApiController: {\n multiple: (nodeId) => { return { url: `/cluster/${nodeId}/metrics/multiple` }; },\n multipleAllNodes: () => { return { url: '/cluster/metrics/multiple' }; },\n byNamespace: (nodeId, namespace) => { return { url: `/cluster/${nodeId}/metrics/namespace/${namespace}` }; },\n },\n NotificationsApiController: {\n delete: (type) => { return { url: `/system/notifications/${type}` }; },\n list: () => { return { url: '/system/notifications' }; },\n },\n OutputsApiController: {\n index: () => { return { url: '/system/outputs' }; },\n create: () => { return { url: '/system/outputs' }; },\n delete: (outputId) => { return { url: `/system/outputs/${outputId}` }; },\n update: (outputId) => { return { url: `/system/outputs/${outputId}` }; },\n availableType: (type) => { return { url: `/system/outputs/available/${type}` }; },\n availableTypes: () => { return { url: '/system/outputs/available' }; },\n },\n RolesApiController: {\n listRoles: () => { return { url: '/roles' }; },\n createRole: () => { return { url: '/roles' }; },\n updateRole: (rolename) => { return { url: `/roles/${rolename}` }; },\n deleteRole: (rolename) => { return { url: `/roles/${rolename}` }; },\n loadMembers: (rolename) => { return { url: `/roles/${rolename}/members` }; },\n },\n SavedSearchesApiController: {\n create: () => { return { url: '/search/saved' }; },\n delete: (savedSearchId) => { return { url: `/search/saved/${savedSearchId}` }; },\n update: (savedSearchId) => { return { url: `/search/saved/${savedSearchId}` }; },\n },\n SessionsApiController: {\n validate: () => { return { url: '/system/sessions' }; },\n },\n StreamAlertsApiController: {\n create: (streamId) => { return { url: `/streams/${streamId}/alerts/conditions` }; },\n delete: (streamId, alertConditionId) => { return { url: `/streams/${streamId}/alerts/conditions/${alertConditionId}` }; },\n get: (streamId, conditionId) => { return { url: `/streams/${streamId}/alerts/conditions/${conditionId}` }; },\n list: (streamId) => { return { url: `/streams/${streamId}/alerts/conditions` }; },\n update: (streamId, alertConditionId) => { return { url: `/streams/${streamId}/alerts/conditions/${alertConditionId}` }; },\n sendDummyAlert: (streamId) => { return { url: `/streams/${streamId}/alerts/sendDummyAlert` }; },\n test: (streamId, conditionId) => { return { url: `/streams/${streamId}/alerts/conditions/${conditionId}/test` }; },\n },\n StreamsApiController: {\n index: () => { return { url: '/streams' }; },\n get: (streamId) => { return { url: `/streams/${streamId}` }; },\n create: () => { return { url: '/streams' }; },\n update: (streamId) => { return { url: `/streams/${streamId}` }; },\n cloneStream: (streamId) => { return { url: `/streams/${streamId}/clone` }; },\n delete: (streamId) => { return { url: `/streams/${streamId}` }; },\n pause: (streamId) => { return { url: `/streams/${streamId}/pause` }; },\n resume: (streamId) => { return { url: `/streams/${streamId}/resume` }; },\n testMatch: (streamId) => { return { url: `/streams/${streamId}/testMatch` }; },\n },\n StreamOutputsApiController: {\n add: (streamId) => { return { url: `/streams/${streamId}/outputs` }; },\n index: (streamId) => { return { url: `/streams/${streamId}/outputs` }; },\n delete: (streamId, outputId) => { return { url: `/streams/${streamId}/outputs/${outputId}` }; },\n },\n StreamRulesApiController: {\n delete: (streamId, streamRuleId) => { return { url: `/streams/${streamId}/rules/${streamRuleId}` }; },\n update: (streamId, streamRuleId) => { return { url: `/streams/${streamId}/rules/${streamRuleId}` }; },\n create: (streamId) => { return { url: `/streams/${streamId}/rules` }; },\n },\n SystemApiController: {\n info: () => { return { url: '/system' }; },\n jvm: () => { return { url: '/system/jvm' }; },\n fields: () => { return { url: '/system/fields' }; },\n locales: () => { return { url: '/system/locales' }; },\n },\n SystemJobsApiController: {\n list: () => { return { url: '/cluster/jobs' }; },\n getJob: (jobId) => { return { url: `/cluster/jobs/${jobId}` }; },\n cancelJob: (jobId) => { return { url: `/cluster/jobs/${jobId}` }; },\n },\n SystemMessagesApiController: {\n all: (page) => { return { url: `/system/messages?page=${page}` }; },\n },\n ToolsApiController: {\n grokTest: () => { return { url: '/tools/grok_tester' }; },\n jsonTest: () => { return { url: '/tools/json_tester' }; },\n naturalDateTest: (text) => { return { url: `/tools/natural_date_tester?string=${text}` }; },\n regexTest: () => { return { url: '/tools/regex_tester' }; },\n regexValidate: (regex) => { return { url: `/tools/regex_tester/validate?regex=${regex}` }; },\n regexReplaceTest: () => { return { url: '/tools/regex_replace_tester' }; },\n splitAndIndexTest: () => { return { url: '/tools/split_and_index_tester' }; },\n substringTest: () => { return { url: '/tools/substring_tester' }; },\n containsStringTest: () => { return { url: '/tools/contains_string_tester' }; },\n lookupTableTest: () => { return { url: '/tools/lookup_table_tester' }; },\n },\n UniversalSearchApiController: {\n _streamFilter(streamId) {\n return (streamId ? { filter: `streams:${streamId}` } : {});\n },\n _buildBaseQueryString(query, timerange, streamId) {\n const queryString = {};\n\n const streamFilter = this._streamFilter(streamId);\n\n queryString.query = query;\n Object.keys(timerange).forEach((key) => { queryString[key] = timerange[key]; });\n Object.keys(streamFilter).forEach((key) => { queryString[key] = streamFilter[key]; });\n\n return queryString;\n },\n _buildUrl(url, queryString) {\n return `${url}?${Qs.stringify(queryString)}`;\n },\n search(type, query, timerange, streamId, limit, offset, sortField, sortOrder, decorate) {\n const url = `/search/universal/${type}`;\n const queryString = this._buildBaseQueryString(query, timerange, streamId);\n\n if (limit) {\n queryString.limit = limit;\n }\n if (offset) {\n queryString.offset = offset;\n }\n if (sortField && sortOrder) {\n queryString.sort = `${sortField}:${sortOrder}`;\n }\n\n if (decorate !== undefined) {\n queryString.decorate = decorate;\n }\n\n return { url: this._buildUrl(url, queryString) };\n },\n export(type, query, timerange, streamId, limit, offset, fields) {\n const url = `/search/universal/${type}/export`;\n const queryString = this._buildBaseQueryString(query, timerange, streamId);\n\n if (limit) {\n queryString.limit = limit;\n }\n if (offset) {\n queryString.offset = offset;\n }\n\n if (fields) {\n queryString.fields = fields.join(',');\n }\n\n return { url: this._buildUrl(url, queryString) };\n },\n histogram(type, query, resolution, timerange, streamId) {\n const url = `/search/universal/${type}/histogram`;\n const queryString = this._buildBaseQueryString(query, timerange, streamId);\n queryString.interval = resolution;\n\n return { url: this._buildUrl(url, queryString) };\n },\n fieldHistogram(type, query, field, resolution, timerange, streamId, includeCardinality) {\n const url = `/search/universal/${type}/fieldhistogram`;\n const queryString = this._buildBaseQueryString(query, timerange, streamId);\n queryString.interval = resolution;\n queryString.field = field;\n queryString.cardinality = includeCardinality;\n return { url: this._buildUrl(url, queryString) };\n },\n fieldStats(type, query, field, timerange, streamId) {\n const url = `/search/universal/${type}/stats`;\n const queryString = this._buildBaseQueryString(query, timerange, streamId);\n queryString.field = field;\n return { url: this._buildUrl(url, queryString) };\n },\n fieldTerms(type, query, field, order, size, stackedFields, timerange, streamId) {\n const url = `/search/universal/${type}/terms`;\n const queryString = this._buildBaseQueryString(query, timerange, streamId);\n queryString.field = field;\n queryString.order = `${field}:${order}`; // REST API expects : format for the \"order\" param\n queryString.size = size;\n queryString.stacked_fields = stackedFields;\n return { url: this._buildUrl(url, queryString) };\n },\n fieldTermsHistogram(type, query, field, order, size, stackedFields, timerange, interval, streamId) {\n const url = `/search/universal/${type}/terms-histogram`;\n const queryString = this._buildBaseQueryString(query, timerange, streamId);\n // The server is using sane default interval if we don't provide one\n if (interval && interval !== '') {\n queryString.interval = interval.toUpperCase();\n }\n queryString.field = field;\n queryString.order = `${field}:${order}`; // REST API expects : format for the \"order\" param\n queryString.size = size;\n queryString.stacked_fields = stackedFields;\n return { url: this._buildUrl(url, queryString) };\n },\n },\n UsersApiController: {\n changePassword: (username) => { return { url: `/users/${username}/password` }; },\n create: () => { return { url: '/users' }; },\n list: () => { return { url: '/users' }; },\n load: (username) => { return { url: `/users/${username}` }; },\n delete: (username) => { return { url: `/users/${username}` }; },\n update: (username) => { return { url: `/users/${username}` }; },\n create_token: (username, tokenName) => { return { url: `/users/${username}/tokens/${tokenName}` }; },\n delete_token: (username, tokenName) => { return { url: `/users/${username}/tokens/${tokenName}` }; },\n list_tokens: (username) => { return { url: `/users/${username}/tokens` }; },\n },\n DashboardsController: {\n show: (id) => { return { url: `/dashboards/${id}` }; },\n },\n ExtractorsController: {\n create: (inputId) => { return { url: `/system/inputs/${inputId}/extractors` }; },\n delete: (inputId, extractorId) => { return { url: `/system/inputs/${inputId}/extractors/${extractorId}` }; },\n order: (inputId) => { return { url: `/system/inputs/${inputId}/extractors/order` }; },\n update: (inputId, extractorId) => { return { url: `/system/inputs/${inputId}/extractors/${extractorId}` }; },\n },\n MessagesController: {\n analyze: (index, string) => { return { url: `/messages/${index}/analyze?string=${string}` }; },\n parse: () => { return { url: '/messages/parse' }; },\n single: (index, messageId) => { return { url: `/messages/${index}/${messageId}` }; },\n },\n MapDataController: {\n search: () => { return { url: '/search/mapdata' }; },\n },\n PipelinesController: {\n list: () => { return { url: '/system/pipelines/pipeline' }; },\n create: () => { return { url: '/system/pipelines/pipeline' }; },\n get: (pipelineId) => { return { url: `/system/pipelines/pipeline/${pipelineId}` }; },\n update: (pipelineId) => { return { url: `/system/pipelines/pipeline/${pipelineId}` }; },\n delete: (pipelineId) => { return { url: `/system/pipelines/pipeline/${pipelineId}` }; },\n parse: () => { return { url: '/system/pipelines/pipeline/parse' }; },\n },\n RulesController: {\n list: () => { return { url: '/system/pipelines/rule' }; },\n create: () => { return { url: '/system/pipelines/rule' }; },\n get: (ruleId) => { return { url: `/system/pipelines/rule/${ruleId}` }; },\n update: (ruleId) => { return { url: `/system/pipelines/rule/${ruleId}` }; },\n delete: (ruleId) => { return { url: `/system/pipelines/rule/${ruleId}` }; },\n multiple: () => { return { url: '/system/pipelines/rule/multiple' }; },\n functions: () => { return { url: '/system/pipelines/rule/functions' }; },\n parse: () => { return { url: '/system/pipelines/rule/parse' }; },\n metricsConfig: () => { return { url: '/system/pipelines/rule/config/metrics' }; },\n },\n ConnectionsController: {\n list: () => { return { url: '/system/pipelines/connections' }; },\n to_stream: () => { return { url: '/system/pipelines/connections/to_stream' }; },\n to_pipeline: () => { return { url: '/system/pipelines/connections/to_pipeline' }; },\n },\n SimulatorController: {\n simulate: () => { return { url: '/system/pipelines/simulate' }; },\n },\n ping: () => { return { url: '/' }; },\n};\n\nexport default ApiRoutes;\n","// @flow strict\nimport Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\ntype StartPage = {\n id: string,\n type: string,\n};\n\nexport type User = {\n username: string,\n id: string,\n full_name: string,\n email: string,\n permissions: string[],\n timezone: string,\n preferences?: any,\n roles: string[],\n\n read_only: boolean,\n external: boolean,\n session_timeout_ms: number,\n\n startpage?: StartPage,\n};\n\ntype Token = {\n token_name: string,\n token: string,\n last_access: string,\n};\n\ntype ChangePasswordRequest = {\n old_password: string,\n password: string,\n};\n\nconst UsersStore = Reflux.createStore({\n create(request: any): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.create().url);\n const promise = fetch('POST', url, request);\n return promise;\n },\n\n loadUsers(): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.list().url);\n const promise = fetch('GET', url)\n .then(\n response => response.users,\n (error) => {\n if (error.additional.status !== 404) {\n UserNotification.error(`Loading user list failed with status: ${error}`,\n 'Could not load user list');\n }\n },\n );\n return promise;\n },\n\n load(username: string): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.load(encodeURIComponent(username)).url);\n const promise = fetch('GET', url);\n promise.catch((error) => {\n UserNotification.error(`Loading user failed with status: ${error}`,\n `Could not load user ${username}`);\n });\n\n return promise;\n },\n\n deleteUser(username: string): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.delete(encodeURIComponent(username)).url);\n const promise = fetch('DELETE', url);\n\n promise.then(() => {\n UserNotification.success(`User \"${username}\" was deleted successfully`);\n }, (error) => {\n if (error.additional.status !== 404) {\n UserNotification.error(`Delete user failed with status: ${error}`,\n 'Could not delete user');\n }\n });\n\n return promise;\n },\n\n changePassword(username: string, request: ChangePasswordRequest): void {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.changePassword(encodeURIComponent(username)).url);\n const promise = fetch('PUT', url, request);\n\n return promise;\n },\n\n update(username: string, request: any): void {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.update(encodeURIComponent(username)).url);\n const promise = fetch('PUT', url, request);\n\n return promise;\n },\n\n createToken(username: string, tokenName: string): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.create_token(encodeURIComponent(username),\n encodeURIComponent(tokenName)).url);\n const promise = fetch('POST', url);\n return promise;\n },\n\n deleteToken(username: string, token: string, tokenName: string): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.delete_token(encodeURIComponent(username),\n encodeURIComponent(token)).url, {});\n const promise = fetch('DELETE', url);\n\n promise.then(() => {\n UserNotification.success(`Token \"${tokenName}\" of user \"${username}\" was deleted successfully`);\n }, (error) => {\n if (error.additional.status !== 404) {\n UserNotification.error(`Delete token \"${tokenName}\" of user failed with status: ${error}`,\n 'Could not delete token.');\n }\n });\n\n return promise;\n },\n\n loadTokens(username: string): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.UsersApiController.list_tokens(encodeURIComponent(username)).url);\n const promise = fetch('GET', url)\n .then(\n response => response.tokens,\n (error) => {\n UserNotification.error(`Loading tokens of user failed with status: ${error}`,\n `Could not load tokens of user ${username}`);\n },\n );\n\n return promise;\n },\n});\n\nexport default UsersStore;\n","import Reflux from 'reflux';\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport naturalSort from 'javascript-natural-sort';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { RulesActions } = CombinedProvider.get('Rules');\n\nconst RulesStore = Reflux.createStore({\n listenables: [RulesActions],\n rules: undefined,\n functionDescriptors: undefined,\n metricsConfig: undefined,\n\n getInitialState() {\n return { rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig };\n },\n\n _updateRulesState(rule) {\n if (!this.rules) {\n this.rules = [rule];\n } else {\n const doesRuleExist = this.rules.some(r => r.id === rule.id);\n if (doesRuleExist) {\n this.rules = this.rules.map(r => (r.id === rule.id ? rule : r));\n } else {\n this.rules.push(rule);\n }\n }\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n },\n\n _updateFunctionDescriptors(functions) {\n if (functions) {\n this.functionDescriptors = functions.sort((fn1, fn2) => naturalSort(fn1.name, fn2.name));\n }\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n },\n\n list() {\n const failCallback = (error) => {\n UserNotification.error(`Fetching rules failed with status: ${error.message}`,\n 'Could not retrieve processing rules');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.list().url);\n return fetch('GET', url).then((response) => {\n this.rules = response;\n this.trigger({ rules: response, functionDescriptors: this.functionDescriptors });\n }, failCallback);\n },\n\n get(ruleId) {\n const failCallback = (error) => {\n UserNotification.error(`Fetching rule \"${ruleId}\" failed with status: ${error.message}`,\n `Could not retrieve processing rule \"${ruleId}\"`);\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.get(ruleId).url);\n const promise = fetch('GET', url);\n promise.then(this._updateRulesState, failCallback);\n\n return promise;\n },\n\n save(ruleSource) {\n const failCallback = (error) => {\n UserNotification.error(`Saving rule \"${ruleSource.title}\" failed with status: ${error.message}`,\n `Could not save processing rule \"${ruleSource.title}\"`);\n };\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.create().url);\n const rule = {\n title: ruleSource.title,\n description: ruleSource.description,\n source: ruleSource.source,\n };\n const promise = fetch('POST', url, rule);\n promise.then((response) => {\n this._updateRulesState(response);\n UserNotification.success(`Rule \"${response.title}\" created successfully`);\n }, failCallback);\n\n RulesActions.save.promise(promise);\n return promise;\n },\n\n update(ruleSource) {\n const failCallback = (error) => {\n UserNotification.error(`Updating rule \"${ruleSource.title}\" failed with status: ${error.message}`,\n `Could not update processing rule \"${ruleSource.title}\"`);\n };\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.update(ruleSource.id).url);\n const rule = {\n id: ruleSource.id,\n title: ruleSource.title,\n description: ruleSource.description,\n source: ruleSource.source,\n };\n const promise = fetch('PUT', url, rule);\n promise.then((response) => {\n this._updateRulesState(response);\n UserNotification.success(`Rule \"${response.title}\" updated successfully`);\n }, failCallback);\n\n RulesActions.update.promise(promise);\n return promise;\n },\n delete(rule) {\n const failCallback = (error) => {\n UserNotification.error(`Deleting rule \"${rule.title}\" failed with status: ${error.message}`,\n `Could not delete processing rule \"${rule.title}\"`);\n };\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.delete(rule.id).url);\n return fetch('DELETE', url).then(() => {\n this.rules = this.rules.filter(el => el.id !== rule.id);\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n UserNotification.success(`Rule \"${rule.title}\" was deleted successfully`);\n }, failCallback);\n },\n parse(ruleSource, callback) {\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.parse().url);\n const rule = {\n title: ruleSource.title,\n description: ruleSource.description,\n source: ruleSource.source,\n };\n return fetch('POST', url, rule).then(\n (response) => {\n // call to clear the errors, the parsing was successful\n callback([]);\n return response;\n },\n (error) => {\n // a Bad Request indicates a parse error, set all the returned errors in the editor\n const response = error.additional.res;\n if (response.status === 400) {\n callback(response.body);\n }\n },\n );\n },\n multiple(ruleNames, callback) {\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.multiple().url);\n const promise = fetch('POST', url, { rules: ruleNames });\n promise.then(callback);\n\n return promise;\n },\n loadFunctions() {\n if (this.functionDescriptors) {\n return undefined;\n }\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.functions().url);\n return fetch('GET', url)\n .then(this._updateFunctionDescriptors);\n },\n loadMetricsConfig() {\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.metricsConfig().url);\n const promise = fetch('GET', url);\n\n promise.then(\n (response) => {\n this.metricsConfig = response;\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig });\n },\n (error) => {\n UserNotification.error(`Couldn't load rule metrics config: ${error.message}`, \"Couldn't load rule metrics config\");\n },\n );\n\n RulesActions.loadMetricsConfig.promise(promise);\n },\n updateMetricsConfig(nextConfig) {\n const url = URLUtils.qualifyUrl(ApiRoutes.RulesController.metricsConfig().url);\n const promise = fetch('PUT', url, nextConfig);\n\n promise.then(\n (response) => {\n this.metricsConfig = response;\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig });\n UserNotification.success('Successfully updated rule metrics config');\n },\n (error) => {\n UserNotification.error(`Couldn't update rule metrics config: ${error.message}`, \"Couldn't update rule metrics config\");\n },\n );\n\n RulesActions.updateMetricsConfig.promise(promise);\n },\n});\n\nexport default RulesStore;\n","import Reflux from 'reflux';\nimport Immutable from 'immutable';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport StoreProvider from 'injection/StoreProvider';\n\nconst SearchStore = StoreProvider.getStore('Search');\n\nconst FieldStatisticsStore = Reflux.createStore({\n FUNCTIONS: Immutable.OrderedMap({\n count: 'Total',\n mean: 'Mean',\n min: 'Minimum',\n max: 'Maximum',\n std_deviation: 'Std. deviation',\n variance: 'Variance',\n sum: 'Sum',\n cardinality: 'Cardinality',\n }),\n getFieldStatistics(field) {\n const originalSearchURLParams = SearchStore.getOriginalSearchURLParams();\n const streamId = SearchStore.searchInStream ? SearchStore.searchInStream.id : null;\n\n const rangeType = originalSearchURLParams.get('rangetype');\n const timerange = {};\n switch (rangeType) {\n case 'relative':\n timerange.range = originalSearchURLParams.get('relative');\n break;\n case 'absolute':\n timerange.from = originalSearchURLParams.get('from');\n timerange.to = originalSearchURLParams.get('to');\n break;\n case 'keyword':\n timerange.keyword = originalSearchURLParams.get('keyword');\n break;\n default:\n throw new Error('Invalid range type, should be one of \"relative\", \"absolute\" or \"keyword\"');\n }\n\n let { url } = ApiRoutes.UniversalSearchApiController.fieldStats(\n rangeType,\n originalSearchURLParams.get('q') || '*',\n field,\n timerange,\n streamId,\n );\n\n url = URLUtils.qualifyUrl(url);\n\n const promise = fetch('GET', url);\n promise.catch((error) => {\n UserNotification.error(`Loading field statistics failed with status: ${error}`,\n 'Could not load field statistics');\n });\n\n return promise;\n },\n});\n\nexport default FieldStatisticsStore;\n","import Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport MessageFormatter from 'logic/message/MessageFormatter';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport StringUtils from 'util/StringUtils';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst MessagesActions = ActionsProvider.getActions('Messages');\n\nconst MessagesStore = Reflux.createStore({\n listenables: [MessagesActions],\n sourceUrl: '',\n\n getInitialState() {\n return {};\n },\n\n loadMessage(index, messageId) {\n const { url } = ApiRoutes.MessagesController.single(index.trim(), messageId.trim());\n const promise = fetch('GET', URLUtils.qualifyUrl(url))\n .then(\n response => MessageFormatter.formatResultMessage(response),\n (errorThrown) => {\n UserNotification.error(`Loading message information failed with status: ${errorThrown}`,\n 'Could not load message information');\n },\n );\n\n MessagesActions.loadMessage.promise(promise);\n },\n\n fieldTerms(index, string) {\n const { url } = ApiRoutes.MessagesController.analyze(index, encodeURIComponent(StringUtils.stringify(string)));\n const promise = fetch('GET', URLUtils.qualifyUrl(url))\n .then(\n response => response.tokens,\n (error) => {\n UserNotification.error(`Loading field terms failed with status: ${error}`,\n 'Could not load field terms.');\n },\n );\n\n MessagesActions.fieldTerms.promise(promise);\n },\n\n loadRawMessage(message, remoteAddress, codec, codecConfiguration) {\n const { url } = ApiRoutes.MessagesController.parse();\n const payload = {\n message: message,\n remote_address: remoteAddress,\n codec: codec,\n configuration: codecConfiguration,\n };\n\n const promise = fetch('POST', URLUtils.qualifyUrl(url), payload)\n .then(\n response => MessageFormatter.formatResultMessage(response),\n (error) => {\n if (error.additional && error.additional.status === 400) {\n UserNotification.error('Please ensure the selected codec and its configuration are right. '\n + 'Check your server logs for more information.', 'Could not load raw message');\n return;\n }\n UserNotification.error(`Loading raw message failed with status: ${error}`,\n 'Could not load raw message');\n },\n );\n\n MessagesActions.loadRawMessage.promise(promise);\n },\n});\n\nexport default MessagesStore;\n","///\n\nconst Reflux = require('reflux');\n\nconst UserNotification = require('util/UserNotification');\nimport ApiRoutes = require('routing/ApiRoutes');\nconst URLUtils = require('util/URLUtils');\nconst fetchPeriodically = require('logic/rest/FetchProvider').fetchPeriodically;\nconst fetch = require('logic/rest/FetchProvider').default;\n\nconst ActionsProvider = require('injection/ActionsProvider');\nconst WidgetsActions = ActionsProvider.getActions('Widgets');\n\ninterface Widget {\n id: string;\n description: string;\n type: string;\n cache_time: number;\n creator_user_id?: string;\n config: {};\n}\n\nconst WidgetsStore = Reflux.createStore({\n listenables: [WidgetsActions],\n _serializeWidgetForUpdate(widget: Widget): any {\n return {\n description: widget.description,\n type: widget.type,\n cache_time: widget.cache_time,\n creator_user_id: widget.creator_user_id,\n config: widget.config,\n };\n },\n\n addWidget(dashboardId: string, widgetType: string, widgetTitle: string, widgetConfig: Object): Promise {\n var widgetData = {description: widgetTitle, type: widgetType, config: widgetConfig};\n var url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.addWidget(dashboardId).url);\n var promise = fetch('POST', url, widgetData);\n\n promise.then(\n response => {\n UserNotification.success(\"Widget created successfully\");\n return response;\n },\n error => {\n if (error.additional.status !== 404) {\n UserNotification.error(\"Creating widget failed with status: \" + error,\n \"Could not create widget\");\n }\n });\n\n return promise;\n },\n\n loadWidget(dashboardId: string, widgetId: string): Promise {\n var url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.widget(dashboardId, widgetId).url);\n const promise = fetchPeriodically('GET', url);\n\n promise.catch((error) => {\n if (error.additional.status !== 404) {\n UserNotification.error(\"Loading widget information failed with status: \" + error,\n \"Could not load widget information\");\n }\n });\n return promise;\n },\n\n updateWidget(dashboardId: string, widget: Widget): Promise {\n var url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.updateWidget(dashboardId, widget.id).url);\n var promise = fetch('PUT', url, this._serializeWidgetForUpdate(widget));\n\n promise.then(\n response => {\n UserNotification.success(\"Widget updated successfully\");\n return response;\n },\n error => {\n UserNotification.error(\"Updating widget \\\"\" + widget.description + \"\\\" failed with status: \" + error.message,\n \"Could not update widget\");\n }\n );\n\n return promise;\n },\n\n loadValue(dashboardId: string, widgetId: string, resolution: number): Promise {\n var url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.widgetValue(dashboardId, widgetId, resolution).url);\n\n return fetchPeriodically('GET', url);\n },\n\n removeWidget(dashboardId: string, widgetId: string): Promise {\n const url = URLUtils.qualifyUrl(ApiRoutes.DashboardsApiController.removeWidget(dashboardId, widgetId).url);\n\n const promise = fetch('DELETE', url).then(response => {\n this.trigger({delete: widgetId});\n return response;\n });\n WidgetsActions.removeWidget.promise(promise);\n\n return promise;\n },\n});\n\nmodule.exports = WidgetsStore;\n","module.exports = require(\"./crossfilter\").crossfilter;\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// This file is deprecated\nreturn $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n} ) );\n","(function(exports){\ncrossfilter.version = \"1.3.12\";\nfunction crossfilter_identity(d) {\n return d;\n}\ncrossfilter.permute = permute;\n\nfunction permute(array, index) {\n for (var i = 0, n = index.length, copy = new Array(n); i < n; ++i) {\n copy[i] = array[index[i]];\n }\n return copy;\n}\nvar bisect = crossfilter.bisect = bisect_by(crossfilter_identity);\n\nbisect.by = bisect_by;\n\nfunction bisect_by(f) {\n\n // Locate the insertion point for x in a to maintain sorted order. The\n // arguments lo and hi may be used to specify a subset of the array which\n // should be considered; by default the entire array is used. If x is already\n // present in a, the insertion point will be before (to the left of) any\n // existing entries. The return value is suitable for use as the first\n // argument to `array.splice` assuming that a is already sorted.\n //\n // The returned insertion point i partitions the array a into two halves so\n // that all v < x for v in a[lo:i] for the left side and all v >= x for v in\n // a[i:hi] for the right side.\n function bisectLeft(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (f(a[mid]) < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n // Similar to bisectLeft, but returns an insertion point which comes after (to\n // the right of) any existing entries of x in a.\n //\n // The returned insertion point i partitions the array into two halves so that\n // all v <= x for v in a[lo:i] for the left side and all v > x for v in\n // a[i:hi] for the right side.\n function bisectRight(a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (x < f(a[mid])) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n bisectRight.right = bisectRight;\n bisectRight.left = bisectLeft;\n return bisectRight;\n}\nvar heap = crossfilter.heap = heap_by(crossfilter_identity);\n\nheap.by = heap_by;\n\nfunction heap_by(f) {\n\n // Builds a binary heap within the specified array a[lo:hi]. The heap has the\n // property such that the parent a[lo+i] is always less than or equal to its\n // two children: a[lo+2*i+1] and a[lo+2*i+2].\n function heap(a, lo, hi) {\n var n = hi - lo,\n i = (n >>> 1) + 1;\n while (--i > 0) sift(a, i, n, lo);\n return a;\n }\n\n // Sorts the specified array a[lo:hi] in descending order, assuming it is\n // already a heap.\n function sort(a, lo, hi) {\n var n = hi - lo,\n t;\n while (--n > 0) t = a[lo], a[lo] = a[lo + n], a[lo + n] = t, sift(a, 1, n, lo);\n return a;\n }\n\n // Sifts the element a[lo+i-1] down the heap, where the heap is the contiguous\n // slice of array a[lo:lo+n]. This method can also be used to update the heap\n // incrementally, without incurring the full cost of reconstructing the heap.\n function sift(a, i, n, lo) {\n var d = a[--lo + i],\n x = f(d),\n child;\n while ((child = i << 1) <= n) {\n if (child < n && f(a[lo + child]) > f(a[lo + child + 1])) child++;\n if (x <= f(a[lo + child])) break;\n a[lo + i] = a[lo + child];\n i = child;\n }\n a[lo + i] = d;\n }\n\n heap.sort = sort;\n return heap;\n}\nvar heapselect = crossfilter.heapselect = heapselect_by(crossfilter_identity);\n\nheapselect.by = heapselect_by;\n\nfunction heapselect_by(f) {\n var heap = heap_by(f);\n\n // Returns a new array containing the top k elements in the array a[lo:hi].\n // The returned array is not sorted, but maintains the heap property. If k is\n // greater than hi - lo, then fewer than k elements will be returned. The\n // order of elements in a is unchanged by this operation.\n function heapselect(a, lo, hi, k) {\n var queue = new Array(k = Math.min(hi - lo, k)),\n min,\n i,\n x,\n d;\n\n for (i = 0; i < k; ++i) queue[i] = a[lo++];\n heap(queue, 0, k);\n\n if (lo < hi) {\n min = f(queue[0]);\n do {\n if (x = f(d = a[lo]) > min) {\n queue[0] = d;\n min = f(heap(queue, 0, k)[0]);\n }\n } while (++lo < hi);\n }\n\n return queue;\n }\n\n return heapselect;\n}\nvar insertionsort = crossfilter.insertionsort = insertionsort_by(crossfilter_identity);\n\ninsertionsort.by = insertionsort_by;\n\nfunction insertionsort_by(f) {\n\n function insertionsort(a, lo, hi) {\n for (var i = lo + 1; i < hi; ++i) {\n for (var j = i, t = a[i], x = f(t); j > lo && f(a[j - 1]) > x; --j) {\n a[j] = a[j - 1];\n }\n a[j] = t;\n }\n return a;\n }\n\n return insertionsort;\n}\n// Algorithm designed by Vladimir Yaroslavskiy.\n// Implementation based on the Dart project; see lib/dart/LICENSE for details.\n\nvar quicksort = crossfilter.quicksort = quicksort_by(crossfilter_identity);\n\nquicksort.by = quicksort_by;\n\nfunction quicksort_by(f) {\n var insertionsort = insertionsort_by(f);\n\n function sort(a, lo, hi) {\n return (hi - lo < quicksort_sizeThreshold\n ? insertionsort\n : quicksort)(a, lo, hi);\n }\n\n function quicksort(a, lo, hi) {\n // Compute the two pivots by looking at 5 elements.\n var sixth = (hi - lo) / 6 | 0,\n i1 = lo + sixth,\n i5 = hi - 1 - sixth,\n i3 = lo + hi - 1 >> 1, // The midpoint.\n i2 = i3 - sixth,\n i4 = i3 + sixth;\n\n var e1 = a[i1], x1 = f(e1),\n e2 = a[i2], x2 = f(e2),\n e3 = a[i3], x3 = f(e3),\n e4 = a[i4], x4 = f(e4),\n e5 = a[i5], x5 = f(e5);\n\n var t;\n\n // Sort the selected 5 elements using a sorting network.\n if (x1 > x2) t = e1, e1 = e2, e2 = t, t = x1, x1 = x2, x2 = t;\n if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;\n if (x1 > x3) t = e1, e1 = e3, e3 = t, t = x1, x1 = x3, x3 = t;\n if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;\n if (x1 > x4) t = e1, e1 = e4, e4 = t, t = x1, x1 = x4, x4 = t;\n if (x3 > x4) t = e3, e3 = e4, e4 = t, t = x3, x3 = x4, x4 = t;\n if (x2 > x5) t = e2, e2 = e5, e5 = t, t = x2, x2 = x5, x5 = t;\n if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;\n if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;\n\n var pivot1 = e2, pivotValue1 = x2,\n pivot2 = e4, pivotValue2 = x4;\n\n // e2 and e4 have been saved in the pivot variables. They will be written\n // back, once the partitioning is finished.\n a[i1] = e1;\n a[i2] = a[lo];\n a[i3] = e3;\n a[i4] = a[hi - 1];\n a[i5] = e5;\n\n var less = lo + 1, // First element in the middle partition.\n great = hi - 2; // Last element in the middle partition.\n\n // Note that for value comparison, <, <=, >= and > coerce to a primitive via\n // Object.prototype.valueOf; == and === do not, so in order to be consistent\n // with natural order (such as for Date objects), we must do two compares.\n var pivotsEqual = pivotValue1 <= pivotValue2 && pivotValue1 >= pivotValue2;\n if (pivotsEqual) {\n\n // Degenerated case where the partitioning becomes a dutch national flag\n // problem.\n //\n // [ | < pivot | == pivot | unpartitioned | > pivot | ]\n // ^ ^ ^ ^ ^\n // left less k great right\n //\n // a[left] and a[right] are undefined and are filled after the\n // partitioning.\n //\n // Invariants:\n // 1) for x in ]left, less[ : x < pivot.\n // 2) for x in [less, k[ : x == pivot.\n // 3) for x in ]great, right[ : x > pivot.\n for (var k = less; k <= great; ++k) {\n var ek = a[k], xk = f(ek);\n if (xk < pivotValue1) {\n if (k !== less) {\n a[k] = a[less];\n a[less] = ek;\n }\n ++less;\n } else if (xk > pivotValue1) {\n\n // Find the first element <= pivot in the range [k - 1, great] and\n // put [:ek:] there. We know that such an element must exist:\n // When k == less, then el3 (which is equal to pivot) lies in the\n // interval. Otherwise a[k - 1] == pivot and the search stops at k-1.\n // Note that in the latter case invariant 2 will be violated for a\n // short amount of time. The invariant will be restored when the\n // pivots are put into their final positions.\n while (true) {\n var greatValue = f(a[great]);\n if (greatValue > pivotValue1) {\n great--;\n // This is the only location in the while-loop where a new\n // iteration is started.\n continue;\n } else if (greatValue < pivotValue1) {\n // Triple exchange.\n a[k] = a[less];\n a[less++] = a[great];\n a[great--] = ek;\n break;\n } else {\n a[k] = a[great];\n a[great--] = ek;\n // Note: if great < k then we will exit the outer loop and fix\n // invariant 2 (which we just violated).\n break;\n }\n }\n }\n }\n } else {\n\n // We partition the list into three parts:\n // 1. < pivot1\n // 2. >= pivot1 && <= pivot2\n // 3. > pivot2\n //\n // During the loop we have:\n // [ | < pivot1 | >= pivot1 && <= pivot2 | unpartitioned | > pivot2 | ]\n // ^ ^ ^ ^ ^\n // left less k great right\n //\n // a[left] and a[right] are undefined and are filled after the\n // partitioning.\n //\n // Invariants:\n // 1. for x in ]left, less[ : x < pivot1\n // 2. for x in [less, k[ : pivot1 <= x && x <= pivot2\n // 3. for x in ]great, right[ : x > pivot2\n for (var k = less; k <= great; k++) {\n var ek = a[k], xk = f(ek);\n if (xk < pivotValue1) {\n if (k !== less) {\n a[k] = a[less];\n a[less] = ek;\n }\n ++less;\n } else {\n if (xk > pivotValue2) {\n while (true) {\n var greatValue = f(a[great]);\n if (greatValue > pivotValue2) {\n great--;\n if (great < k) break;\n // This is the only location inside the loop where a new\n // iteration is started.\n continue;\n } else {\n // a[great] <= pivot2.\n if (greatValue < pivotValue1) {\n // Triple exchange.\n a[k] = a[less];\n a[less++] = a[great];\n a[great--] = ek;\n } else {\n // a[great] >= pivot1.\n a[k] = a[great];\n a[great--] = ek;\n }\n break;\n }\n }\n }\n }\n }\n }\n\n // Move pivots into their final positions.\n // We shrunk the list from both sides (a[left] and a[right] have\n // meaningless values in them) and now we move elements from the first\n // and third partition into these locations so that we can store the\n // pivots.\n a[lo] = a[less - 1];\n a[less - 1] = pivot1;\n a[hi - 1] = a[great + 1];\n a[great + 1] = pivot2;\n\n // The list is now partitioned into three partitions:\n // [ < pivot1 | >= pivot1 && <= pivot2 | > pivot2 ]\n // ^ ^ ^ ^\n // left less great right\n\n // Recursive descent. (Don't include the pivot values.)\n sort(a, lo, less - 1);\n sort(a, great + 2, hi);\n\n if (pivotsEqual) {\n // All elements in the second partition are equal to the pivot. No\n // need to sort them.\n return a;\n }\n\n // In theory it should be enough to call _doSort recursively on the second\n // partition.\n // The Android source however removes the pivot elements from the recursive\n // call if the second partition is too large (more than 2/3 of the list).\n if (less < i1 && great > i5) {\n var lessValue, greatValue;\n while ((lessValue = f(a[less])) <= pivotValue1 && lessValue >= pivotValue1) ++less;\n while ((greatValue = f(a[great])) <= pivotValue2 && greatValue >= pivotValue2) --great;\n\n // Copy paste of the previous 3-way partitioning with adaptions.\n //\n // We partition the list into three parts:\n // 1. == pivot1\n // 2. > pivot1 && < pivot2\n // 3. == pivot2\n //\n // During the loop we have:\n // [ == pivot1 | > pivot1 && < pivot2 | unpartitioned | == pivot2 ]\n // ^ ^ ^\n // less k great\n //\n // Invariants:\n // 1. for x in [ *, less[ : x == pivot1\n // 2. for x in [less, k[ : pivot1 < x && x < pivot2\n // 3. for x in ]great, * ] : x == pivot2\n for (var k = less; k <= great; k++) {\n var ek = a[k], xk = f(ek);\n if (xk <= pivotValue1 && xk >= pivotValue1) {\n if (k !== less) {\n a[k] = a[less];\n a[less] = ek;\n }\n less++;\n } else {\n if (xk <= pivotValue2 && xk >= pivotValue2) {\n while (true) {\n var greatValue = f(a[great]);\n if (greatValue <= pivotValue2 && greatValue >= pivotValue2) {\n great--;\n if (great < k) break;\n // This is the only location inside the loop where a new\n // iteration is started.\n continue;\n } else {\n // a[great] < pivot2.\n if (greatValue < pivotValue1) {\n // Triple exchange.\n a[k] = a[less];\n a[less++] = a[great];\n a[great--] = ek;\n } else {\n // a[great] == pivot1.\n a[k] = a[great];\n a[great--] = ek;\n }\n break;\n }\n }\n }\n }\n }\n }\n\n // The second partition has now been cleared of pivot elements and looks\n // as follows:\n // [ * | > pivot1 && < pivot2 | * ]\n // ^ ^\n // less great\n // Sort the second partition using recursive descent.\n\n // The second partition looks as follows:\n // [ * | >= pivot1 && <= pivot2 | * ]\n // ^ ^\n // less great\n // Simply sort it by recursive descent.\n\n return sort(a, less, great + 1);\n }\n\n return sort;\n}\n\nvar quicksort_sizeThreshold = 32;\nvar crossfilter_array8 = crossfilter_arrayUntyped,\n crossfilter_array16 = crossfilter_arrayUntyped,\n crossfilter_array32 = crossfilter_arrayUntyped,\n crossfilter_arrayLengthen = crossfilter_arrayLengthenUntyped,\n crossfilter_arrayWiden = crossfilter_arrayWidenUntyped;\n\nif (typeof Uint8Array !== \"undefined\") {\n crossfilter_array8 = function(n) { return new Uint8Array(n); };\n crossfilter_array16 = function(n) { return new Uint16Array(n); };\n crossfilter_array32 = function(n) { return new Uint32Array(n); };\n\n crossfilter_arrayLengthen = function(array, length) {\n if (array.length >= length) return array;\n var copy = new array.constructor(length);\n copy.set(array);\n return copy;\n };\n\n crossfilter_arrayWiden = function(array, width) {\n var copy;\n switch (width) {\n case 16: copy = crossfilter_array16(array.length); break;\n case 32: copy = crossfilter_array32(array.length); break;\n default: throw new Error(\"invalid array width!\");\n }\n copy.set(array);\n return copy;\n };\n}\n\nfunction crossfilter_arrayUntyped(n) {\n var array = new Array(n), i = -1;\n while (++i < n) array[i] = 0;\n return array;\n}\n\nfunction crossfilter_arrayLengthenUntyped(array, length) {\n var n = array.length;\n while (n < length) array[n++] = 0;\n return array;\n}\n\nfunction crossfilter_arrayWidenUntyped(array, width) {\n if (width > 32) throw new Error(\"invalid array width!\");\n return array;\n}\nfunction crossfilter_filterExact(bisect, value) {\n return function(values) {\n var n = values.length;\n return [bisect.left(values, value, 0, n), bisect.right(values, value, 0, n)];\n };\n}\n\nfunction crossfilter_filterRange(bisect, range) {\n var min = range[0],\n max = range[1];\n return function(values) {\n var n = values.length;\n return [bisect.left(values, min, 0, n), bisect.left(values, max, 0, n)];\n };\n}\n\nfunction crossfilter_filterAll(values) {\n return [0, values.length];\n}\nfunction crossfilter_null() {\n return null;\n}\nfunction crossfilter_zero() {\n return 0;\n}\nfunction crossfilter_reduceIncrement(p) {\n return p + 1;\n}\n\nfunction crossfilter_reduceDecrement(p) {\n return p - 1;\n}\n\nfunction crossfilter_reduceAdd(f) {\n return function(p, v) {\n return p + +f(v);\n };\n}\n\nfunction crossfilter_reduceSubtract(f) {\n return function(p, v) {\n return p - f(v);\n };\n}\nexports.crossfilter = crossfilter;\n\nfunction crossfilter() {\n var crossfilter = {\n add: add,\n remove: removeData,\n dimension: dimension,\n groupAll: groupAll,\n size: size\n };\n\n var data = [], // the records\n n = 0, // the number of records; data.length\n m = 0, // a bit mask representing which dimensions are in use\n M = 8, // number of dimensions that can fit in `filters`\n filters = crossfilter_array8(0), // M bits per record; 1 is filtered out\n filterListeners = [], // when the filters change\n dataListeners = [], // when data is added\n removeDataListeners = []; // when data is removed\n\n // Adds the specified new records to this crossfilter.\n function add(newData) {\n var n0 = n,\n n1 = newData.length;\n\n // If there's actually new data to add…\n // Merge the new data into the existing data.\n // Lengthen the filter bitset to handle the new records.\n // Notify listeners (dimensions and groups) that new data is available.\n if (n1) {\n data = data.concat(newData);\n filters = crossfilter_arrayLengthen(filters, n += n1);\n dataListeners.forEach(function(l) { l(newData, n0, n1); });\n }\n\n return crossfilter;\n }\n\n // Removes all records that match the current filters.\n function removeData() {\n var newIndex = crossfilter_index(n, n),\n removed = [];\n for (var i = 0, j = 0; i < n; ++i) {\n if (filters[i]) newIndex[i] = j++;\n else removed.push(i);\n }\n\n // Remove all matching records from groups.\n filterListeners.forEach(function(l) { l(0, [], removed); });\n\n // Update indexes.\n removeDataListeners.forEach(function(l) { l(newIndex); });\n\n // Remove old filters and data by overwriting.\n for (var i = 0, j = 0, k; i < n; ++i) {\n if (k = filters[i]) {\n if (i !== j) filters[j] = k, data[j] = data[i];\n ++j;\n }\n }\n data.length = j;\n while (n > j) filters[--n] = 0;\n }\n\n // Adds a new dimension with the specified value accessor function.\n function dimension(value) {\n var dimension = {\n filter: filter,\n filterExact: filterExact,\n filterRange: filterRange,\n filterFunction: filterFunction,\n filterAll: filterAll,\n top: top,\n bottom: bottom,\n group: group,\n groupAll: groupAll,\n dispose: dispose,\n remove: dispose // for backwards-compatibility\n };\n\n var one = ~m & -~m, // lowest unset bit as mask, e.g., 00001000\n zero = ~one, // inverted one, e.g., 11110111\n values, // sorted, cached array\n index, // value rank ↦ object id\n newValues, // temporary array storing newly-added values\n newIndex, // temporary array storing newly-added index\n sort = quicksort_by(function(i) { return newValues[i]; }),\n refilter = crossfilter_filterAll, // for recomputing filter\n refilterFunction, // the custom filter function in use\n indexListeners = [], // when data is added\n dimensionGroups = [],\n lo0 = 0,\n hi0 = 0;\n\n // Updating a dimension is a two-stage process. First, we must update the\n // associated filters for the newly-added records. Once all dimensions have\n // updated their filters, the groups are notified to update.\n dataListeners.unshift(preAdd);\n dataListeners.push(postAdd);\n\n removeDataListeners.push(removeData);\n\n // Incorporate any existing data into this dimension, and make sure that the\n // filter bitset is wide enough to handle the new dimension.\n m |= one;\n if (M >= 32 ? !one : m & -(1 << M)) {\n filters = crossfilter_arrayWiden(filters, M <<= 1);\n }\n preAdd(data, 0, n);\n postAdd(data, 0, n);\n\n // Incorporates the specified new records into this dimension.\n // This function is responsible for updating filters, values, and index.\n function preAdd(newData, n0, n1) {\n\n // Permute new values into natural order using a sorted index.\n newValues = newData.map(value);\n newIndex = sort(crossfilter_range(n1), 0, n1);\n newValues = permute(newValues, newIndex);\n\n // Bisect newValues to determine which new records are selected.\n var bounds = refilter(newValues), lo1 = bounds[0], hi1 = bounds[1], i;\n if (refilterFunction) {\n for (i = 0; i < n1; ++i) {\n if (!refilterFunction(newValues[i], i)) filters[newIndex[i] + n0] |= one;\n }\n } else {\n for (i = 0; i < lo1; ++i) filters[newIndex[i] + n0] |= one;\n for (i = hi1; i < n1; ++i) filters[newIndex[i] + n0] |= one;\n }\n\n // If this dimension previously had no data, then we don't need to do the\n // more expensive merge operation; use the new values and index as-is.\n if (!n0) {\n values = newValues;\n index = newIndex;\n lo0 = lo1;\n hi0 = hi1;\n return;\n }\n\n var oldValues = values,\n oldIndex = index,\n i0 = 0,\n i1 = 0;\n\n // Otherwise, create new arrays into which to merge new and old.\n values = new Array(n);\n index = crossfilter_index(n, n);\n\n // Merge the old and new sorted values, and old and new index.\n for (i = 0; i0 < n0 && i1 < n1; ++i) {\n if (oldValues[i0] < newValues[i1]) {\n values[i] = oldValues[i0];\n index[i] = oldIndex[i0++];\n } else {\n values[i] = newValues[i1];\n index[i] = newIndex[i1++] + n0;\n }\n }\n\n // Add any remaining old values.\n for (; i0 < n0; ++i0, ++i) {\n values[i] = oldValues[i0];\n index[i] = oldIndex[i0];\n }\n\n // Add any remaining new values.\n for (; i1 < n1; ++i1, ++i) {\n values[i] = newValues[i1];\n index[i] = newIndex[i1] + n0;\n }\n\n // Bisect again to recompute lo0 and hi0.\n bounds = refilter(values), lo0 = bounds[0], hi0 = bounds[1];\n }\n\n // When all filters have updated, notify index listeners of the new values.\n function postAdd(newData, n0, n1) {\n indexListeners.forEach(function(l) { l(newValues, newIndex, n0, n1); });\n newValues = newIndex = null;\n }\n\n function removeData(reIndex) {\n for (var i = 0, j = 0, k; i < n; ++i) {\n if (filters[k = index[i]]) {\n if (i !== j) values[j] = values[i];\n index[j] = reIndex[k];\n ++j;\n }\n }\n values.length = j;\n while (j < n) index[j++] = 0;\n\n // Bisect again to recompute lo0 and hi0.\n var bounds = refilter(values);\n lo0 = bounds[0], hi0 = bounds[1];\n }\n\n // Updates the selected values based on the specified bounds [lo, hi].\n // This implementation is used by all the public filter methods.\n function filterIndexBounds(bounds) {\n var lo1 = bounds[0],\n hi1 = bounds[1];\n\n if (refilterFunction) {\n refilterFunction = null;\n filterIndexFunction(function(d, i) { return lo1 <= i && i < hi1; });\n lo0 = lo1;\n hi0 = hi1;\n return dimension;\n }\n\n var i,\n j,\n k,\n added = [],\n removed = [];\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n filters[k = index[i]] ^= one;\n added.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n filters[k = index[i]] ^= one;\n removed.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n filters[k = index[i]] ^= one;\n added.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n filters[k = index[i]] ^= one;\n removed.push(k);\n }\n }\n\n lo0 = lo1;\n hi0 = hi1;\n filterListeners.forEach(function(l) { l(one, added, removed); });\n return dimension;\n }\n\n // Filters this dimension using the specified range, value, or null.\n // If the range is null, this is equivalent to filterAll.\n // If the range is an array, this is equivalent to filterRange.\n // Otherwise, this is equivalent to filterExact.\n function filter(range) {\n return range == null\n ? filterAll() : Array.isArray(range)\n ? filterRange(range) : typeof range === \"function\"\n ? filterFunction(range)\n : filterExact(range);\n }\n\n // Filters this dimension to select the exact value.\n function filterExact(value) {\n return filterIndexBounds((refilter = crossfilter_filterExact(bisect, value))(values));\n }\n\n // Filters this dimension to select the specified range [lo, hi].\n // The lower bound is inclusive, and the upper bound is exclusive.\n function filterRange(range) {\n return filterIndexBounds((refilter = crossfilter_filterRange(bisect, range))(values));\n }\n\n // Clears any filters on this dimension.\n function filterAll() {\n return filterIndexBounds((refilter = crossfilter_filterAll)(values));\n }\n\n // Filters this dimension using an arbitrary function.\n function filterFunction(f) {\n refilter = crossfilter_filterAll;\n\n filterIndexFunction(refilterFunction = f);\n\n lo0 = 0;\n hi0 = n;\n\n return dimension;\n }\n\n function filterIndexFunction(f) {\n var i,\n k,\n x,\n added = [],\n removed = [];\n\n for (i = 0; i < n; ++i) {\n if (!(filters[k = index[i]] & one) ^ !!(x = f(values[i], i))) {\n if (x) filters[k] &= zero, added.push(k);\n else filters[k] |= one, removed.push(k);\n }\n }\n filterListeners.forEach(function(l) { l(one, added, removed); });\n }\n\n // Returns the top K selected records based on this dimension's order.\n // Note: observes this dimension's filter, unlike group and groupAll.\n function top(k) {\n var array = [],\n i = hi0,\n j;\n\n while (--i >= lo0 && k > 0) {\n if (!filters[j = index[i]]) {\n array.push(data[j]);\n --k;\n }\n }\n\n return array;\n }\n\n // Returns the bottom K selected records based on this dimension's order.\n // Note: observes this dimension's filter, unlike group and groupAll.\n function bottom(k) {\n var array = [],\n i = lo0,\n j;\n\n while (i < hi0 && k > 0) {\n if (!filters[j = index[i]]) {\n array.push(data[j]);\n --k;\n }\n i++;\n }\n\n return array;\n }\n\n // Adds a new group to this dimension, using the specified key function.\n function group(key) {\n var group = {\n top: top,\n all: all,\n reduce: reduce,\n reduceCount: reduceCount,\n reduceSum: reduceSum,\n order: order,\n orderNatural: orderNatural,\n size: size,\n dispose: dispose,\n remove: dispose // for backwards-compatibility\n };\n\n // Ensure that this group will be removed when the dimension is removed.\n dimensionGroups.push(group);\n\n var groups, // array of {key, value}\n groupIndex, // object id ↦ group id\n groupWidth = 8,\n groupCapacity = crossfilter_capacity(groupWidth),\n k = 0, // cardinality\n select,\n heap,\n reduceAdd,\n reduceRemove,\n reduceInitial,\n update = crossfilter_null,\n reset = crossfilter_null,\n resetNeeded = true,\n groupAll = key === crossfilter_null;\n\n if (arguments.length < 1) key = crossfilter_identity;\n\n // The group listens to the crossfilter for when any dimension changes, so\n // that it can update the associated reduce values. It must also listen to\n // the parent dimension for when data is added, and compute new keys.\n filterListeners.push(update);\n indexListeners.push(add);\n removeDataListeners.push(removeData);\n\n // Incorporate any existing data into the grouping.\n add(values, index, 0, n);\n\n // Incorporates the specified new values into this group.\n // This function is responsible for updating groups and groupIndex.\n function add(newValues, newIndex, n0, n1) {\n var oldGroups = groups,\n reIndex = crossfilter_index(k, groupCapacity),\n add = reduceAdd,\n initial = reduceInitial,\n k0 = k, // old cardinality\n i0 = 0, // index of old group\n i1 = 0, // index of new record\n j, // object id\n g0, // old group\n x0, // old key\n x1, // new key\n g, // group to add\n x; // key of group to add\n\n // If a reset is needed, we don't need to update the reduce values.\n if (resetNeeded) add = initial = crossfilter_null;\n\n // Reset the new groups (k is a lower bound).\n // Also, make sure that groupIndex exists and is long enough.\n groups = new Array(k), k = 0;\n groupIndex = k0 > 1 ? crossfilter_arrayLengthen(groupIndex, n) : crossfilter_index(n, groupCapacity);\n\n // Get the first old key (x0 of g0), if it exists.\n if (k0) x0 = (g0 = oldGroups[0]).key;\n\n // Find the first new key (x1), skipping NaN keys.\n while (i1 < n1 && !((x1 = key(newValues[i1])) >= x1)) ++i1;\n\n // While new keys remain…\n while (i1 < n1) {\n\n // Determine the lesser of the two current keys; new and old.\n // If there are no old keys remaining, then always add the new key.\n if (g0 && x0 <= x1) {\n g = g0, x = x0;\n\n // Record the new index of the old group.\n reIndex[i0] = k;\n\n // Retrieve the next old key.\n if (g0 = oldGroups[++i0]) x0 = g0.key;\n } else {\n g = {key: x1, value: initial()}, x = x1;\n }\n\n // Add the lesser group.\n groups[k] = g;\n\n // Add any selected records belonging to the added group, while\n // advancing the new key and populating the associated group index.\n while (!(x1 > x)) {\n groupIndex[j = newIndex[i1] + n0] = k;\n if (!(filters[j] & zero)) g.value = add(g.value, data[j]);\n if (++i1 >= n1) break;\n x1 = key(newValues[i1]);\n }\n\n groupIncrement();\n }\n\n // Add any remaining old groups that were greater than all new keys.\n // No incremental reduce is needed; these groups have no new records.\n // Also record the new index of the old group.\n while (i0 < k0) {\n groups[reIndex[i0] = k] = oldGroups[i0++];\n groupIncrement();\n }\n\n // If we added any new groups before any old groups,\n // update the group index of all the old records.\n if (k > i0) for (i0 = 0; i0 < n0; ++i0) {\n groupIndex[i0] = reIndex[groupIndex[i0]];\n }\n\n // Modify the update and reset behavior based on the cardinality.\n // If the cardinality is less than or equal to one, then the groupIndex\n // is not needed. If the cardinality is zero, then there are no records\n // and therefore no groups to update or reset. Note that we also must\n // change the registered listener to point to the new method.\n j = filterListeners.indexOf(update);\n if (k > 1) {\n update = updateMany;\n reset = resetMany;\n } else {\n if (!k && groupAll) {\n k = 1;\n groups = [{key: null, value: initial()}];\n }\n if (k === 1) {\n update = updateOne;\n reset = resetOne;\n } else {\n update = crossfilter_null;\n reset = crossfilter_null;\n }\n groupIndex = null;\n }\n filterListeners[j] = update;\n\n // Count the number of added groups,\n // and widen the group index as needed.\n function groupIncrement() {\n if (++k === groupCapacity) {\n reIndex = crossfilter_arrayWiden(reIndex, groupWidth <<= 1);\n groupIndex = crossfilter_arrayWiden(groupIndex, groupWidth);\n groupCapacity = crossfilter_capacity(groupWidth);\n }\n }\n }\n\n function removeData() {\n if (k > 1) {\n var oldK = k,\n oldGroups = groups,\n seenGroups = crossfilter_index(oldK, oldK);\n\n // Filter out non-matches by copying matching group index entries to\n // the beginning of the array.\n for (var i = 0, j = 0; i < n; ++i) {\n if (filters[i]) {\n seenGroups[groupIndex[j] = groupIndex[i]] = 1;\n ++j;\n }\n }\n\n // Reassemble groups including only those groups that were referred\n // to by matching group index entries. Note the new group index in\n // seenGroups.\n groups = [], k = 0;\n for (i = 0; i < oldK; ++i) {\n if (seenGroups[i]) {\n seenGroups[i] = k++;\n groups.push(oldGroups[i]);\n }\n }\n\n if (k > 1) {\n // Reindex the group index using seenGroups to find the new index.\n for (var i = 0; i < j; ++i) groupIndex[i] = seenGroups[groupIndex[i]];\n } else {\n groupIndex = null;\n }\n filterListeners[filterListeners.indexOf(update)] = k > 1\n ? (reset = resetMany, update = updateMany)\n : k === 1 ? (reset = resetOne, update = updateOne)\n : reset = update = crossfilter_null;\n } else if (k === 1) {\n if (groupAll) return;\n for (var i = 0; i < n; ++i) if (filters[i]) return;\n groups = [], k = 0;\n filterListeners[filterListeners.indexOf(update)] =\n update = reset = crossfilter_null;\n }\n }\n\n // Reduces the specified selected or deselected records.\n // This function is only used when the cardinality is greater than 1.\n function updateMany(filterOne, added, removed) {\n if (filterOne === one || resetNeeded) return;\n\n var i,\n k,\n n,\n g;\n\n // Add the added values.\n for (i = 0, n = added.length; i < n; ++i) {\n if (!(filters[k = added[i]] & zero)) {\n g = groups[groupIndex[k]];\n g.value = reduceAdd(g.value, data[k]);\n }\n }\n\n // Remove the removed values.\n for (i = 0, n = removed.length; i < n; ++i) {\n if ((filters[k = removed[i]] & zero) === filterOne) {\n g = groups[groupIndex[k]];\n g.value = reduceRemove(g.value, data[k]);\n }\n }\n }\n\n // Reduces the specified selected or deselected records.\n // This function is only used when the cardinality is 1.\n function updateOne(filterOne, added, removed) {\n if (filterOne === one || resetNeeded) return;\n\n var i,\n k,\n n,\n g = groups[0];\n\n // Add the added values.\n for (i = 0, n = added.length; i < n; ++i) {\n if (!(filters[k = added[i]] & zero)) {\n g.value = reduceAdd(g.value, data[k]);\n }\n }\n\n // Remove the removed values.\n for (i = 0, n = removed.length; i < n; ++i) {\n if ((filters[k = removed[i]] & zero) === filterOne) {\n g.value = reduceRemove(g.value, data[k]);\n }\n }\n }\n\n // Recomputes the group reduce values from scratch.\n // This function is only used when the cardinality is greater than 1.\n function resetMany() {\n var i,\n g;\n\n // Reset all group values.\n for (i = 0; i < k; ++i) {\n groups[i].value = reduceInitial();\n }\n\n // Add any selected records.\n for (i = 0; i < n; ++i) {\n if (!(filters[i] & zero)) {\n g = groups[groupIndex[i]];\n g.value = reduceAdd(g.value, data[i]);\n }\n }\n }\n\n // Recomputes the group reduce values from scratch.\n // This function is only used when the cardinality is 1.\n function resetOne() {\n var i,\n g = groups[0];\n\n // Reset the singleton group values.\n g.value = reduceInitial();\n\n // Add any selected records.\n for (i = 0; i < n; ++i) {\n if (!(filters[i] & zero)) {\n g.value = reduceAdd(g.value, data[i]);\n }\n }\n }\n\n // Returns the array of group values, in the dimension's natural order.\n function all() {\n if (resetNeeded) reset(), resetNeeded = false;\n return groups;\n }\n\n // Returns a new array containing the top K group values, in reduce order.\n function top(k) {\n var top = select(all(), 0, groups.length, k);\n return heap.sort(top, 0, top.length);\n }\n\n // Sets the reduce behavior for this group to use the specified functions.\n // This method lazily recomputes the reduce values, waiting until needed.\n function reduce(add, remove, initial) {\n reduceAdd = add;\n reduceRemove = remove;\n reduceInitial = initial;\n resetNeeded = true;\n return group;\n }\n\n // A convenience method for reducing by count.\n function reduceCount() {\n return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);\n }\n\n // A convenience method for reducing by sum(value).\n function reduceSum(value) {\n return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);\n }\n\n // Sets the reduce order, using the specified accessor.\n function order(value) {\n select = heapselect_by(valueOf);\n heap = heap_by(valueOf);\n function valueOf(d) { return value(d.value); }\n return group;\n }\n\n // A convenience method for natural ordering by reduce value.\n function orderNatural() {\n return order(crossfilter_identity);\n }\n\n // Returns the cardinality of this group, irrespective of any filters.\n function size() {\n return k;\n }\n\n // Removes this group and associated event listeners.\n function dispose() {\n var i = filterListeners.indexOf(update);\n if (i >= 0) filterListeners.splice(i, 1);\n i = indexListeners.indexOf(add);\n if (i >= 0) indexListeners.splice(i, 1);\n i = removeDataListeners.indexOf(removeData);\n if (i >= 0) removeDataListeners.splice(i, 1);\n return group;\n }\n\n return reduceCount().orderNatural();\n }\n\n // A convenience function for generating a singleton group.\n function groupAll() {\n var g = group(crossfilter_null), all = g.all;\n delete g.all;\n delete g.top;\n delete g.order;\n delete g.orderNatural;\n delete g.size;\n g.value = function() { return all()[0].value; };\n return g;\n }\n\n // Removes this dimension and associated groups and event listeners.\n function dispose() {\n dimensionGroups.forEach(function(group) { group.dispose(); });\n var i = dataListeners.indexOf(preAdd);\n if (i >= 0) dataListeners.splice(i, 1);\n i = dataListeners.indexOf(postAdd);\n if (i >= 0) dataListeners.splice(i, 1);\n i = removeDataListeners.indexOf(removeData);\n if (i >= 0) removeDataListeners.splice(i, 1);\n m &= zero;\n return filterAll();\n }\n\n return dimension;\n }\n\n // A convenience method for groupAll on a dummy dimension.\n // This implementation can be optimized since it always has cardinality 1.\n function groupAll() {\n var group = {\n reduce: reduce,\n reduceCount: reduceCount,\n reduceSum: reduceSum,\n value: value,\n dispose: dispose,\n remove: dispose // for backwards-compatibility\n };\n\n var reduceValue,\n reduceAdd,\n reduceRemove,\n reduceInitial,\n resetNeeded = true;\n\n // The group listens to the crossfilter for when any dimension changes, so\n // that it can update the reduce value. It must also listen to the parent\n // dimension for when data is added.\n filterListeners.push(update);\n dataListeners.push(add);\n\n // For consistency; actually a no-op since resetNeeded is true.\n add(data, 0, n);\n\n // Incorporates the specified new values into this group.\n function add(newData, n0) {\n var i;\n\n if (resetNeeded) return;\n\n // Add the added values.\n for (i = n0; i < n; ++i) {\n if (!filters[i]) {\n reduceValue = reduceAdd(reduceValue, data[i]);\n }\n }\n }\n\n // Reduces the specified selected or deselected records.\n function update(filterOne, added, removed) {\n var i,\n k,\n n;\n\n if (resetNeeded) return;\n\n // Add the added values.\n for (i = 0, n = added.length; i < n; ++i) {\n if (!filters[k = added[i]]) {\n reduceValue = reduceAdd(reduceValue, data[k]);\n }\n }\n\n // Remove the removed values.\n for (i = 0, n = removed.length; i < n; ++i) {\n if (filters[k = removed[i]] === filterOne) {\n reduceValue = reduceRemove(reduceValue, data[k]);\n }\n }\n }\n\n // Recomputes the group reduce value from scratch.\n function reset() {\n var i;\n\n reduceValue = reduceInitial();\n\n for (i = 0; i < n; ++i) {\n if (!filters[i]) {\n reduceValue = reduceAdd(reduceValue, data[i]);\n }\n }\n }\n\n // Sets the reduce behavior for this group to use the specified functions.\n // This method lazily recomputes the reduce value, waiting until needed.\n function reduce(add, remove, initial) {\n reduceAdd = add;\n reduceRemove = remove;\n reduceInitial = initial;\n resetNeeded = true;\n return group;\n }\n\n // A convenience method for reducing by count.\n function reduceCount() {\n return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);\n }\n\n // A convenience method for reducing by sum(value).\n function reduceSum(value) {\n return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);\n }\n\n // Returns the computed reduce value.\n function value() {\n if (resetNeeded) reset(), resetNeeded = false;\n return reduceValue;\n }\n\n // Removes this group and associated event listeners.\n function dispose() {\n var i = filterListeners.indexOf(update);\n if (i >= 0) filterListeners.splice(i);\n i = dataListeners.indexOf(add);\n if (i >= 0) dataListeners.splice(i);\n return group;\n }\n\n return reduceCount();\n }\n\n // Returns the number of records in this crossfilter, irrespective of any filters.\n function size() {\n return n;\n }\n\n return arguments.length\n ? add(arguments[0])\n : crossfilter;\n}\n\n// Returns an array of size n, big enough to store ids up to m.\nfunction crossfilter_index(n, m) {\n return (m < 0x101\n ? crossfilter_array8 : m < 0x10001\n ? crossfilter_array16\n : crossfilter_array32)(n);\n}\n\n// Constructs a new array of size n, with sequential values from 0 to n - 1.\nfunction crossfilter_range(n) {\n var range = crossfilter_index(n, n);\n for (var i = -1; ++i < n;) range[i] = i;\n return range;\n}\n\nfunction crossfilter_capacity(w) {\n return w === 8\n ? 0x100 : w === 16\n ? 0x10000\n : 0x100000000;\n}\n})(typeof exports !== 'undefined' && exports || this);\n","import Reflux from 'reflux';\n\nconst ConfigurationVariableActions = Reflux.createActions({\n all: { asyncResult: true },\n save: { asyncResult: true },\n delete: { asyncResult: true },\n validate: { asyncResult: true },\n getConfigurations: { asyncResult: true },\n});\n\nexport default ConfigurationVariableActions;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\n\nimport ContentPackRevisions from 'logic/content-packs/ContentPackRevisions';\n\nconst ContentPacksActions = ActionsProvider.getActions('ContentPacks');\n\nconst ContentPacksStore = Reflux.createStore({\n listenables: [ContentPacksActions],\n\n get(contentPackId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.get(contentPackId).url);\n const promise = fetch('GET', url)\n .then((response) => {\n const contentPackRevision = new ContentPackRevisions(response.content_pack_revisions);\n const constraints = response.constraints_result;\n const result = {\n contentPackRevisions: contentPackRevision,\n selectedVersion: contentPackRevision.latestRevision,\n constraints: constraints,\n };\n this.trigger(result);\n\n return result;\n });\n\n ContentPacksActions.get.promise(promise);\n },\n\n getRev(contentPackId, contentPackRev) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.getRev(contentPackId, contentPackRev).url);\n const promise = fetch('GET', url)\n .then((result) => {\n this.trigger({ contentPack: result.content_pack });\n return result;\n });\n\n ContentPacksActions.getRev.promise(promise);\n },\n\n list() {\n const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.list().url);\n const promise = fetch('GET', url)\n .then((result) => {\n this.trigger({ contentPacks: result.content_packs, contentPackMetadata: result.content_packs_metadata });\n\n return result;\n });\n\n ContentPacksActions.list.promise(promise);\n },\n\n create(request) {\n const promise = fetch('POST', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.create().url), request);\n\n ContentPacksActions.create.promise(promise);\n },\n\n delete(contentPackId) {\n const promise = fetch('DELETE', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.delete(contentPackId).url));\n ContentPacksActions.delete.promise(promise);\n },\n\n deleteRev(contentPackId, revision) {\n const promise = fetch('DELETE', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.deleteRev(contentPackId, revision).url));\n ContentPacksActions.deleteRev.promise(promise);\n },\n\n install(contentPackId, revision, parameters) {\n const promise = fetch('POST', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.install(contentPackId, revision).url), parameters);\n\n ContentPacksActions.install.promise(promise);\n },\n installList(contentPackId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.installList(contentPackId).url);\n const promise = fetch('GET', url)\n .then((result) => {\n this.trigger({ installations: result.installations });\n\n return result;\n });\n\n ContentPacksActions.installList.promise(promise);\n },\n uninstall(contentPackId, installId) {\n const promise = fetch('DELETE', URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.uninstall(contentPackId, installId).url));\n ContentPacksActions.uninstall.promise(promise);\n },\n uninstallDetails(contentPackId, installId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ContentPacksController.uninstallDetails(contentPackId, installId).url);\n const promise = fetch('GET', url)\n .then((result) => {\n this.trigger({ uninstallEntities: result.entities });\n\n return result;\n });\n\n ContentPacksActions.uninstallDetails.promise(promise);\n },\n});\n\nexport default ContentPacksStore;\n","import Reflux from 'reflux';\n\nconst StreamsActions = Reflux.createActions({\n list: { asyncResult: true },\n create: { asyncResult: true },\n update: { asyncResult: true },\n delete: { asyncResult: true },\n});\n\nexport default StreamsActions;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","import Reflux from 'reflux';\n\nconst LdapGroupsActions = Reflux.createActions({\n loadGroups: { asyncResult: true },\n loadMapping: { asyncResult: true },\n saveMapping: { asyncResult: true },\n});\n\nexport default LdapGroupsActions;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","import Immutable from 'immutable';\n\nexport default class EntityIndex {\n constructor(id, title, type) {\n this._value = { id, title, type };\n }\n\n get id() {\n return this._value.id;\n }\n\n get type() {\n return this._value.type;\n }\n\n get title() {\n return this._value.title;\n }\n\n toBuilder() {\n const { id, title, type } = this._value;\n // eslint-disable-next-line no-use-before-define\n return new Builder(Immutable.Map({ id, title, type }));\n }\n\n static create(id, title, type) {\n return new EntityIndex(id, title, type);\n }\n\n toJSON() {\n const { id, type } = this._value;\n\n return {\n id,\n type,\n };\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n get isEntityIndex() {\n return true;\n }\n\n /* implement custom instanceof */\n static [Symbol.hasInstance](obj) {\n if (obj.isEntityIndex) {\n return true;\n }\n return false;\n }\n\n static fromJSON(value) {\n const { id, title, type } = value;\n return EntityIndex.create(id, title, type);\n }\n}\n\nclass Builder {\n constructor(value = Immutable.Map()) {\n this.value = value;\n }\n\n id(value) {\n return new Builder(this.value.set('id', value));\n }\n\n title(value) {\n return new Builder(this.value.set('title', value));\n }\n\n type(value) {\n return new Builder(this.value.set('type', value));\n }\n\n build() {\n const { id, title, type } = this.value.toObject();\n return new EntityIndex(id, title, type);\n }\n}\n","import moment from 'moment';\nimport MomentUtils from 'util/MomentUtils';\nimport NumberUtils from 'util/NumberUtils';\n\nconst DEFAULT_MAX_DATA_POINTS = 4000;\n\nconst HistogramFormatter = {\n _firstDataPointTimestamp(dataPoints, queryFrom, isSearchAll) {\n if (isSearchAll) {\n return moment.utc(Number(Object.keys(dataPoints).sort()[0]) * 1000);\n }\n\n return moment.utc(queryFrom);\n },\n\n /**\n * Formats the histogram to add empty data where there were no results, normalizes its values to\n * avoid errors in the underlying graphing library, and samples the data, so we don't draw more\n * points that we can display.\n *\n * @param {object} dataPoints: Histogram data as returned from the server {unix_time: value, ...}\n * @param {object} queryTimeRange: Time ranges of the query that generated the histogram\n * @param {string} resolution: Histogram resolution\n * @param {number} screenSize: Screen width to calculate the maximum number of data points returned\n * @param {boolean} isSearchAll: Indicates if the histogram was made for a search in all messages or not\n * @param {string} valueKey: Histogram contains objects with different values, this indicates the key\n * to access the value to plot\n * @param {boolean} legacy: Flag to indicate if the x-axis should contain timestamps in ms or seconds.\n * This was added as Rickshaw only supports the latter format\n *\n */\n format(dataPoints, queryTimeRange, resolution, screenSize, isSearchAll, valueKey, legacy = false) {\n const formattedPoints = [];\n const maxDataPoints = (screenSize && screenSize > 0 ? screenSize : DEFAULT_MAX_DATA_POINTS);\n\n if (typeof dataPoints === 'object' && !Array.isArray(dataPoints)) {\n const from = this._firstDataPointTimestamp(dataPoints, queryTimeRange.from, isSearchAll);\n const to = moment.utc(queryTimeRange.to);\n\n let tempTime = moment(from);\n const step = moment.duration(1, resolution);\n\n const totalDataPoints = ((to.valueOf() - from.valueOf()) / step.as('milliseconds')).toFixed();\n const factor = (totalDataPoints > maxDataPoints ? (totalDataPoints / maxDataPoints).toFixed() : 1);\n\n let index = 0;\n // Position the temporary time to the beginning of the time span we want to graph and iterate through it\n tempTime = MomentUtils.startOfResolution(tempTime, resolution);\n while (tempTime.isBefore(to) || tempTime.isSame(to)) {\n if (index % factor === 0) {\n const timestamp = String(tempTime.unix());\n const value = dataPoints[timestamp];\n\n let result = 0;\n // Get the actual value if the result for that time is an object. If there is no result, we'll use 0\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (value.hasOwnProperty(valueKey)) {\n result = value[valueKey];\n }\n } else {\n result = value;\n }\n }\n\n formattedPoints.push({\n x: (legacy ? tempTime.unix() : tempTime.valueOf()),\n y: NumberUtils.normalizeGraphNumber(result),\n });\n }\n index += 1;\n tempTime.add(step);\n }\n }\n\n return formattedPoints;\n },\n};\n\nexport default HistogramFormatter;\n","import Reflux from 'reflux';\n\nconst NodesActions = Reflux.createActions({\n list: { asyncResult: true },\n});\n\nexport default NodesActions;\n","import AppConfig from 'util/AppConfig';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport URI from 'urijs';\nimport { extendedSearchPath, viewsPath } from 'views/Constants';\n\nconst Routes = {\n STARTPAGE: '/',\n NOTFOUND: '/notfound',\n SEARCH: '/search',\n STREAMS: '/streams',\n LEGACY_ALERTS: {\n LIST: '/legacy/alerts',\n CONDITIONS: '/legacy/alerts/conditions',\n NEW_CONDITION: '/legacy/alerts/conditions/new',\n NOTIFICATIONS: '/legacy/alerts/notifications',\n NEW_NOTIFICATION: '/legacy/alerts/notifications/new',\n },\n ALERTS: {\n LIST: '/alerts',\n DEFINITIONS: {\n LIST: '/alerts/definitions',\n CREATE: '/alerts/definitions/new',\n edit: definitionId => `/alerts/definitions/${definitionId}/edit`,\n },\n NOTIFICATIONS: {\n LIST: '/alerts/notifications',\n CREATE: '/alerts/notifications/new',\n edit: notificationId => `/alerts/notifications/${notificationId}/edit`,\n },\n },\n SOURCES: '/sources',\n DASHBOARDS: '/dashboards',\n GETTING_STARTED: '/gettingstarted',\n SYSTEM: {\n CONFIGURATIONS: '/system/configurations',\n CONTENTPACKS: {\n LIST: '/system/contentpacks',\n EXPORT: '/system/contentpacks/export',\n CREATE: '/system/contentpacks/create',\n edit: (contentPackId, contentPackRev) => { return `/system/contentpacks/${contentPackId}/${contentPackRev}/edit`; },\n show: contentPackId => `/system/contentpacks/${contentPackId}`,\n },\n GROKPATTERNS: '/system/grokpatterns',\n INDICES: {\n LIST: '/system/indices',\n FAILURES: '/system/indices/failures',\n },\n INDEX_SETS: {\n CONFIGURATION: (indexSetId, from) => {\n if (from) {\n return `/system/index_sets/${indexSetId}/configuration?from=${from}`;\n }\n return `/system/index_sets/${indexSetId}/configuration`;\n },\n SHOW: indexSetId => `/system/index_sets/${indexSetId}`,\n CREATE: '/system/index_sets/create',\n },\n INPUTS: '/system/inputs',\n LOGGING: '/system/logging',\n METRICS: nodeId => `/system/metrics/node/${nodeId}`,\n NODES: {\n LIST: '/system/nodes',\n SHOW: nodeId => `/system/nodes/${nodeId}`,\n },\n THREADDUMP: nodeId => `/system/threaddump/${nodeId}`,\n OUTPUTS: '/system/outputs',\n OVERVIEW: '/system/overview',\n PROCESSBUFFERDUMP: nodeId => `/system/processbufferdump/${nodeId}`,\n AUTHENTICATION: {\n OVERVIEW: '/system/authentication',\n ROLES: '/system/authentication/roles',\n USERS: {\n CREATE: '/system/authentication/users/new',\n edit: username => `/system/authentication/users/edit/${username}`,\n TOKENS: {\n edit: username => `/system/authentication/users/tokens/${username}`,\n },\n LIST: '/system/authentication/users',\n },\n PROVIDERS: {\n CONFIG: '/system/authentication/config',\n provider: name => `/system/authentication/config/${name}`,\n },\n },\n LOOKUPTABLES: {\n OVERVIEW: '/system/lookuptables',\n CREATE: '/system/lookuptables/create',\n show: tableName => `/system/lookuptables/table/${tableName}`,\n edit: tableName => `/system/lookuptables/table/${tableName}/edit`,\n CACHES: {\n OVERVIEW: '/system/lookuptables/caches',\n CREATE: '/system/lookuptables/caches/create',\n show: cacheName => `/system/lookuptables/caches/${cacheName}`,\n edit: cacheName => `/system/lookuptables/caches/${cacheName}/edit`,\n },\n DATA_ADAPTERS: {\n OVERVIEW: '/system/lookuptables/data_adapters',\n CREATE: '/system/lookuptables/data_adapters/create',\n show: adapterName => `/system/lookuptables/data_adapter/${adapterName}`,\n edit: adapterName => `/system/lookuptables/data_adapter/${adapterName}/edit`,\n },\n },\n PIPELINES: {\n OVERVIEW: '/system/pipelines',\n PIPELINE: pipelineId => `/system/pipelines/${pipelineId}`,\n RULES: '/system/pipelines/rules',\n RULE: ruleId => `/system/pipelines/rules/${ruleId}`,\n SIMULATOR: '/system/pipelines/simulate',\n },\n ENTERPRISE: '/system/enterprise',\n SIDECARS: {\n OVERVIEW: '/system/sidecars',\n STATUS: sidecarId => `/system/sidecars/${sidecarId}/status`,\n ADMINISTRATION: '/system/sidecars/administration',\n CONFIGURATION: '/system/sidecars/configuration',\n NEW_CONFIGURATION: '/system/sidecars/configuration/new',\n EDIT_CONFIGURATION: configurationId => `/system/sidecars/configuration/edit/${configurationId}`,\n NEW_COLLECTOR: '/system/sidecars/collector/new',\n EDIT_COLLECTOR: collectorId => `/system/sidecars/collector/edit/${collectorId}`,\n },\n },\n VIEWS: {\n LIST: viewsPath,\n VIEWID: id => `${viewsPath}/${id}`,\n },\n EXTENDEDSEARCH: extendedSearchPath,\n search_with_query: (query, rangeType, timeRange) => {\n const route = new URI(Routes.SEARCH);\n const queryParams = {\n q: query,\n };\n if (rangeType && timeRange) {\n queryParams[rangeType] = timeRange;\n }\n route.query(queryParams);\n return route.resource();\n },\n _common_search_url: (resource, query, timeRange, resolution) => {\n const route = new URI(resource);\n const queryParams = {\n q: query,\n interval: resolution,\n };\n\n if (timeRange) {\n Object.keys(timeRange).forEach((key) => {\n queryParams[key] = timeRange[key];\n });\n }\n\n route.query(queryParams);\n return route.resource();\n },\n search: (query, timeRange, resolution) => {\n return Routes._common_search_url(Routes.SEARCH, query, timeRange, resolution);\n },\n message_show: (index, messageId) => `/messages/${index}/${messageId}`,\n stream_edit: streamId => `/streams/${streamId}/edit`,\n stream_edit_example: (streamId, index, messageId) => `${Routes.stream_edit(streamId)}?index=${index}&message_id=${messageId}`,\n stream_outputs: streamId => `/streams/${streamId}/outputs`,\n stream_search: (streamId, query, timeRange, resolution) => {\n return Routes._common_search_url(`${Routes.STREAMS}/${streamId}/search`, query, timeRange, resolution);\n },\n stream_alerts: streamId => `/alerts/?stream_id=${streamId}`,\n\n legacy_stream_search: streamId => `/streams/${streamId}/messages`,\n show_alert: alertId => `${Routes.LEGACY_ALERTS.LIST}/${alertId}`,\n show_alert_condition: (streamId, conditionId) => `${Routes.LEGACY_ALERTS.CONDITIONS}/${streamId}/${conditionId}`,\n new_alert_condition_for_stream: streamId => `${Routes.LEGACY_ALERTS.NEW_CONDITION}?stream_id=${streamId}`,\n new_alert_notification_for_stream: streamId => `${Routes.LEGACY_ALERTS.NEW_NOTIFICATION}?stream_id=${streamId}`,\n\n dashboard_show: dashboardId => `/dashboards/${dashboardId}`,\n\n node: nodeId => `/system/nodes/${nodeId}`,\n\n node_inputs: nodeId => `${Routes.SYSTEM.INPUTS}/${nodeId}`,\n global_input_extractors: inputId => `/system/inputs/${inputId}/extractors`,\n local_input_extractors: (nodeId, inputId) => `/system/inputs/${nodeId}/${inputId}/extractors`,\n export_extractors: (nodeId, inputId) => `${Routes.local_input_extractors(nodeId, inputId)}/export`,\n import_extractors: (nodeId, inputId) => `${Routes.local_input_extractors(nodeId, inputId)}/import`,\n new_extractor: (nodeId, inputId, extractorType, fieldName, index, messageId) => {\n const route = new URI(`/system/inputs/${nodeId}/${inputId}/extractors/new`);\n const queryParams = {\n extractor_type: extractorType,\n field: fieldName,\n example_index: index,\n example_id: messageId,\n };\n route.search(queryParams);\n\n return route.resource();\n },\n edit_extractor: (nodeId, inputId, extractorId) => `/system/inputs/${nodeId}/${inputId}/extractors/${extractorId}/edit`,\n\n edit_input_extractor: (nodeId, inputId, extractorId) => `/system/inputs/${nodeId}/${inputId}/extractors/${extractorId}/edit`,\n getting_started: fromMenu => `${Routes.GETTING_STARTED}?menu=${fromMenu}`,\n filtered_metrics: (nodeId, filter) => `${Routes.SYSTEM.METRICS(nodeId)}?filter=${filter}`,\n};\n\n\nconst qualifyUrls = (routes, appPrefix) => {\n const qualifiedRoutes = {};\n\n Object.keys(routes).forEach((routeName) => {\n switch (typeof routes[routeName]) {\n case 'string':\n qualifiedRoutes[routeName] = new URI(`${appPrefix}/${routes[routeName]}`).normalizePath().resource();\n break;\n case 'function':\n qualifiedRoutes[routeName] = (...params) => {\n const result = routes[routeName](...params);\n return new URI(`${appPrefix}/${result}`).normalizePath().resource();\n };\n break;\n case 'object':\n qualifiedRoutes[routeName] = qualifyUrls(routes[routeName], appPrefix);\n break;\n default:\n break;\n }\n });\n\n return qualifiedRoutes;\n};\n\nconst defaultExport = AppConfig.gl2AppPathPrefix() ? qualifyUrls(Routes, AppConfig.gl2AppPathPrefix()) : Routes;\ndefaultExport.unqualified = Routes;\n\n/*\n * Global registry of plugin routes. Route names are generated automatically from the route path, by removing\n * any colons, replacing slashes with underscores, and making the string uppercase. Below there is an example of how\n * to access the routes.\n *\n * Plugin register example:\n * routes: [\n * { path: '/system/pipelines', component: Foo },\n * { path: '/system/pipelines/:pipelineId', component: Bar },\n * ]\n *\n * Using routes on plugin components:\n * ...\n * ...\n *\n */\ndefaultExport.pluginRoute = (routeKey) => {\n const pluginRoutes = {};\n PluginStore.exports('routes').forEach((pluginRoute) => {\n const uri = new URI(pluginRoute.path);\n const segments = uri.segment();\n const key = segments.map(segment => segment.replace(':', '')).join('_').toUpperCase();\n const paramNames = segments.filter(segment => segment.startsWith(':'));\n\n if (paramNames.length > 0) {\n pluginRoutes[key] = (...paramValues) => {\n paramNames.forEach((param, idx) => {\n const value = String(paramValues[idx]);\n uri.segment(segments.indexOf(param), value);\n });\n\n return uri.pathname();\n };\n\n return;\n }\n\n pluginRoutes[key] = pluginRoute.path;\n });\n const route = (AppConfig.gl2AppPathPrefix() ? qualifyUrls(pluginRoutes, AppConfig.gl2AppPathPrefix()) : pluginRoutes)[routeKey];\n if (!route) {\n throw new Error(`Could not find plugin route '${routeKey}'.`);\n }\n\n return route;\n};\n\nexport default defaultExport;\n","import Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { PipelineConnectionsActions } = CombinedProvider.get('PipelineConnections');\n\nconst PipelineConnectionsStore = Reflux.createStore({\n listenables: [PipelineConnectionsActions],\n connections: undefined,\n\n getInitialState() {\n return { connections: this.connections };\n },\n\n list() {\n const failCallback = (error) => {\n UserNotification.error(`Fetching pipeline connections failed with status: ${error.message}`,\n 'Could not retrieve pipeline connections');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.ConnectionsController.list().url);\n const promise = fetch('GET', url);\n promise.then((response) => {\n this.connections = response;\n this.trigger({ connections: response });\n }, failCallback);\n },\n\n connectToStream(connection) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ConnectionsController.to_stream().url);\n const updatedConnection = {\n stream_id: connection.stream,\n pipeline_ids: connection.pipelines,\n };\n const promise = fetch('POST', url, updatedConnection);\n promise.then(\n (response) => {\n if (this.connections.filter(c => c.stream_id === response.stream_id)[0]) {\n this.connections = this.connections.map(c => (c.stream_id === response.stream_id ? response : c));\n } else {\n this.connections.push(response);\n }\n\n this.trigger({ connections: this.connections });\n UserNotification.success('Pipeline connections updated successfully');\n },\n this._failUpdateCallback,\n );\n },\n\n connectToPipeline(reverseConnection) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ConnectionsController.to_pipeline().url);\n const updatedConnection = {\n pipeline_id: reverseConnection.pipeline,\n stream_ids: reverseConnection.streams,\n };\n const promise = fetch('POST', url, updatedConnection);\n promise.then(\n (response) => {\n response.forEach((connection) => {\n if (this.connections.filter(c => c.stream_id === connection.stream_id)[0]) {\n this.connections = this.connections.map(c => (c.stream_id === connection.stream_id ? connection : c));\n } else {\n this.connections.push(connection);\n }\n });\n\n this.trigger({ connections: this.connections });\n UserNotification.success('Pipeline connections updated successfully');\n },\n this._failUpdateCallback,\n );\n },\n\n _failUpdateCallback(error) {\n UserNotification.error(`Updating pipeline connections failed with status: ${error.message}`,\n 'Could not update pipeline connections');\n },\n});\n\nexport default PipelineConnectionsStore;\n","import Reflux from 'reflux';\n\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\n\nconst GettingStartedActions = ActionsProvider.getActions('GettingStarted');\n\nconst GettingStartedStore = Reflux.createStore({\n listenables: [GettingStartedActions],\n sourceUrl: '/system/gettingstarted',\n status: undefined,\n\n init() {\n this.getStatus();\n },\n\n getInitialState() {\n return { status: this.status };\n },\n\n get() {\n return this.status;\n },\n\n getStatus() {\n const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl));\n promise\n .then(\n (response) => {\n this.status = response;\n this.trigger({ status: this.status });\n return response;\n },\n error => console.error(error),\n );\n\n GettingStartedActions.getStatus.promise(promise);\n },\n\n dismiss() {\n const promise = fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl}/dismiss`), '{}');\n promise\n .then(\n (response) => {\n this.getStatus();\n return response;\n },\n (error) => {\n UserNotification.error(`Dismissing Getting Started Guide failed with status: ${error}`,\n 'Could not dismiss guide');\n },\n );\n\n GettingStartedActions.dismiss.promise(promise);\n },\n});\n\nexport default GettingStartedStore;\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst ClusterTrafficActions = ActionsProvider.getActions('ClusterTraffic');\n\nconst ClusterTrafficStore = Reflux.createStore({\n listenables: ClusterTrafficActions,\n\n traffic() {\n const promise = fetch('GET', URLUtils.qualifyUrl('/system/cluster/traffic'));\n promise.then((response) => {\n this.trigger(response);\n });\n return promise;\n },\n\n});\n\nexport default ClusterTrafficStore;\n","/*!\n * jQuery UI Droppable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Droppable\n//>>group: Interactions\n//>>description: Enables drop targets for draggable elements.\n//>>docs: http://api.jqueryui.com/droppable/\n//>>demos: http://jqueryui.com/droppable/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./draggable\",\n\t\t\t\"./mouse\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.droppable\", {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: \"*\",\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tdeactivate: null,\n\t\tdrop: null,\n\t\tout: null,\n\t\tover: null\n\t},\n\t_create: function() {\n\n\t\tvar proportions,\n\t\t\to = this.options,\n\t\t\taccept = o.accept;\n\n\t\tthis.isover = false;\n\t\tthis.isout = true;\n\n\t\tthis.accept = $.isFunction( accept ) ? accept : function( d ) {\n\t\t\treturn d.is( accept );\n\t\t};\n\n\t\tthis.proportions = function( /* valueToWrite */ ) {\n\t\t\tif ( arguments.length ) {\n\n\t\t\t\t// Store the droppable's proportions\n\t\t\t\tproportions = arguments[ 0 ];\n\t\t\t} else {\n\n\t\t\t\t// Retrieve or derive the droppable's proportions\n\t\t\t\treturn proportions ?\n\t\t\t\t\tproportions :\n\t\t\t\t\tproportions = {\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\n\t\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tthis._addToManager( o.scope );\n\n\t\to.addClasses && this._addClass( \"ui-droppable\" );\n\n\t},\n\n\t_addToManager: function( scope ) {\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\n\t},\n\n\t_splice: function( drop ) {\n\t\tvar i = 0;\n\t\tfor ( ; i < drop.length; i++ ) {\n\t\t\tif ( drop[ i ] === this ) {\n\t\t\t\tdrop.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\tthis._splice( drop );\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\tif ( key === \"accept\" ) {\n\t\t\tthis.accept = $.isFunction( value ) ? value : function( d ) {\n\t\t\t\treturn d.is( value );\n\t\t\t};\n\t\t} else if ( key === \"scope\" ) {\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\t\tthis._splice( drop );\n\t\t\tthis._addToManager( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_activate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._addActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_deactivate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._removeActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_over: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._addHoverClass();\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_out: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._removeHoverClass();\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_drop: function( event, custom ) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current,\n\t\t\tchildrenIntersection = false;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.element\n\t\t\t.find( \":data(ui-droppable)\" )\n\t\t\t.not( \".ui-draggable-dragging\" )\n\t\t\t.each( function() {\n\t\t\t\tvar inst = $( this ).droppable( \"instance\" );\n\t\t\t\tif (\n\t\t\t\t\tinst.options.greedy &&\n\t\t\t\t\t!inst.options.disabled &&\n\t\t\t\t\tinst.options.scope === draggable.options.scope &&\n\t\t\t\t\tinst.accept.call(\n\t\t\t\t\t\tinst.element[ 0 ], ( draggable.currentItem || draggable.element )\n\t\t\t\t\t) &&\n\t\t\t\t\tintersect(\n\t\t\t\t\t\tdraggable,\n\t\t\t\t\t\t$.extend( inst, { offset: inst.element.offset() } ),\n\t\t\t\t\t\tinst.options.tolerance, event\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tchildrenIntersection = true;\n\t\t\t\t\treturn false; }\n\t\t\t} );\n\t\tif ( childrenIntersection ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ],\n\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tthis._removeActiveClass();\n\t\t\tthis._removeHoverClass();\n\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function( c ) {\n\t\treturn {\n\t\t\tdraggable: ( c.currentItem || c.element ),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t},\n\n\t// Extension points just to make backcompat sane and avoid duplicating logic\n\t// TODO: Remove in 1.13 along with call to it below\n\t_addHoverClass: function() {\n\t\tthis._addClass( \"ui-droppable-hover\" );\n\t},\n\n\t_removeHoverClass: function() {\n\t\tthis._removeClass( \"ui-droppable-hover\" );\n\t},\n\n\t_addActiveClass: function() {\n\t\tthis._addClass( \"ui-droppable-active\" );\n\t},\n\n\t_removeActiveClass: function() {\n\t\tthis._removeClass( \"ui-droppable-active\" );\n\t}\n} );\n\nvar intersect = $.ui.intersect = ( function() {\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t}\n\n\treturn function( draggable, droppable, toleranceMode, event ) {\n\n\t\tif ( !droppable.offset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar x1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).left + draggable.margins.left,\n\t\t\ty1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).top + draggable.margins.top,\n\t\t\tx2 = x1 + draggable.helperProportions.width,\n\t\t\ty2 = y1 + draggable.helperProportions.height,\n\t\t\tl = droppable.offset.left,\n\t\t\tt = droppable.offset.top,\n\t\t\tr = l + droppable.proportions().width,\n\t\t\tb = t + droppable.proportions().height;\n\n\t\tswitch ( toleranceMode ) {\n\t\tcase \"fit\":\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\n\t\tcase \"intersect\":\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\n\t\tcase \"pointer\":\n\t\t\treturn isOverAxis( event.pageY, t, droppable.proportions().height ) &&\n\t\t\t\tisOverAxis( event.pageX, l, droppable.proportions().width );\n\t\tcase \"touch\":\n\t\t\treturn (\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\n\t\t\t) && (\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t};\n} )();\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { \"default\": [] },\n\tprepareOffsets: function( t, event ) {\n\n\t\tvar i, j,\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\n\t\t\ttype = event ? event.type : null, // workaround for #2317\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\n\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\n\n\t\t\t// No disabled and non-accepted\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],\n\t\t\t\t\t( t.currentItem || t.element ) ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Filter out elements in the current dragged item\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\n\t\t\t\t\tm[ i ].proportions().height = 0;\n\t\t\t\t\tcontinue droppablesLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\n\t\t\tif ( !m[ i ].visible ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Activate the droppable if used directly from draggables\n\t\t\tif ( type === \"mousedown\" ) {\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\n\t\t\t}\n\n\t\t\tm[ i ].offset = m[ i ].element.offset();\n\t\t\tm[ i ].proportions( {\n\t\t\t\twidth: m[ i ].element[ 0 ].offsetWidth,\n\t\t\t\theight: m[ i ].element[ 0 ].offsetHeight\n\t\t\t} );\n\n\t\t}\n\n\t},\n\tdrop: function( draggable, event ) {\n\n\t\tvar dropped = false;\n\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\n\n\t\t\tif ( !this.options ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.options.disabled && this.visible &&\n\t\t\t\t\tintersect( draggable, this, this.options.tolerance, event ) ) {\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\n\t\t\t}\n\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],\n\t\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\t\tthis.isout = true;\n\t\t\t\tthis.isover = false;\n\t\t\t\tthis._deactivate.call( this, event );\n\t\t\t}\n\n\t\t} );\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the\n\t\t// droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).on( \"scroll.droppable\", function() {\n\t\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( draggable, event ) {\n\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions\n\t\t// every time you move the mouse.\n\t\tif ( draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\n\t\t// Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\n\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parentInstance, scope, parent,\n\t\t\t\tintersects = intersect( draggable, this, this.options.tolerance, event ),\n\t\t\t\tc = !intersects && this.isover ?\n\t\t\t\t\t\"isout\" :\n\t\t\t\t\t( intersects && !this.isover ? \"isover\" : null );\n\t\t\tif ( !c ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.greedy ) {\n\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tscope = this.options.scope;\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter( function() {\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\n\t\t\t\t} );\n\n\t\t\t\tif ( parent.length ) {\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We just moved into a greedy child\n\t\t\tif ( parentInstance && c === \"isover\" ) {\n\t\t\t\tparentInstance.isover = false;\n\t\t\t\tparentInstance.isout = true;\n\t\t\t\tparentInstance._out.call( parentInstance, event );\n\t\t\t}\n\n\t\t\tthis[ c ] = true;\n\t\t\tthis[ c === \"isout\" ? \"isover\" : \"isout\" ] = false;\n\t\t\tthis[ c === \"isover\" ? \"_over\" : \"_out\" ].call( this, event );\n\n\t\t\t// We just moved out of a greedy child\n\t\t\tif ( parentInstance && c === \"isout\" ) {\n\t\t\t\tparentInstance.isout = false;\n\t\t\t\tparentInstance.isover = true;\n\t\t\t\tparentInstance._over.call( parentInstance, event );\n\t\t\t}\n\t\t} );\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).off( \"scroll.droppable\" );\n\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when\n\t\t// overflow was caused by drag (see #5003)\n\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\t}\n};\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for activeClass and hoverClass options\n\t$.widget( \"ui.droppable\", $.ui.droppable, {\n\t\toptions: {\n\t\t\thoverClass: false,\n\t\t\tactiveClass: false\n\t\t},\n\t\t_addActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.addClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_removeActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_addHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\n\t\t\t}\n\t\t},\n\t\t_removeHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nreturn $.ui.droppable;\n\n} ) );\n","import { Map } from 'immutable';\nimport { findIndex } from 'lodash';\nimport ValueRefHelper from 'util/ValueRefHelper';\nimport Constraint from './Constraint';\n\nexport default class Entity {\n constructor(v, type, id, data, fromServer = false, constraintValues = [], parameters = []) {\n const constraints = constraintValues.map((c) => {\n if (c instanceof Constraint) {\n return c;\n }\n return Constraint.fromJSON(c);\n });\n\n this._value = {\n v,\n type,\n id,\n data,\n constraints,\n fromServer,\n parameters,\n };\n }\n\n static fromJSON(value, fromServer = true, parameters = []) {\n const { v, type, id, data, constraints } = value;\n return new Entity(v, type, id, data, fromServer, constraints, parameters);\n }\n\n get v() {\n return this._value.v;\n }\n\n get type() {\n return this._value.type;\n }\n\n get id() {\n return this._value.id;\n }\n\n get data() {\n return this._value.data;\n }\n\n get fromServer() {\n return this._value.fromServer;\n }\n\n get constraints() {\n return this._value.constraints;\n }\n\n get title() {\n let value = this.getValueFromData('title');\n if (!value) {\n value = this.getValueFromData('name');\n }\n return value || '';\n }\n\n get description() {\n return this.getValueFromData('description') || '';\n }\n\n /* eslint-disable-next-line class-methods-use-this */\n get isEntity() {\n return true;\n }\n\n /* implement custom instanceof */\n static [Symbol.hasInstance](obj) {\n if (obj.isEntity) {\n return true;\n }\n return false;\n }\n\n getValueFromData(key) {\n const { data } = this._value;\n if (!data || !data[key]) {\n return undefined;\n }\n\n if (ValueRefHelper.dataIsValueRef(data[key])) {\n const value = (data[key] || {})[ValueRefHelper.VALUE_REF_VALUE_FIELD];\n if (ValueRefHelper.dataValueIsParameter(data[key])) {\n const index = findIndex(this._value.parameters, { name: value });\n if (index >= 0 && this._value.parameters[index].default_value) {\n return this._value.parameters[index].default_value;\n }\n }\n return value;\n }\n return data[key];\n }\n\n toBuilder() {\n const {\n v,\n type,\n id,\n data,\n constraints,\n fromServer,\n parameters,\n } = this._value;\n /* eslint-disable-next-line no-use-before-define */\n return new Builder(Map({\n v,\n type,\n id,\n data,\n constraints,\n fromServer,\n parameters,\n }));\n }\n\n\n static builder() {\n /* eslint-disable-next-line no-use-before-define */\n return new Builder();\n }\n\n toJSON() {\n const {\n v,\n type,\n id,\n data,\n constraints,\n } = this._value;\n return {\n v,\n type,\n id,\n data,\n constraints,\n };\n }\n}\n\nclass Builder {\n constructor(value = Map()) {\n this.value = value;\n }\n\n v(value) {\n this.value = this.value.set('v', value);\n return this;\n }\n\n type(value) {\n this.value = this.value.set('type', value);\n return this;\n }\n\n id(value) {\n this.value = this.value.set('id', value);\n return this;\n }\n\n data(value) {\n this.value = this.value.set('data', value);\n return this;\n }\n\n fromServer(value) {\n this.value = this.value.set('fromServer', value);\n return this;\n }\n\n constraints(value) {\n this.value = this.value.set('constraints', value);\n return this;\n }\n\n parameters(value) {\n this.value = this.value.set('parameters', value);\n return this;\n }\n\n build() {\n const {\n v,\n type,\n id,\n data,\n constraints,\n fromServer,\n parameters,\n } = this.value.toObject();\n return new Entity(v, type, id, data, fromServer, constraints, parameters);\n }\n}\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst SystemProcessingStore = Reflux.createStore({\n sourceUrl: nodeId => `/cluster/${nodeId}/processing`,\n\n pause(nodeId) {\n return fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl(nodeId)}/pause`))\n .then(\n () => {\n this.trigger({});\n UserNotification.success(`Message processing paused successfully in '${nodeId}'`);\n },\n (error) => {\n UserNotification.error(`Pausing message processing in '${nodeId}' failed: ${error}`,\n `Could not pause message processing in node '${nodeId}'`);\n },\n );\n },\n\n resume(nodeId) {\n return fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl(nodeId)}/resume`))\n .then(\n () => {\n this.trigger({});\n UserNotification.success(`Message processing resumed successfully in '${nodeId}'`);\n },\n (error) => {\n UserNotification.error(`Resuming message processing in '${nodeId}' failed: ${error}`,\n `Could not resume message processing in node '${nodeId}'`);\n },\n );\n },\n});\n\nexport default SystemProcessingStore;\n","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst SingleNodeActions = ActionsProvider.getActions('SingleNode');\n\nconst SingleNodeStore = Reflux.createStore({\n listenables: [SingleNodeActions],\n sourceUrl: '/system/cluster/node',\n node: undefined,\n\n init() {\n this._propagateState();\n },\n\n getInitialState() {\n return this._getNodeInfo();\n },\n\n _getNodeInfo() {\n return { node: this.node };\n },\n\n _propagateState() {\n this.trigger(this._getNodeInfo());\n },\n\n get(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(nodeId ? URLUtils.concatURLPath(this.sourceUrl, nodeId) : this.sourceUrl))\n .then((response) => {\n this.node = response;\n this._propagateState();\n });\n\n SingleNodeActions.get.promise(promise);\n },\n});\n\nexport default SingleNodeStore;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(21);","// @flow strict\nimport Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\n\nexport type Stream = {\n id: string,\n title: string,\n description: string,\n remove_matches_from_default_stream: boolean,\n isDefaultStream: boolean,\n creatorUser: string,\n createdAt: number,\n}\n\ntype TestMatchResponse = {\n matches: boolean,\n rules: any,\n}\n\ntype Callback = {\n (): void,\n}\n\ntype StreamSummaryResponse = {\n total: number,\n streams: Array,\n}\n\nconst StreamsStore = Reflux.createStore({\n callbacks: [],\n\n listStreams() {\n const url = '/streams';\n const promise = fetch('GET', URLUtils.qualifyUrl(url))\n .then((result: StreamSummaryResponse) => result.streams)\n .catch((errorThrown) => {\n UserNotification.error(`Loading streams failed with status: ${errorThrown}`,\n 'Could not load streams');\n });\n return promise;\n },\n load(callback: ((streams: Array) => void)) {\n this.listStreams()\n .then((streams) => {\n callback(streams);\n });\n },\n get(streamId: string, callback: ((stream: Stream) => void)) {\n const failCallback = (errorThrown) => {\n UserNotification.error(`Loading Stream failed with status: ${errorThrown}`,\n 'Could not retrieve Stream');\n };\n\n const { url } = ApiRoutes.StreamsApiController.get(streamId);\n fetch('GET', URLUtils.qualifyUrl(url))\n .then(callback, failCallback);\n },\n remove(streamId: string, callback: (() => void)) {\n const failCallback = (errorThrown) => {\n UserNotification.error(`Removing Stream failed with status: ${errorThrown}`,\n 'Could not remove Stream');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamsApiController.delete(streamId).url);\n fetch('DELETE', url)\n .then(callback, failCallback)\n .then(() => CurrentUserStore.reload()\n .then(this._emitChange.bind(this)));\n },\n pause(streamId: string, callback: (() => void)) {\n const failCallback = (errorThrown) => {\n UserNotification.error(`Pausing Stream failed with status: ${errorThrown}`,\n 'Could not pause Stream');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamsApiController.pause(streamId).url);\n return fetch('POST', url)\n .then(callback, failCallback)\n .then((response) => {\n this._emitChange();\n return response;\n });\n },\n resume(streamId: string, callback: (() => void)) {\n const failCallback = (errorThrown) => {\n UserNotification.error(`Resuming Stream failed with status: ${errorThrown}`,\n 'Could not resume Stream');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamsApiController.resume(streamId).url);\n return fetch('POST', url)\n .then(callback, failCallback)\n .then((response) => {\n this._emitChange();\n return response;\n });\n },\n save(stream: any, callback: ((streamId: string) => void)) {\n const failCallback = (errorThrown) => {\n UserNotification.error(`Saving Stream failed with status: ${errorThrown}`,\n 'Could not save Stream');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamsApiController.create().url);\n fetch('POST', url, stream)\n .then(callback, failCallback)\n .then(() => CurrentUserStore.reload()\n .then(this._emitChange.bind(this)));\n },\n update(streamId: string, data: any, callback: ((stream: Stream) => void)) {\n const failCallback = (errorThrown) => {\n UserNotification.error(`Updating Stream failed with status: ${errorThrown}`,\n 'Could not update Stream');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamsApiController.update(streamId).url);\n fetch('PUT', url, data)\n .then(callback, failCallback)\n .then(this._emitChange.bind(this));\n },\n cloneStream(streamId: string, data: any, callback: ((streamId: string) => void)) {\n const failCallback = (errorThrown) => {\n UserNotification.error(`Cloning Stream failed with status: ${errorThrown}`,\n 'Could not clone Stream');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamsApiController.cloneStream(streamId).url);\n fetch('POST', url, data)\n .then(callback, failCallback)\n .then(() => CurrentUserStore.reload()\n .then(this._emitChange.bind(this)));\n },\n removeOutput(streamId: string, outputId: string, callback: () => void) {\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamOutputsApiController.delete(streamId, outputId).url);\n\n fetch('DELETE', url)\n .then(callback, (errorThrown) => {\n UserNotification.error(`Removing output from stream failed with status: ${errorThrown}`,\n 'Could not remove output from stream');\n })\n .then(this._emitChange.bind(this));\n },\n addOutput(streamId: string, outputId: string, callback: (response: any) => void) {\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamOutputsApiController.add(streamId, outputId).url);\n fetch('POST', url, { outputs: [outputId] })\n .then(callback, (errorThrown) => {\n UserNotification.error(`Adding output to stream failed with status: ${errorThrown}`,\n 'Could not add output to stream');\n })\n .then(this._emitChange.bind(this));\n },\n testMatch(streamId: string, message: any, callback: (response: TestMatchResponse) => void) {\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamsApiController.testMatch(streamId).url);\n fetch('POST', url, message)\n .then(callback, (error) => {\n UserNotification.error(`Testing stream rules of stream failed with status: ${error.message}`,\n 'Could not test stream rules of stream');\n });\n },\n onChange(callback: Callback) {\n this.callbacks.push(callback);\n },\n _emitChange() {\n this.callbacks.forEach(callback => callback());\n },\n unregister(callback: Callback) {\n lodash.pull(this.callbacks, callback);\n },\n});\n\nexport default StreamsStore;\n","import Reflux from 'reflux';\nimport URI from 'urijs';\nimport lodash from 'lodash';\n\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { EventsActions } = CombinedProvider.get('Events');\n\nconst EventsStore = Reflux.createStore({\n listenables: [EventsActions],\n sourceUrl: '/events/search',\n events: undefined,\n totalEvents: undefined,\n context: undefined,\n parameters: {\n page: undefined,\n pageSize: undefined,\n query: undefined,\n filter: undefined,\n timerange: undefined,\n },\n\n getInitialState() {\n return this.getState();\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n getState() {\n return {\n events: this.events,\n parameters: this.parameters,\n totalEvents: this.totalEvents,\n context: this.context,\n };\n },\n\n eventsUrl({ segments = [], query = {} }) {\n const uri = new URI(this.sourceUrl);\n const nextSegments = lodash.concat(uri.segment(), segments);\n uri.segmentCoded(nextSegments);\n uri.query(query);\n\n return URLUtils.qualifyUrl(uri.resource());\n },\n\n refresh() {\n const { query, page, pageSize, filter } = this.parameters;\n this.search({\n query: query,\n page: page,\n pageSize: pageSize,\n filter: filter,\n });\n },\n\n search({ query = '', page = 1, pageSize = 25, filter = { alerts: 'only' }, timerange }) {\n const promise = fetch('POST', this.eventsUrl({}), {\n query: query,\n page: page,\n per_page: pageSize,\n filter: filter,\n timerange: timerange,\n });\n\n promise.then((response) => {\n this.events = response.events;\n this.parameters = {\n query: response.parameters.query,\n page: response.parameters.page,\n pageSize: response.parameters.per_page,\n filter: response.parameters.filter,\n timerange: response.parameters.timerange,\n };\n this.totalEvents = response.total_events;\n this.context = response.context;\n this.propagateChanges();\n return response;\n });\n\n EventsActions.search.promise(promise);\n },\n});\n\nexport default EventsStore;\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2017 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.1\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n continue;\n }\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n};\n\nAsync.prototype._drainQueues = function () {\n this._drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n this._drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new CustomEvent(name.toLowerCase(), {\n detail: event,\n cancelable: true\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.1\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var l = 8;\n while (l--) new FakeConstructor();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","// @flow strict\nimport Reflux from 'reflux';\nimport $ from 'jquery';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport StringUtils from 'util/StringUtils';\n\ntype Source = {\n name: string,\n message_count: number,\n percentage: number,\n};\n\nconst processSourcesData = (sources: { string: number }): Array => {\n let total = 0;\n const sourcesArray = [];\n $.each(sources, (name: string, count: number) => {\n total += Number(count);\n sourcesArray.push({\n name: StringUtils.escapeHTML(name),\n message_count: count,\n percentage: 0,\n });\n });\n sourcesArray.forEach((d) => {\n // eslint-disable-next-line no-param-reassign\n d.percentage = d.message_count / total * 100;\n });\n return sourcesArray;\n};\n\nconst SourcesStore = Reflux.createStore({\n SOURCES_URL: '/sources',\n\n loadSources(range: number, callback: (sources: Array) => void) {\n let url = URLUtils.qualifyUrl(this.SOURCES_URL);\n if (typeof range !== 'undefined') {\n url += `?range=${range}`;\n }\n fetch('GET', url)\n .then((response) => {\n const sources = processSourcesData(response.sources);\n callback(sources);\n })\n .catch((errorThrown) => {\n UserNotification.error(`Loading of sources data failed with status: ${errorThrown}. Try reloading the page.`,\n 'Could not load sources data');\n });\n },\n});\n\nexport default SourcesStore;\n","import Reflux from 'reflux';\n\nconst IndexerOverviewActions = Reflux.createActions({\n list: { asyncResult: true },\n});\n\nexport default IndexerOverviewActions;\n","import Reflux from 'reflux';\n\nimport Store from 'logic/local-storage/Store';\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { Builder } from 'logic/rest/FetchProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst SessionActions = ActionsProvider.getActions('Session');\n\nconst SessionStore = Reflux.createStore({\n listenables: [SessionActions],\n sourceUrl: '/system/sessions',\n sessionId: undefined,\n username: undefined,\n validatingSession: false,\n\n init() {\n this.validate();\n },\n getInitialState() {\n return this.getSessionInfo();\n },\n\n login(username, password, host) {\n const builder = new Builder('POST', URLUtils.qualifyUrl(this.sourceUrl))\n .json({ username: username, password: password, host: host });\n const promise = builder.build()\n .then((sessionInfo) => {\n return { sessionId: sessionInfo.session_id, username: username };\n });\n\n SessionActions.login.promise(promise);\n },\n logout(sessionId) {\n const promise = new Builder('DELETE', URLUtils.qualifyUrl(`${this.sourceUrl}/${sessionId}`))\n .authenticated()\n .build()\n .then((resp) => {\n if (resp.ok || resp.status === 401) {\n this._removeSession();\n }\n }, this._removeSession);\n\n SessionActions.logout.promise(promise);\n },\n\n validate() {\n const sessionId = Store.get('sessionId');\n const username = Store.get('username');\n this.validatingSession = true;\n this._propagateState();\n const promise = this._validateSession(sessionId)\n .then((response) => {\n if (response.is_valid) {\n return SessionActions.login.completed({\n sessionId: sessionId || response.session_id,\n username: username || response.username,\n });\n }\n if (sessionId && username) {\n this._removeSession();\n }\n\n return response;\n })\n .finally(() => {\n this.validatingSession = false;\n this._propagateState();\n });\n\n SessionActions.validate.promise(promise);\n },\n _validateSession(sessionId) {\n return new Builder('GET', URLUtils.qualifyUrl(ApiRoutes.SessionsApiController.validate().url))\n .session(sessionId)\n .json()\n .build();\n },\n\n _removeSession() {\n Store.delete('sessionId');\n Store.delete('username');\n this.sessionId = undefined;\n this.username = undefined;\n this._propagateState();\n },\n\n _propagateState() {\n this.trigger(this.getSessionInfo());\n },\n\n loginCompleted(sessionInfo) {\n Store.set('sessionId', sessionInfo.sessionId);\n Store.set('username', sessionInfo.username);\n this.sessionId = sessionInfo.sessionId;\n this.username = sessionInfo.username;\n this._propagateState();\n },\n isLoggedIn() {\n return this.sessionId !== undefined && this.sessionId !== null;\n },\n getSessionId() {\n return this.sessionId;\n },\n getSessionInfo() {\n return { sessionId: this.sessionId, username: this.username, validatingSession: this.validatingSession };\n },\n});\n\nexport default SessionStore;\n","import Reflux from 'reflux';\n\nconst NotificationsActions = Reflux.createActions({\n delete: { asyncResult: true },\n list: { asyncResult: true },\n});\n\nexport default NotificationsActions;\n","const $ = require('jquery');\nimport Immutable = require('immutable');\n\nconst Store = require('logic/local-storage/Store');\nconst fieldCharts = require('legacy/analyzers/fieldcharts');\nconst generateId = fieldCharts.generateId;\nconst FieldChart = fieldCharts.FieldChart;\n\nconst EventHandlersThrottler = require('util/EventHandlersThrottler');\nconst UserNotification = require('util/UserNotification');\n\ninterface CreateFieldChartWidgetRequestParams {\n widgetType: string;\n valuetype: string;\n renderer: string;\n interpolation: string;\n interval: string;\n field: string;\n query: string;\n rangeType: string;\n relative?: number;\n from?: string;\n to?: string;\n keyword?: string;\n}\n\ninterface StackedChartSeries {\n statistical_function: string;\n field: string;\n query: string;\n}\n\ninterface CreateStackedChartWidgetRequestParams {\n widgetType: string;\n renderer: string;\n interpolation: string;\n interval: string;\n series: Array;\n}\n\nclass FieldGraphsStore {\n static FUNCTIONS = Immutable.OrderedMap({\n count: 'Total',\n mean: 'Mean',\n min: 'Minimum',\n max: 'Maximum',\n total: 'Sum',\n cardinality: 'Cardinality',\n });\n\n private renderedGraphs: Immutable.Set;\n private _fieldGraphs: Immutable.Map;\n private _stackedGraphs: Immutable.Map>;\n private _eventsThrottle;\n onFieldGraphCreated: (graphId: string)=>void;\n onFieldGraphsUpdated: (query: Object)=>void;\n onFieldGraphsMerged: (targetGraphId: Object)=>void;\n\n constructor() {\n this.resetStore();\n this._eventsThrottle = new EventHandlersThrottler();\n\n $(document).on('created.graylog.fieldgraph', (event, data) => {\n this.saveGraph(data.graphOptions['chartid'], data.graphOptions);\n this.combineStackedGraphs(data.graphOptions['chartid']);\n this.renderedGraphs.add(data.graphOptions['chartid']);\n if (typeof this.onFieldGraphCreated === 'function') {\n this.onFieldGraphCreated(data.graphOptions['chartid']);\n }\n });\n\n $(document).on('failed.graylog.fieldgraph', (event, data) => {\n UserNotification.error(data.errorMessage, \"Could not create field graph\");\n this.deleteGraph(data.graphId);\n });\n\n $(document).on('updated.graylog.fieldgraph', (event, data) => {\n this.saveGraph(data.graphOptions['chartid'], data.graphOptions);\n });\n\n $(document).on('merged.graylog.fieldgraph', (event, data) => {\n this.updateStackedGraphs(data.targetGraphId, data.draggedGraphId);\n });\n\n window.addEventListener('resize', () => {\n this._eventsThrottle.throttle(() => this.redrawGraphs());\n });\n }\n\n resetStore() {\n this.renderedGraphs = Immutable.Set();\n this._fieldGraphs = Immutable.Map(Store.get(\"pinned-field-charts\"));\n this._stackedGraphs = Immutable.fromJS(Store.get(\"stacked-graphs\") || {}, (key, value) => {\n var isIndexed = Immutable.Iterable.isIndexed(value);\n return isIndexed ? value.toSet() : value.toMap();\n });\n FieldChart.reload();\n }\n\n get fieldGraphs(): Immutable.Map {\n return this._fieldGraphs;\n }\n\n set fieldGraphs(newFieldGraphs: Immutable.Map) {\n this._fieldGraphs = newFieldGraphs;\n Store.set(\"pinned-field-charts\", newFieldGraphs.toJS());\n if (typeof this.onFieldGraphsUpdated === 'function') {\n this.onFieldGraphsUpdated(newFieldGraphs);\n }\n }\n\n get stackedGraphs(): Immutable.Map> {\n return this._stackedGraphs;\n }\n\n set stackedGraphs(newStackedGraphs: Immutable.Map>) {\n this._stackedGraphs = newStackedGraphs;\n Store.set(\"stacked-graphs\", newStackedGraphs.toJS());\n if (typeof this.onFieldGraphsMerged === 'function') {\n this.onFieldGraphsMerged(newStackedGraphs);\n }\n }\n\n combineStackedGraphs(graphId: string) {\n this.renderedGraphs = this.renderedGraphs.add(graphId);\n if (this.stackedGraphs.has(graphId)) {\n var stackedGraphs = this.stackedGraphs.get(graphId);\n stackedGraphs.forEach((stackedGraphId) => {\n if (this.renderedGraphs.has(stackedGraphId)) {\n this.stackGraphs(graphId, stackedGraphId);\n }\n });\n } else {\n this.stackedGraphs.forEach((stackedGraphs, targetGraphId) => {\n if (stackedGraphs.has(graphId) && this.renderedGraphs.has(targetGraphId)) {\n this.stackGraphs(targetGraphId, graphId);\n }\n });\n }\n }\n\n saveGraph(graphId: string, graphOptions: Object) {\n this.fieldGraphs = this.fieldGraphs.set(graphId, graphOptions);\n }\n\n deleteGraph(graphId: string): void {\n if (this.fieldGraphs.has(graphId)) {\n this.fieldGraphs = this.fieldGraphs.delete(graphId);\n if (this.stackedGraphs.has(graphId)) {\n this.deleteStackedGraphs(graphId);\n }\n }\n }\n\n updateStackedGraphs(targetGraphId: string, sourceGraphId: string) {\n var newStackedGraphs: Immutable.Map> = this.stackedGraphs;\n\n if (newStackedGraphs.has(targetGraphId)) {\n // targetGraphId was a stacked graph\n newStackedGraphs = newStackedGraphs.set(targetGraphId, newStackedGraphs.get(targetGraphId).add(sourceGraphId));\n } else if (newStackedGraphs.has(sourceGraphId)) {\n // draggedGraphId was a stacked graph\n var draggedMergedGraphs = newStackedGraphs.get(sourceGraphId);\n\n newStackedGraphs = newStackedGraphs.set(targetGraphId, draggedMergedGraphs.add(sourceGraphId));\n newStackedGraphs = newStackedGraphs.delete(sourceGraphId);\n } else {\n // None of the graphs were merged\n newStackedGraphs = newStackedGraphs.set(targetGraphId, Immutable.Set().add(sourceGraphId));\n }\n\n this.stackedGraphs = newStackedGraphs;\n }\n\n deleteStackedGraphs(graphId: string) {\n var stackedGraphs = this.stackedGraphs.get(graphId);\n stackedGraphs.forEach((stackedGraphId) => this.deleteGraph(stackedGraphId));\n this.stackedGraphs = this.stackedGraphs.delete(graphId);\n }\n\n newFieldGraph(field: string, options?: Object) {\n var graphId = generateId();\n var givenOptions = Immutable.Map(options);\n var defaultOptions = Immutable.Map({chartid: graphId, field: field});\n this.saveGraph(graphId, defaultOptions.merge(givenOptions).toJS());\n }\n\n renderFieldGraph(graphOptions: Object, graphContainer: Element, options: Object = {new: true}) {\n if (options['new']) {\n FieldChart.renderNewFieldChart(graphOptions, graphContainer);\n } else {\n FieldChart.renderFieldChart(graphOptions, graphContainer, {newGraph: false});\n }\n }\n\n updateFieldGraphData(graphId: string, graphContainer: Element) {\n const seriesName = graphId;\n const graphOptions = this.fieldGraphs.get(graphId);\n let effectiveGraphId;\n\n // First we figure out if the graphId is part of a stacked graph\n this.stackedGraphs.some((stackedGraphsIds, containerGraphId) => {\n if (stackedGraphsIds.has(graphId)) {\n effectiveGraphId = containerGraphId;\n return true;\n }\n });\n\n // If it is not part of a stacked graph, use the graphId given as argument\n if (!effectiveGraphId) {\n effectiveGraphId = graphId;\n }\n\n FieldChart.updateFieldChartData(effectiveGraphId, graphOptions, seriesName, $(graphContainer));\n }\n\n stackGraphs(targetGraphId: string, sourceGraphId: string) {\n FieldChart.stackGraphs(targetGraphId, sourceGraphId);\n }\n\n getFieldGraphAsCreateWidgetRequestParams(graphId: string, widgetType: string): CreateFieldChartWidgetRequestParams {\n var graphOptions = this.fieldGraphs.get(graphId);\n\n if (graphOptions === undefined) {\n throw('Invalid graph ID \"' + graphId + '\"');\n }\n\n var requestParams = {\n valuetype: graphOptions['valuetype'],\n renderer: graphOptions['renderer'],\n interpolation: graphOptions['interpolation'],\n interval: graphOptions['interval'],\n field: graphOptions['field'],\n query: graphOptions['query'],\n rangeType: graphOptions['rangetype']\n };\n\n switch (graphOptions['rangetype']) {\n case \"relative\":\n requestParams['relative'] = graphOptions['range']['relative'];\n break;\n case \"absolute\":\n requestParams['from'] = graphOptions['range']['from'];\n requestParams['to'] = graphOptions['range']['to'];\n break;\n case \"keyword\":\n requestParams['keyword'] = graphOptions['range']['keyword'];\n break;\n }\n\n return requestParams;\n }\n\n private getSeriesInformation(graphOptions: Object): StackedChartSeries {\n var series = {\n query: graphOptions['query'],\n field: graphOptions['field'],\n statistical_function: graphOptions['valuetype'],\n };\n\n return series;\n }\n\n getStackedGraphAsCreateWidgetRequestParams(graphId: string, widgetType: string): CreateStackedChartWidgetRequestParams {\n var graphOptions = this.fieldGraphs.get(graphId);\n\n if (graphOptions === undefined) {\n throw('Invalid graph ID \"' + graphId + '\"');\n }\n\n var requestParams = {\n renderer: graphOptions['renderer'],\n interpolation: graphOptions['interpolation'],\n interval: graphOptions['interval'],\n };\n\n var series = [this.getSeriesInformation(graphOptions)];\n\n var stackedGraphs = this.stackedGraphs.get(graphId);\n\n stackedGraphs.forEach((stackedGraphId) => {\n var stackedGraph = this.fieldGraphs.get(stackedGraphId);\n if (stackedGraph) {\n series.push(this.getSeriesInformation(stackedGraph));\n }\n }, this);\n\n requestParams['series'] = series;\n\n return requestParams;\n }\n\n redrawGraphs() {\n this.fieldGraphs.forEach((fieldGraph, id) => FieldChart.redraw(id));\n }\n}\n\nvar fieldGraphsStore = new FieldGraphsStore();\n\nexport = fieldGraphsStore;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nexports.arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nexports.merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = exports.arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = exports.merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = exports.merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nexports.assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nexports.decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nexports.encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nexports.compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nexports.isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nexports.isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n","import $ from 'jquery';\nimport {} from 'jquery-ui/ui/effect';\nimport {} from 'jquery-ui/ui/effects/effect-bounce';\nimport Rickshaw from 'rickshaw';\nimport NumberUtils from 'util/NumberUtils';\nimport DateTime from 'logic/datetimes/DateTime';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nconst SearchStore = StoreProvider.getStore('Search');\n\nRickshaw.namespace('Rickshaw.Graph.Graylog2Selector');\n\nconst Graylog2Selector = Rickshaw.Class.create({\n\n initialize(args) {\n const { graph } = args;\n this.graph = args.graph;\n this.build();\n graph.onUpdate(() => {\n this.update();\n });\n },\n\n build() {\n const { graph } = this;\n const parent = graph.element.getElementsByTagName('svg')[0];\n\n let selectingActive = false;\n const position = this.position = {};\n\n // Create selector box.\n const selectionBox = document.createElement('div');\n selectionBox.setAttribute('class', 'graph-range-selector');\n graph.element.appendChild(selectionBox);\n\n parent.oncontextmenu = function () {\n e.preventDefault();\n };\n\n // Function to reset selection.\n const clearSelection = function () {\n selectionBox.style.transition = 'opacity 0.2s ease-out';\n selectionBox.style.opacity = 0;\n\n setTimeout(() => {\n selectionBox.style.width = 0;\n selectionBox.style.height = 0;\n selectionBox.style.top = 0;\n selectionBox.style.left = 0;\n }, 200);\n\n parent.style.pointerEvents = 'auto';\n graph.element.style.cursor = 'auto';\n };\n\n const selectionDraw = function (startPointX) {\n if (selectingActive === true) {\n parent.style.pointerEvents = 'none';\n }\n\n graph.element.style.cursor = 'crosshair';\n graph.element.addEventListener('mousemove', (e) => {\n if (selectingActive === true) {\n position.x = e.offsetX | e.layerX;\n position.deltaX = Math.round(Math.max(position.x, startPointX) - Math.min(position.x, startPointX));\n position.minX = Math.min(position.x, startPointX);\n position.maxX = position.minX + position.deltaX;\n\n selectionBox.style.transition = 'none';\n selectionBox.style.opacity = '1';\n selectionBox.style.width = `${position.deltaX}px`;\n selectionBox.style.height = '100%';\n selectionBox.style.left = `${position.minX}px`;\n } else {\n return false;\n }\n }, false);\n };\n\n // On click in graph until button is released again. (begin of drag)\n graph.element.addEventListener('mousedown', (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (e.button === 0 | e.button === 1) {\n const startPointX = e.layerX;\n selectionBox.style.left = e.layerX;\n selectingActive = true;\n selectionDraw(startPointX);\n } else {\n\n }\n }, true);\n\n // On mouse button release after click. (end of drag / complete)\n graph.element.addEventListener('mouseup', (e) => {\n selectingActive = false;\n position.xMin = Math.round(graph.x.invert(position.minX));\n position.xMax = Math.round(graph.x.invert(position.maxX));\n\n const from = $('#universalsearch .absolute .absolute-from-human');\n const to = $('#universalsearch .absolute .absolute-to-human');\n\n if (!NumberUtils.isNumber(position.xMin) || !NumberUtils.isNumber(position.xMax)) {\n clearSelection();\n return;\n }\n\n const fromDate = new DateTime((position.xMin) * 1000);\n const toDate = new DateTime((position.xMax) * 1000);\n\n SearchStore.changeTimeRange('absolute', { from: fromDate.toString(), to: toDate.toString() });\n\n $('.timerange-selector-container').effect('bounce');\n\n clearSelection();\n }, false);\n\n // Stop at chart boundaries.\n if (this._validateSeries(graph.series)) {\n if (graph.dataDomain()[0] === position.xMin) {\n graph.window.xMin = undefined;\n }\n if (graph.dataDomain()[1] === position.xMax) {\n graph.window.xMax = undefined;\n }\n }\n\n graph.window.xMin = position.xMin;\n graph.window.xMax = position.xMax;\n },\n\n _validateSeries(series) {\n return series.map(s => s.data).find(data => !data || !data[0] || !data[0].x || !data[data.length - 1] || !data[data.length - 1].x) === undefined;\n },\n\n update() {\n const { graph } = this;\n const { position } = this;\n graph.window.xMin = position.xMin;\n graph.window.xMax = position.xMax;\n\n if (graph.window.xMin === null) {\n position.xMin = graph.dataDomain()[0];\n }\n\n if (graph.window.xMax === null) {\n position.xMax = graph.dataDomain()[1];\n }\n\n position.xMin = graph.window.xMin;\n position.xMax = graph.window.xMax;\n },\n\n});\n\nRickshaw.Graph.Graylog2Selector = Graylog2Selector;\nexport default Graylog2Selector;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(\"./node_modules/react-router/es/index.js\");","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst SystemShutdownStore = Reflux.createStore({\n sourceUrl: nodeId => `/cluster/${nodeId}/shutdown`,\n\n shutdown(nodeId) {\n return fetch('POST', URLUtils.qualifyUrl(this.sourceUrl(nodeId)))\n .then(\n () => {\n this.trigger({});\n UserNotification.success(`Node '${nodeId}' will shutdown shortly`);\n },\n (error) => {\n UserNotification.error(`Shutting down node '${nodeId}' failed: ${error}`,\n `Could not send shutdown signal to node '${nodeId}'`);\n },\n );\n },\n});\n\nexport default SystemShutdownStore;\n","import Reflux from 'reflux';\n\nconst ClusterTrafficActions = Reflux.createActions({\n traffic: { asyncResult: true },\n});\n\nexport default ClusterTrafficActions;\n","// @flow strict\nimport Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport TimeHelper from 'util/TimeHelper';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst SessionStore = StoreProvider.getStore('Session');\nconst NodesStore = StoreProvider.getStore('Nodes');\nconst SessionActions = ActionsProvider.getActions('Session');\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\ntype CounterMetric = {\n metric: {\n count: number,\n },\n type: 'counter',\n};\n\ntype GaugeMetric = {\n metric: {\n value: number,\n },\n type: 'gauge',\n};\n\ntype MeterMetric = {\n metric: {\n rate: {\n total: number,\n },\n },\n type: 'meter',\n};\n\ntype TimerMetric = {\n metric: {\n rate: {\n total: number,\n },\n },\n type: 'timer',\n};\n\ntype BaseMetric = {\n full_name: string,\n name: string,\n} & T;\n\nexport type NodeMetric = {\n [metricName: string]: BaseMetric\n | BaseMetric\n | BaseMetric\n | BaseMetric,\n}\n\nexport type ClusterMetric = {\n [nodeId: string]: NodeMetric,\n};\n\nconst MetricsStore = Reflux.createStore({\n listenables: [MetricsActions, SessionActions],\n namespace: 'org',\n registrations: {},\n globalRegistrations: {},\n promises: {},\n\n init() {\n this.listenTo(NodesStore, this.updateNodes);\n },\n getInitialState() {\n return { metricsNames: this.metricsNames, metrics: this.metrics };\n },\n updateNodes(update) {\n this.nodes = update.nodes;\n },\n _allResults(promises) {\n const accumulator = [];\n let result = Promise.resolve(null);\n\n promises.forEach((promise) => {\n result = result.then(() => promise).then(value => accumulator.push(value), error => accumulator.push(error));\n });\n\n return result.then(() => accumulator);\n },\n _metricsToFetch(localRegistrations, globalRegistrations) {\n const metricsToFetch = {};\n\n // First collect all node metric registrations\n Object.keys(localRegistrations)\n .filter(nodeId => Object.keys(localRegistrations[nodeId]).length > 0)\n .forEach((nodeId) => {\n Object.keys(localRegistrations[nodeId])\n .filter(metricName => localRegistrations[nodeId][metricName] > 0)\n .forEach((metricName) => {\n metricsToFetch[metricName] = 1;\n });\n });\n\n // Then collect all global metric registrations\n Object.keys(globalRegistrations)\n .filter(metricName => globalRegistrations[metricName] > 0)\n .forEach((metricName) => {\n metricsToFetch[metricName] = 1;\n });\n return metricsToFetch;\n },\n _buildMetricsFromResponse(response) {\n const metrics = {};\n Object.keys(response)\n .forEach((nodeId) => {\n const nodeMetrics = {};\n\n if (!response[nodeId]) {\n return;\n }\n response[nodeId].metrics.forEach((metric) => {\n nodeMetrics[metric.full_name] = metric;\n });\n\n metrics[nodeId] = nodeMetrics;\n });\n\n return metrics;\n },\n list() {\n if (!SessionStore.isLoggedIn()) {\n return null;\n }\n\n const metricsToFetch = this._metricsToFetch(this.registrations, this.globalRegistrations);\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterMetricsApiController.multipleAllNodes().url);\n\n if (!this.promises.list) {\n const promise = fetchPeriodically('POST', url, { metrics: Object.keys(metricsToFetch) })\n .finally(() => delete this.promises.list);\n\n promise.then((response) => {\n this.metrics = this._buildMetricsFromResponse(response);\n // The metricsUpdatedAt value is used by components to decide if they should be re-rendered\n this.trigger({ metrics: this.metrics, metricsUpdatedAt: TimeHelper.nowInSeconds() });\n return this.metrics;\n });\n this.promises.list = promise;\n }\n\n MetricsActions.list.promise(this.promises.list);\n return this.promises.list;\n },\n names() {\n if (!this.nodes) {\n console.warn('Node list not yet available, not fetching metrics.');\n return;\n }\n\n const promise = this._allResults(Object.keys(this.nodes).map((nodeId) => {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterMetricsApiController.byNamespace(nodeId, this.namespace).url);\n return fetch('GET', url).then((response) => {\n return { nodeId: nodeId, names: response.metrics };\n });\n })).then((responses) => {\n const metricsNames = {};\n responses.forEach((response) => {\n if (response.nodeId) {\n metricsNames[response.nodeId] = response.names;\n }\n });\n this.trigger({ metricsNames: metricsNames });\n this.metricsNames = metricsNames;\n return metricsNames;\n });\n\n MetricsActions.names.promise(promise);\n },\n add(nodeId, metricName) {\n if (!this.registrations[nodeId]) {\n this.registrations[nodeId] = {};\n }\n this.registrations[nodeId][metricName] = this.registrations[nodeId][metricName] ? this.registrations[nodeId][metricName] + 1 : 1;\n },\n addGlobal(metricName) {\n if (!this.globalRegistrations[metricName]) {\n this.globalRegistrations[metricName] = 1;\n } else {\n this.globalRegistrations[metricName] += 1;\n }\n },\n remove(nodeId, metricName) {\n if (!this.registrations[nodeId]) {\n return;\n }\n this.registrations[nodeId][metricName] = this.registrations[nodeId][metricName] > 0 ? this.registrations[nodeId][metricName] - 1 : 0;\n if (this.registrations[nodeId][metricName] === 0) {\n delete this.registrations[nodeId][metricName];\n }\n },\n removeGlobal(metricName) {\n if (!this.globalRegistrations[metricName]) {\n return;\n }\n this.globalRegistrations[metricName] = this.globalRegistrations[metricName] > 0 ? this.globalRegistrations[metricName] - 1 : 0;\n if (this.globalRegistrations[metricName] === 0) {\n delete this.globalRegistrations[metricName];\n }\n },\n});\n\nexport default MetricsStore;\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(613);","import { PluginStore } from 'graylog-web-plugin/plugin';\n\nconst searchTypesKey = 'searchTypes';\n\nexport default function searchTypeDefinition(type) {\n return PluginStore.exports(searchTypesKey)\n .find(s => s.type.toLocaleUpperCase() === type.toLocaleUpperCase());\n}\n","import { mapValues } from 'lodash';\n\nimport searchTypeDefinition from 'views/logic/SearchType';\nimport SearchError from './SearchError';\n\nconst _findMessages = (results) => {\n return Object.keys(results.searchTypes)\n .map(id => results.searchTypes[id])\n .find(searchType => searchType.type.toLocaleLowerCase() === 'messages');\n};\n\nconst _searchTypePlugin = (type) => {\n const typeDefinition = searchTypeDefinition(type);\n return typeDefinition && typeDefinition.handler ? searchTypeDefinition(type).handler\n : {\n convert: (result) => {\n // eslint-disable-next-line no-console\n console.log(`No search type handler for type '${type}' result:`, result);\n return result;\n },\n };\n};\n\nexport default class QueryResult {\n constructor(queryResult) {\n // eslint-disable-next-line camelcase\n const { duration, timestamp, effective_timerange } = queryResult.execution_stats;\n this._state = {\n query: queryResult.query,\n errors: queryResult.errors.map(error => new SearchError(error)),\n duration,\n timestamp,\n effectiveTimerange: effective_timerange,\n searchTypes: mapValues(queryResult.search_types, (searchType) => {\n // each search type has a custom data structure attached to it, let the plugin convert the value\n return _searchTypePlugin(searchType.type).convert(searchType);\n }),\n };\n }\n\n get documentCount() {\n const messages = _findMessages(this);\n return messages ? messages.total : 0;\n }\n\n get duration() { return this._state.duration; }\n\n get effectiveTimerange() { return this._state.effectiveTimerange; }\n\n get errors() { return this._state.errors; }\n\n get messages() {\n return _findMessages(this);\n }\n\n get query() { return this._state.query; }\n\n get searchTypes() { return this._state.searchTypes; }\n\n get timestamp() { return this._state.timestamp; }\n}\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(356);","import Reflux from 'reflux';\n\nconst FieldQuickValuesActions = Reflux.createActions({\n get: { asyncResult: true },\n getHistogram: { asyncResult: true },\n});\n\nexport default FieldQuickValuesActions;\n","'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar utils = require('./utils');\n\n/**\n * Expose `ResponseBase`.\n */\n\nmodule.exports = ResponseBase;\n\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in ResponseBase.prototype) {\n obj[key] = ResponseBase.prototype[key];\n }\n return obj;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponseBase.prototype.get = function(field) {\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponseBase.prototype._setHeaderProperties = function(header){\n // TODO: moar!\n // TODO: make this a util\n\n // content-type\n var ct = header['content-type'] || '';\n this.type = utils.type(ct);\n\n // params\n var params = utils.params(ct);\n for (var key in params) this[key] = params[key];\n\n this.links = {};\n\n // links\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch (err) {\n // ignore\n }\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponseBase.prototype._setStatusProperties = function(status){\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.redirect = 3 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.forbidden = 403 == status;\n this.notFound = 404 == status;\n};\n","import Reflux from 'reflux';\n\nconst DeflectorActions = Reflux.createActions({\n cycle: { asyncResult: true },\n list: { asyncResult: true },\n});\n\nexport default DeflectorActions;\n","import Reflux from 'reflux';\n\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport UserNotification from 'util/UserNotification';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst AuthenticationActions = ActionsProvider.getActions('Authentication');\n\n\nconst AuthenticationStore = Reflux.createStore({\n listenables: [AuthenticationActions],\n sourceUrl: '/system/authentication/config',\n\n getInitialState() {\n return {\n authenticators: null,\n };\n },\n\n load() {\n const url = URLUtils.qualifyUrl(this.sourceUrl);\n const promise = fetch('GET', url)\n .then(\n (response) => {\n this.trigger({ authenticators: response });\n return response;\n },\n error => UserNotification.error(`Unable to load authentication configuration: ${error}`, 'Could not load authenticators'),\n );\n\n AuthenticationActions.load.promise(promise);\n },\n\n update(type, config) {\n const url = URLUtils.qualifyUrl(this.sourceUrl);\n if (type === 'providers') {\n const promise = fetch('PUT', url, config)\n .then(\n (response) => {\n this.trigger({ authenticators: response });\n UserNotification.success('Configuration updated successfully');\n return response;\n },\n error => UserNotification.error(`Unable to save authentication provider configuration: ${error}`, 'Could not save configuration'),\n );\n AuthenticationActions.update.promise(promise);\n }\n },\n});\n\nexport default AuthenticationStore;\n","import Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst InputStatesStore = Reflux.createStore({\n listenables: [],\n\n init() {\n this.list();\n },\n\n getInitialState() {\n return { inputStates: this.inputStates };\n },\n\n list() {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterInputStatesController.list().url);\n return fetch('GET', url)\n .then((response) => {\n const result = {};\n Object.keys(response).forEach((node) => {\n if (!response[node]) {\n return;\n }\n response[node].forEach((input) => {\n if (!result[input.id]) {\n result[input.id] = {};\n }\n result[input.id][node] = input;\n });\n });\n this.inputStates = result;\n this.trigger({ inputStates: this.inputStates });\n\n return result;\n });\n },\n\n _checkInputStateChangeResponse(input, response, action) {\n const nodes = Object.keys(response).filter(node => (input.global ? true : node === input.node));\n const failedNodes = nodes.filter(nodeId => response[nodeId] === null);\n\n if (failedNodes.length === 0) {\n UserNotification.success(`Request to ${action.toLowerCase()} input '${input.title}' was sent successfully.`,\n `Input '${input.title}' will be ${action === 'START' ? 'started' : 'stopped'} shortly`);\n } else if (failedNodes.length === nodes.length) {\n UserNotification.error(`Request to ${action.toLowerCase()} input '${input.title}' failed. Check your Graylog logs for more information.`,\n `Input '${input.title}' could not be ${action === 'START' ? 'started' : 'stopped'}`);\n } else {\n UserNotification.warning(`Request to ${action.toLowerCase()} input '${input.title}' failed in some nodes. Check your Graylog logs for more information.`,\n `Input '${input.title}' could not be ${action === 'START' ? 'started' : 'stopped'} in all nodes`);\n }\n },\n\n start(input) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterInputStatesController.start(input.id).url);\n return fetch('PUT', url)\n .then(\n (response) => {\n this._checkInputStateChangeResponse(input, response, 'START');\n this.list();\n return response;\n },\n (error) => {\n UserNotification.error(`Error starting input '${input.title}': ${error}`, `Input '${input.title}' could not be started`);\n },\n );\n },\n\n stop(input) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterInputStatesController.stop(input.id).url);\n return fetch('DELETE', url)\n .then(\n (response) => {\n this._checkInputStateChangeResponse(input, response, 'STOP');\n this.list();\n return response;\n },\n (error) => {\n UserNotification.error(`Error stopping input '${input.title}': ${error}`, `Input '${input.title}' could not be stopped`);\n },\n );\n },\n});\n\nexport default InputStatesStore;\n","const _isWildCard = permissionSet => (permissionSet.indexOf('*') > -1);\nconst _permissionPredicate = (permissionSet, p) => {\n if ((permissionSet.indexOf(p) > -1) || (permissionSet.indexOf('*') > -1)) {\n return true;\n }\n\n const permissionParts = p.split(':');\n if (permissionParts.length >= 2) {\n const first = permissionParts[0];\n const second = `${permissionParts[0]}:${permissionParts[1]}`;\n return (permissionSet.indexOf(first) > -1)\n || (permissionSet.indexOf(`${first}:*`) > -1)\n || (permissionSet.indexOf(second) > -1)\n || (permissionSet.indexOf(`${second}:*`) > -1);\n }\n return (permissionSet.indexOf(`${p}:*`) > -1);\n};\n\nconst PermissionsMixin = {\n isPermitted(possessedPermissions, requiredPermissions) {\n if (!requiredPermissions || requiredPermissions.length === 0) {\n return true;\n }\n if (!possessedPermissions) {\n return false;\n }\n if (_isWildCard(possessedPermissions)) {\n return true;\n }\n if (requiredPermissions.every) {\n return requiredPermissions.every(p => _permissionPredicate(possessedPermissions, p));\n }\n return _permissionPredicate(possessedPermissions, requiredPermissions);\n },\n\n isAnyPermitted(possessedPermissions, requiredPermissions) {\n if (!requiredPermissions || requiredPermissions.length === 0) {\n return true;\n }\n if (!possessedPermissions) {\n return false;\n }\n if (_isWildCard(possessedPermissions)) {\n return true;\n }\n return requiredPermissions.some(p => _permissionPredicate(possessedPermissions, p));\n },\n};\n\nexport default PermissionsMixin;\n","import Reflux from 'reflux';\n\nconst CollectorsActions = Reflux.createActions({\n getCollector: { asyncResult: true },\n all: { asyncResult: true },\n list: { asyncResult: true },\n create: { asyncResult: true },\n update: { asyncResult: true },\n delete: { asyncResult: true },\n copy: { asyncResult: true },\n validate: { asyncResult: true },\n});\n\nexport default CollectorsActions;\n","import Reflux from 'reflux';\n\nconst AlertNotificationsActions = Reflux.createActions({\n available: { asyncResult: true },\n listAll: { asyncResult: true },\n testAlert: { asyncResult: true },\n});\n\nexport default AlertNotificationsActions;\n","import { max } from 'lodash';\nimport ContentPack from 'logic/content-packs/ContentPack';\n\nexport default class ContentPackRevisions {\n constructor(contentPackRevision) {\n this._value = Object.keys(contentPackRevision).reduce((acc, rev) => {\n const contentPack = contentPackRevision[rev];\n /* eslint-disable-next-line no-return-assign */\n acc[parseInt(rev, 10)] = ContentPack.fromJSON(contentPack);\n return acc;\n }, {});\n }\n\n get latestRevision() {\n return max(this.revisions);\n }\n\n get revisions() {\n return Object.keys(this._value).map(rev => parseInt(rev, 10));\n }\n\n get latest() {\n return this._value[this.latestRevision];\n }\n\n get contentPacks() {\n return Object.values(this._value);\n }\n\n createNewVersionFromRev(rev) {\n return this.contentPack(parseInt(rev, 10)).toBuilder()\n .rev(this.latestRevision + 1)\n .build();\n }\n\n contentPack(revision) {\n return this._value[revision];\n }\n}\n","/*!\n * jQuery UI Draggable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Draggable\n//>>group: Interactions\n//>>description: Enables dragging functionality for any element.\n//>>docs: http://api.jqueryui.com/draggable/\n//>>demos: http://jqueryui.com/draggable/\n//>>css.structure: ../../themes/base/draggable.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../data\",\n\t\t\t\"../plugin\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../safe-blur\",\n\t\t\t\"../scroll-parent\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// Callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif ( this.options.helper === \"original\" ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\t\tif ( this.options.addClasses ) {\n\t\t\tthis._addClass( \"ui-draggable\" );\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._removeHandleClassName();\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar o = this.options;\n\n\t\t// Among others, prevent a drag on a resizable-handle\n\t\tif ( this.helper || o.disabled ||\n\t\t\t\t$( event.target ).closest( \".ui-resizable-handle\" ).length > 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle( event );\n\t\tif ( !this.handle ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._blurActiveElement( event );\n\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\n\n\t\treturn true;\n\n\t},\n\n\t_blockFrames: function( selector ) {\n\t\tthis.iframeBlocks = this.document.find( selector ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"
    \" )\n\t\t\t\t.css( \"position\", \"absolute\" )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.outerWidth( iframe.outerWidth() )\n\t\t\t\t.outerHeight( iframe.outerHeight() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_blurActiveElement: function( event ) {\n\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\ttarget = $( event.target );\n\n\t\t// Don't blur if the event occurred on an element that is within\n\t\t// the currently focused element\n\t\t// See #10527, #12472\n\t\tif ( target.closest( activeElement ).length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur any element that currently has focus, see #4261\n\t\t$.ui.safeBlur( activeElement );\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\tthis._addClass( this.helper, \"ui-draggable-dragging\" );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent( true );\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.hasFixedAncestor = this.helper.parents().filter( function() {\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\n\t\t\t} ).length > 0;\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.positionAbs = this.element.offset();\n\t\tthis._refreshOffsets( event );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif ( this._trigger( \"start\", event ) === false ) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\t// Execute the drag once - this causes the helper not to be visible before getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event, true );\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has started\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart( this, event );\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_refreshOffsets: function( event ) {\n\t\tthis.offset = {\n\t\t\ttop: this.positionAbs.top - this.margins.top,\n\t\t\tleft: this.positionAbs.left - this.margins.left,\n\t\t\tscroll: false,\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset()\n\t\t};\n\n\t\tthis.offset.click = {\n\t\t\tleft: event.pageX - this.offset.left,\n\t\t\ttop: event.pageY - this.offset.top\n\t\t};\n\t},\n\n\t_mouseDrag: function( event, noPropagation ) {\n\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.hasFixedAncestor ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif ( !noPropagation ) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif ( this._trigger( \"drag\", event, ui ) === false ) {\n\t\t\t\tthis._mouseUp( new $.Event( \"mouseup\", event ) );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\tdropped = $.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif ( this.dropped ) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ( ( this.options.revert === \"invalid\" && !dropped ) ||\n\t\t\t\t( this.options.revert === \"valid\" && dropped ) ||\n\t\t\t\tthis.options.revert === true || ( $.isFunction( this.options.revert ) &&\n\t\t\t\tthis.options.revert.call( this.element, dropped ) )\n\t\t) {\n\t\t\t$( this.helper ).animate(\n\t\t\t\tthis.originalPosition,\n\t\t\t\tparseInt( this.options.revertDuration, 10 ),\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( that._trigger( \"stop\", event ) !== false ) {\n\t\t\t\t\t\tthat._clear();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tif ( this._trigger( \"stop\", event ) !== false ) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis._unblockFrames();\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has stopped\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop( this, event );\n\t\t}\n\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\n\t\tif ( this.handleElement.is( event.target ) ) {\n\n\t\t\t// The interaction is over; whether or not the click resulted in a drag,\n\t\t\t// focus the element\n\t\t\tthis.element.trigger( \"focus\" );\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call( this, event );\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.helper.is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: this.element[ 0 ] } ) );\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function( event ) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.handleElement = this.options.handle ?\n\t\t\tthis.element.find( this.options.handle ) : this.element;\n\t\tthis._addClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis._removeClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelperIsFunction = $.isFunction( o.helper ),\n\t\t\thelper = helperIsFunction ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ?\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\n\t\t\t\t\tthis.element );\n\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\thelper.appendTo( ( o.appendTo === \"parent\" ?\n\t\t\t\tthis.element[ 0 ].parentNode :\n\t\t\t\to.appendTo ) );\n\t\t}\n\n\t\t// Http://bugs.jqueryui.com/ticket/9446\n\t\t// a helper function can return the original element\n\t\t// which wouldn't have been set to relative in _create\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\n\t\tif ( helper[ 0 ] !== this.element[ 0 ] &&\n\t\t\t\t!( /(fixed|absolute)/ ).test( helper.css( \"position\" ) ) ) {\n\t\t\thelper.css( \"position\", \"absolute\" );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_setPositionRelative: function() {\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\n\t\t}\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( $.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== document &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.element.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.element.css( \"marginTop\" ), 10 ) || 0 ),\n\t\t\tright: ( parseInt( this.element.css( \"marginRight\" ), 10 ) || 0 ),\n\t\t\tbottom: ( parseInt( this.element.css( \"marginBottom\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar isUserScrollable, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relativeContainer = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() +\n\t\t\t\t\t( $( window ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.width -\n\t\t\t\tthis.margins.left -\n\t\t\t\tthis.margins.right,\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.height -\n\t\t\t\tthis.margins.top -\n\t\t\t\tthis.margins.bottom\n\t\t];\n\t\tthis.relativeContainer = c;\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relativeContainer ) {\n\t\t\t\t\tco = this.relativeContainer.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.offset.click.left < containment[ 0 ] ) {\n\t\t\t\t\tpageX = containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < containment[ 1 ] ) {\n\t\t\t\t\tpageY = containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > containment[ 2 ] ) {\n\t\t\t\t\tpageX = containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > containment[ 3 ] ) {\n\t\t\t\t\tpageY = containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid\n\t\t\t\t// argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -\n\t\t\t\t\tthis.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;\n\t\t\t\tpageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||\n\t\t\t\t\ttop - this.offset.click.top > containment[ 3 ] ) ?\n\t\t\t\t\t\ttop :\n\t\t\t\t\t\t( ( top - this.offset.click.top >= containment[ 1 ] ) ?\n\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;\n\n\t\t\t\tleft = o.grid[ 0 ] ? this.originalPageX +\n\t\t\t\t\tMath.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :\n\t\t\t\t\tthis.originalPageX;\n\t\t\t\tpageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||\n\t\t\t\t\tleft - this.offset.click.left > containment[ 2 ] ) ?\n\t\t\t\t\t\tleft :\n\t\t\t\t\t\t( ( left - this.offset.click.left >= containment[ 0 ] ) ?\n\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis._removeClass( this.helper, \"ui-draggable-dragging\" );\n\t\tif ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function( type, event, ui ) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\t\t\tui.offset = this.positionAbs;\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n} );\n\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.sortables = [];\n\t\t$( draggable.options.connectToSortable ).each( function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\n\t\t\tif ( sortable && !sortable.options.disabled ) {\n\t\t\t\tdraggable.sortables.push( sortable );\n\n\t\t\t\t// RefreshPositions is called at drag start to refresh the containerCache\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\n\t\t\t\t// with any changes that might have happened on the page since initialization.\n\t\t\t\tsortable.refreshPositions();\n\t\t\t\tsortable._trigger( \"activate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tstop: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.cancelHelperRemoval = false;\n\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar sortable = this;\n\n\t\t\tif ( sortable.isOver ) {\n\t\t\t\tsortable.isOver = 0;\n\n\t\t\t\t// Allow this sortable to handle removing the helper\n\t\t\t\tdraggable.cancelHelperRemoval = true;\n\t\t\t\tsortable.cancelHelperRemoval = false;\n\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\n\t\t\t\t// as this also handles revert (#9675) since the draggable\n\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\tsortable._storedCSS = {\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\n\t\t\t\t};\n\n\t\t\t\tsortable._mouseStop( event );\n\n\t\t\t\t// Once drag has ended, the sortable should return to using\n\t\t\t\t// its original helper, not the shared helper from draggable\n\t\t\t\tsortable.options.helper = sortable.options._helper;\n\t\t\t} else {\n\n\t\t\t\t// Prevent this Sortable from removing the helper.\n\t\t\t\t// However, don't set the draggable to remove the helper\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\n\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( event, ui, draggable ) {\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tsortable = this;\n\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\tsortable.positionAbs = draggable.positionAbs;\n\t\t\tsortable.helperProportions = draggable.helperProportions;\n\t\t\tsortable.offset.click = draggable.offset.click;\n\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\n\t\t\t\tinnermostIntersecting = true;\n\n\t\t\t\t$.each( draggable.sortables, function() {\n\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\n\n\t\t\t\t\tif ( this !== sortable &&\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( innermostIntersecting ) {\n\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\n\t\t\t\t// so that the move-in stuff gets fired only once.\n\t\t\t\tif ( !sortable.isOver ) {\n\t\t\t\t\tsortable.isOver = 1;\n\n\t\t\t\t\t// Store draggable's parent in case we need to reappend to it later.\n\t\t\t\t\tdraggable._parent = ui.helper.parent();\n\n\t\t\t\t\tsortable.currentItem = ui.helper\n\t\t\t\t\t\t.appendTo( sortable.element )\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\n\n\t\t\t\t\t// Store helper option to later restore it\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\n\n\t\t\t\t\tsortable.options.helper = function() {\n\t\t\t\t\t\treturn ui.helper[ 0 ];\n\t\t\t\t\t};\n\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\n\t\t\t\t\tsortable._mouseCapture( event, true );\n\t\t\t\t\tsortable._mouseStart( event, true, true );\n\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\n\t\t\t\t\t// modify necessary variables to reflect the changes\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\n\t\t\t\t\t\tsortable.offset.parent.left;\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\n\t\t\t\t\t\tsortable.offset.parent.top;\n\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\n\t\t\t\t\tdraggable.dropped = sortable.element;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Hack so receive/update callbacks work (mostly)\n\t\t\t\t\tdraggable.currentItem = draggable.element;\n\t\t\t\t\tsortable.fromOutside = draggable;\n\t\t\t\t}\n\n\t\t\t\tif ( sortable.currentItem ) {\n\t\t\t\t\tsortable._mouseDrag( event );\n\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\n\t\t\t\t\t// element has now become. (#8809)\n\t\t\t\t\tui.position = sortable.position;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\n\t\t\t\t// the helper by using cancelHelperRemoval.\n\t\t\t\tif ( sortable.isOver ) {\n\n\t\t\t\t\tsortable.isOver = 0;\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\n\t\t\t\t\tsortable.options.revert = false;\n\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\n\t\t\t\t\tsortable._mouseStop( event, true );\n\n\t\t\t\t\t// Restore sortable behaviors that were modfied\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\n\n\t\t\t\t\tif ( sortable.placeholder ) {\n\t\t\t\t\t\tsortable.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Restore and recalculate the draggable's offset considering the sortable\n\t\t\t\t\t// may have modified them in unexpected ways. (#8809, #10669)\n\t\t\t\t\tui.helper.appendTo( draggable._parent );\n\t\t\t\t\tdraggable._refreshOffsets( event );\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\n\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\n\t\t\t\t\tdraggable.dropped = false;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"cursor\" ) ) {\n\t\t\to._cursor = t.css( \"cursor\" );\n\t\t}\n\t\tt.css( \"cursor\", o.cursor );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._cursor ) {\n\t\t\t$( \"body\" ).css( \"cursor\", o._cursor );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif ( t.css( \"opacity\" ) ) {\n\t\t\to._opacity = t.css( \"opacity\" );\n\t\t}\n\t\tt.css( \"opacity\", o.opacity );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._opacity ) {\n\t\t\t$( ui.helper ).css( \"opacity\", o._opacity );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( !i.scrollParentNotHidden ) {\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\n\t\t}\n\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&\n\t\t\t\ti.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( i, event );\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$( o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap )\n\t\t\t.each( function() {\n\t\t\t\tvar $t = $( this ),\n\t\t\t\t\t$o = $t.offset();\n\t\t\t\tif ( this !== i.element[ 0 ] ) {\n\t\t\t\t\ti.snapElements.push( {\n\t\t\t\t\t\titem: this,\n\t\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor ( i = inst.snapElements.length - 1; i >= 0; i-- ) {\n\n\t\t\tl = inst.snapElements[ i ].left - inst.margins.left;\n\t\t\tr = l + inst.snapElements[ i ].width;\n\t\t\tt = inst.snapElements[ i ].top - inst.margins.top;\n\t\t\tb = t + inst.snapElements[ i ].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||\n\t\t\t\t\t!$.contains( inst.snapElements[ i ].item.ownerDocument,\n\t\t\t\t\tinst.snapElements[ i ].item ) ) {\n\t\t\t\tif ( inst.snapElements[ i ].snapping ) {\n\t\t\t\t\t( inst.options.snap.release &&\n\t\t\t\t\t\tinst.options.snap.release.call(\n\t\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )\n\t\t\t\t\t\t) );\n\t\t\t\t}\n\t\t\t\tinst.snapElements[ i ].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( o.snapMode !== \"inner\" ) {\n\t\t\t\tts = Math.abs( t - y2 ) <= d;\n\t\t\t\tbs = Math.abs( b - y1 ) <= d;\n\t\t\t\tls = Math.abs( l - x2 ) <= d;\n\t\t\t\trs = Math.abs( r - x1 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = ( ts || bs || ls || rs );\n\n\t\t\tif ( o.snapMode !== \"outer\" ) {\n\t\t\t\tts = Math.abs( t - y1 ) <= d;\n\t\t\t\tbs = Math.abs( b - y2 ) <= d;\n\t\t\t\tls = Math.abs( l - x1 ) <= d;\n\t\t\t\trs = Math.abs( r - x2 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {\n\t\t\t\t( inst.options.snap.snap &&\n\t\t\t\t\tinst.options.snap.snap.call(\n\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\t$.extend( inst._uiHash(), {\n\t\t\t\t\t\t\tsnapItem: inst.snapElements[ i ].item\n\t\t\t\t\t\t} ) ) );\n\t\t\t}\n\t\t\tinst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );\n\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray( $( o.stack ) ).sort( function( a, b ) {\n\t\t\t\treturn ( parseInt( $( a ).css( \"zIndex\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( b ).css( \"zIndex\" ), 10 ) || 0 );\n\t\t\t} );\n\n\t\tif ( !group.length ) { return; }\n\n\t\tmin = parseInt( $( group[ 0 ] ).css( \"zIndex\" ), 10 ) || 0;\n\t\t$( group ).each( function( i ) {\n\t\t\t$( this ).css( \"zIndex\", min + i );\n\t\t} );\n\t\tthis.css( \"zIndex\", ( min + group.length ) );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"zIndex\" ) ) {\n\t\t\to._zIndex = t.css( \"zIndex\" );\n\t\t}\n\t\tt.css( \"zIndex\", o.zIndex );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif ( o._zIndex ) {\n\t\t\t$( ui.helper ).css( \"zIndex\", o._zIndex );\n\t\t}\n\t}\n} );\n\nreturn $.ui.draggable;\n\n} ) );\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]') {\n obj = [];\n obj = obj.concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","import SearchError from './SearchError';\n\nexport default class ResultWindowLimitError extends SearchError {\n constructor(error, result) {\n super(error);\n const { result_window_limit: resultWindowLimit } = error;\n this._state = {\n ...this._state,\n description: ResultWindowLimitError._extendDescription(result, this.description, this.queryId, this.searchTypeId, resultWindowLimit),\n result_window_limit: resultWindowLimit,\n };\n }\n\n static _extendDescription(result, description, queryId, searchTypeId, resultWindowLimit) {\n const pageSize = ResultWindowLimitError._getPageSizeFromResult(result, queryId, searchTypeId);\n const validPages = Math.floor(resultWindowLimit / pageSize);\n const validPagesMessage = `Elasticsearch limits the search result to ${resultWindowLimit} messages. With a page size of ${pageSize} messages, you can use the first ${validPages} pages.`;\n return `${validPagesMessage} ${description}`;\n }\n\n static _getPageSizeFromResult(result, queryId, searchTypeId) {\n const searchTypes = result.results[queryId].query.search_types;\n const searchType = searchTypes.find(({ id }) => id === searchTypeId);\n return searchType.limit;\n }\n\n get resultWindowLimit() { return this._state.result_window_limit; }\n}\n","module.exports = (__webpack_require__(\"jaIgFIJB\"))(339);","import Reflux from 'reflux';\nimport URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport UserNotification from 'util/UserNotification';\nimport ApiRoutes from 'routing/ApiRoutes';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst AlarmCallbackHistoryActions = ActionsProvider.getActions('AlarmCallbackHistory');\n\nconst AlarmCallbackHistoryStore = Reflux.createStore({\n listenables: [AlarmCallbackHistoryActions],\n histories: undefined,\n\n getInitialState() {\n return { histories: this.histories };\n },\n\n list(streamId, alertId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.AlarmCallbackHistoryApiController.list(streamId, alertId).url);\n const promise = fetch('GET', url)\n .then(\n (response) => {\n this.histories = response.histories;\n this.trigger({ histories: this.histories });\n return this.histories;\n },\n (error) => {\n UserNotification.error(`Fetching notification history for alert '${alertId}' failed with status: ${error}`,\n 'Could not retrieve notification history.');\n },\n );\n\n AlarmCallbackHistoryActions.list.promise(promise);\n },\n});\n\nexport default AlarmCallbackHistoryStore;\n","import Reflux from 'reflux';\n\nimport StoreProvider from 'injection/StoreProvider';\n\nimport ActionsProvider from 'injection/ActionsProvider';\n\nconst MetricsStore = StoreProvider.getStore('Metrics');\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\nconst GlobalThroughputStore = Reflux.createStore({\n listenables: [],\n metrics: {\n input: 'org.graylog2.throughput.input.1-sec-rate',\n output: 'org.graylog2.throughput.output.1-sec-rate',\n loading: true,\n },\n\n init() {\n MetricsActions.addGlobal(this.metrics.input);\n MetricsActions.addGlobal(this.metrics.output);\n this.listenTo(MetricsStore, this.updateMetrics);\n setInterval(MetricsActions.list, this.INTERVAL);\n },\n INTERVAL: 2000,\n updateMetrics(update) {\n if (!update.metrics) {\n return;\n }\n const throughput = {\n input: 0,\n output: 0,\n loading: false,\n };\n Object.keys(update.metrics).forEach((nodeId) => {\n const inputMetric = update.metrics[nodeId][this.metrics.input];\n const outputMetric = update.metrics[nodeId][this.metrics.output];\n if (inputMetric) {\n throughput.input += inputMetric.metric.value;\n }\n if (outputMetric) {\n throughput.output += outputMetric.metric.value;\n }\n });\n\n this.trigger({ throughput: throughput });\n },\n});\n\nexport default GlobalThroughputStore;\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an