{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","CoveoJsSearch.Searchbox.min.js","webpack:///webpack/bootstrap 1dcfc08b56cfe796882a?2013","./src/SearchboxIndex.ts","webpack:///(webpack)/buildin/amd-define.js?0bba","webpack:///./src/BaseModules.ts?81e3","webpack:///./src/misc/PromisesShim.ts?2dd1","webpack:///./src/misc/CustomEventPolyfill.ts?2316","webpack:///./src/misc/Version.ts?7c9b","webpack:///./src/rest/SearchEndpoint.ts?ebfb","webpack:///./src/rest/EndpointCaller.ts?9524","webpack:///./src/misc/Logger.ts?812a","webpack:///./src/misc/Assert.ts?ab17","webpack:///./src/utils/Utils.ts?4fa9","webpack:///./~/underscore/underscore.js?31a5","webpack:///./src/utils/TimeSpanUtils.ts?7e8d","webpack:///./src/utils/DeviceUtils.ts?da24","webpack:///./src/ui/ResponsiveComponents/ResponsiveComponents.ts?27f2","webpack:///./src/utils/JQueryutils.ts?4df1","webpack:///./src/rest/AjaxError.ts?9fd8","webpack:///./src/rest/MissingAuthenticationError.ts?847b","webpack:///./src/utils/QueryUtils.ts?2baa","webpack:///./src/rest/QueryError.ts?b451","webpack:///./src/ExternalModulesShim.ts?c85a","webpack:///./~/modal-box/bin/ModalBox.min.js?f25b","webpack:///./~/coveomagicbox/bin/MagicBox.min.js?52c3","webpack:///./lib/l10n/l10n.min.js?69b3","webpack:///./src/strings/DefaultLanguage.ts?3429","webpack:///./lib/globalize/globalize.min.js?780d*","webpack:///./lib/globalize/globalize.min.js?b89d","webpack:///./src/MiscModules.ts?f1fb","webpack:///./src/misc/Cache.ts?344e","webpack:///./src/misc/Defer.ts?85dc","webpack:///./src/misc/L10N.ts?d79f","webpack:///./src/misc/Options.ts?167a","webpack:///./src/strings/Strings.ts?298f","webpack:///./src/RestModules.ts?3eeb","webpack:///./src/rest/AnalyticsEndpoint.ts?d5bd","webpack:///./src/utils/CookieUtils.ts?567c","webpack:///./src/EventsModules.ts?ea18","webpack:///./src/events/AdvancedSearchEvents.ts?fdef","webpack:///./src/events/AnalyticsEvents.ts?a536","webpack:///./src/events/BreadcrumbEvents.ts?0f5b","webpack:///./src/events/DebugEvents.ts?502a","webpack:///./src/events/ImageResultListEvents.ts?e7fd","webpack:///./src/events/InitializationEvents.ts?4eb6","webpack:///./src/events/OmniboxEvents.ts?4bc0","webpack:///./src/events/PreferencesPanelEvents.ts?3a7a","webpack:///./src/events/QueryEvents.ts?adeb","webpack:///./src/events/ResultListEvents.ts?4069","webpack:///./src/events/ResultLayoutEvents.ts?e3a2","webpack:///./src/events/SearchAlertEvents.ts?f78f","webpack:///./src/events/SettingsEvents.ts?6f8d","webpack:///./src/events/SliderEvents.ts?3778","webpack:///./src/events/StandaloneSearchInterfaceEvents.ts?443d","webpack:///./src/UtilsModules.ts?0b52","webpack:///./src/utils/ColorUtils.ts?b3ee","webpack:///./src/utils/CurrencyUtils.ts?b430","webpack:///./src/utils/DateUtils.ts?f2a9","webpack:///./src/utils/Dom.ts?2cc3","webpack:///./src/utils/DomUtils.ts?1c03","webpack:///./src/ui/Misc/FileTypes.ts?463e","webpack:///./src/utils/StringUtils.ts?a4a1","webpack:///./~/latinize/latinize.js?f146","webpack:///./src/utils/EmailUtils.ts?a8cc","webpack:///./src/utils/HashUtils.ts?8529","webpack:///./src/utils/HighlightUtils.ts?fdc3","webpack:///./src/utils/HtmlUtils.ts?36bc","webpack:///./src/utils/KeyboardUtils.ts?dfdd","webpack:///./src/utils/LocalStorageUtils.ts?d196","webpack:///./src/utils/OSUtils.ts?1e1b","webpack:///./src/utils/PopupUtils.ts?d693","webpack:///./src/utils/StreamHighlightUtils.ts?5a26","webpack:///./src/ControllersModules.ts?5ebc","webpack:///./src/controllers/QueryController.ts?3762","webpack:///./src/ui/Base/RootComponent.ts?7b17","webpack:///./src/ui/Base/BaseComponent.ts?c9e3","webpack:///./src/ui/Base/QueryBuilder.ts?f1dc","webpack:///./src/ui/Base/ExpressionBuilder.ts?f51e","webpack:///./src/rest/SearchEndpointWithDefaultCallOptions.ts?27b4","webpack:///./~/coveo.analytics/dist/index.js?b1ae","webpack:///./~/coveo.analytics/dist/analytics.js?7921","webpack:///./~/coveo.analytics/dist/history.js?eb31","webpack:///./~/coveo.analytics/dist/storage.js?c4d3","webpack:///./~/coveo.analytics/dist/detector.js?a6ce","webpack:///./~/coveo.analytics/dist/cookieutils.js?32cb","webpack:///./~/whatwg-fetch/fetch.js?1c20","webpack:///./~/coveo.analytics/dist/simpleanalytics.js?aaa7","webpack:///./~/coveo.analytics/dist/objectassign.js?d342","webpack:///./~/coveo.analytics/dist/utils.js?b2da","webpack:///./~/coveo.analytics/dist/donottrack.js?3cfd","webpack:///./src/controllers/FacetQueryController.ts?9ae2","webpack:///./src/ui/Facet/FacetSearchParameters.ts?fafe","webpack:///./src/ui/Facet/FacetUtils.ts?0e7e","webpack:///./src/controllers/FacetRangeQueryController.ts?4e0f","webpack:///./src/controllers/FacetSliderQueryController.ts?5a80","webpack:///./src/controllers/HierarchicalFacetQueryController.ts?f80c","webpack:///./src/controllers/HistoryController.ts?81ae","webpack:///./src/models/Model.ts?2199","webpack:///./src/controllers/LocalStorageHistoryController.ts?fe30","webpack:///./src/ModelsModules.ts?7f2a","webpack:///./src/models/QueryStateModel.ts?f2ee","webpack:///./src/models/ComponentOptionsModel.ts?b90a","webpack:///./src/models/ComponentStateModel.ts?a4c3","webpack:///./src/UIBaseModules.ts?e0b5","webpack:///./src/ui/Base/RegisteredNamedMethods.ts?f718","webpack:///./src/ui/Base/Initialization.ts?7693","webpack:///./src/ui/Base/Component.ts?2a0e","webpack:///./src/ui/SearchInterface/SearchInterface.ts?fe45","webpack:///./src/ui/Base/ComponentOptions.ts?7973","webpack:///./src/ui/Templates/TemplateCache.ts?9176","webpack:///./src/ui/Templates/Template.ts?b639","webpack:///./src/ui/Templates/TemplateConditionEvaluator.ts?5003","webpack:///./src/ui/Templates/TemplateFieldsEvaluator.ts?fcab","webpack:///./src/ui/Templates/UnderscoreTemplate.ts?fb59","webpack:///./src/ui/Templates/TemplateFromAScriptTag.ts?c1a6","webpack:///./src/ui/Templates/DefaultResultTemplate.ts?b52f","webpack:///./src/ui/Templates/HtmlTemplate.ts?d1db","webpack:///./src/ui/Templates/TemplateList.ts?e0bf","webpack:///./src/ui/Analytics/NoopAnalyticsClient.ts?2a0e","webpack:///./src/ui/Debug/Debug.ts?438d","webpack:///./~/fastclick/lib/fastclick.js?f1d9","webpack:///./~/jstimezonedetect/dist/jstz.js?f0b7","webpack:///(webpack)/buildin/amd-options.js?5f71","webpack:///./src/misc/SentryLogger.ts?a1ee","webpack:///./src/ui/Analytics/AnalyticsActionListMeta.ts?1d51","webpack:///./src/ui/Analytics/Analytics.ts?a7b9","webpack:///./src/ui/Analytics/LiveAnalyticsClient.ts?817b","webpack:///./src/ui/Analytics/PendingSearchEvent.ts?772e","webpack:///./src/rest/APIAnalyticsBuilder.ts?3797","webpack:///./src/ui/Analytics/PendingSearchAsYouTypeSearchEvent.ts?e507","webpack:///./src/ui/Analytics/MultiAnalyticsClient.ts?83e1","webpack:///./src/ui/Recommendation/Recommendation.ts?73b3","webpack:///./src/events/QuickviewEvents.ts?03e4","webpack:///./src/ui/ResponsiveComponents/ResponsiveRecommendation.ts?c308","webpack:///./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts?e15f","webpack:///./src/ui/Tab/Tab.ts?5cfe","webpack:///./src/ui/ResponsiveComponents/ResponsiveTabs.ts?f479","webpack:///./src/utils/EventsUtils.ts?aee8","webpack:///./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts?8ff3","webpack:///./src/ui/ResponsiveComponents/ResponsiveDropdown/RecommendationDropdownContent.ts?d59e","webpack:///./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownContent.ts?462b","webpack:///./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownHeader.ts?280e","webpack:///./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdown.ts?02ed","webpack:///./src/ui/FacetSlider/FacetSlider.ts?976b","webpack:///./src/ui/Misc/Slider.ts?fa54","webpack:///./~/d3-scale/build/d3-scale.js?7e54","webpack:///./~/d3-array/build/d3-array.js?d8bc","webpack:///./~/d3-collection/build/d3-collection.js?6c84","webpack:///./~/d3-interpolate/build/d3-interpolate.js?f797","webpack:///./~/d3-color/build/d3-color.js?f7c1","webpack:///./~/d3-format/build/d3-format.js?fb4a","webpack:///./~/d3-time/build/d3-time.js?70a1","webpack:///./~/d3-time-format/build/d3-time-format.js?bb40","webpack:///./~/d3/build/d3.js?1499","webpack:///./src/ui/ResponsiveComponents/ResponsiveFacets.ts?7a51","webpack:///./src/ui/Facet/Facet.ts?4eb7","webpack:///./src/ui/Facet/FacetValues.ts?2a33","webpack:///./src/ui/Facet/FacetSearch.ts?1280","webpack:///./src/ui/Facet/FacetValueElement.ts?54cf","webpack:///./src/ui/Facet/ValueElement.ts?706b","webpack:///./src/ui/Facet/ValueElementRenderer.ts?cefa","webpack:///./src/ui/Facet/FacetValuesOrder.ts?b89c","webpack:///./src/ui/Facet/FacetSettings.ts?86bc","webpack:///./src/ui/Facet/FacetSort.ts?64e9","webpack:///./src/ui/Facet/FacetValuesList.ts?298a","webpack:///./src/ui/Facet/FacetHeader.ts?6bc6","webpack:///./src/ui/Facet/BreadcrumbValueElement.ts?27a4","webpack:///./src/ui/Facet/BreadcrumbValuesList.ts?a8ad","webpack:///./src/ui/Facet/FacetSearchValuesList.ts?1ddb","webpack:///./src/ui/Facet/OmniboxValueElement.ts?0a51","webpack:///./src/ui/Facet/OmniboxValuesList.ts?c456","webpack:///./src/ui/Analytics/RecommendationAnalyticsClient.ts?9378","webpack:///./src/ui/Base/CoveoJQuery.ts?464a","webpack:///./src/TemplatesModules.ts?348c","webpack:///./src/ui/Templates/TemplateHelpers.ts?8909","webpack:///./src/ui/Templates/CoreHelpers.ts?3c29","webpack:///./src/ui/Icon/Icon.ts?95e4","webpack:///./src/ui/Quickview/Quickview.ts?0067","webpack:///./src/ui/Quickview/DefaultQuickviewTemplate.ts?ca63","webpack:///./src/ui/Quickview/QuickviewDocument.ts?3253","webpack:///./src/ui/ResultList/ResultList.ts?b63f","webpack:///./src/ui/Templates/DefaultRecommendationTemplate.ts?8c6e","webpack:///./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts?1634","webpack:///./src/ui/Querybox/Querybox.ts?c246","webpack:///./src/ui/Querybox/QueryboxQueryParameters.ts?2ba3","webpack:///./src/ui/SearchButton/SearchButton.ts?9e41","webpack:///./src/ui/Searchbox/Searchbox.ts?2a27","webpack:///./src/ui/Omnibox/Omnibox.ts?a863","webpack:///./src/ui/Omnibox/FieldAddon.ts?e792","webpack:///./src/ui/Omnibox/QueryExtensionAddon.ts?ffad","webpack:///./src/ui/Omnibox/RevealQuerySuggestAddon.ts?37d9","webpack:///./src/ui/Omnibox/OldOmniboxAddon.ts?0e5e","webpack:///./src/ui/Misc/SuggestionForOmnibox.ts?c160","webpack:///./src/ui/AnalyticsSuggestions/AnalyticsSuggestions.ts?f86f","webpack:///./src/ui/FieldSuggestions/FieldSuggestions.ts?4053","webpack:///./src/ui/Base/CoveoUnderscore.ts?c8d4","webpack:///./src/SwapVar.ts?ac32"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","__export","hasOwnProperty","Object","defineProperty","value","CoveoUnderscore_1","_","underscoreInstance","Analytics_1","Analytics","AnalyticsSuggestions_1","AnalyticsSuggestions","FieldSuggestions_1","FieldSuggestions","Omnibox_1","Omnibox","Querybox_1","Querybox","SearchButton_1","SearchButton","Searchbox_1","Searchbox","SwapVar_1","swapVar","Error","PromisesShim_1","shim","CustomEventPolyfill_1","customEventPolyfill","Version_1","version","SearchEndpoint_1","SearchEndpoint","DefaultLanguage_1","defaultLanguage","DefaultLanguage_2","setLanguageAfterPageLoaded","Promise","prototype","callback","constructor","then","resolve","reason","rethrowError","self","err","setTimeout","onFulfilled","onRejected","arguments","length","apply","window","CustomEvent","event","params","bubbles","cancelable","detail","undefined","customEvent","document","createEvent","initCustomEvent","Event","lib","product","supportedApiVersion","path","target","key","descriptor","originalMethod","nbParams","args","_i","uri","buildBaseUri","url","queryString","requestData","method","responseType","errorsAsSuccess","result","alertsPath","buildSearchAlertsUri","requestDataType","type","met","resp","accessTokenInUrl","tokenKey","buildAccessToken","concat","__decorate","decorators","desc","d","r","getOwnPropertyDescriptor","Reflect","decorate","i","EndpointCaller_1","Logger_1","Assert_1","AjaxError_1","MissingAuthenticationError_1","QueryUtils_1","QueryError_1","Utils_1","DefaultSearchEndpointOptions","queryStringArguments","anonymous","isGuestUser","options","_this","Assert","exists","restUri","defaultOptions","location","href","indexOf","Utils","isNonEmptyString","accessToken","extend","isDebugArgumentPresent","onUnload","handleUnload","addEventListener","logger","Logger","createEndpointCaller","configureSampleEndpoint","otherOptions","isUseLocalArgumentPresent","endpoints","searchAlertsUri","configureSampleEndpointV2","optionsOPtions","organizationID","viewAllContent","configureCloudEndpoint","organization","token","organizationId","merged","mergeConfigOptions","removeUndefinedConfigOption","configureCloudV2Endpoint","configureOnPremiseEndpoint","config","each","keys","first","second","reset","setRequestModifier","requestModifier","caller","getBaseUri","getBaseAlertsUri","getAuthenticationProviderUri","provider","returnUri","message","callOptions","callParams","buildBaseQueryString","encodeURIComponent","join","isJsonp","useJsonp","search","query","info","performOneCall","results","apiVersion","error","isNullOrEmptyString","searchUid","QueryUtils","createGuid","setIndexAndUidOnQueryResults","pipeline","splitTestRun","setTermsToHighlightOnQueryResults","getExportToExcelLink","numberOfResults","buildCompleteQueryString","push","getRawDataStream","documentUniqueId","dataStreamType","buildViewAsHtmlQueryString","getViewAsDatastreamUri","documentUniqueID","queryObject","getDocument","getDocumentText","data","content","getDocumentHtml","q","getViewAsHtmlUri","uniq","batchFieldValues","request","values","listFieldValues","listFields","fields","extensions","rateDocument","ratingRequest","tagDocument","taggingRequest","getRevealQuerySuggest","follow","listSubscriptions","page","reject","currentListSubscriptions","e","status","updateSubscription","subscription","deleteSubscription","logError","sentryLog","nuke","removeEventListener","EndpointCaller","test","isRedirecting","isString","removeTrailingSlash","name_1","isArray","authentication","context","fieldsToInclude","map","field","replace","uniqueId","requestedOutputSize","toString","contentType","autoRenewToken","response","clientDuration","duration","canRenewAccessToken","isAccessTokenExpiredStatus","statusCode","renewAccessToken","handleErrorResponse","defer","errorResponse","isMissingAuthenticationProviderStatus","MissingAuthenticationError","QueryError","AjaxError","isFunction","hasTrailingSlash","substr","charAt","XMLHttpRequestStatus","TimeSpanUtils_1","DeviceUtils_1","JQueryutils_1","XMLHttpRequest","OPENED","HEADERS_RECEIVED","DONE","requestInfo","begun","Date","headers","buildRequestHeaders","trace","urlObject","parseURL","isLocalHost","hostname","currentPort","port","protocol","isSamePort","isCrossOrigin","callUsingAjaxJsonP","isCORSSupported","callUsingXMLHttpRequest","isXDomainRequestSupported","callUsingXDomainRequest","xmlHttpRequest","getXmlHttpRequest","sent","onreadystatechange","ev","readyState","isSuccessHttpStatus","DeviceUtils","getDeviceName","JSON","parse","tryParseResponseText","responseText","getResponseHeader","handleSuccessfulResponseThatMightBeAnError","handleError","withCredentials","headerValue","headerKey","setRequestHeader","send","stringify","convertJsonToFormBody","convertJsonToQueryString","open","combineUrlAndQueryString","xDomainRequest","XDomainRequest","onload","onerror","ontimeout","onprogress","jQuery","JQueryUtils","getJQuery","check","ajax","dataType","success","timeout","JSONP_ERROR_TIMEOUT","createElement","newXmlHttpRequest","json","isObject","isErrorResponseBody","handleSuccess","querySuccess","TimeSpan","fromDates","getMilliseconds","queryError","questionMark","match","ex","username","password","btoa","console","log","debug","warn","assert","clear","count","dir","dirxml","group","groupCollapsed","groupEnd","msIsIndependentlyComposed","element","profile","profileEnd","select","time","timeEnd","owner","stuff","level","TRACE","DEBUG","INFO","WARN","ERROR","executionTime","enable","disable","NOTHING","__extends","extendStatics","setPrototypeOf","__proto__","Array","b","__","create","fail","failureHandler","condition","isUndefined","obj","isNotUndefined","isNull","isNotNull","isNullOrUndefined","doesNotExists","stringStartsWith","str","start","isNumber","isLargerThan","expected","actual","isLargerOrEqualsThan","isSmallerThan","isSmallerOrEqualsThan","PreconditionFailedException","_super","isCoveoFieldRegex","toNotNullString","anyTypeToString","isEmptyString","startWith","slice","isNonEmptyArray","isEmptyArray","isHtmlElement","HTMLElement","nodeType","parseIntIfNotUndefined","parseInt","parseFloatIfNotUndefined","parseFloat","round","num","decimals","Math","pow","parseBooleanIfNotUndefined","toLowerCase","trim","encodeHTMLEntities","rawStr","ret","unshift","charCodeAt","decodeHTMLEntities","rawString","dec","String","fromCharCode","arrayEqual","array1","array2","sameOrder","isEqual","arrays_1","all","array","difference","objectEqual","obj1","obj2","isCoveoField","escapeRegexCharacter","getCaseInsensitiveProperty","object","name","lowerCaseName_1","matchingKey","find","getFieldValue","parts","split","reverse","raw","pop","throttle","func","wait","previous","later","leading","getTime","now","remaining","clearTimeout","trailing","extendDeep","src","toReturn","getQueryStringValue","RegExp","isValidUrl","regexp","debounce","stackTraceTimeout","readCookie","nameEQ","ca","cookie","substring","toDashCase","camelCased","g","parseXml","xml","DOMParser","parseFromString","ActiveXObject","xmlDoc","async","loadXML","copyObject","copyObjectAttributes","attributes","contains","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","createReduce","iterator","iteratee","memo","index","currentKey","optimizeCb","isArrayLike","createPredicateIndexFinder","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","max","min","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","proto","ObjProto","prop","has","previousUnderscore","ArrayProto","FuncProto","Function","nativeIsArray","nativeKeys","nativeBind","bind","nativeCreate","Ctor","_wrapped","VERSION","argCount","other","collection","accumulator","identity","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","baseCreate","MAX_ARRAY_INDEX","forEach","collect","reduce","foldl","inject","reduceRight","foldr","detect","findIndex","findKey","filter","list","negate","every","some","any","includes","include","fromIndex","guard","invoke","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","findLastIndex","low","high","mid","floor","lastIndexOf","range","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","TypeError","bound","partial","boundArgs","position","bindAll","memoize","hasher","cache","address","delay","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extendOwn","assign","pick","oiteratee","omit","defaults","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","isEmpty","isElement","Int8Array","isFinite","noConflict","constant","noop","propertyOf","matches","accum","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","testRegexp","replaceRegexp","string","escape","unescape","fallback","idCounter","prefix","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","argument","chain","instance","_chain","mixin","valueOf","toJSON","isMilliseconds","milliseconds","getSeconds","getMinutes","getHours","getDays","getWeeks","getHHMMSS","hoursString","minutesString","secondsString","hours","minutes","seconds","hhmmss","from","to","ResponsiveComponents_1","mobile","navigator","userAgent","isAndroid","isIos","deviceName","isIE8or9","myNav","isMobileDevice","isSmallScreenWidth","ResponsiveComponents","MEDIUM_SCREEN_WIDTH","SMALL_SCREEN_WIDTH","windoh","setSmallScreenWidth","width","getMediumScreenWidth","smallScreenWidth","setMediumScreenWidth","getSmallScreenWidth","mediumScreenWidth","body","clientWidth","isMediumScreenWidth","isLargeScreenWidth","isInstanceOfJQuery","jq","isInstanceOfJqueryEvent","isMissingAuthentication","guid","crypto","generateWithCrypto","generateWithRandom","v","buf","Uint16Array","getRandomValues","S4","setStateObjectOnQueryResults","state","setPropertyOnResults","setStateObjectOnQueryResult","setPropertyOnResult","setSearchInterfaceObjectOnQueryResult","searchInterface","queryUid","firstResult","termsToHighlight","phrasesToHighlight","splitFlags","flags","delimiter","isAttachment","containsAttachment","hasHTMLVersion","hasThumbnail","hasExcerpt","excerpt","getAuthor","getUriHash","getObjectType","getCollection","getSource","getLanguage","getPermanentId","fieldValue","fieldUsed","permanentId","quoteAndEscapeIfNeeded","isAtomicString","isRangeString","isRangeWithoutOuterBoundsString","quoteAndEscape","escapeString","buildFieldExpression","operator","buildFieldNotEqualExpression","mergeQueryString","queryStringPosition","mergePath","urlSplit","afterOneLoop","childResults","child","parentResult","getUrlParameter","decodeURIComponent","exec","isStratusAgnosticField","fieldToVerify","fieldToMatch","checkForSystem","matchFieldToVerify","matchFieldToMatch","queryExecutionReport","executionReport","ModalBox","MagicBox","LocaleString","Coveo","o","appendChild","fullscreen","s","title","innerHTML","titleClose","t","validation","parentElement","removeChild","splice","querySelector","u","textContent","buttons","OK","APPLY","YES","NO","CANCEL","overlayClose","modalBox","overlay","close","BUTTON","expression","subResults","parent","isSuccess","findParent","findAll","resultAt","getExpect","getBestExpect","getHumanReadableExpect","getHumanReadable","toHtmlElement","setAttribute","createTextNode","clean","ExpressionConstant","Result","ExpressionEndOfInput","EndOfInputResult","failAttempt","OptionResult","RefResult","grammar","ExpressionFunction","ExpressionList","ExpressionOptions","ref","occurrence","getExpression","parseOnce","parseMany","ExpressionRef","ExpressionRegExp","expressions","addExpressions","addExpression","buildExpression","buildStringExpression","isRegExp","stringMatch","spliter","Number","Grammar","onchange","magicBox","hasFocus","justPressedTab","underlay","highlightContainer","ghostTextContainer","$$","insertBefore","spellcheck","setupHandler","updateInput","setCursor","getValue","updateHighlight","empty","updateWordCompletion","wordCompletion","updateScroll","scrollWidth","style","visibility","scrollLeft","scrollTop","updateScrollDefer","requestAnimationFrame","setResult","setWordCompletion","focus","createTextRange","move","selectionStart","setSelectionRange","getCursor","onblur","onfocus","onkeydown","keydown","onkeyup","keyup","onclick","onchangecursor","oncut","onInputChange","onpaste","blur","keyCode","which","hasSuggestions","preventDefault","stopPropagation","tabPress","ontabpress","showSuggestion","getWordCompletion","InputManager","selectableClass","selectedClass","on","handleMouseOver","handleMouseOut","parents","hasClass","addSelectedClass","el","relatedTarget","removeClass","moveDown","getElementsByClassName","addClass","returnMoved","moveUp","trigger","mergeSuggestions","pendingSuggestion","updateSuggestions","dom","html","separator","onSelect","suggestion","SuggestionsManager","highlightText","innerText","nodeListToArray","firstChild","show","display","hide","toggle","is","tagName","getAttribute","closest","traverseAncestorForClass","querySelectorAll","findClass","findId","getElementById","toggleClass","getClass","CLASS_NAME_REGEX","detach","handlers","eventHandle","fn","one","off","dispatchEvent","ONLY_WHITE_SPACE_REGEX","isDescendant","parentNode","Dom","basicExpressions","grammars","Start","Expressions","ExpressionsList","Expression","BasicExpression","OptionalSpaces","Spaces","Empty","ExpressionsGrammar","Grammars","notWordStart","notInWord","Basic","DoubleQuoted","NotDoubleQuote","SingleQuoted","NotSingleQuote","Word","SubExpression","DateYear","DateMonth","DateDay","DateRange","DateRelative","DateRelativeTerm","DateRelativeNegative","DateRelativeNegativeRef","Field","FieldQuery","FieldQueryOperation","FieldQueryValue","FieldQueryNumeric","FieldSimpleQuery","FieldName","FieldOperator","FieldOperatorNumeric","FieldValue","FieldValueNumeric","FieldValueString","FieldValueList","FieldValueStringList","FieldValueSeparator","FieldValueNotQuoted","NumberRange","QueryExtension","QueryExtensionName","QueryExtensionArguments","QueryExtensionArgumentList","QueryExtensionArgument","QueryExtensionArgumentName","QueryExtensionArgumentValue","NestedQuery","NestedField","Complete","lastSuggestions","inline","displayedResult","clearDom","inputManager","setText","onselect","getFirstSuggestionText","suggestionsManager","selectableSuggestionClass","selectedSuggestionClass","suggestionTimeout","getResult","getDisplayedResult","resultAtCursor","clearSuggestion","onsubmit","onmove","focusOnSuggestion","getSuggestions","updateSuggestion","onsuggestions","getText","onclear","Instance","f","h","y","w","L","language","userLanguage","T","M","getElementsByTagName","O","X","x","toLocaleString","locales","merge","dict","en","Globalize","culture","obj3","attrname","Unknown","And","Authenticating","Clear","CompleteQuery","Exclude","EnterTag","Next","Last","Link","Or","Previous","QueryDidntMatchAnyDocuments","QueryException","Me","Remove","Search","SearchFor","ShareQuery","Preferences","LinkOpeningSettings","Reauthenticate","ResultsFilteringExpression","FiltersInYourPreferences","Create","SearchIn","Seconds","ShowingResultsOf","SwitchTo","Unexclude","ClearAllFilters","SkipLogin","LoginInProgress","Login","GetStarted","More","NMore","Less","Settings","Score","ScoreDescription","Occurrences","OccurrencesDescription","Label","Of","LabelDescription","Value","ValueDescription","AlphaAscending","AlphaDescending","ChiSquare","Nosort","NosortDescription","RelativeFrequency","RelativeFrequencyDescription","DateDistribution","Custom","CustomDescription","ComputedField","Ascending","Descending","noResultFor","autoCorrectedQueryTo","didYouMean","SuggestedResults","SuggestedQueries","MostRelevantItems","AllItems","ShowLess","ShowMore","HideFacet","ShowFacet","AndOthers","Others","MostRelevantPosts","CompleteThread","ShowCompleteThread","ShowOnlyTopMatchingPosts","MostRelevantReplies","AllConversation","ShowAllConversation","ShowAllReplies","ShowOnlyMostRelevantReplies","Close","Open","OpenInOutlookWhenPossible","AlwaysOpenInNewWindow","Quickview","NoQuickview","ErrorReport","OopsError","ProblemPersists","GoBack","Reset","Retry","MoreInfo","Username","Password","PostedBy","CannotConnect","BadUserPass","PleaseEnterYourCredentials","PleaseEnterYourSearchPage","Collapse","Collapsable","Expand","Today","Yesterday","Tomorrow","Duration","IndexDuration","ProxyDuration","ClientDuration","Unavailable","Reply","ReplyAll","Forward","From","Caption","Tab","Tabs","EnterExpressionName","EnterExpressionToFilterWith","SelectTab","SelectAll","PageUrl","ErrorSavingToDevice","ErrorReadingFromDevice","AppIntro","TryDemo","ContactUs","NewToCoveo","LetUsHelpGetStarted","LikesThis","CannotConnectSearchPage","AreYouSureDeleteFilter","OnlineHelp","Done","SaveFacetState","ClearFacetState","DisplayingTheOnlyMessage","NoNetworkConnection","UnknownConnection","EthernetConnection","WiFi","CELL","CELL_2G","CELL_3G","CELL_4G","Relevance","Amount","QueryExceptionNoException","QueryExceptionInvalidSyntax","QueryExceptionInvalidCustomField","QueryExceptionInvalidDate","QueryExceptionInvalidExactPhrase","QueryExceptionInvalidDateOp","QueryExceptionInvalidNear","QueryExceptionInvalidWeightedNear","QueryExceptionInvalidTerm","QueryExceptionTooManyTerms","QueryExceptionWildcardTooGeneral","QueryExceptionInvalidSortField","QueryExceptionInvalidSmallStringOp","QueryExceptionRequestedResultsMax","QueryExceptionAggregatedMirrorDead","QueryExceptionAggregatedMirrorQueryTimeOut","QueryExceptionAggregatedMirrorInvalidBuildNumber","QueryExceptionAggregatedMirrorCannotConnect","QueryExceptionNotEnoughLeadingCharsWildcard","QueryExceptionSecurityInverterNotFound","QueryExceptionSecurityInverterAccessDenied","QueryExceptionAggregatedMirrorCannotImpersonate","QueryExceptionUnexpected","QueryExceptionAccessDenied","QueryExceptionSuperUserTokenInvalid","QueryExceptionSuperUserTokenExpired","QueryExceptionLicenseQueriesExpired","QueryExceptionLicenseSuperUserTokenNotSupported","QueryExceptionInvalidSession","QueryExceptionInvalidDocument","QueryExceptionSearchDisabled","FileType","ShowAttachment","OnFeed","Author","NoTitle","CurrentSelections","AllContent","CancelLastAction","SearchTips","CheckSpelling","TryUsingFewerKeywords","SelectFewerFilters","Document","Time","StartDate","StartTime","DurationTitle","UserQuery","ShowUserActions","NoData","EventType","GoToFullSearch","GoToEdition","RemoveContext","BoxAttachToCase","AttachToCase","Attach","Attached","Detach","Details","AdditionalFilters","SelectNonContextualSearch","CopyPasteToSupport","FollowQueryDescription","SearchAlerts_Panel","SearchAlerts_PanelDescription","SearchAlerts_PanelNoSearchAlerts","SearchAlerts_Fail","SearchAlerts_Type","SearchAlerts_Content","SearchAlerts_Actions","EmptyQuery","SearchAlerts_Type_followQuery","SearchAlerts_Type_followDocument","SearchAlerts_unFollowing","SearchAlerts_follow","SearchAlerts_followed","SearchAlerts_followQuery","Subscription_StopFollowingQuery","SearchAlerts_Frequency","SubscriptionsManageSubscriptions","SubscriptionsMessageFollowQuery","SubscriptionsMessageFollow","Expiration","Monthly","Daily","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","NextDay","LastDay","StartTypingCaseForSuggestions","ExportToExcel","ExportToExcelDescription","CaseCreationNoResults","SortBy","BoxCreateArticle","Facets","AdvancedSearch","Keywords","AllTheseWords","ExactPhrase","AnyOfTheseWords","NoneOfTheseWords","Anytime","InTheLast","Days","Months","Between","Language","Size","AtLeast","AtMost","Contains","DoesNotContain","Matches","Bytes","card","table","ResultLinks","EnableQuerySyntax","On","Off","Automatic","ResultsPerPage","objecttype_people","objecttype_message","objecttype_feed","objecttype_thread","objecttype_file","objecttype_board","objecttype_category","objecttype_account","objecttype_annotation","objecttype_campaign","objecttype_case","objecttype_contentversion","objecttype_contact","objecttype_contract","objecttype_event","objecttype_email","objecttype_goal","objecttype_incident","objecttype_invoice","objecttype_lead","objecttype_list","objecttype_solution","objecttype_task","objecttype_user","objecttype_attachment","objecttype_casecomment","objecttype_opportunity","objecttype_opportunityproduct","objecttype_feeditem","objecttype_feedcomment","objecttype_note","objecttype_product","objecttype_partner","objecttype_queueitem","objecttype_quote","objecttype_salesliterature","objecttype_salesorder","objecttype_service","objecttype_socialprofile","objecttype_kbdocumentation","objecttype_kbtechnicalarticle","objecttype_kbsolution","objecttype_kbknowledgearticle","objecttype_kbattachment","objecttype_kbarticle","objecttype_kbarticlecomment","objecttype_knowledgearticle","filetype_box user","filetype_html","filetype_wiki","filetype_webscraperwebpage","filetype_image","filetype_folder","filetype_txt","filetype_zip","filetype_olefile","filetype_gmailmessage","filetype_pdf","filetype_swf","filetype_xml","filetype_vsd","filetype_svg","filetype_svm","filetype_rssitem","filetype_doc","filetype_docx","filetype_xls","filetype_ppt","filetype_video","filetype_youtube","filetype_saleforceitem","filetype_dynamicscrmitem","filetype_salesforceitem","filetype_odt","filetype_cfpage","filetype_cfcomment","filetype_cfspace","filetype_cfblogentry","filetype_confluencespace","filetype_exchangemessage","filetype_exchangeappointment","filetype_exchangenote","filetype_exchangetask","filetype_exchangeperson","filetype_activedirperson","filetype_exchangeactivity","filetype_exchangecalendarmessage","filetype_exchangedocument","filetype_exchangedsn","filetype_exchangefreebusy","filetype_exchangegroup","filetype_exchangerssfeed","filetype_exchangejunkmessage","filetype_exchangeofficecom","filetype_lithiummessage","filetype_lithiumthread","filetype_lithiumboard","filetype_lithiumcategory","filetype_lithiumcommunity","filetype_spportal","filetype_spsite","filetype_spuserprofile","filetype_sparea","filetype_spannouncement","filetype_spannouncementlist","filetype_spcontact","filetype_spcontactlist","filetype_spcustomlist","filetype_spdiscussionboard","filetype_spdiscussionboardlist","filetype_spdocumentlibrarylist","filetype_spevent","filetype_speventlist","filetype_spformlibrarylist","filetype_spissue","filetype_spissuelist","filetype_splink","filetype_splinklist","filetype_sppicturelibrarylist","filetype_spsurvey","filetype_spsurveylist","filetype_sptask","filetype_sptasklist","filetype_spagenda","filetype_spagendalist","filetype_spattendee","filetype_spattendeelist","filetype_spcustomgridlist","filetype_spdecision","filetype_spdecisionlist","filetype_spobjective","filetype_spobjectivelist","filetype_sptextbox","filetype_sptextboxlist","filetype_spthingstobring","filetype_spthingstobringlist","filetype_sparealisting","filetype_spmeetingserie","filetype_spmeetingserielist","filetype_spsitedirectory","filetype_spsitedirectorylist","filetype_spdatasource","filetype_spdatasourcelist","filetype_splisttemplatecataloglist","filetype_spwebpartcataloglist","filetype_spwebtemplatecataloglist","filetype_spworkspacepagelist","filetype_spunknownlist","filetype_spadministratortask","filetype_spadministratortasklist","filetype_spareadocumentlibrarylist","filetype_spblogcategory","filetype_spblogcategorylist","filetype_spblogcomment","filetype_spblogcommentlist","filetype_spblogpost","filetype_spblogpostlist","filetype_spdataconnectionlibrarylist","filetype_spdistributiongroup","filetype_spdistributiongrouplist","filetype_spipfslist","filetype_spkeyperformanceindicator","filetype_spkeyperformanceindicatorlist","filetype_splanguagesandtranslator","filetype_splanguagesandtranslatorlist","filetype_spmasterpagescataloglist","filetype_spnocodeworkflowlibrarylist","filetype_spprojecttask","filetype_spprojecttasklist","filetype_sppublishingpageslibrarylist","filetype_spreportdocumentlibrarylist","filetype_spreportlibrarylist","filetype_spslidelibrarylist","filetype_sptab","filetype_sptablist","filetype_sptranslationmanagementlibrarylist","filetype_spuserinformation","filetype_spuserinformationlist","filetype_spwikipagelibrarylist","filetype_spworkflowhistory","filetype_spworkflowhistorylist","filetype_spworkflowprocess","filetype_spworkflowprocesslist","filetype_sppublishingimageslibrarylist","filetype_spcirculation","filetype_spcirculationlist","filetype_spdashboardslibrarylist","filetype_spdataconnectionforperformancepointlibrarylist","filetype_sphealthreport","filetype_sphealthreportlist","filetype_sphealthrule","filetype_sphealthrulelist","filetype_spimedictionary","filetype_spimedictionarylist","filetype_spperformancepointcontent","filetype_spperformancepointcontentlist","filetype_spphonecallmemo","filetype_spphonecallmemolist","filetype_sprecordlibrarylist","filetype_spresource","filetype_spresourcelist","filetype_spprocessdiagramslibrarylist","filetype_spsitethemeslibrarylist","filetype_spsolutionslibrarylist","filetype_spwfpublibrarylist","filetype_spwhereabout","filetype_spwhereaboutlist","filetype_spdocumentlink","filetype_spdocumentset","filetype_spmicrofeedpost","filetype_spmicrofeedlist","filetype_splistfolder","filetype_youtubevideo","filetype_youtubeplaylistitem","global","k","z","F","A","init","cultures","cultureSelector","englishName","nativeName","isRTL","numberFormat","pattern",",",".","groupSizes","+","-","NaN","negativeInfinity","positiveInfinity","percent","symbol","currency","calendars","standard","/",":","firstDay","days","namesAbbr","namesShort","months","AM","PM","eras","twoDigitYearMax","patterns","D","Y","S","messages","calendar","getFullYear","getMonth","getDate","convert","setFullYear","I","fromGregorian","lastIndex","C","H","getDay","N","monthsGenitive","getTimezoneOffset","abs","toUpperCase","_upperDays","_upperMonths","_upperMonthsGen","_parseRegExp","regExp","groups","$","P","G","E","toGregorian","setHours","findClosestCulture","format","localize","addCultureInfo","lang","pri","parseDate","Cache_1","Cache","Defer_1","Defer","L10N_1","L10N","Options_1","Options","Strings_1","onEmpty","get","code","arm","flush","popOne","fun","ExternalModulesShim_1","pluralRegex","singularRegex","formatPlSn","arg","isPlural","provided","mergeDeep","AnalyticsEndpoint_1","AnalyticsEndpoint","CookieUtils_1","endpointCallerOptions","endpointCaller","getCurrentVisitId","visitId","getCurrentVisitIdPromise","buildAnalyticsUrl","getFromService","sendSearchEvents","searchEvents","sendToService","sendDocumentViewEvent","documentViewEvent","sendCustomEvent","getTopQueries","paramName","serviceUrl","CUSTOM_ANALYTICS_VERSION","DEFAULT_ANALYTICS_VERSION","Cookie","pendingRequest","res","handleAnalyticsEventResponse","paramsToSend","access_token","visitorId","VISITOR_COOKIE_TIME","DEFAULT_ANALYTICS_URI","expiration","domain","domainParts","date","expires","host","setTime","toGMTString","shift","erase","AdvancedSearchEvents_1","AdvancedSearchEvents","AnalyticsEvents_1","AnalyticsEvents","BreadcrumbEvents_1","BreadcrumbEvents","DebugEvents_1","DebugEvents","ImageResultListEvents_1","ImageResultListEvents","InitializationEvents_1","InitializationEvents","OmniboxEvents_1","OmniboxEvents","PreferencesPanelEvents_1","PreferencesPanelEvents","QueryEvents_1","QueryEvents","ResultListEvents_1","ResultListEvents","ResultLayoutEvents_1","ResultLayoutEvents","SearchAlertEvents_1","SearchAlertsEvents","SettingsEvents_1","SettingsEvents","SliderEvents_1","SliderEvents","StandaloneSearchInterfaceEvents_1","StandaloneSearchInterfaceEvents","buildingAdvancedSearch","executeAdvancedSearch","searchEvent","changeAnalyticsCustomData","populateBreadcrumb","clearBreadcrumb","redrawBreadcrumb","showDebugPanel","imageResultsLayoutComplete","beforeInitialization","afterComponentsInitialization","restoreHistoryState","afterInitialization","populateOmnibox","openOmnibox","closeOmnibox","populateOmniboxSuggestions","omniboxPreprocessResultForQuery","savePreferences","exitPreferencesWithoutSave","newQuery","buildingQuery","doneBuildingQuery","duringQuery","duringFetchMoreQuery","fetchMoreSuccess","deferredQuerySuccess","preprocessResults","preprocessMoreResults","noResults","buildingCallOptions","newResultsDisplayed","newResultDisplayed","openQuickview","changeLayout","populateResultLayout","searchAlertsCreated","searchAlertsDeleted","searchAlertsFail","searchAlertsPopulateMessage","settingsPopulateMenu","startSlide","duringSlide","endSlide","graphValueSelected","beforeRedirect","ColorUtils_1","ColorUtils","CurrencyUtils_1","CurrencyUtils","DateUtils_1","DateUtils","Dom_1","DomUtils_1","DomUtils","EmailUtils_1","EmailUtils","HashUtils_1","HashUtils","HighlightUtils_1","HighlightUtils","StringAndHoles","HtmlUtils_1","HTMLUtils","KeyboardUtils_1","KEYBOARD","KeyboardUtils","LocalStorageUtils_1","LocalStorageUtils","OSUtils_1","OSUtils","OS_NAME","PopupUtils_1","PopupUtils","StreamHighlightUtils_1","StreamHighlightUtils","StringUtils_1","StringUtils","hsvToRgb","rgbToHsv","DefaultCurrencyToStringOptions","currencyToString","backup","DefaultDateToStringOptions","useTodayYesterdayAndTomorrow","useWeekdayIfThisWeek","omitYearIfCurrentOne","useLongDateFormat","includeTimeIfToday","includeTimeIfThisWeek","alwaysIncludeTime","predefinedFormat","convertFromJsonDateIfNeeded","isDate","dateForQuery","padNumber","keepOnlyDatePart","offsetDateByDays","newDate","setDate","dateToString","dateOnly","today","tomorrow","yesterday","isThisWeek","timeToString","dateTimeToString","datePart","dateWithoutTime","monthToString","month","isValid","timeBetween","toFixed","children","elem","attr","append","css","getComputedStyle","getPropertyValue","txt","nodeList","arr","remove","visible","selector","parentsFound","parentFound","siblings","sibs","currentElement","nextSibling","swtch","setHtml","insertAfter","refNode","prepend","toPrepend","modifiedType","processEventTypeToBeJQueryCompatible","modifiedType_1","once_1","idx_1","found","handlerObj","event_1","node","replaceWith","otherElem","offsetParent","parentOffset","top","borderTopWidth","borderLeftWidth","marginTop","marginLeft","documentElement","getClientRects","rect","getBoundingClientRect","height","doc","ownerDocument","docElem","pageYOffset","clientTop","pageXOffset","clientLeft","offsetWidth","offsetHeight","deep","cloneNode","current","Win","win","innerHeight","innerWidth","scrollY","supportPageOffset","isCSS1Compat","scrollX","compatMode","Doc","scrollHeight","FileTypes_1","getPopUpCloseButton","captionForClose","captionForReminder","container","closeButton","iconClose","closeReminder","outerHTML","getBasicLoadingAnimation","loadDotClass","highlightElement","initialString","valueToSearch","regex","latinize","firstChar","lastChar","htmlEncode","getLoadingSpinner","loading","getModalBoxHeader","header","getQuickviewHeader","bindings","showDate","fileType","FileTypes","icon","fileTypeCaptions","objecttype","filetype","getFileType","caption","variableValue","localizedString","getFileTypeCaptions","strings","javascriptEncode","div","toAdd","removeMiddle","toRemove","regexEncode","stringToRegex","ignoreAccent","encoded","char","accented","wildcardsToRegex","getHighlights","strToSearch","regexToFind","dataHighlightGroupTerm","indexes","desiredMatch","undesiredMatch","encodeCarriageReturn","strToEncode","equalsCaseInsensitive","str1","str2","hashCode","hash","capitalizeFirstLetter","B","J","K","Q","R","U","V","W","Z","__WEBPACK_AMD_DEFINE_FACTORY__","characters","Á","Ă","Ắ","Ặ","Ằ","Ẳ","Ẵ","Ǎ","Â","Ấ","Ậ","Ầ","Ẩ","Ẫ","Ä","Ǟ","Ȧ","Ǡ","Ạ","Ȁ","À","Ả","Ȃ","Ā","Ą","Å","Ǻ","Ḁ","Ⱥ","Ã","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ḃ","Ḅ","Ɓ","Ḇ","Ƀ","Ƃ","Ć","Č","Ç","Ḉ","Ĉ","Ċ","Ƈ","Ȼ","Ď","Ḑ","Ḓ","Ḋ","Ḍ","Ɗ","Ḏ","Dz","Dž","Đ","Ƌ","DZ","DŽ","É","Ĕ","Ě","Ȩ","Ḝ","Ê","Ế","Ệ","Ề","Ể","Ễ","Ḙ","Ë","Ė","Ẹ","Ȅ","È","Ẻ","Ȇ","Ē","Ḗ","Ḕ","Ę","Ɇ","Ẽ","Ḛ","Ꝫ","Ḟ","Ƒ","Ǵ","Ğ","Ǧ","Ģ","Ĝ","Ġ","Ɠ","Ḡ","Ǥ","Ḫ","Ȟ","Ḩ","Ĥ","Ⱨ","Ḧ","Ḣ","Ḥ","Ħ","Í","Ĭ","Ǐ","Î","Ï","Ḯ","İ","Ị","Ȉ","Ì","Ỉ","Ȋ","Ī","Į","Ɨ","Ĩ","Ḭ","Ꝺ","Ꝼ","Ᵹ","Ꞃ","Ꞅ","Ꞇ","Ꝭ","Ĵ","Ɉ","Ḱ","Ǩ","Ķ","Ⱪ","Ꝃ","Ḳ","Ƙ","Ḵ","Ꝁ","Ꝅ","Ĺ","Ƚ","Ľ","Ļ","Ḽ","Ḷ","Ḹ","Ⱡ","Ꝉ","Ḻ","Ŀ","Ɫ","Lj","Ł","LJ","Ḿ","Ṁ","Ṃ","Ɱ","Ń","Ň","Ņ","Ṋ","Ṅ","Ṇ","Ǹ","Ɲ","Ṉ","Ƞ","Nj","Ñ","NJ","Ó","Ŏ","Ǒ","Ô","Ố","Ộ","Ồ","Ổ","Ỗ","Ö","Ȫ","Ȯ","Ȱ","Ọ","Ő","Ȍ","Ò","Ỏ","Ơ","Ớ","Ợ","Ờ","Ở","Ỡ","Ȏ","Ꝋ","Ꝍ","Ō","Ṓ","Ṑ","Ɵ","Ǫ","Ǭ","Ø","Ǿ","Õ","Ṍ","Ṏ","Ȭ","Ƣ","Ꝏ","Ɛ","Ɔ","Ȣ","Ṕ","Ṗ","Ꝓ","Ƥ","Ꝕ","Ᵽ","Ꝑ","Ꝙ","Ꝗ","Ŕ","Ř","Ŗ","Ṙ","Ṛ","Ṝ","Ȑ","Ȓ","Ṟ","Ɍ","Ɽ","Ꜿ","Ǝ","Ś","Ṥ","Š","Ṧ","Ş","Ŝ","Ș","Ṡ","Ṣ","Ṩ","ß","Ť","Ţ","Ṱ","Ț","Ⱦ","Ṫ","Ṭ","Ƭ","Ṯ","Ʈ","Ŧ","Ɐ","Ꞁ","Ɯ","Ʌ","Ꜩ","Ú","Ŭ","Ǔ","Û","Ṷ","Ü","Ǘ","Ǚ","Ǜ","Ǖ","Ṳ","Ụ","Ű","Ȕ","Ù","Ủ","Ư","Ứ","Ự","Ừ","Ử","Ữ","Ȗ","Ū","Ṻ","Ų","Ů","Ũ","Ṹ","Ṵ","Ꝟ","Ṿ","Ʋ","Ṽ","Ꝡ","Ẃ","Ŵ","Ẅ","Ẇ","Ẉ","Ẁ","Ⱳ","Ẍ","Ẋ","Ý","Ŷ","Ÿ","Ẏ","Ỵ","Ỳ","Ƴ","Ỷ","Ỿ","Ȳ","Ɏ","Ỹ","Ź","Ž","Ẑ","Ⱬ","Ż","Ẓ","Ȥ","Ẕ","Ƶ","IJ","Œ","ᴀ","ᴁ","ʙ","ᴃ","ᴄ","ᴅ","ᴇ","ꜰ","ɢ","ʛ","ʜ","ɪ","ʁ","ᴊ","ᴋ","ʟ","ᴌ","ᴍ","ɴ","ᴏ","ɶ","ᴐ","ᴕ","ᴘ","ʀ","ᴎ","ᴙ","ꜱ","ᴛ","ⱻ","ᴚ","ᴜ","ᴠ","ᴡ","ʏ","ᴢ","á","ă","ắ","ặ","ằ","ẳ","ẵ","ǎ","â","ấ","ậ","ầ","ẩ","ẫ","ä","ǟ","ȧ","ǡ","ạ","ȁ","à","ả","ȃ","ā","ą","ᶏ","ẚ","å","ǻ","ḁ","ⱥ","ã","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ḃ","ḅ","ɓ","ḇ","ᵬ","ᶀ","ƀ","ƃ","ɵ","ć","č","ç","ḉ","ĉ","ɕ","ċ","ƈ","ȼ","ď","ḑ","ḓ","ȡ","ḋ","ḍ","ɗ","ᶑ","ḏ","ᵭ","ᶁ","đ","ɖ","ƌ","ı","ȷ","ɟ","ʄ","dz","dž","é","ĕ","ě","ȩ","ḝ","ê","ế","ệ","ề","ể","ễ","ḙ","ë","ė","ẹ","ȅ","è","ẻ","ȇ","ē","ḗ","ḕ","ⱸ","ę","ᶒ","ɇ","ẽ","ḛ","ꝫ","ḟ","ƒ","ᵮ","ᶂ","ǵ","ğ","ǧ","ģ","ĝ","ġ","ɠ","ḡ","ᶃ","ǥ","ḫ","ȟ","ḩ","ĥ","ⱨ","ḧ","ḣ","ḥ","ɦ","ẖ","ħ","ƕ","í","ĭ","ǐ","î","ï","ḯ","ị","ȉ","ì","ỉ","ȋ","ī","į","ᶖ","ɨ","ĩ","ḭ","ꝺ","ꝼ","ᵹ","ꞃ","ꞅ","ꞇ","ꝭ","ǰ","ĵ","ʝ","ɉ","ḱ","ǩ","ķ","ⱪ","ꝃ","ḳ","ƙ","ḵ","ᶄ","ꝁ","ꝅ","ĺ","ƚ","ɬ","ľ","ļ","ḽ","ȴ","ḷ","ḹ","ⱡ","ꝉ","ḻ","ŀ","ɫ","ᶅ","ɭ","ł","lj","ſ","ẜ","ẛ","ẝ","ḿ","ṁ","ṃ","ɱ","ᵯ","ᶆ","ń","ň","ņ","ṋ","ȵ","ṅ","ṇ","ǹ","ɲ","ṉ","ƞ","ᵰ","ᶇ","ɳ","ñ","nj","ó","ŏ","ǒ","ô","ố","ộ","ồ","ổ","ỗ","ö","ȫ","ȯ","ȱ","ọ","ő","ȍ","ò","ỏ","ơ","ớ","ợ","ờ","ở","ỡ","ȏ","ꝋ","ꝍ","ⱺ","ō","ṓ","ṑ","ǫ","ǭ","ø","ǿ","õ","ṍ","ṏ","ȭ","ƣ","ꝏ","ɛ","ᶓ","ɔ","ᶗ","ȣ","ṕ","ṗ","ꝓ","ƥ","ᵱ","ᶈ","ꝕ","ᵽ","ꝑ","ꝙ","ʠ","ɋ","ꝗ","ŕ","ř","ŗ","ṙ","ṛ","ṝ","ȑ","ɾ","ᵳ","ȓ","ṟ","ɼ","ᵲ","ᶉ","ɍ","ɽ","ↄ","ꜿ","ɘ","ɿ","ś","ṥ","š","ṧ","ş","ŝ","ș","ṡ","ṣ","ṩ","ʂ","ᵴ","ᶊ","ȿ","ɡ","ᴑ","ᴓ","ᴝ","ť","ţ","ṱ","ț","ȶ","ẗ","ⱦ","ṫ","ṭ","ƭ","ṯ","ᵵ","ƫ","ʈ","ŧ","ᵺ","ɐ","ᴂ","ǝ","ᵷ","ɥ","ʮ","ʯ","ᴉ","ʞ","ꞁ","ɯ","ɰ","ᴔ","ɹ","ɻ","ɺ","ⱹ","ʇ","ʌ","ʍ","ʎ","ꜩ","ú","ŭ","ǔ","û","ṷ","ü","ǘ","ǚ","ǜ","ǖ","ṳ","ụ","ű","ȕ","ù","ủ","ư","ứ","ự","ừ","ử","ữ","ȗ","ū","ṻ","ų","ᶙ","ů","ũ","ṹ","ṵ","ᵫ","ꝸ","ⱴ","ꝟ","ṿ","ʋ","ᶌ","ⱱ","ṽ","ꝡ","ẃ","ŵ","ẅ","ẇ","ẉ","ẁ","ⱳ","ẘ","ẍ","ẋ","ᶍ","ý","ŷ","ÿ","ẏ","ỵ","ỳ","ƴ","ỷ","ỿ","ȳ","ẙ","ɏ","ỹ","ź","ž","ẑ","ʑ","ⱬ","ż","ẓ","ȥ","ẕ","ᵶ","ᶎ","ʐ","ƶ","ɀ","ff","ffi","ffl","fi","fl","ij","œ","st","ₐ","ₑ","ᵢ","ⱼ","ₒ","ᵣ","ᵤ","ᵥ","ₓ","Ё","Й","Ц","У","К","Е","Н","Г","Ш","Щ","З","Х","Ъ","ё","й","ц","у","к","е","н","г","ш","щ","з","х","ъ","Ф","Ы","В","А","П","Р","О","Л","Д","Ж","Э","ф","ы","в","а","п","р","о","л","д","ж","э","Я","Ч","С","М","И","Т","Ь","Б","Ю","я","ч","с","м","и","т","ь","б","ю","splitSemicolonSeparatedListOfEmailAddresses","addresses","addressesAsList","emailAddressesToHyperlinks","companyDomain","me","lengthLimit","truncateName","hyperlinks","emailArray","parseEmail","email","domainIndex","encodeURI","excess","andOthers","buildEmailAddressesAndOthers","excessHyperLinks","getHash","getAjaxcrawlableHash","toParse","paramValue","getRawValue","getValueDependingOnType","encodeValues","valueToEncode","encodedValue","encodeArray","encodeObject","toParseArray","paramPos","loop","paramValuePair","returnValue","getValueType","decodeObject","decodeArray","isArrayStartNotEncoded","DELIMITER","arrayStart","isArrayStartEncoded","isArrayEndNotEncoded","isArrayEndEncoded","arrayEnd","isObjectStartNotEncoded","objectStart","isObjectStartEncoded","isObjectEndNotEncoded","objectEnd","isObjectEndEncoded","isObjectStart","isObjectEnd","isArrayStart","isArrayEnd","arrayReturn","retArray","val","encodeValue","objectStartRegExp","objectEndRegExp","arrayStartRegExp","arrayEndRegExp","strAndHoles","holes","hole","begin","replacementSize","shortenPath","uriOrig","removed","next","SHORTEN_END","over","shortenString","toShortenOrig","toAppend","toShorten","pos","WORD_SHORTER","shortenUri","highlightString","highlights","cssClass","maxIndex","highlighted","highlight","end","skip","holeBegin","holeEnd","dataHighlightGroup","buildAttributeString","AnchorUtils","buildAnchor","ImageUtils","buildImage","selectImageFromResult","buildImageWithDirectSrcAttribute","endpoint","image","Image","dataStreamUri","buildImageWithBase64SrcAttribute","rawBinary","Uint8Array","buildImageFromResult","img","data-coveo-uri-hash","keysEqual","isAllowedKeyForOmnibox","keycode","valid","isNumberKeyPushed","isLetterKeyPushed","BACKSPACE","DELETE","isArrowKeyPushed","isAllowedKeyForSearchAsYouType","isDeleteOrBackspace","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","keypressAction","action","eventCode","charCode","localStorage","save","setItem","getLocalStorageKey","load","getItem","removeItem","oldObj","nav","osName","appVersion","WINDOWS","MACOSX","UNIX","LINUX","UNKNOWN","VerticalAlignment","HorizontalAlignment","positionPopup","popUp","nextTo","boundary","desiredPosition","appendTo","checkForBoundary","verticalOffset","horizontalOffset","popUpPosition","basicVerticalAlignment","basicHorizontalAlignment","finalAdjustement","popUpBoundary","getBoundary","boundaryPosition","checkBoundary","checkForOutOfBoundary","horizontal","horizontalClip","vertical","newDesiredPosition","alignInsideBoundary","popUpOffSet","TOP","BOTTOM","MIDDLE","INNERTOP","INNERBOTTOM","LEFT","RIGHT","CENTER","offSetToAlignCenter","INNERLEFT","INNERRIGHT","oldPosition","toAddVertically","boundaryOffset","clientHeight","bottom","getRestHighlightsForAllTerms","toHighlight","opts","sortedTerms","termsSorting","term","termsToIterate","regexStart","wordBoundary","indexesFound","regexFlags","phrase","origPhrase","origWord","keysFromTerms","keysFromPhrases","createStreamHTMLContainer","stream","DefaultStreamHighlightOptions","shorten","highlightStreamHTML","allElements","highlightStreamText","QueryController_1","QueryController","FacetQueryController_1","FacetQueryController","FacetRangeQueryController_1","FacetRangeQueryController","FacetSliderQueryController_1","FacetSliderQueryController","HierarchicalFacetQueryController_1","HierarchicalFacetQueryController","HistoryController_1","HistoryController","LocalStorageHistoryController_1","LocalStorageHistoryController","RootComponent_1","QueryBuilder_1","SearchEndpointWithDefaultCallOptions_1","BaseComponent_1","coveo_analytics_1","DefaultQueryOptions","searchAsYouType","closeModalBox","cancel","logInActionsHistory","usageAnalytics","ID","showingExecutingQueryAnimation","firstQuery","historyStore","history","HistoryStore","setEndpoint","overrideEndpoint","getEndpoint","SearchEndpointWithDefaultCallOptions","getCallOptions","getLastQuery","lastQuery","QueryBuilder","build","getLastResults","lastQueryResults","executeQuery","cancelAnyCurrentPendingQuery","beforeExecuteQuery","ignoreWarningSearchEvent","warnAboutSearchEvent","showExecutingQueryAnimation","dataToSendOnNewQuery","origin","newQueryEvent","cancelQuery","queryBuilder","createQueryBuilder","logQueryInActionsHistory","isFirstQuery","endpointToUse","promise","currentPendingQuery","queryResults","enableHistory","keepLastSearchUid","lastQueryHash","queryHash","lastSearchUid","getLastSearchUid","_reusedSearchUid","currentError","dataToSendOnPreprocessResult","preprocessResultsEvent","dataToSendOnNoResult","retryTheQuery","noResultEvent","lastQueryBuilder","dataToSendOnSuccess_1","querySuccessEvent","deferredQuerySuccessEvent","hideExecutingQueryAnimation","dataToSendOnError","dataToSendDuringQuery","duringQueryEvent","fetchMore","sendAllPendingEvents","continueLastQueryBuilder","dataToSendOnFetchMoreSuccess","fetchMoreSuccessEvent","deferExecuteQuery","ensureCreatedQueryBuilder","createdOneQueryBuilder","dataToSendDuringBuildingQuery","buildingQueryEvent","dataToSendDuringDoneBuildingQuery","doneBuildingQueryEvent","getPipelineInUrl","isStandaloneSearchbox","searchPageUri","saveLastQuery","expire","uid","getLastQueryHash","loadLastQueryHash","debugInfo","queryDuration","buildQueryDurationSection","graph","debugRef","BaseComponent","getComponentRef","durationKeys","data-id","legend","keyDom","durationDom","queryElement","addElement","RootComponent","disabled","bindComponentToElement","component","computeCssClassNameForType","getBoundComponentsForElement","computeCssClassName","componentClass","computeSelectorForType","CoveoBoundComponents","ExpressionBuilder_1","ExpressionBuilder","advancedExpression","constantExpression","longQueryExpression","disjunctionExpression","disableQuerySyntax","requiredFields","includeRequiredFields","enableDidYouMean","enableDebug","sortCriteria","retrieveFirstSentences","queryFunctions","rankingFunctions","groupByRequests","enableDuplicateFiltering","aq","cq","lq","dq","searchHub","tab","maximumAge","wildcards","enableWildcards","enableQuestionMarks","lowercaseOperators","enableLowercaseOperators","partialMatch","enablePartialMatch","partialMatchKeywords","partialMatchThreshold","excerptLength","filterField","filterFieldRange","parentField","childField","computeFieldsToInclude","fieldsToExclude","sortField","timezone","enableCollaborativeRating","actionsHistory","recommendation","computeCompleteExpression","computeCompleteExpressionParts","full","withoutConstant","mergeUsingOr","basic","advanced","computeCompleteExpressionExcept","except","computeCompleteExpressionPartsExcept","withoutConstantAndExcept","basicAndExcept","fromExpressionBuilder","advancedAndExcept","addFieldsToInclude","addRequiredFields","addFieldsToExclude","addContextValue","addContext","wrapParts","add","addFieldExpression","addFieldNotEqualExpression","exp","builders","builder","nonEmpty","enrichCallOptions","analytics","SimpleAnalytics","donottrack","storage","defaultResponseTransformer","history_1","Version","Endpoints","default","production","dev","staging","Client","sendEvent","eventType","fetch","getRestEndpoint","getHeaders","mode","credentials","sendSearchEvent","sendClickEvent","sendViewEvent","referrer","store","historyElement","contentIdValue","getVisit","getHealth","Content-Type","storage_1","detector","STORE_KEY","MAX_NUMBER_OF_HISTORY_ELEMENTS","MIN_THRESHOLD_FOR_DUPLICATE_VALUE","MAX_VALUE_SIZE","getAvailableStorage","CookieStorage","hasCookieStorage","internalTime","cropQueryElement","currentHistory","getHistoryWithInternalTime","isValidEntry","setHistory","getHistory","stripInternalTime","getMostRecentElement","sorted","lastEntry","part","preferredStorage","hasLocalStorage","hasSessionStorage","sessionStorage","NullStorage","cookieutils_1","cookieEnabled","hasDocument","hasDocumentLocation","cookiePrefix","cookieArray","normalizeName","normalizeValue","iteratorFor","items","done","support","iterable","Symbol","Headers","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","view","chars","bufferClone","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","Blob","isPrototypeOf","_bodyBlob","formData","FormData","_bodyFormData","searchParams","URLSearchParams","arrayBuffer","isDataView","_bodyArrayBuffer","ArrayBuffer","isArrayBufferView","rejected","decode","normalizeMethod","upcased","Request","form","bytes","parseHeaders","rawHeaders","line","Response","bodyInit","ok","statusText","viewClasses","DataView","isView","oldValue","thisArg","entries","redirectStatuses","redirect","RangeError","xhr","getAllResponseHeaders","responseURL","polyfill","objectassign_1","utils_1","SimpleAPI","client","customData","contentIdKey","popFromObject","onLoad","simpleAPI","actionFunction","getOwnPropertySymbols","propIsEnumerable","objectAssignPonyfill","sources","symbols","ponyfill","doNotTrack","msDoNotTrack","FacetSearchParameters_1","FacetUtils_1","facet","prepareForNewQuery","lastGroupByRequestIndex","expressionToUseForFacetSearch","constantExpressionToUseForFacetSearch","computeOurFilterExpression","selected","getSelected","useAnd","excluded","getExcluded","additionalFilter","putGroupByIntoQueryBuilder","allowedValues","createGroupByAllowedValues","groupByRequest","createBasicGroupByRequest","queryOverrideObject","createGroupByQueryOverride","basicExpressionToUseForFacetSearch","advancedExpressionToUseForFacetSearch","queryOverride","advancedQueryOverride","constantQueryOverride","lastGroupByRequest","oldLength","nbResults","onResult","fieldValues","newLength","checkForFacetSearchValuesToRemove","FacetUtils","needAnotherFacetSearch","searchPromise","getQuery","currentSearchPromise","valuesCropped_1","groupByResults","lookupValue","alwaysExclude","numberOfValuesToFetch","FacetSearchParameters","alwaysInclude","getAll","searchInFacetToUpdateDelta","facetValues","facetValue","waitingForDelta","completeFacetWithStandardValues","customSort","getUnionWithCustomSortLowercase","getAllowedValuesFromSelected","toCompare","filtered","keepDisplayedValuesNextTime","hasSelectedOrExcludedValues","addComputedField","nbOfRequestedValues","numberOfValues","usedValues","maximumNumberOfValues","enableMoreLess","injectionDepth","lookupField","computedField","computedFields","operation","computedFieldOperation","valueToCheckAgainst","getRegexToUseForFacetSearch","facetSearchIgnoreAccents","isAllowed","getValueCaption","numberOfValuesInFacetSearch","ignoreAccents","searchEvenIfEmpty","isNewDesign","setValueToSearch","getValuesToUseForSearchInFacet","excludeCurrentlyDisplayedValuesInSearch","searchResults","getCurrentlyShowedValueInSearch","expandedValues","expanded","getDisplayedFacetValues","getGroupByRequest","lowerCaseAll","typedByUser","queryController","facetQueryController","original","valueCaption","pair","buildFacetSearchPattern","currentSearchLength","newSearchLength","oldSearchLength","desiredSearchLength","addNoStateCssClassToFacetValues","noStates","noState","tryToGetTranslatedCaption","clipCaptionsToAvoidOverflowingTheirContainer","forceClip","getBindings","HierarchicalFacet","captions","labels","labelsMaxWidth","label","labelWidth","labelVisibleWidth","captionWidth","crop","labelMaxWidth","groupByQuery","ranges","buildGroupByQueryForPredefinedRanges","buildGroupByQueryForAutomaticRanges","generateAutomaticRanges","rangeValues","onRootElement","handleQuerySuccess","putGroupByForGraphIntoQueryBuilder","putGroupByForSliderIntoQueryBuilder","startOfSlider","endOfSlider","excludeOuterBounds","addFilterExpressionWithOuterBoundsExcluded","addFilterExpressionWithOuterBoundsIncluded","isAValidRangeResponse","rangeValuesForGraphToUse","rawValues","graphGroupByQueriesIndex","rawValue","rawSplit","dateField","getISOFormat","firstValue","getFilterDateFormat","startCompare","endCompare","startCompared","endCompared","basicGroupByRequestForGraph","isSimpleSliderConfig","createRangeValuesForGraphUsingStartAndEnd","getSliderBoundaryForQuery","completeExpression","steps","hasAGraph","_a","formatStartAndEnd","endInclusive","basicGroupByRequestForSlider","oneRange","usePrebuiltRange","buildRange","basicRangeRequest","oneStep","newStart","newEnd","getBrowserCompatibleFormat","toISOString","facetSearch","getValueInInputForFacetSearch","getAllValueHierarchy","Model_1","model","hashUtils","ignoreNextHashChange","initialHashChange","willUpdateHash","updateModelFromHash","getEventName","Model","eventTypes","updateHashFromModel","hashchange","handleHashChange","handleNuke","setHashValues","diff","attributesThatDoNotTriggerQuery","getAttributes","toSet","valToSet","getHashValue","setMultiple","defaultAttributes","MODEL_EVENTS","PREPROCESS","CHANGE_ONE","CHANGE","RESET","ALL","eventNameSpace","attribute","anythingChanged","preprocessEvent","customAttribute","checkIfAttributeExists","parseToCorrectType","validateType","typeIsValid","checkIfAttributeChanged","silent","attributeHasChangedEvent","attributesHasChangedEvent","anyEvent","setNewDefault","setDefault","getDefault","modelWasResetEvent","registerNewAttribute","defaultValue","change","createAttributesChangedArgument","changeOne","createAttributeChangedArgument","preprocess","createModelChangedArgument","validateNumber","validateBoolean","validateOther","newValue","updateModelFromLocalStorage","updateLocalStorageFromModel","withoutThoseAttribute","setStorageValues","loadedFromStorage","QueryStateModel_1","QueryStateModel","ComponentOptionsModel_1","ComponentOptionsModel","ComponentStateModel_1","ComponentStateModel","setState","QUERY_STATE_ATTRIBUTES","FIRST","TG","SORT","LAYOUT","HD","HQ","QUICKVIEW","getFacetId","getFacetOperator","getFacetLookupValue","atLeastOneFacetIsActive","validate","attributesEnum","hd","hq","layout","tg","quickview","resultLink","registerComponent","componentId","currentAttribute","ComponentOptions_1","ComponentOptions","ComponentOptionsType","Component_1","Component","Initialization_1","Initialization","Initialization_2","CoveoJQuery","CoveoJQuery_1","initCoveoJQuery","initializeFramework","initSearchInterface","initSearchbox","searchInterfaceOptions","autoTriggerQuery","hideUntilFirstQuery","StandaloneSearchInterface","initStandaloneSearchInterface","initRecommendation","mainSearchInterface","userContext","recommendationOptions","Recommendation","initRecommendationInterface","resolveBinding","noThrow","getCoveoAnalyticsClient","getCoveoAnalytics","analyticsElement","logCustomEvent","customEventCause","metadata","logSearchEvent","searchEventCause","logSearchAsYouTypeEvent","searchAsYouTypeEventCause","logSearchAsYouType","logClickEvent","clickEventCause","optionsToSet","registerDefaultOptions","patch","methodName","handler","monkeyPatchComponentMethod","initBox","injectMarkup","SearchInterface","initBoxInterface","registerNamedMethod","SearchInterface_1","AnalyticsActionListMeta_1","existing","updated","resolveDefaultOptions","optionsSoFar","optionsForThisElement","registerAutoCreateComponent","autoCreateComponents","namedMethods","isComponentClassIdRegistered","componentClassId","getListOfRegisteredComponents","getRegisteredComponent","initSearchInterfaceFunction","alreadyInitialized","performInitFunctionsOption","initExternalComponents","elemsHidden","logFirstQueryCause","shouldLogInActionHistory","originalOptionsObject","initParameters","automaticallyCreateComponentsInside","triggerQueryOnClear","triggerOnQueryClear","optionsForRecommendation","firstLoadingAnimation","ignore","codeToExecute","htmlElementsToIgnore","toIgnore","rootToIgnore","childsElementsToIgnore","classname","elements","createFunctionThatInitializesComponentOnElements","createComponentOfThisClassOnElement","isNamedMethodRegistered","splitArg","boundComponent","originalMethodName","fromInitTypeToBoxReference","boxRef","injectFunction","getInjection","box","dispatchNamedMethodCall","namedMethodHandler","dispatchNamedMethodCallOrComponentCreation","isThereASingleComponentBoundToThisElement","dispatchMethodCallOnBoundComponent","isSearchFromLink","queryStateModel","firstQueryCause","meta","analyticsActionCauseList","searchFromLink","interfaceLoad","performFunctions","option","componentStateModel","componentOptionsModel","initParameters_1","externalComponent","elementToInstantiate","matchingElement","optionsToUse","optionsForComponentClass","optionsForElementId","initOptions","initParamToUse","NoopAnalyticsClient_1","ComponentEvents","resolveRoot","resolveQueryStateModel","resolveComponentStateModel","resolveQueryController","resolveSearchInterface","resolveUA","resolveComponentOptionsModel","ensureDom","createDom","attachComponent","initDebugInfo","resolvedSearchInterface","NoopAnalyticsClient","resolveResult","altKey","boundComponents","resultElement","bindResultToElement","findDown","findUp","pointElementsToDummyForm","inputs","wrapToCallIfEnabled","htmlEl","oneRootElement","onQueryState","getQueryStateEventName","oneQueryState","evtName","Debug_1","fastclick","jstz","SentryLogger_1","analyticsOptions","_window","isNewDesignAttribute","attach","initComponentOptions","showAndHideFirstQueryAnimation","initializeAnalytics","SentryLogger","eventName","handlePreprocessQueryStateModel","handleBuildingQuery","handleQueryError","useLocalStorageForHistory","eventNameQuickview","handleQuickviewChanged","setupDebugInfo","responsiveComponents","showWaitAnimation","hideWaitAnimation","getComponents","detachComponent","components","attachedComponents","analyticsRef","enableDebugInfo","Debug","tgFromModel","tFromModel","getTabGroupId","getTabId","getSort","getQuickview","tabGroupId","tabGroupRef","tabGroups","tabGroup","tabId","tabRef","tabs","tabGroup_1","isElementIncludedInTabGroup","sortId","sortRef","sorts","tab_1","isElementIncludedInTab","quickviewId","quickviewRef","quickviews","getHashId","quickviewsPartition","resultsPerPage","toggleSectionState","resultsHeader","facetSection","resultsSection","facetSearchs","buildBooleanOption","enableAutomaticResponsiveMode","buildNumberOption","buildStringOption","buildFieldOption","buildChildHtmlElementOption","childSelector","defaultFunction","buildCustomOption","determine","SMALL_INTERFACE_CLASS_NAME","handleRedirect","dataToSendOnBeforeRedirect","searchboxIsEmpty","redirectIfEmpty","redirectToSearchPage","searchPage","stateValues","uaCausedBy","getCurrentEventCause","searchboxSubmit","uaMeta","getCurrentEventMeta","link","pathname","TemplateCache_1","TemplateList_1","UnderscoreTemplate_1","HtmlTemplate_1","camelCaseToHyphenRegex","fieldsSeperator","localizer","optionArgs","buildOption","BOOLEAN","loadBooleanOption","NUMBER","loadNumberOption","STRING","loadStringOption","buildIconOption","ICON","buildColorOption","COLOR","buildHelperOption","HELPER","buildJsonOption","buildLocalizedStringOption","LOCALIZED_STRING","loadLocalizedStringOption","FIELD","loadFieldOption","buildFieldsOption","FIELDS","loadFieldsOption","buildListOption","LIST","loadListOption","buildSelectorOption","SELECTOR","loadSelectorOption","CHILD_HTML_ELEMENT","loadChildHtmlElementOption","buildTemplateOption","TEMPLATE","loadTemplateOption","converter","loadOption","stringvalue","buildCustomListOption","buildObjectOption","subOptions","scopedOptions","scopedValues","scopedkey","mergeCamelCase","resultValues","resultFound","OBJECT","optionArg","attrNameFromName","attrName","camelCaseToHyphen","componentID","optionDefinition","loadFromAttribute","deprecated","validator","required","name_2","postProcessing","getAttributeFromAlias","fieldsAttr","attributeValue","locale","localeParts_1","localizers","numberValue","loadEnumOption","_enum","enumAsString","htmlElement","selectorAttr","loadChildHtmlElementFromSelector","loadChildrenHtmlElementFromSelector","templateElement","createResultTemplateFromElement","idAttr","loadResultTemplateFromId","loadChildrenResultTemplateFromSelector","templateId","TemplateCache","getTemplate","foundElements","TemplateList","findParentScrolling","isElementScrollable","overflowY","alias","mimeTypes","UnderscoreTemplate","HtmlTemplate","Template_1","registerTemplate","publicTemplate","defaultTemplate","resultListTemplate","Template","templates","templateNames","resultListTemplateNames","defaultTemplates","unregisterTemplate","scanAndRegisterTemplates","getTemplates","getTemplateNames","getResultListTemplateNames","getDefaultTemplates","getDefaultTemplate","isLibraryAvailable","scanAndRegisterUnderscoreTemplates","scanAndRegisterHtmlTemplates","scriptList","TemplateConditionEvaluator_1","TemplateFieldsEvaluator_1","DefaultInstantiateTemplateOptions","currentLayout","checkCondition","wrapInDiv","dataToString","instantiateToString","instantiateOptions","tablet","desktop","conditionToParse","TemplateConditionEvaluator","evaluateCondition","fieldsToMatch","TemplateFieldsEvaluator","evaluateFieldsToMatch","instantiateToElement","instantiateTemplateOptions","getFields","getType","setConditionWithFallback","getFieldFromString","componentFields","templateShouldBeLoaded","fieldsInCondition","fieldInCondition","matchingFieldValues","evaluateMatchingFieldValues","fieldShouldNotBeNull","evaluateFieldShouldNotBeNull","evaluateShouldUseSmallScreen","foundForCurrentField","firstRegexToGetValue","secondRegexToGetValue","firstRegexToMatchNonNull","secondRegexToMatchNonNull","toMatches","toMatch","matchAtLeastOnce","TemplateFromAScriptTag_1","DefaultResultTemplate_1","templateString","templateFromAScriptTag","TemplateFromAScriptTag","extended","templateHelpers","DefaultResultTemplate","getFallbackTemplate","script","registerTemplateHelper","helperName","helper","fromString","properties","scriptTag","parsedFieldsAttributes","parseFieldsAttributes","parseLayout","parseScreenSize","additionalFields","includeInResults","dataSet","dataset","queryResult","tmpl","titleContainer","resultContainer","isContextual","isActivated","currentEventCause","currentEventMeta","actionCause","setNoopCauseAndMeta","cancelAllPendingEvents","getPendingSearchEvent","setOriginContext","originContext","cause","highlightRecommendation","handleNewResultDisplayed","handleShowDebugPanel","unbindEscapeEvent","localStorageDebug","collapsedSections","buildFieldsSection","fetchFields","fieldDescriptions","fieldDescription","fieldType","splitGroupByField","parseRankingInfo","rankingInfo","documentWeights","termsWeight","totalWeight","parseWeights","terms","words","word","Correlation","TF-IDF","weights","Weights","buildStackPanel","stackDebug","indexA","customOrder","indexB","section","buildSection","buildStackPanelSection","modalbox","bindEscapeEvent","buildSearchBox","downloadLink","download","downloadHref","bodyBuilder","buildEnabledHighlightRecommendation","buildEnableDebugCheckbox","handleEscapeEvent","ESCAPE","boundEscapeKey","isRecommendation","handleResultDoubleClick","index_1","findResult_1","debugPanel","buildRankingInfoSection","templateToJson","toJson","buildProperty","lastSearch","rootProperties","findInProperty","jElement","highlightSearch","removeHighlightSearch","submatch_1","checkbox","listOfWeight","weight","weightGroup","buildPromise","buildBasicProperty","buildObjectProperty","resolvedDom","valueContainer","buildKeys","labelDom","stringValue","valueDom","ondblclick","selectElementText","depth","componentToJson","htmlToJson","toJsonRef","maxDepth","subValue","result_1","classList","templateObject","getSelection","createRange","selection","selectNodeContents","removeAllRanges","addRange","textRange","moveToElementText","span","FastClick","layer","oldOnClick","trackingClick","trackingClickStart","targetElement","touchStartX","touchStartY","lastTouchIdentifier","touchBoundary","tapDelay","tapTimeout","notNeeded","deviceIsAndroid","onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","stopImmediatePropagation","capture","rmv","Node","hijacked","adv","propagationStopped","deviceIsWindowsPhone","deviceIsIOS","deviceIsIOS4","deviceIsIOSWithBadTarget","deviceIsBlackBerry10","needsClick","nodeName","needsFocus","readOnly","sendClick","clickEvent","touch","activeElement","changedTouches","initMouseEvent","determineEventType","screenX","screenY","clientX","clientY","forwardedTouchEvent","updateScrollParent","scrollParent","fastClickScrollParent","fastClickLastScrollTop","getTargetElementFromEventTarget","eventTarget","TEXT_NODE","targetTouches","rangeCount","isCollapsed","identifier","timeStamp","pageX","pageY","lastClickTime","touchHasMoved","findControl","labelElement","control","htmlFor","forElement","targetTagName","cancelNextClick","elementFromPoint","permitted","destroy","metaViewport","chromeVersion","blackberryVersion","firefoxVersion","ontouchstart","outerWidth","msTouchAction","touchAction","HEMISPHERE_SOUTH","consts","DAY","HOUR","MINUTE","SECOND","BASELINE_YEAR","MAX_SCORE","AMBIGUITIES","America/Denver","Europe/London","America/Chicago","America/Asuncion","America/Montevideo","Asia/Beirut","Pacific/Auckland","America/Los_Angeles","America/New_York","America/Halifax","America/Godthab","Asia/Dubai","Asia/Jakarta","Asia/Shanghai","Australia/Sydney","Asia/Tokyo","Asia/Dhaka","Asia/Baku","Australia/Brisbane","Pacific/Noumea","Pacific/Majuro","Pacific/Tongatapu","Asia/Baghdad","Asia/Karachi","Africa/Johannesburg","get_date_offset","lookup_key","january_offset","june_offset","get_from_internationalization_api","Intl","DateTimeFormat","resolvedOptions","timeZone","dst_dates","year","yearstart","yearend","dst_start","dst_end","dateToCheck","dateToCheckOffset","find_dst_fold","a_date","padding","date_start","date_end","dst_change","windows7_adaptations","rule_list","preliminary_timezone","score","best_dst_match","score_sample","rules","scoreboard","dst_zones","olson","dst_rules","zones","dst_zones_length","ambiguities","tz","get_by_dst","get_rules","years","year_rules","check_has_dst","has_dst","preliminary_tz","timezones","-720,0","-660,0","-660,1,s","-600,1","-600,0","-570,0","-540,0","-540,1","-480,1","-480,0","-420,0","-420,1","-360,0","-360,1","-360,1,s","-300,0","-300,1","-270,0","-240,1","-240,0","-240,1,s","-210,1","-180,1","-180,0","-180,1,s","-120,0","-120,1","-60,1","-60,0","0,0","0,1","60,1","60,0","60,1,s","120,1","120,0","180,0","180,1","210,1","240,0","240,1","270,0","300,1","300,0","330,0","345,0","360,0","360,1","390,0","420,1","420,0","480,0","480,1","525,0","525,1,s","540,1","540,0","570,0","570,1,s","600,0","600,1","600,1,s","630,1,s","660,1","660,0","690,0","720,1,s","720,0","765,1,s","780,0","780,1,s","840,0","__webpack_amd_options__","bindErrorHandler","oldHandler","filename","lineno","colno","errorInfo","column","errorStack","device","interfaceChange","metaMap","interfaceChangeTo","contextRemove","contextName","didyoumeanAutomatic","didyoumeanClick","resultsSort","resultsSortBy","searchboxClear","searchboxAsYouType","breadcrumbFacet","facetId","facetTitle","breadcrumbResetAll","documentTag","documentField","documentQuickview","documentTitle","documentURL","documentOpen","omniboxFacetSelect","omniboxFacetExclude","omniboxFacetDeselect","omniboxFacetUnexclude","faceId","omniboxAnalytics","partialQuery","suggestionRanking","partialQueries","suggestions","omniboxFromLink","omniboxField","facetClearAll","facetToggle","facetOperatorBefore","facetOperatorAfter","facetRangeSlider","facetRangeStart","facetRangeEnd","facetRangeGraph","facetSelect","facetSelectAll","facetDeselect","facetExclude","facetUnexclude","errorBack","errorClearQuery","errorRetry","noResultsBack","expandToFullUI","caseCreationInputChange","caseCreationSubmitButton","caseCreationCancelButton","caseCreationUnloadPage","casecontextAdd","caseID","casecontextRemove","preferencesChange","preferenceName","preferenceType","getUserHistory","userActionDocumentClick","caseAttach","resultUriHash","articleID","caseDetach","customfiltersChange","customFilterName","customFilterType","customFilterExpression","pagerNumber","pagerNext","pagerPrevious","pagerScrolling","pagerResize","triggerNotify","triggerExecute","triggerQuery","triggerRedirect","errorType","errorMessage","exportToExcel","recommendationInterfaceLoad","recommendationOpen","advancedSearch","searchAlertsFollowDocument","searchAlertsFollowQuery","searchAlertsUpdateSubscription","searchAlertsDeleteSubscription","searchAlertsUnfollowDocument","searchAlertsUnfollowQuery","resultsLayoutChange","LiveAnalyticsClient_1","MultiAnalyticsClient_1","Recommendation_1","RecommendationAnalyticsClient_1","retrieveInfoFromDefaultSearchEndpoint","initializeAnalyticsClient","cmpOptionElement","handleSearchHubChanged","initializeAnalyticsEndpoint","elementToInitializeClient","instantiateAnalyticsClient","RecommendationAnalyticsClient","user","userDisplayName","splitTestRunName","splitTestRunVersion","sendToCloud","LiveAnalyticsClient","defaultEndpoint","ignoreElementsInsideRecommendationInterface","getClient","MultiAnalyticsClient","foundOnElement","PendingSearchEvent_1","PendingSearchAsYouTypeSearchEvent_1","APIAnalyticsBuilder_1","rootElement","userId","originLevel1","pendingSearchEvent","getEventCause","pendingSearchAsYouTypeSearchEvent","getEventMeta","metaObject","buildMetaObject","pushSearchEvent","pushSearchAsYouTypeEvent","pushClickEvent","pushCustomEvent","sendRightNow","buildCustomEvent","triggerChangeAnalyticsCustomData","checkToSendAnyPendingSearchAsYouType","APIAnalyticsBuilder","convertCustomEventToAPI","stopRecording","buildSearchEvent","PendingSearchEvent","eventIsNotRelatedToSearchbox","cancelAnyPendingSearchAsYouTypeEvent","PendingSearchAsYouTypeSearchEvent","buildClickEvent","resultData","searchQueryUid","collectionName","sourceName","documentPosition","convertDocumentViewToAPI","buildAnalyticsEvent","actionType","responseTime","originLevel2","getOriginLevel2","originLevel3","queryText","advancedQuery","pageNumber","facets","contextual","queryPipeline","documentUri","documentUriHash","documentUrl","clickUri","documentCategory","viewMethod","rankingModifier","eventValue","resolveActiveTabFromElement","modifiedMeta","changeableAnalyticsDataObject","metaDataAsString","metaDataAsNumber","templateSearchEvent","searchPromises","cancelled","finished","evt","handleDuringQuery","queryBoxContentToUse","fillSearchEvent","apiSearchEvents","convertSearchEventToAPI","currentQuery","totalCount","refinedKeywords","apiSearchEvent","customMetadatas","documentView","apiDocumentView","apiCustomEvent","delayBeforeSending","armBatchDelay","beforeUnloadHandler","onWindowUnload","currentQueryBeforeDelay","beforeResolve","toSendRightNow","isCancelledOrFinished","modifyCustomData","newData","modifyEventCause","newCause","analyticsClients","analyticsClient","mergeTopQueries","pageSize","QuickviewEvents_1","ResponsiveRecommendation_1","RegisteredNamedMethods_1","generateDefaultId","preventEventPropagation","bindToMainSearchInterface","handleRecommendationBuildingQuery","handleRecommendationQuerySuccess","handleRecommendationNoResults","handleRecommendationQueryError","ensureCurrentPageViewExistsInStore","ResponsiveRecommendation","hideIfNoResults","getId","displayStyle","bindComponentOptionsModelToMainSearchInterface","bindQueryEventsToMainSearchInterface","searchInterfaceComponent","onceInitialized","mainSearchInterfaceOptionsModel","mainInterfaceQuery","mainQuerySearchUID","mainQueryPipeline","modifyQueryForRecommendation","addRecommendationInfoInQuery","sendActionsHistory","historyFromStore","preventEventPropagationOn","QuickviewEvents","getAllModelEvents","events","NEXT_ID","enableResponsiveMode","responsiveBreakpoint","dropdownHeaderLabel","quickviewLoaded","ResponsiveComponentsManager_1","ResponsiveComponentsUtils_1","RecommendationDropdownContent_1","ResponsiveDropdownHeader_1","ResponsiveDropdown_1","FacetSlider_1","Facet_1","coveoRoot","responsiveDropdown","recommendationRoot","getRecommendationRoot","breakpoint","defineResponsiveBreakpoint","dropdown","buildDropdown","getFacets","facetSliders","getFacetSliders","registerOnOpenHandler","registerOnCloseHandler","registerQueryEvents","dropdownContainer","DROPDOWN_CONTAINER_CSS_CLASS_NAME","findParentRootOfRecommendationComponent","ResponsiveComponentsManager","register","handleResizeEvent","needSmallMode","ResponsiveComponentsUtils","isSmallRecommendationActivated","changeToSmallMode","changeToLargeMode","isOpened","dropdownContent","positionDropdown","needDropdownWrapper","DROPDOWN_HEADER_WRAPPER_CSS_CLASS","dropdownHeader","disableFacetPreservePosition","activateSmallRecommendation","enableFacetPreservePosition","cleanUp","deactivateSmallRecommendation","buildDropdownContent","buildDropdownHeader","ResponsiveDropdown","disablePopupBackground","dropdownHeaderElement","ResponsiveDropdownHeader","dropdownContentElement","recommendationColumn","RecommendationDropdownContent","RESPONSIVE_BREAKPOINT","FacetSlider","facetSliderElement","facetSlider","Facet","facetElement","dismissFacetSearches","currentlyDisplayedResults","completelyDismissSearch","preservePosition","drawFacetSliderGraphs","drawDelayedGraphData","recommendationInstance","handleRecommnendationQuerySucess","Tab_1","disabledComponents","dropdownHeadersWrapper","searchBoxElement","getSearchBoxElement","resizeListener","addDropdownHeaderWrapperIfNeeded","shouldSwitchToSmallMode","responsiveComponent","RESIZE_DEBOUNCE_DELAY","bindNukeEvents","responsiveComponentConstructor","shouldEnableResponsiveMode","responsiveComponentsManager","componentManagers","componentManager","disableComponent","componentInitializations","remainingComponentInitializations","instantiateResponsiveComponents","resizeAllComponentsManager","componentInitialization","isDisabled","isTabs","aComponentNeedsTabSection","reachedBreakpoint","tabSection","ResponsiveTabs_ts_1","handleQueryStateChanged","clickAction","handleClick","ENTER","ResponsiveTabs","includedTabs","splitListOfTabs","excludedTabs","iconSpan","captionP","isSelected","showAndHideAppropriateElements","activeTab","showElements","hideElements","toggleAllComponentsUnder","togglePossibleComponent","possibleComponent","possibleCmp","EventsUtils_1","getDropdownHeaderLabel","bindDropdownContentEvents","bindDropdownHeaderEvents","manageTabSwapping","saveTabsPosition","isSmallTabsActivated","getTabsInTabSection","shouldAddTabsToDropdown","addTabsToDropdown","shouldRemoveTabsFromDropdown","removeTabsFromDropdown","mediumWidth","isLargeFormatOverflowing","isOverflowing","activateSmallTabs","emptyDropdown","cleanUpDropdown","deactivateSmallTabs","currentTab","facetDropdownHeader","addToDropdown","isDropdownEmpty","lastTabInSection","dropdownTabs","removeFromDropdown","fromDropdownToTabSection","tabs_1","virtualTabSection","closeDropdown","contentList","documentClickListener","listElement","tabElement","fadeOutFadeIn","tabsInSection","lastTabSectionSibling","previousSibling","propertyName","opacity","EventsUtils","removePrefixedEvent","addPrefixedEvent","childElement","lastTabInTabSection","DROPDOWN_HEADER_LABEL_DEFAULT_VALUE","pascalCaseEventName","prefixes","shouldDrawFacetSlider","isSmallFacetActivated","smallTabsClassName","smallFacetClassName","smallRecommendationClassName","activateSmallFacet","deactivateSmallFacet","ResponsiveDropdownContent_1","componentName","cssClassName","ResponsiveDropdownContent","DEFAULT_CSS_CLASS_NAME","dropdownContentWrapper","maxHeight","OPENED_DROPDOWN_CSS_CLASS_NAME","hideDropdown","minWidth","widthRatio","removeAttribute","ACTIVE_HEADER_CSS_CLASS_NAME","onOpenHandlers","onCloseHandlers","popupBackgroundIsEnabled","popupBackground","buildPopupBackground","bindOnClickDropdownHeaderEvent","saveContentPosition","restoreContentPosition","handlerCall","showPopupBackground","hidePopupBackground","TRANSPARENT_BACKGROUND_OPACITY","DROPDOWN_BACKGROUND_CSS_CLASS_NAME","dropdownContentPreviousSibling","dropdownContentParent","Slider_1","ResponsiveFacets_1","FacetHeader_1","d3","slider","ResponsiveFacets","initQueryStateEvents","handleNewQuery","handleNoresults","handleDeferredQuerySuccess","handleDoneBuildingQuery","handlePopulateBreadcrumb","handlePopulateSearchAlerts","onResize","drawGraph","DEBOUNCED_RESIZE_DELAY","facetHeader","FacetHeader","enableClearElement","enableCollapseElement","initializeState","updateQueryState","updateAppearanceDependingOnState","getSelectedValues","setSelectedValues","setupSliderIfNeeded","setValues","isActive","initialStartOfSlider","initialEndOfSlider","needToReturnABoundary","generateBoundary","delayedGraphData","handleRangeQueryStateChanged","breadcrumbs","buildBreadcrumbFacetSlider","getCaption","initSlider","buildSlider","rangeQueryStateAttribute","setRangeStateSliderStillNotCreated","rangeFromUrlState","copyValues","sliderContainer","sliderDiv","Slider","handleEndSlide","handleDuringSlide","handleGraphValueSelected","isFacetEmpty","renderToSliderGraph","getValues","rangeSlider","copyOfValues","graphData","rawGroupByResults","totalGraphResults","isDropdownHidden","facetDropdown","recommendationDropdown","generateBoundaryFromSlider","generateBoundaryFromState","startFromState","endFromState","alreadySetBoundary","trySetSliderBoundaryFromOptions","trySetSliderBoundaryFromQueryResult","trySetSliderBoundaryFromState","setupSliderStateVariables","isInError","verifySetup","setupInitialSliderStateStart","setupInitialSliderStateEnd","sliding","eraserElement","onMoving","groupByField","dateFormat","rounded","displayAsValue","unitSign","displayAsPercent","animationDuration","margin","getSteps","d3Scale","MAX_NUMBER_OF_STEPS","buildSteps","sliderGraph","SliderGraph","sliderLine","SliderLine","sliderRange","SliderRange","sliderButton","SliderButton","btnEl","setActiveWidth","sliderCaption","SliderCaption","setBoundary","firstButton","secondButton","setButtonBoundary","draw","displayCaption","currentValues","initializeSliderRangeState","toEnd","setValue","getPosition","getPercentPosition","getPercent","getCaptionFromValue","getCaptionFromValues","leftBoundary","rightBoundary","setFromString","percentCaption","setAsPercent","setAsValue","currentStep","currentNumberOfSteps","backGround","activePart","buttonOne","buttonTwo","eventMouseDown","eventMouseMove","eventMouseUp","bindEvents","toBeginning","fromValueToPercent","fromPositionToValue","fromValueToPosition","handleStartSlide","isMouseDown","handleMoving","getUserSelect","msUserSelect","webkitUserSelect","getMousePosition","startPositionX","lastElementLeft","origUserSelect","origCursor","cursor","button","updatePosition","handleButtonNearEnd","origZIndex","zIndex","currentPos","posx","posy","currentValue","spanX","snapResult","snapToStep","diffs","diffsNext","diffsPrev","nearest","nearestNext","nearestPrevious","nextStep","previousStep","firstElem","secondElem","getCaptionFromValuesAsPercent","firstAsDate","secondAsDate","svg","scaleBand","scaleLinear","tooltip","oldData","modifyPossibleSinglePointDataIntoValidRange","sliderOuterWidth","sliderOuterHeight","applyTransformOnSvg","setXAndYRange","setXAndYDomain","bars","selectAll","currentSliderValues","renderGraphBars","setGraphBarsTransition","padGraphWithEmptyData","oneStepOfGraph","padBeginningOfGraphWithEmptyData","padEndOfGraphWithEmptyData","difToFillAtStart","nbOfStepsAtStart","lastDataIndex","diffToFillAtEnd","nbOfStepsAtEnd","enter","getFunctionForClass","bandwidth","getFunctionForHeight","getFunctionForX","getFunctionForY","getFunctionForClick","getFunctionForMouseOver","getFunctionForMouseOut","transition","getBarClass","setTooltip","d3Array","d3Collection","d3Interpolate","d3Format","d3Time","d3TimeFormat","d3Color","ordinal","scale","unknown","implicit","copy","band","rescale","paddingInner","paddingOuter","align","ordinalRange","rangeRound","pointish","point","number","deinterpolate","deinterpolateClamp","reinterpolateClamp","reinterpolate","bimap","d0","d1","r0","r1","polymap","bisect","clamp","continuous","deinterpolate$$","piecewise","unit","map$1","interpolateRound","tickFormat","specifier","precision","tickStep","formatSpecifier","precisionPrefix","formatPrefix","precisionRound","precisionFixed","linearish","ticks","nice","linear","interpolateNumber","interval","i0","i1","x0","x1","deinterpolate$1","pow10","powp","base","logp","log10","log2","reflect","logs","pows","raise","exponent","sqrt","quantile$1","thresholds","quantile","invertExtent","ascending","quantiles","quantize","threshold","number$1","week","day","hour","minute","millisecond","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickInterval","bisector","tickIntervals","durationYear","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","t0","t1","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","timeMillisecond","timeFormat","utcTime","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","utcSecond","utcMillisecond","utcFormat","UTC","colors","rainbow$1","ts","rainbow","ramp","sequential","interpolator","category10","category20b","category20c","category20","cubehelix$1","interpolateCubehelixLong","cubehelix","warm","cool","viridis","magma","inferno","plasma","scalePoint","scaleIdentity","scaleLog","scaleOrdinal","scaleImplicit","scalePow","scaleSqrt","scaleQuantile","scaleQuantize","scaleThreshold","scaleTime","scaleUtc","schemeCategory10","schemeCategory20b","schemeCategory20c","schemeCategory20","interpolateCubehelixDefault","interpolateRainbow","interpolateWarm","interpolateCool","interpolateViridis","interpolateMagma","interpolateInferno","interpolatePlasma","scaleSequential","compare","ascendingComparator","lo","hi","descending","variance","deviation","extent","step0","step1","LN10","e10","e5","e2","sturges","LN2","histogram","xz","bin","bins","bisectRight","freedmanDiaconis","scott","mean","median","numbers","arrays","permute","permutes","scan","xi","xj","sum","transpose","matrix","row","ascendingBisect","bisectLeft","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","Map","nest","createResult","rollup","sortValues","keyValue","valuesByKey","sortKey","sortKeys","createObject","setObject","createMap","setMap","order","Set","basis","v0","v1","v2","v3","t2","t3","basis$1","basisClosed","exponential","hue","gamma","nogamma","rgbSpline","spline","color","rgb","nb","na","zero","am","bm","bs","bi","reA","reB","rgb$1","decompose","scaleX","scaleY","skewX","translateX","translateY","rotate","atan2","degrees","atan","parseCss","cssNode","cssRoot","cssView","defaultView","transform","parseSvg","svgNode","createElementNS","baseVal","consolidate","interpolateTransform","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","cosh","sinh","tanh","zoom","p0","p1","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","epsilon2","rho","b0","rho4","rho2","b1","coshr0","hsl$1","hsl","lab$1","lab","hcl$1","hcl","cubehelixGamma","samples","rgbGamma","rgbBasis","rgbBasisClosed","PI","interpolateTransformCss","interpolateTransformSvg","SQRT2","hsl$2","hslLong","hcl$2","hclLong","cubehelix$2","cubehelixLong","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateDate","interpolateObject","interpolateString","interpolateZoom","interpolateRgb","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateHsl","interpolateHslLong","interpolateLab","interpolateHcl","interpolateHclLong","interpolateCubehelix","definition","Color","reHex3","Rgb","reHex6","rgbn","reRgbInteger","reRgbPercent","reRgbaInteger","rgba","reRgbaPercent","reHslPercent","hsla","reHslaPercent","named","rgbConvert","Hsl","hslConvert","hsl2rgb","m1","m2","labConvert","Lab","Hcl","deg2rad","cos","sin","rgb2xyz","xyz2lab","Xn","Yn","Zn","lab2xyz","xyz2rgb","hclConvert","rad2deg","cubehelixConvert","Cubehelix","BC_DA","ED","EB","bl","darker","brighter","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","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","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","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","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","displayable","Kn","formatDecimal","toExponential","coefficient","formatGroup","grouping","thousands","formatDefault","toPrecision","out","formatPrefixAuto","prefixExponent","formatRounded","FormatSpecifier","re","fill","sign","comma","formatTypes","formatLocale","newFormat","valuePrefix","valueSuffix","suffix","formatType","valueNegative","maybeSuffix","decimal","defaultLocale","","%","formatDefaultLocale","newInterval","floori","offseti","weekday","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","getUTCSeconds","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","setMonth","setUTCSeconds","getUTCMinutes","utcMinutes","setUTCMinutes","getUTCHours","utcHours","utcDays","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","setUTCMonth","getUTCMonth","getUTCFullYear","utcMonths","setUTCFullYear","utcYears","timeInterval","timeMilliseconds","utcMilliseconds","timeSeconds","utcSeconds","timeMinutes","timeHours","timeDays","timeWeeks","timeSunday","timeSundays","timeMonday","timeMondays","timeTuesday","timeTuesdays","timeWednesday","timeWednesdays","timeThursday","timeThursdays","timeFriday","timeFridays","timeSaturday","timeSaturdays","timeMonths","timeYears","utcWeeks","localDate","utcDate","newYear","formats","pad","pads","newParse","parseSpecifier","parses","parsePeriod","periodRe","periodLookup","parseShortWeekday","shortWeekdayRe","shortWeekdayLookup","parseWeekday","weekdayRe","weekdayLookup","parseShortMonth","shortMonthRe","shortMonthLookup","parseMonth","monthRe","monthLookup","parseLocaleDateTime","locale_dateTime","parseLocaleDate","locale_date","parseLocaleTime","locale_time","formatShortWeekday","locale_shortWeekdays","formatWeekday","locale_weekdays","formatShortMonth","locale_shortMonths","locale_months","formatPeriod","locale_periods","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","dateTime","periods","shortDays","shortMonths","formatRe","formatLookup","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekNumberSunday","formatWeekdayNumber","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekNumberSunday","formatUTCWeekdayNumber","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parseDayOfMonth","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseSeconds","parseWeekNumberSunday","parseWeekdayNumber","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","utcParse","requote","requoteRe","numberRe","percentRe","getUTCMilliseconds","timeParse","formatIsoNative","parseIsoNative","0","isoSpecifier","formatIso","parseIso","timeFormatDefaultLocale","timeFormatLocale","isoFormat","isoParse","uniform","normal","mu","sigma","logNormal","randomNormal","irwinHall","bates","randomIrwinHall","lambda","quadIn","quadOut","quadInOut","cubicIn","cubicOut","easeCubicInOut","sinIn","halfPi","sinOut","sinInOut","pi","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","b3","b2","b4","b6","b5","b7","b8","b9","bounceInOut","area","polygon","centroid","cross","lexicographicOrder","computeUpperHullIndexes","points","hull","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","y1","y0","inside","length$1","perimeter","Path","_x0","_y0","_x1","_y1","tree_add","_x","_y","cover","tree","xm","ym","xp","yp","_root","leaf","addAll","yz","tree_cover","tree_data","visit","tree_extent","Quad","tree_find","radius","x2","y2","x3","y3","quads","tree_remove","retainer","removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","defaultX","tree_x","defaultY","tree_y","quadtree","nodes","Quadtree","leaf_copy","Queue","_size","_call","_error","_tasks","_data","_waiting","_active","_ended","_start","poke","abort","noabort","maybeNotify","queue","concurrency","constant$1","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","asin","halfPi$1","intersect","x10","y10","x32","y32","cornerTangents","rc","cw","x01","y01","ox","oy","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","arc","a0","a1","da","epsilon$1","tau$2","moveTo","a01","a11","a00","a10","da0","da1","ap","rp","padRadius","cornerRadius","rc0","rc1","pi$2","oc","ax","ay","bx","by","kc","acos","lc","lineTo","closePath","Linear","_context","curveLinear","defined0","curve","defined","lineStart","lineEnd","x$$","y$$","area$1","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending$1","identity$1","pie","arcs","pa","Radial","_curve","curveRadial","radial","radialLine","angle","radialLine$1","curveRadialLinear","radialArea","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","circle","that","bezierCurveTo","Basis","BasisClosed","BasisOpen","basisOpen","Bundle","beta","_basis","_beta","point$1","_k","_x2","_y2","Cardinal","tension","CardinalClosed","CardinalOpen","point$2","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","alpha","_alpha","CatmullRomClosed","CatmullRomOpen","LinearClosed","linearClosed","slope3","h0","h1","s0","s1","slope2","point$3","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","natural","Step","_t","stepBefore","stepAfter","none","series","none$1","stackValue","stack","oz","kz","sz","sij","ki","si","slice$2","expand","silhouette","wiggle","s2","sij0","sij1","s3","sk","skj0","skj1","ascending$1","sums","sum$1","descending$2","insideOut","tops","bottoms","colorRgb","colorHsl","colorHcl","basis$2","basisClosed$1","constant$2","linear$1","exponential$1","array$1","identity$2","cubehelix$$","dispatch","Dispatch","parseTypenames","typenames","types","set$1","noop$1","objectConverter","columns","customConverter","inferColumns","rows","columnSet","dsv","parseRows","EOF","eol","EOL","delimiterCode","formatValue","formatRows","formatRow","reFormat","respond","hasResponse","mimeType","post","overrideMimeType","fixCallback","defaultMimeType","dsv$1","responseOf","clockNow","setFrame","clearNow","clock","clockSkew","Timer","_time","_next","timer","restart","timerFlush","frame","taskHead","wake","clockLast","nap","poke$1","pokeDelay","taskTail","sleep","clearInterval","setInterval","timeout$1","elapsed","interval$1","total","tick","t0$1","t1$1","exponent$1","identity$3","formatLocale$1","defaultLocale$1","locale$1","slice$3","range$$","point$4","constant$3","interpolate$$","map$2","linear$2","identity$4","quantize$1","threshold$1","date$1","number$2","durationSecond$1","durationMinute$1","durationHour$1","durationDay$1","durationWeek$1","namespace","namespaces","space","local","creatorInherit","namespaceURI","xhtml","creatorFixed","fullname","creator","Local","nextId","filterContextListener","listener","contextListener","related","compareDocumentPosition","event1","event0","__data__","parseTypenames$1","onRemove","typename","__on","onAdd","filterEvents","selection_on","sourceEvent","point$5","ownerSVGElement","createSVGPoint","matrixTransform","getScreenCTM","inverse","mouse","none$2","selection_select","_groups","subgroups","subnode","subgroup","Selection","_parents","selectorAll","selection_selectAll","selection_filter","matcher$1","sparse","update","selection_enter","_enter","EnterNode","datum","_parent","constant$4","bindIndex","exit","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyPrefix","selection_data","enterGroup","updateGroup","exitGroup","_exit","selection_exit","selection_merge","groups0","groups1","m0","merges","group0","group1","selection_order","selection_sort","compareNode","ascending$2","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","attrRemove","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","selection_attr","getAttributeNS","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","selection_style","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise$1","selection_raise","lower","selection_lower","selection_append","constantNull","selection_insert","selection_remove","selection_datum","window$$","initEvent","dispatchConstant","dispatchFunction","selection_dispatch","touches","schedule","timing","schedules","__transition","emptyOn","tween","emptyTween","ease","CREATED","set$2","STARTING","get$1","SCHEDULED","STARTED","ENDED","ENDING","interrupt","active","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","_id","tweenValue","interpolate$1","attrRemove$1","attrRemoveNS$1","attrConstant$1","value1","value00","interpolate0","value0","attrConstantNS$1","attrFunction$1","value10","attrFunctionNS$1","transition_attr","interpolateTransform$2","attrTween","attrTweenNS","_value","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","transition_filter","Transition","_name","transition_merge","start$1","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","Selection$1","styleRemove$1","styleRemoveEnd","styleConstant$1","styleFunction$1","transition_style","interpolateTransform$1","styleTween","transition_styleTween","textConstant$1","textFunction$1","transition_text","transition_transition","id0","id1","newId","defaultTiming","selection_transition","root$1","identity$5","scale0","scale1","center","entering","__axis","axis","orient","tickValues","tickArguments","spacing","tickSizeInner","tickPadding","range0","range1","tickExit","tickEnter","insert","epsilon$2","tickSizeOuter","slice$4","tickSize","axisTop","axisRight","axisBottom","axisLeft","defaultSeparation","meanX","meanXReduce","maxY","maxYReduce","leafLeft","leafRight","cluster","previousNode","eachAfter","separation","nodeSize","node_each","node_eachBefore","node_eachAfter","node_sum","node_sort","eachBefore","node_path","ancestor","leastCommonAncestor","aNodes","ancestors","bNodes","node_ancestors","node_descendants","node_leaves","leaves","node_links","links","hierarchy","childs","valued","defaultChildren","computeHeight","node_copy","copyData","Node$2","shuffle$1","enclose","circles","encloseN","encloses","dr","l2","l0","l1","enclose1","enclose2","enclose3","r2","x21","y21","r21","r3","a2","c2","a3","c3","ab","place","db","dc","intersects","distance2","Node$1","packEnclose","sj","aa","ba","oa","pack","optional","constantZero","constant$5","defaultRadius","radiusLeaf","packChildren","translateChild","roundNode","treemapDice","positionNode","defaultId","defaultParentId","parentId","stratify","nodeId","nodeKey","nodeByKey","keyPrefix$1","ambiguous","preroot","defaultSeparation$1","nextLeft","nextRight","moveSubtree","wm","wp","executeShifts","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","tx","kx","ky","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","treemapSlice","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","dice","index$1","treemap","paddingStack","paddingLeft","paddingTop","paddingRight","paddingBottom","tile","squarify","binary","valueOffset","valueTarget","valueLeft","valueRight","yk","xk","sliceDice","center$1","force","sx","sy","initialize","constant$6","jiggle","x$1","vx","y$1","vy","collide","quad","rj","ri","yi","strength","ri2","iterations","visitAfter","prepare","radii","index$2","defaultStrength","distances","strengths","bias","nodeById","initializeStrength","initializeDistance","distance","x$2","y$2","simulation","alphaMin","stepper","alphaTarget","alphaDecay","forces","fx","velocityDecay","fy","initializeNodes","initialRadius","initialAngle","initializeForce","manyBody","accumulate","theta2","distanceMax2","distanceMin2","distanceMin","distanceMax","theta","x$3","y$3","nopropagation","noevent","dragDisable","__noselect","MozUserSelect","dragEnable","noclick","constant$7","DragEvent","subject","defaultFilter","defaultContainer","defaultSubject","drag","mousedowned","touchstarted","touchmoved","touchended","touchending","gesture","beforestart","mousemoved","mouseupped","mousemoving","gestures","sublisteners","listeners","constant$8","x$4","y$4","RedBlackTree","RedBlackNode","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","createEdge","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","clipEdges","epsilon$3","createCell","site","cellHalfedgeAngle","cell","va","vb","cellHalfedgeStart","cellHalfedgeEnd","sortCellHalfedges","clipCells","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","v00","v01","v11","v10","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","epsilon2$1","ha","hc","circlePool","firstCircle","detachCircle","Beach","createBeach","beach","beachPool","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","voronoi","polygons","triangles","constant$9","ZoomEvent","Transform","__zoom","identity$6","nopropagation$1","noevent$1","defaultFilter$1","defaultExtent","SVGElement","defaultTransform","wheeled","dblclicked","k0","k1","constrain","invertX","invertY","Gesture","wheelidled","wheel","deltaY","deltaMode","wheelDelay","moved","shiftKey","touch0","touch1","touchstarting","touchDelay","dp","dl","scaleBy","scaleTo","translateBy","emit","scaleExtent","translateExtent","constant$10","BrushEvent","nopropagation$2","noevent$2","type$1","defaultFilter$2","defaultExtent$1","local$1","__brush","empty$1","brushSelection","dim","brushX","brush$1","brushY","brush","XY","cursors","handle","handles","redraw","started","handleSize","emitter","Emitter","point1","shifting","lockX","lockY","moving","point0","MODE_SPACE","MODE_DRAG","signX","e0","e1","signY","n0","n1","MODE_HANDLE","MODE_CENTER","flipX","flipY","ended","keydowned","keyupped","metaKey","signsX","signsY","selection1","selection0","starting","compareValue","chord","groupSums","groupIndex","subgroupIndex","chords","sortGroups","sortSubgroups","max$1","tau$3","di","dj","subindex","sortChords","constant$11","defaultSource","defaultTarget","defaultRadius$1","defaultStartAngle","defaultEndAngle","ribbon","argv","slice$5","sr","sa0","halfPi$2","sa1","sx0","sy0","tr","ta0","ta1","quadraticCurveTo","adder","Adder","add$1","bv","av","pi$4","asin$1","halfPi$3","haversin","sin$1","noop$2","streamGeometry","geometry","streamGeometryType","streamLine","coordinates","closed","coordinate","streamPolygon","polygonStart","polygonEnd","geoStream","streamObjectType","areaRingStart","areaStream","areaPointFirst","areaRingEnd","areaPoint","lambda00","phi00","phi","radians","lambda0","cosPhi0","cos$1","quarterPi","sinPhi0","dLambda","sdLambda","adLambda","cosPhi","sinPhi","areaRingSum","area$2","areaSum","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","sqrt$1","boundsPoint","range$1","lambda0$1","lambda1","phi0","phi1","linePoint","equatorial","inflection","phii","delta","lambda2","lambdai","degrees$1","antimeridian","boundsLineStart","boundsStream","boundsLineEnd","boundsRingPoint","deltaSum","lambda00$1","phi00$1","boundsRingStart","boundsRingEnd","epsilon$4","rangeCompare","rangeContains","bounds","feature","deltaMax","centroidPoint","centroidPointCartesian","W0","X0","Y0","Z0","centroidLineStart","centroidStream","centroidLinePointFirst","z0","centroidLinePoint","W1","X1","Y1","Z1","centroidLineEnd","centroidRingStart","centroidRingPointFirst","centroidRingEnd","centroidRingPoint","lambda00$2","phi00$2","cz","X2","Y2","Z2","centroid$1","epsilon2$2","constant$12","rotationIdentity","tau$4","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","circle$1","ring","clipBuffer","lines","rejoin","clipLine","pointEqual","Intersection","entry","clipPolygon","segments","compareIntersection","startInside","clip","segment","link$1","isSubject","clipExtent","corner","comparePoint","activeStream","polygonInside","winding","bufferStream","cleanInside","clipStream","v_","x_","y_","x__","y__","v__","clipMin","clipMax","extent$1","cacheStream","lengthLineStart","lengthStream","lengthPointFirst","lengthLineEnd","lambda0$2","sinPhi0$1","cosPhi0$1","lengthPoint","cosDelta","sinDelta","lengthSum","length$2","object$1","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","interpolate$2","sy1","kx0","ky0","kx1","ky1","identity$7","areaRingStart$1","areaStream$1","areaPointFirst$1","areaPoint$1","x0$1","y0$1","areaRingSum$1","areaRingEnd$1","boundsPoint$1","x0$2","y0$2","centroidPoint$1","X0$1","Y0$1","Z0$1","centroidLineStart$1","centroidStream$1","centroidPointFirstLine","centroidPointLine","x0$3","y0$3","X1$1","Y1$1","Z1$1","centroidLineEnd$1","centroidRingStart$1","centroidPointFirstRing","centroidRingEnd$1","centroidPointRing","x00$1","y00$1","X2$1","Y2$1","Z2$1","PathContext","pointRadius","pointLineStart","pointLine","lineEndPolygon","PathString","pointCircle","circle$2","index$3","contextStream","projectionStream","projection","boundsStream$1","polygonContains","sum$2","sinPhi1","cosPhi1","absDelta","phiArc","pointVisible","sink","pointRing","ringSink","ringStart","ringEnd","ringSegments","ringBuffer","polygonStarted","validSegment","rotatedStart","sphere","clipAntimeridianLine","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","clipAntimeridianInterpolate","clipCircle","cr","c0","point2","smallRadius","notHemisphere","two","pb","n2","n2n2","n1n2","determinant","c1","n1xn2","uu","polar","meridian","q1","transform$1","transform$2","Transform$1","fit","project","fitSize","fitExtent","resample","delta2","resample$1","resampleNone","resampleLineTo","phi2","dx2","dy2","dz","cosMinDistance","resampleStream","ringPoint","b00","c00","projectionMutator","projectAt","projectRotate","projectTransform","recenter","preclip","clipAntimeridian","postclip","projectResample","transformRadians","clipAngle","conicProjection","parallels","conicEqualAreaRaw","r0y","conicEqualArea","albers","multiplex","streams","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualArea","azimuthalEqualAreaRaw","azimuthalEquidistant","azimuthalEquidistantRaw","mercatorRaw","log$1","mercator","mercatorProjection","clipAuto","tany","conicConformalRaw","pow$1","sign$1","conicConformal","equirectangularRaw","equirectangular","conicEquidistantRaw","gy","nx","conicEquidistant","gnomonicRaw","gnomonic","orthographicRaw","orthographic","stereographicRaw","stereographic","transverseMercatorRaw","transverseMercator","polyIn","custom","polyOut","polyInOut","overshoot","backIn","backOut","backInOut","tau","amplitude","period","elasticIn","elasticOut","elasticInOut","pi$1","tau$1","epsilon","tauEpsilon","arcTo","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","treeProto","slice$1","await","awaitAll","_line","_point","cross$1","tan30","tan30_2","diamond","ka","kr","star","square","sqrt3","triangle","wye","_x3","_x4","_y3","_y4","bundle","cardinal","_x5","_y5","cardinalClosed","cardinalOpen","x23","y23","catmullRom","catmullRomClosed","catmullRomOpen","_t0","px","py","csv","csvParse","csvParseRows","csvFormat","csvFormatRows","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatRows","createContextualFragment","responseXML","csv$1","tsv$1","performance","array$2","cubehelix$3","xlink","xmlns","vendorMatches","webkitMatchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","element$1","mouseenter","mouseleave","classed","selection_prototype","descendants","resquarify","_squarify","grandpa","uncle","sibling","applyX","applyY","rescaleX","rescaleY","xy","nw","ne","se","sw","pi$3","temp","Feature","FeatureCollection","features","Sphere","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","geometries","areaRing","areaSum$1","cxcy","randomUniform","randomLogNormal","randomBates","randomExponential","easeLinear","easeQuad","easeQuadIn","easeQuadOut","easeQuadInOut","easeCubic","easeCubicIn","easeCubicOut","easePoly","easePolyIn","easePolyOut","easePolyInOut","easeSin","easeSinIn","easeSinOut","easeSinInOut","easeExp","easeExpIn","easeExpOut","easeExpInOut","easeCircle","easeCircleIn","easeCircleOut","easeCircleInOut","easeBounce","easeBounceIn","easeBounceOut","easeBounceInOut","easeBack","easeBackIn","easeBackOut","easeBackInOut","easeElastic","easeElasticIn","easeElasticOut","easeElasticInOut","polygonArea","polygonCentroid","polygonHull","polygonLength","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","curveBasisClosed","curveBasisOpen","curveBasis","curveBundle","curveCardinalClosed","curveCardinalOpen","curveCardinal","curveCatmullRomClosed","curveCatmullRomOpen","curveCatmullRom","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","stackOffsetExpand","stackOffsetNone","stackOffsetSilhouette","stackOffsetWiggle","stackOrderAscending","stackOrderDescending","stackOrderInsideOut","stackOrderNone","stackOrderReverse","dsvFormat","packSiblings","treemapBinary","treemapSliceDice","treemapSquarify","treemapResquarify","forceCenter","forceCollide","forceLink","forceManyBody","forceSimulation","forceX","forceY","zoomIdentity","zoomTransform","geoAlbers","geoAlbersUsa","geoArea","geoAzimuthalEqualArea","geoAzimuthalEqualAreaRaw","geoAzimuthalEquidistant","geoAzimuthalEquidistantRaw","geoBounds","geoCentroid","geoCircle","geoClipExtent","geoConicConformal","geoConicConformalRaw","geoConicEqualArea","geoConicEqualAreaRaw","geoConicEquidistant","geoConicEquidistantRaw","geoDistance","geoEquirectangular","geoEquirectangularRaw","geoGnomonic","geoGnomonicRaw","geoGraticule","geoInterpolate","geoLength","geoMercator","geoMercatorRaw","geoOrthographic","geoOrthographicRaw","geoPath","geoProjection","geoProjectionMutator","geoRotation","geoStereographic","geoStereographicRaw","geoTransform","geoTransverseMercator","geoTransverseMercatorRaw","preservePositionOriginalValues","accept","restoreFacetPreservePositionValue","filterByContainer","filterBy","DROPDOWN_MIN_WIDTH","DROPDOWN_WIDTH_RATIO","handleNoResults","isFacetSearchScrolledIntoView","positionSearchResults","DEBOUNCE_SCROLL_WAIT","facetSearchElement","facetTop","facetBottom","dropdownTop","dropdownBottom","FacetValues_1","FacetSearch_1","FacetSettings_1","FacetSort_1","FacetValuesList_1","BreadcrumbValueElement_1","BreadcrumbValuesList_1","FacetValueElement_1","FacetSearchValuesList_1","OmniboxValueElement_1","OmniboxValuesList_1","ValueElementRenderer_1","FacetValuesOrder_1","facetClassId","FacetValues","currentPage","canFetchMore","showingWaitAnimation","listenToQueryStateChange","availableSorts","omniboxZIndex","omniboxIndex","checkForComputedFieldAndSort","checkForValueCaptionType","checkForCustomSort","initFacetQueryController","initQueryEvents","initComponentStateEvents","initOmniboxEvents","initBreadCrumbEvents","initSearchAlertEvents","updateNumberOfValues","resize","initBottomAndTopSpacer","buildFacetContent","facetSettings","enableSettingsFacetState","loadOnce","loadSavedState","selectValue","facetValuesList","facetValueHasChanged","selectMultipleValues","deselectValue","unselect","deselectMultipleValues","excludeValue","exclude","excludeMultipleValues","unexcludeValue","unExclude","unexcludeMultipleValues","toggleSelectValue","toggleSelect","toggleExcludeValue","toggleExclude","getDisplayedValues","displayed","getAllCurrentlyDisplayed","getExcludedValues","rebuildValueElements","updateQueryStateModel","switchToAnd","switchToOr","updateSort","triggerNewQuery","unfadeInactiveValuesInMainList","fadeInactiveValuesInMainList","showWaitingAnimation","headerElement","hideWaitingAnimation","processFacetSearchAllResultsSelected","valuesForAnalytics","ensureFacetValueIsInList","valuesThatStays","pinFacetPosition","pinnedViewportPosition","showMore","nbAvailableValues","triggerMoreQuery","showLess","lessElement","moreElement","sortValuesDependingOnStatus","collapse","collapseFacet","expandFacet","updateVisibilityBasedOnDependsOn","groupByResult","lastGroupByResult","processNewGroupByResults","BreadcrumbValueList","BreadcrumbValueElement","excludedValues","selectedValues","buildAsString","lineThrough","initFacetValuesList","FacetValuesList","FacetValueElement","initFacetSearch","FacetSearch","FacetSearchValuesList","isAnyValueCurrentlyDisplayed","includedAttributeId","excludedAttributeId","operatorAttributeId","lookupValueAttributeId","componentStateId","includeInOmnibox","handlePopulateOmnibox","includeInBreadcrumb","handleClearBreadcrumb","handleOmniboxWithStaticValue","eventArg","completeQueryExpression","displayedValue","numberOfValuesInOmnibox","gotAMatch","OmniboxValuesList","OmniboxValueElement","newFacetValues","updateValues","isMultiValueField","triggerUpdateDeltaQuery","updateDeltaWithFilteredFacetValues","ensurePinnedFacetHasntMoved","updateExcludedQueryStateModel","updateIncludedQueryStateModel","updateOperatorQueryStateModel","updateLookupValueQueryStateModel","rebuild","shouldRenderMoreLess","updateMoreLess","shouldRenderFacetSearch","updateSearchInNewDesign","moreValuesAvailable","renderer","ValueElementRenderer","FacetValue","searchButton_1","withNo","excludeIcon","listItem","stylishCheckbox","lessElementIsShown","getMinimumNumberOfValuesToDisplay","footerElement","handleClickMore","handleClickLess","enableFacetSearch","bottomSpace","paddingContainer","topSpace","unpinFacetPosition","pinnedTopSpace","pinnedBottomSpace","included","valueToSet_1","handleQueryStateChangedOperator","handleQueryStateChangedIncluded","includedChanged","toUnSelect","handleQueryStateChangedExcluded","excludedChanged","toUnExclude","handleLookupvalueChanged","lookupFieldChanged","lookupvalue","queryStateAttributes","lookupValueChanged","handleOmniboxWithSearchInFacet","searchParameters","deferred","facetSearchDelay","updateCountsFromNewValues","importActiveValuesFromOtherList","buildHeader","buildMore","buildLess","buildFooter","headerIcon","enableCollapse","settingsKlass","enableSettings","FacetSettings","sortKlass","FacetSort","built","facetSort","shouldFacetUnpin","unpinnedViewportPosition","isFacetPinned","elementToScroll_1","scrollContainer","currentViewportPosition_1","offset_1","scrollToOffset_1","Window","scrollTo","heightBottom","attempts","more","tabindex","moreAction","less","lessAction","groupByValue","createFromGroupByValue","lastSelectedValueIndex_1","FacetValuesOrder","reorderValues","dependsOn","doesParentFacetHasSelectedValue","depend","showIcon","enableTogglingOperator","numberOfValuesInBreadcrumb","computedFieldFormat","computedFieldCaption","updateCountsFromNewValue","occurrences","cloneWithZeroOccurrences","cloneWithDelta","getFormattedCount","getFormattedComputedField","createFromValue","createFromFieldValue","computedFieldResults","at","otherValue","myValue","newValues","unfilteredValue","filteredValue","mergeWithUnfilteredFacetValues","unfiltered","excludeLastIndex","nbExclude","excludes","facetSearchValuesListKlass","showingFacetSearchWaitAnimation","moreValuesToFetch","searchBarIsAnimating","lastSearchWasEmpty","shouldPositionSearchResults","onDocumentClick","handleClickElsewhere","buildSearchMobile","buildBaseSearch","searchBar","self_1","cancelAnyPendingSearchOperation","hideSearchResultsElement","triggerNewFacetSearch","showFacetSearchWaitingAnimation","facetSearchPromise","processNewFacetSearchResults","hideFacetSearchWaitingAnimation","handleFacetSearchFocus","magnifier","clearIcon","middle","handleFacetSearchKeyUp","handleFacetSearchClear","detectSearchBarAnimation","toOpen","showOrHideClearElement","startNewSearchTimeout","buildParamsForNormalSearch","handleKeyboardNavigation","buildParamsForExcludingCurrentlyDisplayedValues","keyboardNavigationEnterPressed","keyboardNavigationDeletePressed","moveCurrentResultDown","moveCurrentResultUp","highlightCurrentQueryWithinSearchResults","buildParamsForFetchingMore","performSelectActionOnCurrentSearchResult","selectAllValuesMatchingSearch","performExcludeActionOnCurrentSearchResult","facetSearchTimeout","valueInInput","facetSearchParameters","rebuildSearchResults","showSearchResultsElement","makeFirstSearchResultTheCurrentOne","selectAllMobile","setupFacetSearchResultsEvents","handleFacetSearchResultsScroll","makeCurrentResult","touchDragging","mouseDragging","elementHeight","bottomPosition","captionElement","getSelectables","selectable","allSelectables","highlightAndShowCurrentResultWithKeyboard","offsetTop","checked","click","valueElement","toggleExcludeWithUA","animationName","ValueElement_1","keepDisplayedValueNextTime","bindEvent","displayNextTime","pinFacet","ValueElement","onExclude","eventBindings","omniboxObject","isOmnibox","handleEventForCheckboxChange","handleEventForExcludedValueElement","handleEventForValueElement","setCssClassOnListValueElement","unexclude","getAnalyticsFacetMeta","handleSelectValue","handleExcludeClick","omniboxCloseEvent","SPACEBAR","excludeAction","selectAction","buildExcludeIcon","buildValueComputedField","labelDiv","buildValueCheckbox","buildValueStylishCheckbox","buildValueIcon","valueCount","buildValueCount","buildValueCaption","addFocusAndBlurEventListeners","getValueIcon","buildValueIconFromSprite","valueIcon","countElement","activeSort","reorderValuesWithCustomOrder","reorderValuesWithCustomCaption","customSortsLowercase","valueIndexPair","customSortDirection","customSortDirectionChange","enabledSortsIgnoreRenderBecauseOfPairs","filterDuplicateForRendering","settingsButton","settingsIcon","settingsPopup","enabledSorts","sortSection","buildSortSection","enabledSortsAllowDirection","directionSection","buildDirectionSection","saveStateSection","buildSaveStateSection","clearStateSection","buildClearStateSection","hideSection","buildHideSection","showSection","buildShowSection","appendCommon","appendIfNotUndefined","handleMouseEventOnButton","facetStateLocalStorage","currentStateIncluded","includedStateAttribute","currentStateExcluded","excludedStateAttribute","currentStateOperator","operatorStateAttribute","loadedFromSettings","saveState","getPopupAlignment","sortItems","relatedSort","selectItem","unselectItem","sortSectionIcon","buildIcon","sortSectionItems","buildItems","sortTitle","buildSortSectionItems","elems","enabledSort","buildItem","description","handleClickSortButton","closePopupAndUpdateSort","facetSortDescription","directionToggle","directionAscendingSection","buildAscendingOrDescendingSection","iconAscending","iconDescending","directionItemsAscending","buildAscendingOrDescending","handleDirectionClick","directionDescendingSection","directionItemsDescending","getItems","directionItems","getCurrentDirectionItem","saveStateItems","saveStateItem","handleSaveStateClick","clearStateItems","clearStateItem","handleClearStateClick","hideItems","hideItem","showItems","showItem","insideIcon","handleClickSettingsButtons","activateDirectionSection","disableDirectionSection","unselectSection","closeTimeout","mouseLeave","mouseEnter","alignmentHorizontal","alignmentVertical","sortToActivate","newSortToEnable","removeEnabledSortsBasedOnFacetType","FacetRange","facetRange","alphaascending","alphadescending","computedfieldascending","computedfielddescending","chisquare","nosort","facetValueElementKlass","valueList","currentlyDisplayed","getAllFacetValue","getter","allValues","getValuesToBuildWith","docFragment","createDocumentFragment","facetValueShouldBeRemoved","valueListElement","buildNewDesign","buildOldDesign","rebuildOperatorToggle","collapseElement","expandElement","valueToSet","titleSection","iconElement","buildTitle","waitElement","buildWaitAnimation","settingsSection","buildEraser","operatorElement","buildOperatorToggle","buildCollapse","buildExpand","newElement","cssClassForIcon","handleOperatorClick","operatorNow","operatorBefore","eraser","cmp","getBreadcrumbTooltip","clicked","tooltipParts","breadcrumbValueElementKlass","setExpandedAndCollapsed","buildExpanded","collapsed","buildCollapsed","elementBreadcrumb","numberOfSelected","numberOfExcluded","sep","multi","multiIcon","multiExcluded","multiExcludedIcon","valueElements","toolTips","separatorsClicked","valuesToBuildWith","valueAlreadyInFacet","omniboxValueElementKlass","buildOmniboxForOneRow","buildFinalOmniboxElement","selectCallback","logAnalyticsEvent","excludeCallback","omniboxValueElement","omniboxRowContent","highlightOmniboxMatch","omniboxRow","buildOmniboxHeader","orignalStr","strippedFacetValues","promises","mainInterface","jQueryIsDefined","jQueryInstance","coveo","returnValueForThisElement","jQueryDefinedOnWindow","jQueryDefinedOnCoveoObject","jquery","TemplateHelpers_1","TemplateHelpers","registerFieldHelper","fieldHelpers","registerTemplateHelperInUnderscore","helpers","getHelper","getHelpers","resolveQueryResult","ResultList_1","ResultList","resultCurrentlyBeingRendered","Quickview_1","resolveTermsToHighlight","currentQueryResult","resolvePhrasesToHighlight","termsToHighlightAreDefined","Icon_1","CoreHelpers","exportAllHelpersGlobally","scope","listOfAddresses","Icon","createIcon","templatesToLoad","defaultTmpl","atLeastOneWasLoaded","toLoad","byteMeasure","possibleInternalQuickview","qv","preprocessIconInfo","small","shouldDisplayLabel","withLabel","labelValue","DefaultQuickviewTemplate_1","QuickviewDocument_1","bindedHandleEscapeEvent","contentTemplate","DefaultQuickviewTemplate","iconForQuickview","captionForQuickview","bindClick","openerObject","prepareOpenQuickviewObject","createModalBox","bindQuickviewEvents","animateAndOpen","hasHtmlVersion","alwaysShow","closeQuickview","loadingAnimation","bindIFrameEscape","bindEscape","quickviewDocument","QuickviewDocument","durationMs","computedModalBoxContent","setQuickviewSize","prepareQuickviewContent","enableLoadingAnimation","contentWindow","maxWidth","NONE","loadingAnimationSelector","loadingAnimationTemplate","HIGHLIGHT_PREFIX","termsToHighlightWereModified","iframe","buildIFrame","author","beforeLoad","dataToSendOnOpenQuickView","checkIfTermsToHighlightWereModified","handleTermsToHighlight","maximumDocumentSize","contentDocument","renderHTMLDocument","triggerQuickviewLoaded","renderErrorReport","computeHighlights","isNewQuickviewDocument","writeToIFrame","wrapPreElementsInIframe","errorStatus","errorString","toWrite","write","cssText","afterLoad","eventArgs","keywordsState","highlightsCount","idParts","getHighlightIdParts","idIndexPart","idOccurencePart","idTermPart","getHighlightInnerText","termsCount","occurence","embeddedWordParts","getHightlightEmbeddedWordIdParts","embeddedWord","childNodes","minHeight","resolvedWords","resolveOriginalTermFromHighlight","backgroundColor","currentIndex","buildWordButton","embedded","originalTerm","expansion","wordState","wordHtml","quickviewName","navigate","quickviewUpArrow","quickviewUpArrowIcon","quickviewDownArrow","quickviewDownArrowIcon","borderColor","getSaturatedColor","backward","toIndex","scroll","getScrollingElement","border","pdf","scrollIntoView","iFrame","iFrameWrapper","iframeWindow","hsv","DefaultRecommendationTemplate_1","ResponsiveDefaultResultTemplate_1","elementClassId","reachedTheEndOfResults","successiveScrollCount","resultTemplate","waitAnimationContainer","infiniteScrollContainer","showOrHideElementsDependingOnState","handleChangeLayout","enableInfiniteScroll","handlePageChanged","handleScrollOfResultList","setupTemplatesVersusLayouts","layouts","loadTemplatesFromCache","DefaultRecommendationTemplate","pageTemplateNames","templateName","getAutoSelectedFieldsToInclude","getMinimalFieldsToInclude","layoutClassToAdd","ResponsiveDefaultResultTemplate","renderResults","resultsElement","triggerNewResultDisplayed","triggerNewResultsDisplayed","buildResults","buildResult","autoCreateComponentsInsideResult","displayMoreResults","isCurrentlyFetchingMoreResults","hasPotentiallyMoreResultsToDisplay","enableInfiniteScrollWaitingAnimation","showWaitingAnimationForInfiniteScrolling","fetchingMoreResults","hideWaitingAnimationForInfiniteScrolling","MAX_AMOUNT_OF_SUCESSIVE_REQUESTS","getDisplayedResults","getDisplayedResultsElements","resultComponentBindings","cancelFetchingMoreResultsIfNeeded","mobileScrollContainer","scrollBackToTop","isScrollingOfResultListAlmostAtTheBottom","infiniteScrollPageSize","autoSelectFieldsToInclude","otherResultListsElements","resultListElement","otherFields","otherResultListElement","otherResultListInstance","isWindow","isScrollAtBottomForWindowElement","isScrollAtBottomForHtmlElement","windowHeight","bodyHeight","hasQuery","hasResults","showIfQuery","showIfNoQuery","showIfResults","showIfNoResults","waitAnimation","spinner","spinnerContainer","currentMode","resultList","lastResults","QueryboxQueryParameters_1","HTMLInputElement","Query","Term","enableSearchAsYouType","submit","autoFocus","QueryboxQueryParameters","addParameters","searchAsYouTypeTimeout","searchAsYouTypeDelay","enableQuerySyntax","addSearchButton","anchor","searchButton","enableOmnibox","searchbox","QueryStateModel_2","FieldAddon_1","QueryExtensionAddon_1","RevealQuerySuggestAddon_1","OldOmniboxAddon_1","MINIMUM_EXECUTABLE_CONFIDENCE","movedOnce","skipRevealAutoSuggest","enableFieldAddon","FieldAddon","fieldAlias","listOfFields","enableQueryExtensionAddon","QueryExtensionAddon","Any","enableRevealQuerySuggestAddon","RevealQuerySuggestAddon","OldOmniboxAddon","omniboxTimeout","handleBeforeRedirect","isRevealAutoSuggestion","setupMagicBox","getInput","modifyEventTo","getOmniboxAnalyticsEventCause","placeholder","handleRevealAutoSuggestionWithKeyboard","handleRevealAutoSuggestionsWithMouse","buildCustomDataForPartialQueries","handleTabPress","handleSuggestions","modifyCustomDataOnPending","clearSearchAsYouType","pendingEvt","newCustomData_1","cleanCustomData","toClean","rejectLength","reducedToRejectLengthOrLess","totalSoFar","suggestionsEventArgs","omnibox","preprocessResultForQueryArgs","notQuotedValues","fieldNames","handleTabPressForRevealSuggestions","handleTabPressForOldOmniboxAddon","firstSelected","firstSelectable","analyticsEvent","shouldExecuteQuery","textSuggestion","pendingEvent","forceExecuteQuery","suggestionShouldTriggerQuery","suggestions_1","executableConfidence","enableSimpleFieldAddon","getSuggestion","hashString","hashToString","hashValueToSuggestion","simpleFieldNames","fieldName","currentField","fieldQuery","INDEX","includeInQuery","withAt","fieldNameLC","matchFields","patternType","attributeNames","used","queryExtension","queryExtensionArgumentResults","getExtensions","extensionName","matchExtensions","extension","argumentNames","argumentName","suggestiontHtml","notMatched","matched","corrected","isPartialMatch","firstFail","payload","enableWordCompletion","completions","completion","buildPopulateOmniboxEventArgs","rowsToSuggestions","getCurrentQueryExpression","cursorPos","getRegexToSearch","strValue","getQueryExpressionBreakDown","queryWords","searchValue","clearCurrentExpression","insertAt","toInsert","replaceCurrentExpression","currentQueryExpression","allQueryExpressions","cursorPosition","SuggestionForOmnibox","structure","onTabPress","buildOmniboxElement","buildElementHeader","buildRowElements","headerTitle","SuggestionForOmnibox_1","resultsToBuildWith","rowTemplate","toRender","rowElement","onRowSelection","suggestionStructure","headerTemplate","suggestionForOmnibox","onRowTab","selectSuggestion","currentlyDisplayedSuggestions","currentlySuggested","numberOfSuggestions","buildListFieldValueRequest","setCoveoUnderscore","CoreHelpers_1"],"mappings":"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CAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,MACAC,IAAA,MACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,MACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,MACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,MAGAv7B,K9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","file":"CoveoJsSearch.Searchbox.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Coveo__temporary\"] = factory();\n\telse\n\t\troot[\"Coveo__temporary\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Coveo__temporary\"] = factory();\n\telse\n\t\troot[\"Coveo__temporary\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/js/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tfunction __export(m) {\n\t for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n\t}\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar CoveoUnderscore_1 = __webpack_require__(256);\n\texports._ = CoveoUnderscore_1.underscoreInstance;\n\t__export(__webpack_require__(7));\n\t__export(__webpack_require__(32));\n\t__export(__webpack_require__(38));\n\t__export(__webpack_require__(41));\n\t__export(__webpack_require__(57));\n\t__export(__webpack_require__(75));\n\t__export(__webpack_require__(102));\n\t__export(__webpack_require__(106));\n\t__export(__webpack_require__(176));\n\tvar Analytics_1 = __webpack_require__(128);\n\texports.Analytics = Analytics_1.Analytics;\n\tvar AnalyticsSuggestions_1 = __webpack_require__(247);\n\texports.AnalyticsSuggestions = AnalyticsSuggestions_1.AnalyticsSuggestions;\n\tvar FieldSuggestions_1 = __webpack_require__(248);\n\texports.FieldSuggestions = FieldSuggestions_1.FieldSuggestions;\n\tvar Omnibox_1 = __webpack_require__(191);\n\texports.Omnibox = Omnibox_1.Omnibox;\n\tvar Querybox_1 = __webpack_require__(187);\n\texports.Querybox = Querybox_1.Querybox;\n\tvar SearchButton_1 = __webpack_require__(189);\n\texports.SearchButton = SearchButton_1.SearchButton;\n\tvar Searchbox_1 = __webpack_require__(190);\n\texports.Searchbox = Searchbox_1.Searchbox;\n\tvar SwapVar_1 = __webpack_require__(415);\n\tSwapVar_1.swapVar(this);\n\n\n/***/ },\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tfunction __export(m) {\n\t for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n\t}\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar PromisesShim_1 = __webpack_require__(8);\n\tPromisesShim_1.shim();\n\tvar CustomEventPolyfill_1 = __webpack_require__(9);\n\tCustomEventPolyfill_1.customEventPolyfill();\n\t// MISC\n\tvar Version_1 = __webpack_require__(10);\n\texports.version = Version_1.version;\n\tvar SearchEndpoint_1 = __webpack_require__(11);\n\texports.SearchEndpoint = SearchEndpoint_1.SearchEndpoint;\n\t__export(__webpack_require__(25));\n\t// Default language needs to be set after external module, since this is where l10n will be imported\n\tvar DefaultLanguage_1 = __webpack_require__(29);\n\tDefaultLanguage_1.defaultLanguage();\n\tvar DefaultLanguage_2 = __webpack_require__(29);\n\texports.setLanguageAfterPageLoaded = DefaultLanguage_2.setLanguageAfterPageLoaded;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction shim() {\n\t Promise.prototype['finally'] = function finallyPolyfill(callback) {\n\t var constructor = this.constructor;\n\t return this.then(function (value) {\n\t return constructor.resolve(callback()).then(function () {\n\t return value;\n\t });\n\t }, function (reason) {\n\t return constructor.resolve(callback()).then(function () {\n\t throw reason;\n\t });\n\t });\n\t };\n\t var rethrowError = function (self) {\n\t self.then(null, function (err) {\n\t setTimeout(function () {\n\t throw err;\n\t }, 0);\n\t });\n\t };\n\t if (typeof Promise.prototype['done'] !== 'function') {\n\t Promise.prototype['done'] = function (onFulfilled, onRejected) {\n\t var self = arguments.length ? this.then.apply(this, arguments) : this;\n\t rethrowError(self);\n\t return this;\n\t };\n\t }\n\t if (typeof Promise.prototype['fail'] !== 'function') {\n\t Promise.prototype['fail'] = function (onFulfilled, onRejected) {\n\t var self = arguments.length ? this.catch.apply(this, arguments) : this;\n\t rethrowError(self);\n\t return this;\n\t };\n\t }\n\t}\n\texports.shim = shim;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// CustomEvent polyfill from MDN\n\t// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill\n\tfunction customEventPolyfill() {\n\t // window.CustomEvent is missing from the definitions\n\t if (typeof window.CustomEvent === 'function') {\n\t return;\n\t }\n\t var CustomEvent = function (event, params) {\n\t params = params || { bubbles: false, cancelable: false, detail: undefined };\n\t var customEvent = document.createEvent('CustomEvent');\n\t customEvent.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t return customEvent;\n\t };\n\t // window.Event is specific to IE\n\t CustomEvent.prototype = window.Event.prototype;\n\t window.CustomEvent = CustomEvent;\n\t}\n\texports.customEventPolyfill = customEventPolyfill;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.version = {\n\t 'lib': '1.2537.43',\n\t 'product': '1.2537.43',\n\t 'supportedApiVersion': 2\n\t};\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n\t var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n\t if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n\t else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n\t return c > 3 && r && Object.defineProperty(target, key, r), r;\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar EndpointCaller_1 = __webpack_require__(12);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Version_1 = __webpack_require__(10);\n\tvar AjaxError_1 = __webpack_require__(21);\n\tvar MissingAuthenticationError_1 = __webpack_require__(22);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar QueryError_1 = __webpack_require__(24);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar PromisesShim_1 = __webpack_require__(8);\n\tvar _ = __webpack_require__(16);\n\tPromisesShim_1.shim();\n\tvar DefaultSearchEndpointOptions = (function () {\n\t function DefaultSearchEndpointOptions() {\n\t this.version = 'v2';\n\t this.queryStringArguments = {};\n\t this.anonymous = false;\n\t this.isGuestUser = false;\n\t }\n\t return DefaultSearchEndpointOptions;\n\t}());\n\texports.DefaultSearchEndpointOptions = DefaultSearchEndpointOptions;\n\t/**\n\t * A search endpoint allows to execute various actions against the Coveo Search API and index.
\n\t * For example, you can search, list field values, get the quickview content for a document, etc.
\n\t * Any actions that you execute using this class will not trigger a full query cycle for the Coveo components.
\n\t * This is because this class will not trigger any query events directly.
\n\t * If you wish to execute a query that all components will react to (and trigger the corresponding query events), use the {@link QueryController}\n\t */\n\tvar SearchEndpoint = (function () {\n\t /**\n\t * Create a new SearchEndpoint.
\n\t * Will use a set of sane default options, and merge them with the options parameter.
\n\t * Will create an {@link EndpointCaller} and use it to communicate with the endpoint internally\n\t * @param options\n\t */\n\t function SearchEndpoint(options) {\n\t var _this = this;\n\t this.options = options;\n\t Assert_1.Assert.exists(options);\n\t Assert_1.Assert.exists(options.restUri);\n\t // For backward compatibility, we set anonymous to true when an access token\n\t // is specified on a page loaded through the filesystem. This causes withCredentials\n\t // to NOT be set, allowing those pages to work with non Windows/Basic/Cookie\n\t // authentication. If anonymous is explicitly set to false, we'll use withCredentials.\n\t var defaultOptions = new DefaultSearchEndpointOptions();\n\t defaultOptions.anonymous = window.location.href.indexOf('file://') == 0 && Utils_1.Utils.isNonEmptyString(options.accessToken);\n\t this.options = _.extend({}, defaultOptions, options);\n\t // Forward any debug=1 query argument to the REST API to ease debugging\n\t if (SearchEndpoint.isDebugArgumentPresent()) {\n\t this.options.queryStringArguments['debug'] = 1;\n\t }\n\t this.onUnload = function () {\n\t _this.handleUnload();\n\t };\n\t window.addEventListener('beforeunload', this.onUnload);\n\t this.logger = new Logger_1.Logger(this);\n\t this.createEndpointCaller();\n\t }\n\t /**\n\t * Configure an endpoint that will point to a Coveo Cloud index, which contains a set of public sources with no security on them.
\n\t * Used for demo purposes and ease of setup.\n\t * @param otherOptions A set of additional options to use when configuring this endpoint\n\t */\n\t SearchEndpoint.configureSampleEndpoint = function (otherOptions) {\n\t if (SearchEndpoint.isUseLocalArgumentPresent()) {\n\t // This is a handy flag to quickly test a local search API and alerts\n\t SearchEndpoint.endpoints['default'] = new SearchEndpoint(_.extend({\n\t restUri: 'http://localhost:8100/rest/search',\n\t searchAlertsUri: 'http://localhost:8088/rest/search/alerts/'\n\t }, otherOptions));\n\t }\n\t else {\n\t // This OAuth token points to the organization used for samples.\n\t // It contains a set of harmless content sources.\n\t SearchEndpoint.endpoints['default'] = new SearchEndpoint(_.extend({\n\t restUri: 'https://cloudplatform.coveo.com/rest/search',\n\t accessToken: '52d806a2-0f64-4390-a3f2-e0f41a4a73ec'\n\t }, otherOptions));\n\t }\n\t };\n\t /**\n\t * Configure an endpoint that will point to a Coveo Cloud index V2, which contains a set of public sources with no security on them.
\n\t * Used for demo purposes and ease of setup.\n\t * @param otherOptions A set of additional options to use when configuring this endpoint\n\t */\n\t SearchEndpoint.configureSampleEndpointV2 = function (optionsOPtions) {\n\t SearchEndpoint.endpoints['default'] = new SearchEndpoint(_.extend({\n\t restUri: 'https://platform.cloud.coveo.com/rest/search',\n\t accessToken: 'xx564559b1-0045-48e1-953c-3addd1ee4457',\n\t queryStringArguments: {\n\t organizationID: 'searchuisamples',\n\t viewAllContent: 1\n\t }\n\t }));\n\t };\n\t /**\n\t * Configure an endpoint to a Coveo Cloud index.\n\t * @param organization The organization id of your Coveo cloud index\n\t * @param token The token to use to execute query. If null, you will most probably need to login when querying.\n\t * @param uri The uri of your cloud Search API. By default, will point to the production environment\n\t * @param otherOptions A set of additional options to use when configuring this endpoint\n\t */\n\t SearchEndpoint.configureCloudEndpoint = function (organization, token, uri, otherOptions) {\n\t if (uri === void 0) { uri = 'https://cloudplatform.coveo.com/rest/search'; }\n\t var options = {\n\t restUri: uri,\n\t accessToken: token,\n\t queryStringArguments: { organizationId: organization }\n\t };\n\t var merged = SearchEndpoint.mergeConfigOptions(options, otherOptions);\n\t SearchEndpoint.endpoints['default'] = new SearchEndpoint(SearchEndpoint.removeUndefinedConfigOption(merged));\n\t };\n\t /**\n\t * Configure an endpoint to a Coveo Cloud index, in the V2 platform.\n\t * @param organization The organization id of your Coveo cloud index\n\t * @param token The token to use to execute query. If null, you will most probably need to login when querying.\n\t * @param uri The uri of your cloud Search API. By default, will point to the production environment\n\t * @param otherOptions A set of additional options to use when configuring this endpoint\n\t */\n\t SearchEndpoint.configureCloudV2Endpoint = function (organization, token, uri, otherOptions) {\n\t if (uri === void 0) { uri = 'https://platform.cloud.coveo.com/rest/search'; }\n\t return SearchEndpoint.configureCloudEndpoint(organization, token, uri, otherOptions);\n\t };\n\t /**\n\t * Configure an endpoint to a Coveo on premise index.\n\t * @param uri The uri of your Coveo Search API endpoint. eg : http://myserver:8080/rest/search\n\t * @param token The token to use to execute query. If null, you will most probably need to login when querying (unless the search api is configured using advanced auth options, like windows auth or claims)\n\t * @param otherOptions A set of additional options to use when configuring this endpoint\n\t */\n\t SearchEndpoint.configureOnPremiseEndpoint = function (uri, token, otherOptions) {\n\t var merged = SearchEndpoint.mergeConfigOptions({\n\t restUri: uri,\n\t accessToken: token\n\t }, otherOptions);\n\t SearchEndpoint.endpoints['default'] = new SearchEndpoint(SearchEndpoint.removeUndefinedConfigOption(merged));\n\t };\n\t SearchEndpoint.removeUndefinedConfigOption = function (config) {\n\t _.each(_.keys(config), function (key) {\n\t if (config[key] == undefined) {\n\t delete config[key];\n\t }\n\t });\n\t return config;\n\t };\n\t SearchEndpoint.mergeConfigOptions = function (first, second) {\n\t first = SearchEndpoint.removeUndefinedConfigOption(first);\n\t second = SearchEndpoint.removeUndefinedConfigOption(second);\n\t return _.extend({}, first, second);\n\t };\n\t SearchEndpoint.prototype.reset = function () {\n\t this.createEndpointCaller();\n\t };\n\t /**\n\t * Set a function which will allow external code to modify all endpoint call parameters before they are sent by the browser.\n\t *\n\t * Used in very specific scenario where the network infrastructure require special request headers to be added or removed, for example.\n\t * @param requestModifier\n\t */\n\t SearchEndpoint.prototype.setRequestModifier = function (requestModifier) {\n\t this.caller.options.requestModifier = requestModifier;\n\t };\n\t /**\n\t * Return the base uri of the endpoint to perform search\n\t * @returns {string}\n\t */\n\t SearchEndpoint.prototype.getBaseUri = function () {\n\t return this.buildBaseUri('');\n\t };\n\t /**\n\t * Return the base uri of the endpoint for search alert\n\t * @returns {string}\n\t */\n\t SearchEndpoint.prototype.getBaseAlertsUri = function () {\n\t return this.buildSearchAlertsUri('');\n\t };\n\t /**\n\t * Get the uri that can be used to authenticate against the given provider\n\t * @param provider The provider name\n\t * @param returnUri The uri at which to return after the authentication is completed\n\t * @param message The message for authentication\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {string}\n\t */\n\t SearchEndpoint.prototype.getAuthenticationProviderUri = function (provider, returnUri, message, callOptions, callParams) {\n\t var queryString = this.buildBaseQueryString(callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t callParams.url += provider + '?';\n\t if (Utils_1.Utils.isNonEmptyString(returnUri)) {\n\t callParams.url += 'redirectUri=' + encodeURIComponent(returnUri) + '&';\n\t }\n\t else if (Utils_1.Utils.isNonEmptyString(message)) {\n\t callParams.url += 'message=' + encodeURIComponent(message) + '&';\n\t }\n\t callParams.url += callParams.queryString.join('&');\n\t return callParams.url;\n\t };\n\t /**\n\t * is the search endpoint using jsonp internally to communicate with Search API\n\t * @returns {boolean}\n\t */\n\t SearchEndpoint.prototype.isJsonp = function () {\n\t return this.caller.useJsonp;\n\t };\n\t /**\n\t * Perform a search on the index and returns a Promise of {@link IQueryResults}.
\n\t * Will modify the query results slightly, by adding additional information on each results (an id, the state object, etc.)\n\t * @param query The query to execute. Typically, the query object is built using a {@link QueryBuilder}\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.search = function (query, callOptions, callParams) {\n\t var _this = this;\n\t Assert_1.Assert.exists(query);\n\t callParams.requestData = query;\n\t this.logger.info('Performing REST query', query);\n\t return this.performOneCall(callParams, callOptions).then(function (results) {\n\t _this.logger.info('REST query successful', results, query);\n\t // Version check\n\t // If the SearchAPI doesn't give us any apiVersion info, we assume version 1 (before apiVersion was implemented)\n\t if (results.apiVersion == null) {\n\t results.apiVersion = 1;\n\t }\n\t if (results.apiVersion < Version_1.version.supportedApiVersion) {\n\t _this.logger.error('Please update your REST Search API');\n\t }\n\t // If the server specified no search ID generated one using the client-side\n\t // GUID generator. We prefer server generated guids to allow tracking a query\n\t // all the way from the analytics to the logs.\n\t if (Utils_1.Utils.isNullOrEmptyString(results.searchUid)) {\n\t results.searchUid = QueryUtils_1.QueryUtils.createGuid();\n\t }\n\t QueryUtils_1.QueryUtils.setIndexAndUidOnQueryResults(query, results, results.searchUid, results.pipeline, results.splitTestRun);\n\t QueryUtils_1.QueryUtils.setTermsToHighlightOnQueryResults(query, results);\n\t return results;\n\t });\n\t };\n\t /**\n\t * Get a link/uri to download a set of results, for a given query, to an xlsx format.
\n\t * Note : This does not download automatically the documents, merely provide an url at which to download them.\n\t * @param query The query for which to get the xlsx documents\n\t * @param numberOfResults The number of results that should be downloaded\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {string}\n\t */\n\t SearchEndpoint.prototype.getExportToExcelLink = function (query, numberOfResults, callOptions, callParams) {\n\t var queryString = this.buildBaseQueryString(callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t queryString = this.buildCompleteQueryString(null, query);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t if (numberOfResults != null) {\n\t callParams.queryString.push('numberOfResults=' + numberOfResults);\n\t }\n\t callParams.queryString.push('format=xlsx');\n\t return callParams.url + '?' + callParams.queryString.join('&');\n\t };\n\t /**\n\t * Get the raw datastream for a given document. This is typically used to get a thumbnail for a document.
\n\t * Return an array buffer :
\n\t * eg : let rawBinary = String.fromCharCode.apply(null, new Uint8Array(response));
\n\t * img.setAttribute('src', 'data:image/png;base64,' + btoa(rawBinary));\n\t * @param documentUniqueId Typically the {@link IQueryResult.uniqueId} on each result\n\t * @param dataStreamType Normally : '$Thumbnail'\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise|Promise}\n\t */\n\t SearchEndpoint.prototype.getRawDataStream = function (documentUniqueId, dataStreamType, callOptions, callParams) {\n\t var _this = this;\n\t Assert_1.Assert.exists(documentUniqueId);\n\t var queryString = this.buildViewAsHtmlQueryString(documentUniqueId, callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t this.logger.info('Performing REST query for datastream ' + dataStreamType + ' on document uniqueID' + documentUniqueId);\n\t callParams.queryString.push('dataStream=' + dataStreamType);\n\t return this.performOneCall(callParams).then(function (results) {\n\t _this.logger.info('REST query successful', results, documentUniqueId);\n\t return results;\n\t });\n\t };\n\t /**\n\t * Return an url that will allow to see the datastream for a given document. This is typically used to get a thumbnail for a document.
\n\t * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n\t * @param dataStreamType Normally : '$Thumbnail'\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {string}\n\t */\n\t SearchEndpoint.prototype.getViewAsDatastreamUri = function (documentUniqueID, dataStreamType, callOptions, callParams) {\n\t callOptions = _.extend({}, callOptions);\n\t var queryString = this.buildBaseQueryString(callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t queryString = this.buildCompleteQueryString(callOptions.query, callOptions.queryObject);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t return callParams.url + '?' + callParams.queryString.join('&') + '&dataStream=' + encodeURIComponent(dataStreamType);\n\t };\n\t /**\n\t * Return a single document, using it's uniqueId\n\t * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.getDocument = function (documentUniqueID, callOptions, callParams) {\n\t var queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t return this.performOneCall(callParams);\n\t };\n\t /**\n\t * Return the content for a single document, as text.
\n\t * Think : quickview\n\t * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.getDocumentText = function (documentUniqueID, callOptions, callParams) {\n\t var queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t return this.performOneCall(callParams)\n\t .then(function (data) {\n\t return data.content;\n\t });\n\t };\n\t /**\n\t * Return the content for a single document, as an HTMLDocument.
\n\t * Think : quickview\n\t * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.getDocumentHtml = function (documentUniqueID, callOptions, callParams) {\n\t callOptions = _.extend({}, callOptions);\n\t var queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t callParams.requestData = callOptions.queryObject || { q: callOptions.query };\n\t return this.performOneCall(callParams);\n\t };\n\t /**\n\t * Return an url that will allow to see a single document content, as HTML.
\n\t * Think : quickview\n\t * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {string}\n\t */\n\t SearchEndpoint.prototype.getViewAsHtmlUri = function (documentUniqueID, callOptions, callParams) {\n\t var queryString = this.buildBaseQueryString(callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n\t callParams.queryString = callParams.queryString.concat(queryString);\n\t callParams.queryString = _.uniq(callParams.queryString);\n\t return callParams.url + '?' + callParams.queryString.join('&');\n\t };\n\t SearchEndpoint.prototype.batchFieldValues = function (request, callOptions, callParams) {\n\t var _this = this;\n\t Assert_1.Assert.exists(request);\n\t return this.performOneCall(callParams)\n\t .then(function (data) {\n\t _this.logger.info('REST list field values successful', data.values, request);\n\t return data.values;\n\t });\n\t };\n\t /**\n\t * List the possible values for a given request\n\t * @param request The request for which to list the possible field values\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise|Promise}\n\t */\n\t SearchEndpoint.prototype.listFieldValues = function (request, callOptions, callParams) {\n\t var _this = this;\n\t Assert_1.Assert.exists(request);\n\t callParams.requestData = request;\n\t this.logger.info('Listing field values', request);\n\t return this.performOneCall(callParams)\n\t .then(function (data) {\n\t _this.logger.info('REST list field values successful', data.values, request);\n\t return data.values;\n\t });\n\t };\n\t /**\n\t * List all fields for the index, and return an array of their description\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise|Promise}\n\t */\n\t SearchEndpoint.prototype.listFields = function (callOptions, callParams) {\n\t this.logger.info('Listing fields');\n\t return this.performOneCall(callParams).then(function (data) {\n\t return data.fields;\n\t });\n\t };\n\t /**\n\t * List all available query extensions for the search endpoint\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.extensions = function (callOptions, callParams) {\n\t this.logger.info('Listing extensions');\n\t return this.performOneCall(callParams);\n\t };\n\t /**\n\t * Allow to rate a single document in the index (granted that collaborative rating is enabled on your index)\n\t * @param ratingRequest Document id and rating\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise|Promise}\n\t */\n\t SearchEndpoint.prototype.rateDocument = function (ratingRequest, callOptions, callParams) {\n\t this.logger.info('Rating a document', ratingRequest);\n\t callParams.requestData = ratingRequest;\n\t return this.performOneCall(callParams).then(function () {\n\t return true;\n\t });\n\t };\n\t /**\n\t * Allow to tag a single document\n\t * @param taggingRequest Document id and tag action to perform\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise|Promise}\n\t */\n\t SearchEndpoint.prototype.tagDocument = function (taggingRequest, callOptions, callParams) {\n\t this.logger.info('Tagging a document', taggingRequest);\n\t callParams.requestData = taggingRequest;\n\t return this.performOneCall(callParams).then(function () {\n\t return true;\n\t });\n\t };\n\t /**\n\t * Returns a list of Coveo Machine Learning query suggestions, based on the given request\n\t * @param request query and number of suggestions to return\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.getRevealQuerySuggest = function (request, callOptions, callParams) {\n\t this.logger.info('Get Reveal Query Suggest', request);\n\t callParams.requestData = request;\n\t return this.performOneCall(callParams);\n\t };\n\t /**\n\t * Allow to follow a document or a query on the search alerts service\n\t * @param request\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.follow = function (request, callOptions, callParams) {\n\t callParams.requestData = request;\n\t this.logger.info('Following a document or a query', request);\n\t return this.performOneCall(callParams);\n\t };\n\t /**\n\t * Return a Promise of array of current subscriptions\n\t * @param page The page of the subsctiptions\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {any}\n\t */\n\t SearchEndpoint.prototype.listSubscriptions = function (page, callOptions, callParams) {\n\t var _this = this;\n\t if (this.options.isGuestUser) {\n\t return new Promise(function (resolve, reject) {\n\t reject();\n\t });\n\t }\n\t if (this.currentListSubscriptions == null) {\n\t callParams.queryString.push('page=' + (page || 0));\n\t this.currentListSubscriptions = this.performOneCall(callParams);\n\t this.currentListSubscriptions.then(function (data) {\n\t _this.currentListSubscriptions = null;\n\t return data;\n\t }).catch(function (e) {\n\t // Trap 503 error, as the listSubscription call is called on every page initialization\n\t // to check for current subscriptions. By default, the search alert service is not enabled for most organization\n\t // Don't want to pollute the console with un-needed noise and confusion\n\t if (e.status != 503) {\n\t throw e;\n\t }\n\t });\n\t }\n\t return this.currentListSubscriptions;\n\t };\n\t /**\n\t * Update a subscription with new parameters\n\t * @param subscription The subscription to update with new parameters\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.updateSubscription = function (subscription, callOptions, callParams) {\n\t callParams.requestData = subscription;\n\t this.logger.info('Updating a subscription', subscription);\n\t callParams.url += subscription.id;\n\t return this.performOneCall(callParams);\n\t };\n\t /**\n\t * Delete a subscription\n\t * @param subscription The subscription to delete\n\t * @param callOptions Additional set of options to use for this call.\n\t * @param callParams Options injected by the applied decorators.\n\t * @returns {Promise}\n\t */\n\t SearchEndpoint.prototype.deleteSubscription = function (subscription, callOptions, callParams) {\n\t callParams.url += subscription.id;\n\t return this.performOneCall(callParams);\n\t };\n\t SearchEndpoint.prototype.logError = function (sentryLog, callOptions, callParams) {\n\t callParams.requestData = sentryLog;\n\t return this.performOneCall(callParams, callOptions)\n\t .then(function () {\n\t return true;\n\t })\n\t .catch(function () {\n\t return false;\n\t });\n\t };\n\t SearchEndpoint.prototype.nuke = function () {\n\t window.removeEventListener('beforeunload', this.onUnload);\n\t };\n\t SearchEndpoint.prototype.createEndpointCaller = function () {\n\t this.caller = new EndpointCaller_1.EndpointCaller(this.options);\n\t };\n\t SearchEndpoint.isDebugArgumentPresent = function () {\n\t return /[?&]debug=1([&]|$)/.test(window.location.search);\n\t };\n\t SearchEndpoint.isUseLocalArgumentPresent = function () {\n\t return /[?&]useLocal=1([&]|$)/.test(window.location.search);\n\t };\n\t SearchEndpoint.prototype.handleUnload = function () {\n\t this.isRedirecting = true;\n\t };\n\t SearchEndpoint.prototype.buildBaseUri = function (path) {\n\t Assert_1.Assert.isString(path);\n\t var uri = this.options.restUri;\n\t uri = this.removeTrailingSlash(uri);\n\t if (Utils_1.Utils.isNonEmptyString(this.options.version)) {\n\t uri += '/' + this.options.version;\n\t }\n\t uri += path;\n\t return uri;\n\t };\n\t SearchEndpoint.prototype.buildSearchAlertsUri = function (path) {\n\t Assert_1.Assert.isString(path);\n\t var uri = this.options.searchAlertsUri || this.options.restUri + '/alerts';\n\t if (uri == null) {\n\t return null;\n\t }\n\t uri = this.removeTrailingSlash(uri);\n\t uri += path;\n\t return uri;\n\t };\n\t // see https://github.com/palantir/tslint/issues/1421\n\t // tslint:disable-next-line:no-unused-variable\n\t SearchEndpoint.prototype.buildAccessToken = function (tokenKey) {\n\t var queryString = [];\n\t if (Utils_1.Utils.isNonEmptyString(this.options.accessToken)) {\n\t queryString.push(tokenKey + '=' + encodeURIComponent(this.options.accessToken));\n\t }\n\t return queryString;\n\t };\n\t SearchEndpoint.prototype.buildBaseQueryString = function (callOptions) {\n\t callOptions = _.extend({}, callOptions);\n\t var queryString = [];\n\t for (var name_1 in this.options.queryStringArguments) {\n\t queryString.push(name_1 + '=' + encodeURIComponent(this.options.queryStringArguments[name_1]));\n\t }\n\t if (callOptions && _.isArray(callOptions.authentication) && callOptions.authentication.length != 0) {\n\t queryString.push('authentication=' + callOptions.authentication.join(','));\n\t }\n\t return queryString;\n\t };\n\t SearchEndpoint.prototype.buildCompleteQueryString = function (query, queryObject) {\n\t // In an ideal parallel reality, the entire query used in the 'search' call is used here.\n\t // In this reality however, we must support GET calls (ex: GET /html) for CORS/JSONP/IE reasons.\n\t // Therefore, we cherry-pick parts of the query to include in a 'query string' instead of a body payload.\n\t var queryString = [];\n\t if (queryObject) {\n\t _.each(['q', 'aq', 'cq', 'dq', 'searchHub', 'tab', 'language', 'pipeline', 'lowercaseOperators'], function (key) {\n\t if (queryObject[key]) {\n\t queryString.push(key + '=' + encodeURIComponent(queryObject[key]));\n\t }\n\t });\n\t _.each(queryObject.context, function (value, key) {\n\t queryString.push('context[' + key + ']=' + encodeURIComponent(value));\n\t });\n\t if (queryObject.fieldsToInclude) {\n\t queryString.push(\"fieldsToInclude=[\" + _.map(queryObject.fieldsToInclude, function (field) { return '\"' + encodeURIComponent(field.replace('@', '')) + '\"'; }).join(',') + \"]\");\n\t }\n\t }\n\t else if (query) {\n\t queryString.push('q=' + encodeURIComponent(query));\n\t }\n\t return queryString;\n\t };\n\t SearchEndpoint.prototype.buildViewAsHtmlQueryString = function (uniqueId, callOptions) {\n\t callOptions = _.extend({}, callOptions);\n\t var queryString = this.buildBaseQueryString(callOptions);\n\t queryString.push('uniqueId=' + encodeURIComponent(uniqueId));\n\t if (callOptions.query || callOptions.queryObject) {\n\t queryString.push('enableNavigation=true');\n\t }\n\t if (callOptions.requestedOutputSize) {\n\t queryString.push('requestedOutputSize=' + encodeURIComponent(callOptions.requestedOutputSize.toString()));\n\t }\n\t if (callOptions.contentType) {\n\t queryString.push('contentType=' + encodeURIComponent(callOptions.contentType));\n\t }\n\t return queryString;\n\t };\n\t SearchEndpoint.prototype.performOneCall = function (params, callOptions, autoRenewToken) {\n\t var _this = this;\n\t if (autoRenewToken === void 0) { autoRenewToken = true; }\n\t var queryString = this.buildBaseQueryString(callOptions);\n\t params.queryString = params.queryString.concat(queryString);\n\t params.queryString = _.uniq(params.queryString);\n\t return this.caller.call(params)\n\t .then(function (response) {\n\t if (response.data && response.data.clientDuration) {\n\t response.data.clientDuration = response.duration;\n\t }\n\t return response.data;\n\t }).catch(function (error) {\n\t if (autoRenewToken && _this.canRenewAccessToken() && _this.isAccessTokenExpiredStatus(error.statusCode)) {\n\t _this.renewAccessToken().then(function () {\n\t return _this.performOneCall(params, callOptions, autoRenewToken);\n\t })\n\t .catch(function () {\n\t return Promise.reject(_this.handleErrorResponse(error));\n\t });\n\t }\n\t else if (error.statusCode == 0 && _this.isRedirecting) {\n\t // The page is getting redirected\n\t // Set timeout on return with empty string, since it does not really matter\n\t _.defer(function () {\n\t return '';\n\t });\n\t }\n\t else {\n\t return Promise.reject(_this.handleErrorResponse(error));\n\t }\n\t });\n\t };\n\t SearchEndpoint.prototype.handleErrorResponse = function (errorResponse) {\n\t if (this.isMissingAuthenticationProviderStatus(errorResponse.statusCode)) {\n\t return new MissingAuthenticationError_1.MissingAuthenticationError(errorResponse.data['provider']);\n\t }\n\t else if (errorResponse.data && errorResponse.data.message && errorResponse.data.type) {\n\t return new QueryError_1.QueryError(errorResponse);\n\t }\n\t else if (errorResponse.data && errorResponse.data.message) {\n\t return new AjaxError_1.AjaxError(\"Request Error : \" + errorResponse.data.message, errorResponse.statusCode);\n\t }\n\t else {\n\t return new AjaxError_1.AjaxError('Request Error', errorResponse.statusCode);\n\t }\n\t };\n\t SearchEndpoint.prototype.canRenewAccessToken = function () {\n\t return Utils_1.Utils.isNonEmptyString(this.options.accessToken) && _.isFunction(this.options.renewAccessToken);\n\t };\n\t SearchEndpoint.prototype.renewAccessToken = function () {\n\t var _this = this;\n\t this.logger.info('Renewing expired access token');\n\t return this.options.renewAccessToken().then(function (token) {\n\t Assert_1.Assert.isNonEmptyString(token);\n\t _this.options.accessToken = token;\n\t _this.createEndpointCaller();\n\t return token;\n\t }).catch(function (e) {\n\t _this.logger.error('Failed to renew access token', e);\n\t return e;\n\t });\n\t };\n\t SearchEndpoint.prototype.removeTrailingSlash = function (uri) {\n\t if (this.hasTrailingSlash(uri)) {\n\t uri = uri.substr(0, uri.length - 1);\n\t }\n\t return uri;\n\t };\n\t SearchEndpoint.prototype.hasTrailingSlash = function (uri) {\n\t return uri.charAt(uri.length - 1) == '/';\n\t };\n\t SearchEndpoint.prototype.isMissingAuthenticationProviderStatus = function (status) {\n\t return status == 402;\n\t };\n\t SearchEndpoint.prototype.isAccessTokenExpiredStatus = function (status) {\n\t return status == 419;\n\t };\n\t return SearchEndpoint;\n\t}());\n\t/**\n\t * A map of all the initialized endpoint.
\n\t * eg : Coveo.SearchEndpoint.endpoints['default'] will return the default endpoint that was created at initialization\n\t * @type {{}}\n\t */\n\tSearchEndpoint.endpoints = {};\n\t__decorate([\n\t path('/login/'),\n\t accessTokenInUrl()\n\t], SearchEndpoint.prototype, \"getAuthenticationProviderUri\", null);\n\t__decorate([\n\t path('/'),\n\t method('POST'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"search\", null);\n\t__decorate([\n\t path('/'),\n\t accessTokenInUrl()\n\t], SearchEndpoint.prototype, \"getExportToExcelLink\", null);\n\t__decorate([\n\t path('/datastream'),\n\t accessTokenInUrl(),\n\t method('GET'),\n\t responseType('arraybuffer')\n\t], SearchEndpoint.prototype, \"getRawDataStream\", null);\n\t__decorate([\n\t path('/datastream'),\n\t accessTokenInUrl()\n\t], SearchEndpoint.prototype, \"getViewAsDatastreamUri\", null);\n\t__decorate([\n\t path('/document'),\n\t method('GET'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"getDocument\", null);\n\t__decorate([\n\t path('/text'),\n\t method('GET'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"getDocumentText\", null);\n\t__decorate([\n\t path('/html'),\n\t method('POST'),\n\t responseType('document')\n\t], SearchEndpoint.prototype, \"getDocumentHtml\", null);\n\t__decorate([\n\t path('/html'),\n\t accessTokenInUrl()\n\t], SearchEndpoint.prototype, \"getViewAsHtmlUri\", null);\n\t__decorate([\n\t path('/values'),\n\t method('POST'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"batchFieldValues\", null);\n\t__decorate([\n\t path('/values'),\n\t method('POST'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"listFieldValues\", null);\n\t__decorate([\n\t path('/fields'),\n\t method('GET'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"listFields\", null);\n\t__decorate([\n\t path('/extensions'),\n\t method('GET'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"extensions\", null);\n\t__decorate([\n\t path('/rating'),\n\t method('POST'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"rateDocument\", null);\n\t__decorate([\n\t path('/tag'),\n\t method('POST'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"tagDocument\", null);\n\t__decorate([\n\t path('/querySuggest'),\n\t method('GET'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"getRevealQuerySuggest\", null);\n\t__decorate([\n\t alertsPath('/subscriptions'),\n\t accessTokenInUrl('accessToken'),\n\t method('POST'),\n\t requestDataType('application/json'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"follow\", null);\n\t__decorate([\n\t alertsPath('/subscriptions'),\n\t accessTokenInUrl('accessToken'),\n\t method('GET'),\n\t requestDataType('application/json'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"listSubscriptions\", null);\n\t__decorate([\n\t alertsPath('/subscriptions/'),\n\t accessTokenInUrl('accessToken'),\n\t method('PUT'),\n\t requestDataType('application/json'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"updateSubscription\", null);\n\t__decorate([\n\t alertsPath('/subscriptions/'),\n\t accessTokenInUrl('accessToken'),\n\t method('DELETE'),\n\t requestDataType('application/json'),\n\t responseType('text')\n\t], SearchEndpoint.prototype, \"deleteSubscription\", null);\n\t__decorate([\n\t path('/log'),\n\t method('POST')\n\t], SearchEndpoint.prototype, \"logError\", null);\n\texports.SearchEndpoint = SearchEndpoint;\n\t// It's taken for granted that methods using decorators have :\n\t// IEndpointCallOptions as their second to last parameter\n\t// IEndpointCallParameters as their last parameter\n\t// The default parameters for each member of the injected {@link IEndpointCallParameters} are the following:\n\t// url: '',\n\t// queryString: [],\n\t// requestData: {},\n\t// requestDataType: undefined,\n\t// method: '',\n\t// responseType: '',\n\t// errorsAsSuccess: false\n\tfunction path(path) {\n\t return function (target, key, descriptor) {\n\t var originalMethod = descriptor.value;\n\t var nbParams = target[key].prototype.constructor.length;\n\t descriptor.value = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t var uri = this.buildBaseUri(path);\n\t if (args[nbParams - 1]) {\n\t args[nbParams - 1].url = uri;\n\t }\n\t else {\n\t var params = {\n\t url: uri,\n\t queryString: [],\n\t requestData: {},\n\t method: '',\n\t responseType: '',\n\t errorsAsSuccess: false\n\t };\n\t args[nbParams - 1] = params;\n\t }\n\t var result = originalMethod.apply(this, args);\n\t return result;\n\t };\n\t return descriptor;\n\t };\n\t}\n\tfunction alertsPath(path) {\n\t return function (target, key, descriptor) {\n\t var originalMethod = descriptor.value;\n\t var nbParams = target[key].prototype.constructor.length;\n\t descriptor.value = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t var uri = this.buildSearchAlertsUri(path);\n\t if (args[nbParams - 1]) {\n\t args[nbParams - 1].url = uri;\n\t }\n\t else {\n\t var params = {\n\t url: uri,\n\t queryString: [],\n\t requestData: {},\n\t method: '',\n\t responseType: '',\n\t errorsAsSuccess: false\n\t };\n\t args[nbParams - 1] = params;\n\t }\n\t var result = originalMethod.apply(this, args);\n\t return result;\n\t };\n\t return descriptor;\n\t };\n\t}\n\tfunction requestDataType(type) {\n\t return function (target, key, descriptor) {\n\t var originalMethod = descriptor.value;\n\t var nbParams = target[key].prototype.constructor.length;\n\t descriptor.value = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t if (args[nbParams - 1]) {\n\t args[nbParams - 1].requestDataType = type;\n\t }\n\t else {\n\t var params = {\n\t url: '',\n\t queryString: [],\n\t requestData: {},\n\t requestDataType: type,\n\t method: '',\n\t responseType: '',\n\t errorsAsSuccess: false\n\t };\n\t args[nbParams - 1] = params;\n\t }\n\t var result = originalMethod.apply(this, args);\n\t return result;\n\t };\n\t return descriptor;\n\t };\n\t}\n\tfunction method(met) {\n\t return function (target, key, descriptor) {\n\t var originalMethod = descriptor.value;\n\t var nbParams = target[key].prototype.constructor.length;\n\t descriptor.value = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t if (args[nbParams - 1]) {\n\t args[nbParams - 1].method = met;\n\t }\n\t else {\n\t var params = {\n\t url: '',\n\t queryString: [],\n\t requestData: {},\n\t method: met,\n\t responseType: '',\n\t errorsAsSuccess: false\n\t };\n\t args[nbParams - 1] = params;\n\t }\n\t var result = originalMethod.apply(this, args);\n\t return result;\n\t };\n\t return descriptor;\n\t };\n\t}\n\tfunction responseType(resp) {\n\t return function (target, key, descriptor) {\n\t var originalMethod = descriptor.value;\n\t var nbParams = target[key].prototype.constructor.length;\n\t descriptor.value = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t if (args[nbParams - 1]) {\n\t args[nbParams - 1].responseType = resp;\n\t }\n\t else {\n\t var params = {\n\t url: '',\n\t queryString: [],\n\t requestData: {},\n\t method: '',\n\t responseType: resp,\n\t errorsAsSuccess: false\n\t };\n\t args[nbParams - 1] = params;\n\t }\n\t var result = originalMethod.apply(this, args);\n\t return result;\n\t };\n\t return descriptor;\n\t };\n\t}\n\tfunction accessTokenInUrl(tokenKey) {\n\t if (tokenKey === void 0) { tokenKey = 'access_token'; }\n\t return function (target, key, descriptor) {\n\t var originalMethod = descriptor.value;\n\t var nbParams = target[key].prototype.constructor.length;\n\t descriptor.value = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t var queryString = this.buildAccessToken(tokenKey);\n\t if (args[nbParams - 1]) {\n\t args[nbParams - 1].queryString = args[nbParams - 1].queryString.concat(queryString);\n\t }\n\t else {\n\t var params = {\n\t url: '',\n\t queryString: queryString,\n\t requestData: {},\n\t method: '',\n\t responseType: '',\n\t errorsAsSuccess: false\n\t };\n\t args[nbParams - 1] = params;\n\t }\n\t var result = originalMethod.apply(this, args);\n\t return result;\n\t };\n\t return descriptor;\n\t };\n\t}\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar TimeSpanUtils_1 = __webpack_require__(17);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar JQueryutils_1 = __webpack_require__(20);\n\tvar _ = __webpack_require__(16);\n\t// In ie8, XMLHttpRequest has no status property, so let's use this enum instead\n\tvar XMLHttpRequestStatus;\n\t(function (XMLHttpRequestStatus) {\n\t XMLHttpRequestStatus[XMLHttpRequestStatus[\"OPENED\"] = XMLHttpRequest.OPENED || 1] = \"OPENED\";\n\t XMLHttpRequestStatus[XMLHttpRequestStatus[\"HEADERS_RECEIVED\"] = XMLHttpRequest.HEADERS_RECEIVED || 2] = \"HEADERS_RECEIVED\";\n\t XMLHttpRequestStatus[XMLHttpRequestStatus[\"DONE\"] = XMLHttpRequest.DONE || 4] = \"DONE\";\n\t})(XMLHttpRequestStatus || (XMLHttpRequestStatus = {}));\n\t/**\n\t * This class is in charge of calling an endpoint (eg: a {@link SearchEndpoint}).\n\t *\n\t * This means it's only uses to execute an XMLHttpRequest (for example), massage the response and check if there are errors.\n\t *\n\t * Will execute the call and return a Promise.\n\t *\n\t * Call using one of those options :\n\t *\n\t * * XMLHttpRequest for recent browser that support CORS, or if the endpoint is on the same origin.\n\t * * XDomainRequest for older IE browser that do not support CORS.\n\t * * Jsonp if all else fails, or is explicitly enabled.\n\t */\n\tvar EndpointCaller = (function () {\n\t /**\n\t * Create a new EndpointCaller.\n\t * @param options Specify the authentication that will be used for this endpoint. Not needed if the endpoint is public and has no authentication\n\t */\n\t function EndpointCaller(options) {\n\t if (options === void 0) { options = {}; }\n\t this.options = options;\n\t /**\n\t * Set this property to true to enable Jsonp call to the endpoint.
\n\t * Be aware that jsonp is \"easier\" to setup endpoint wise, but has a lot of drawback and limitation for the client code.
\n\t * Default to false.\n\t * @type {boolean}\n\t */\n\t this.useJsonp = false;\n\t this.logger = new Logger_1.Logger(this);\n\t }\n\t /**\n\t * Generic call to the endpoint using the provided {@link IEndpointCallParameters}.
\n\t * Internally, will decide which method to use to call the endpoint :
\n\t * -- XMLHttpRequest for recent browser that support CORS, or if the endpoint is on the same origin.
\n\t * -- XDomainRequest for older IE browser that do not support CORS.
\n\t * -- Jsonp if all else fails, or is explicitly enabled.\n\t * @param params The parameters to use for the call\n\t * @returns {any} A promise of the given type\n\t */\n\t EndpointCaller.prototype.call = function (params) {\n\t var requestInfo = {\n\t url: params.url,\n\t queryString: params.errorsAsSuccess ? params.queryString.concat(['errorsAsSuccess=1']) : params.queryString,\n\t requestData: params.requestData,\n\t requestDataType: params.requestDataType || 'application/x-www-form-urlencoded; charset=\"UTF-8\"',\n\t begun: new Date(),\n\t method: params.method\n\t };\n\t requestInfo.headers = this.buildRequestHeaders(requestInfo);\n\t if (_.isFunction(this.options.requestModifier)) {\n\t requestInfo = this.options.requestModifier(requestInfo);\n\t }\n\t this.logger.trace('Performing REST request', requestInfo);\n\t var urlObject = this.parseURL(requestInfo.url);\n\t // In IE8, hostname and port return \"\" when we are on the same domain.\n\t var isLocalHost = (window.location.hostname === urlObject.hostname) || (urlObject.hostname === '');\n\t var currentPort = (window.location.port != '' ? window.location.port : (window.location.protocol == 'https:' ? '443' : '80'));\n\t var isSamePort = currentPort == urlObject.port;\n\t var isCrossOrigin = !(isLocalHost && isSamePort);\n\t if (!this.useJsonp) {\n\t if (this.isCORSSupported() || !isCrossOrigin) {\n\t return this.callUsingXMLHttpRequest(requestInfo, params.responseType);\n\t }\n\t else if (this.isXDomainRequestSupported()) {\n\t return this.callUsingXDomainRequest(requestInfo);\n\t }\n\t else {\n\t return this.callUsingAjaxJsonP(requestInfo);\n\t }\n\t }\n\t else {\n\t return this.callUsingAjaxJsonP(requestInfo);\n\t }\n\t };\n\t /**\n\t * Call the endpoint using XMLHttpRequest. Used internally by {@link EndpointCaller.call}.
\n\t * Will try internally to handle error if it can.
\n\t * Promise will otherwise fail with the error type.\n\t * @param requestInfo The info about the request\n\t * @param responseType The responseType. Default to text. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType\n\t * @returns {Promise|Promise}\n\t */\n\t EndpointCaller.prototype.callUsingXMLHttpRequest = function (requestInfo, responseType) {\n\t var _this = this;\n\t if (responseType === void 0) { responseType = 'text'; }\n\t return new Promise(function (resolve, reject) {\n\t var xmlHttpRequest = _this.getXmlHttpRequest();\n\t // Beware, most stuff must be set on the event that says the request is OPENED.\n\t // Otherwise it'll bork on some browsers. Gotta love standards.\n\t // This sent variable allowed to remove the second call of onreadystatechange with the state OPENED in IE11\n\t var sent = false;\n\t xmlHttpRequest.onreadystatechange = function (ev) {\n\t if (xmlHttpRequest.readyState == XMLHttpRequestStatus.OPENED && !sent) {\n\t sent = true;\n\t xmlHttpRequest.withCredentials = true;\n\t _.each(requestInfo.headers, function (headerValue, headerKey) {\n\t xmlHttpRequest.setRequestHeader(headerKey, headerValue);\n\t });\n\t if (requestInfo.method == 'GET') {\n\t xmlHttpRequest.send();\n\t }\n\t else if (requestInfo.requestDataType.indexOf('application/json') === 0) {\n\t xmlHttpRequest.send(JSON.stringify(requestInfo.requestData));\n\t }\n\t else {\n\t xmlHttpRequest.send(_this.convertJsonToFormBody(requestInfo.requestData));\n\t }\n\t // The \"responseType\" varies if the request is a success or not.\n\t // Therefore we postpone setting \"responseType\" until we know if the\n\t // request is a success or not. Doing so, we avoid this potential\n\t // error in Chrome:\n\t //\n\t // Uncaught InvalidStateError: Failed to read the 'responseText'\n\t // property from 'XMLHttpRequest': The value is only accessible if\n\t // the object's 'responseType' is '' or 'text' (was 'document').\n\t //\n\t }\n\t else if (xmlHttpRequest.readyState == XMLHttpRequestStatus.HEADERS_RECEIVED) {\n\t var status = xmlHttpRequest.status;\n\t if (_this.isSuccessHttpStatus(status)) {\n\t xmlHttpRequest.responseType = responseType;\n\t }\n\t else {\n\t xmlHttpRequest.responseType = 'text';\n\t }\n\t }\n\t else if (xmlHttpRequest.readyState == XMLHttpRequestStatus.DONE) {\n\t var status = xmlHttpRequest.status;\n\t var data;\n\t switch (responseType) {\n\t case 'json':\n\t data = xmlHttpRequest.response;\n\t // Work around a bug in IE11 where responseType jsonis not supported : the response comes back as a plain string\n\t // Force the json parse manually\n\t if (responseType == 'json' && DeviceUtils_1.DeviceUtils.getDeviceName() == 'IE') {\n\t try {\n\t data = JSON.parse(data);\n\t }\n\t catch (e) {\n\t // Do nothing, it probably means the data was JSON already\n\t }\n\t }\n\t break;\n\t case 'text':\n\t data = _this.tryParseResponseText(xmlHttpRequest.responseText, xmlHttpRequest.getResponseHeader('Content-Type'));\n\t break;\n\t default:\n\t data = xmlHttpRequest.response;\n\t break;\n\t }\n\t if (data == undefined) {\n\t data = _this.tryParseResponseText(xmlHttpRequest.responseText, xmlHttpRequest.getResponseHeader('Content-Type'));\n\t }\n\t if (_this.isSuccessHttpStatus(status)) {\n\t _this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject);\n\t }\n\t else {\n\t _this.handleError(requestInfo, xmlHttpRequest.status, data, reject);\n\t }\n\t }\n\t };\n\t var queryString = requestInfo.queryString;\n\t if (requestInfo.method == 'GET') {\n\t queryString = queryString.concat(_this.convertJsonToQueryString(requestInfo.requestData));\n\t }\n\t xmlHttpRequest.open(requestInfo.method, _this.combineUrlAndQueryString(requestInfo.url, queryString));\n\t });\n\t };\n\t /**\n\t * Call the endpoint using XDomainRequest https://msdn.microsoft.com/en-us/library/cc288060(v=vs.85).aspx
\n\t * Used for IE8/9\n\t * @param requestInfo The info about the request\n\t * @returns {Promise|Promise}\n\t */\n\t EndpointCaller.prototype.callUsingXDomainRequest = function (requestInfo) {\n\t var _this = this;\n\t return new Promise(function (resolve, reject) {\n\t var queryString = requestInfo.queryString.concat([]);\n\t // XDomainRequest don't support including stuff in the header, so we must\n\t // put the access token in the query string if we have one.\n\t if (_this.options.accessToken) {\n\t queryString.push('access_token=' + encodeURIComponent(_this.options.accessToken));\n\t }\n\t var xDomainRequest = new XDomainRequest();\n\t if (requestInfo.method == 'GET') {\n\t queryString = queryString.concat(_this.convertJsonToQueryString(requestInfo.requestData));\n\t }\n\t xDomainRequest.open(requestInfo.method, _this.combineUrlAndQueryString(requestInfo.url, queryString));\n\t xDomainRequest.onload = function () {\n\t var data = _this.tryParseResponseText(xDomainRequest.responseText, xDomainRequest.contentType);\n\t _this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject);\n\t };\n\t xDomainRequest.onerror = function () {\n\t var data = _this.tryParseResponseText(xDomainRequest.responseText, xDomainRequest.contentType);\n\t _this.handleError(requestInfo, 0, data, reject);\n\t };\n\t // We must set those functions otherwise it will sometime fail in IE\n\t xDomainRequest.ontimeout = function () { return _this.logger.error('Request timeout', xDomainRequest, requestInfo.requestData); };\n\t xDomainRequest.onprogress = function () { return _this.logger.trace('Request progress', xDomainRequest, requestInfo.requestData); };\n\t // We must open the request in a separate thread, for obscure reasons\n\t _.defer(function () {\n\t if (requestInfo.method == 'GET') {\n\t xDomainRequest.send();\n\t }\n\t else {\n\t xDomainRequest.send(_this.convertJsonToFormBody(requestInfo.requestData));\n\t }\n\t });\n\t });\n\t };\n\t /**\n\t * Call the endpoint using Jsonp https://en.wikipedia.org/wiki/JSONP
\n\t * Should be used for dev only, or for very special setup as using jsonp has a lot of drawbacks.\n\t * @param requestInfo The info about the request\n\t * @returns {Promise|Promise}\n\t */\n\t EndpointCaller.prototype.callUsingAjaxJsonP = function (requestInfo) {\n\t var _this = this;\n\t var jQuery = JQueryutils_1.JQueryUtils.getJQuery();\n\t Assert_1.Assert.check(jQuery, 'Using jsonp without having included jQuery is not supported.');\n\t return new Promise(function (resolve, reject) {\n\t var queryString = requestInfo.queryString.concat(_this.convertJsonToQueryString(requestInfo.requestData));\n\t // JSONP don't support including stuff in the header, so we must\n\t // put the access token in the query string if we have one.\n\t if (_this.options.accessToken) {\n\t queryString.push('access_token=' + encodeURIComponent(_this.options.accessToken));\n\t }\n\t queryString.push('callback=?');\n\t jQuery.ajax({\n\t url: _this.combineUrlAndQueryString(requestInfo.url, queryString),\n\t dataType: 'jsonp',\n\t success: function (data) { return _this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject); },\n\t timeout: EndpointCaller.JSONP_ERROR_TIMEOUT,\n\t error: function () { return _this.handleError(requestInfo, 0, undefined, reject); }\n\t });\n\t });\n\t };\n\t EndpointCaller.prototype.parseURL = function (url) {\n\t var urlObject = document.createElement('a');\n\t urlObject.href = url;\n\t return urlObject;\n\t };\n\t EndpointCaller.prototype.getXmlHttpRequest = function () {\n\t var newXmlHttpRequest = this.options.xmlHttpRequest || XMLHttpRequest;\n\t return new newXmlHttpRequest();\n\t };\n\t EndpointCaller.prototype.convertJsonToQueryString = function (json) {\n\t Assert_1.Assert.exists(json);\n\t var result = [];\n\t _.each(json, function (value, key) {\n\t if (value != null) {\n\t if (_.isObject(value)) {\n\t result.push(key + '=' + encodeURIComponent(JSON.stringify(value)));\n\t }\n\t else {\n\t result.push(key + '=' + encodeURIComponent(value.toString()));\n\t }\n\t }\n\t });\n\t return result;\n\t };\n\t EndpointCaller.prototype.convertJsonToFormBody = function (json) {\n\t return this.convertJsonToQueryString(json).join('&');\n\t };\n\t EndpointCaller.prototype.handleSuccessfulResponseThatMightBeAnError = function (requestInfo, data, success, error) {\n\t if (this.isErrorResponseBody(data)) {\n\t this.handleError(requestInfo, data.statusCode, data, error);\n\t }\n\t else {\n\t this.handleSuccess(requestInfo, data, success);\n\t }\n\t };\n\t EndpointCaller.prototype.handleSuccess = function (requestInfo, data, success) {\n\t var querySuccess = {\n\t duration: TimeSpanUtils_1.TimeSpan.fromDates(requestInfo.begun, new Date()).getMilliseconds(),\n\t data: data\n\t };\n\t this.logger.trace('REST request successful', data, requestInfo);\n\t success(querySuccess);\n\t };\n\t EndpointCaller.prototype.handleError = function (requestInfo, status, data, error) {\n\t var queryError = {\n\t statusCode: status,\n\t data: data\n\t };\n\t this.logger.error('REST request failed', status, data, requestInfo);\n\t error(queryError);\n\t };\n\t EndpointCaller.prototype.combineUrlAndQueryString = function (url, queryString) {\n\t var questionMark = '?';\n\t if (url.match(/\\?$/)) {\n\t questionMark = '';\n\t }\n\t return url + (queryString.length > 0 ? questionMark + queryString.join('&') : '');\n\t };\n\t EndpointCaller.prototype.isXDomainRequestSupported = function () {\n\t return 'XDomainRequest' in window;\n\t };\n\t EndpointCaller.prototype.isCORSSupported = function () {\n\t return 'withCredentials' in this.getXmlHttpRequest();\n\t };\n\t EndpointCaller.prototype.isSuccessHttpStatus = function (status) {\n\t return status >= 200 && status < 300 || status === 304;\n\t };\n\t EndpointCaller.prototype.tryParseResponseText = function (json, contentType) {\n\t if (contentType != null && contentType.indexOf('application/json') != -1) {\n\t if (Utils_1.Utils.isNonEmptyString(json)) {\n\t try {\n\t return JSON.parse(json);\n\t }\n\t catch (ex) {\n\t return undefined;\n\t }\n\t }\n\t else {\n\t return undefined;\n\t }\n\t }\n\t else {\n\t return json;\n\t }\n\t };\n\t EndpointCaller.prototype.isErrorResponseBody = function (data) {\n\t if (data && data.statusCode) {\n\t return !this.isSuccessHttpStatus(data.statusCode);\n\t }\n\t else {\n\t return false;\n\t }\n\t };\n\t EndpointCaller.prototype.buildRequestHeaders = function (requestInfo) {\n\t var headers = {};\n\t if (this.options.accessToken) {\n\t headers['Authorization'] = \"Bearer \" + this.options.accessToken;\n\t }\n\t else if (this.options.username && this.options.password) {\n\t headers['Authorization'] = \"Basic \" + btoa(this.options.username + ':' + this.options.password);\n\t }\n\t if (requestInfo.method == 'GET') {\n\t return headers;\n\t }\n\t if (requestInfo.requestDataType.indexOf('application/json') === 0) {\n\t headers['Content-Type'] = 'application/json; charset=\"UTF-8\"';\n\t }\n\t else {\n\t headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=\"UTF-8\"';\n\t }\n\t return headers;\n\t };\n\t return EndpointCaller;\n\t}());\n\tEndpointCaller.JSONP_ERROR_TIMEOUT = 10000;\n\texports.EndpointCaller = EndpointCaller;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Ensure that we're not going to get console is undefined error in IE8-9\n\tif (!window['console']) {\n\t console = {\n\t log: function () {\n\t },\n\t debug: function () {\n\t },\n\t info: function () {\n\t },\n\t warn: function () {\n\t },\n\t error: function () {\n\t },\n\t assert: function () {\n\t },\n\t clear: function () {\n\t },\n\t count: function () {\n\t },\n\t dir: function () {\n\t },\n\t dirxml: function () {\n\t },\n\t group: function () {\n\t },\n\t groupCollapsed: function () {\n\t },\n\t groupEnd: function () {\n\t },\n\t msIsIndependentlyComposed: function (element) {\n\t },\n\t profile: function () {\n\t },\n\t profileEnd: function () {\n\t },\n\t select: function () {\n\t },\n\t time: function () {\n\t },\n\t timeEnd: function () {\n\t },\n\t trace: function () {\n\t }\n\t };\n\t}\n\tvar Logger = (function () {\n\t function Logger(owner) {\n\t this.owner = owner;\n\t }\n\t Logger.prototype.trace = function () {\n\t var stuff = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t stuff[_i] = arguments[_i];\n\t }\n\t if (Logger.level <= Logger.TRACE) {\n\t this.log('TRACE', stuff);\n\t }\n\t };\n\t Logger.prototype.debug = function () {\n\t var stuff = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t stuff[_i] = arguments[_i];\n\t }\n\t if (Logger.level <= Logger.DEBUG) {\n\t this.log('DEBUG', stuff);\n\t }\n\t };\n\t Logger.prototype.info = function () {\n\t var stuff = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t stuff[_i] = arguments[_i];\n\t }\n\t if (Logger.level <= Logger.INFO) {\n\t this.log('INFO', stuff);\n\t }\n\t };\n\t Logger.prototype.warn = function () {\n\t var stuff = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t stuff[_i] = arguments[_i];\n\t }\n\t if (Logger.level <= Logger.WARN) {\n\t this.log('WARN', stuff);\n\t }\n\t };\n\t Logger.prototype.error = function () {\n\t var stuff = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t stuff[_i] = arguments[_i];\n\t }\n\t if (Logger.level <= Logger.ERROR) {\n\t this.log('ERROR', stuff);\n\t }\n\t };\n\t Logger.prototype.log = function (level, stuff) {\n\t if (window['console'] && console.log) {\n\t console.log([level, this.owner].concat(stuff));\n\t if (Logger.executionTime) {\n\t console.timeEnd('Execution time');\n\t console.time('Execution time');\n\t }\n\t }\n\t };\n\t Logger.enable = function () {\n\t Logger.level = Logger.TRACE;\n\t };\n\t Logger.disable = function () {\n\t Logger.level = Logger.NOTHING;\n\t };\n\t return Logger;\n\t}());\n\tLogger.TRACE = 1;\n\tLogger.DEBUG = 2;\n\tLogger.INFO = 3;\n\tLogger.WARN = 4;\n\tLogger.ERROR = 5;\n\tLogger.NOTHING = 6;\n\tLogger.level = Logger.INFO;\n\tLogger.executionTime = false;\n\texports.Logger = Logger;\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\tvar Assert = (function () {\n\t function Assert() {\n\t }\n\t Assert.fail = function (message) {\n\t Assert.failureHandler(message);\n\t };\n\t Assert.check = function (condition, message) {\n\t if (!condition) {\n\t Assert.fail(message);\n\t }\n\t };\n\t Assert.isUndefined = function (obj) {\n\t Assert.check(Utils_1.Utils.isUndefined(obj), 'Value should be undefined.');\n\t };\n\t Assert.isNotUndefined = function (obj) {\n\t Assert.check(!Utils_1.Utils.isUndefined(obj), 'Value should not be undefined.');\n\t };\n\t Assert.isNull = function (obj) {\n\t Assert.check(Utils_1.Utils.isNull(obj), 'Value should be null.');\n\t };\n\t Assert.isNotNull = function (obj) {\n\t Assert.check(!Utils_1.Utils.isNull(obj), 'Value should not be null.');\n\t };\n\t Assert.exists = function (obj) {\n\t Assert.check(!Utils_1.Utils.isNullOrUndefined(obj), 'Value should not be null or undefined');\n\t };\n\t Assert.doesNotExists = function (obj) {\n\t Assert.check(Utils_1.Utils.isNullOrUndefined(obj), 'Value should be null or undefined');\n\t };\n\t Assert.isString = function (obj) {\n\t Assert.check(_.isString(obj), 'Value should be a string.');\n\t };\n\t Assert.stringStartsWith = function (str, start) {\n\t Assert.isNonEmptyString(str);\n\t Assert.isNonEmptyString(start);\n\t Assert.check(str.indexOf(start) == 0, 'Value should start with ' + start);\n\t };\n\t Assert.isNonEmptyString = function (str) {\n\t Assert.check(Utils_1.Utils.isNonEmptyString(str), 'Value should be a non-empty string.');\n\t };\n\t Assert.isNumber = function (obj) {\n\t Assert.check(_.isNumber(obj), 'Value should be a number.');\n\t };\n\t Assert.isLargerThan = function (expected, actual) {\n\t Assert.check(actual > expected, 'Value ' + actual + ' should be larger than ' + expected);\n\t };\n\t Assert.isLargerOrEqualsThan = function (expected, actual) {\n\t Assert.check(actual >= expected, 'Value ' + actual + ' should be larger or equal than ' + expected);\n\t };\n\t Assert.isSmallerThan = function (expected, actual) {\n\t Assert.check(actual < expected, 'Value ' + actual + ' should be smaller than ' + expected);\n\t };\n\t Assert.isSmallerOrEqualsThan = function (expected, actual) {\n\t Assert.check(actual <= expected, 'Value ' + actual + ' should be smaller or equal than ' + expected);\n\t };\n\t return Assert;\n\t}());\n\tAssert.logger = new Logger_1.Logger('Assert');\n\tAssert.failureHandler = function (message) {\n\t Assert.logger.error('Assertion Failed!', message);\n\t if (window['console'] && console.trace) {\n\t console.trace();\n\t }\n\t if (Utils_1.Utils.isNonEmptyString(message)) {\n\t throw new PreconditionFailedException(message);\n\t }\n\t else {\n\t throw new PreconditionFailedException('Assertion Failed!');\n\t }\n\t};\n\texports.Assert = Assert;\n\tvar PreconditionFailedException = (function (_super) {\n\t __extends(PreconditionFailedException, _super);\n\t function PreconditionFailedException(message) {\n\t var _this = _super.call(this, message) || this;\n\t _this.message = message;\n\t return _this;\n\t }\n\t PreconditionFailedException.prototype.toString = function () {\n\t return this.message;\n\t };\n\t return PreconditionFailedException;\n\t}(Error));\n\texports.PreconditionFailedException = PreconditionFailedException;\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar isCoveoFieldRegex = /^@[a-zA-Z0-9_\\.]+$/;\n\tvar Utils = (function () {\n\t function Utils() {\n\t }\n\t Utils.isUndefined = function (obj) {\n\t return typeof obj == 'undefined';\n\t };\n\t Utils.isNull = function (obj) {\n\t return obj === null;\n\t };\n\t Utils.isNullOrUndefined = function (obj) {\n\t return Utils.isUndefined(obj) || Utils.isNull(obj);\n\t };\n\t Utils.exists = function (obj) {\n\t return !Utils.isNullOrUndefined(obj);\n\t };\n\t Utils.toNotNullString = function (str) {\n\t return _.isString(str) ? str : '';\n\t };\n\t Utils.anyTypeToString = function (value) {\n\t return value ? value.toString() : '';\n\t };\n\t Utils.isNullOrEmptyString = function (str) {\n\t return Utils.isNullOrUndefined(str) || !Utils.isNonEmptyString(str);\n\t };\n\t Utils.isNonEmptyString = function (str) {\n\t return _.isString(str) && str !== '';\n\t };\n\t Utils.isEmptyString = function (str) {\n\t return !Utils.isNonEmptyString(str);\n\t };\n\t Utils.stringStartsWith = function (str, startWith) {\n\t return str.slice(0, startWith.length) == startWith;\n\t };\n\t Utils.isNonEmptyArray = function (obj) {\n\t return _.isArray(obj) && obj.length > 0;\n\t };\n\t Utils.isEmptyArray = function (obj) {\n\t return !Utils.isNonEmptyArray(obj);\n\t };\n\t Utils.isHtmlElement = function (obj) {\n\t if (window['HTMLElement'] != undefined) {\n\t return obj instanceof HTMLElement;\n\t }\n\t else {\n\t return obj && obj.nodeType && obj.nodeType == 1;\n\t }\n\t };\n\t Utils.parseIntIfNotUndefined = function (str) {\n\t if (Utils.isNonEmptyString(str)) {\n\t return parseInt(str, 10);\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t Utils.parseFloatIfNotUndefined = function (str) {\n\t if (Utils.isNonEmptyString(str)) {\n\t return parseFloat(str);\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t Utils.round = function (num, decimals) {\n\t return Math.round(num * Math.pow(10, decimals)) / Math.pow(10, decimals);\n\t };\n\t Utils.parseBooleanIfNotUndefined = function (str) {\n\t if (Utils.isNonEmptyString(str)) {\n\t switch (str.toLowerCase()) {\n\t case 'true':\n\t case '1':\n\t case 'yes':\n\t return true;\n\t case 'false':\n\t case '0':\n\t case 'no':\n\t return false;\n\t default:\n\t return undefined;\n\t }\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t Utils.trim = function (value) {\n\t if (value == null) {\n\t return null;\n\t }\n\t return value.replace(/^\\s+|\\s+$/g, '');\n\t };\n\t Utils.encodeHTMLEntities = function (rawStr) {\n\t var ret = [];\n\t for (var i = rawStr.length - 1; i >= 0; i--) {\n\t if (/^[a-z0-9]/i.test(rawStr[i])) {\n\t ret.unshift(rawStr[i]);\n\t }\n\t else {\n\t ret.unshift(['&#', rawStr.charCodeAt(i), ';'].join(''));\n\t }\n\t }\n\t return ret.join('');\n\t };\n\t Utils.decodeHTMLEntities = function (rawString) {\n\t return rawString.replace(/&#(\\d+);/g, function (match, dec) {\n\t return String.fromCharCode(dec);\n\t });\n\t };\n\t Utils.arrayEqual = function (array1, array2, sameOrder) {\n\t if (sameOrder === void 0) { sameOrder = true; }\n\t if (sameOrder) {\n\t return _.isEqual(array1, array2);\n\t }\n\t else {\n\t var arrays_1 = [array1, array2];\n\t return _.all(arrays_1, function (array) {\n\t return array.length == arrays_1[0].length && _.difference(array, arrays_1[0]).length == 0;\n\t });\n\t }\n\t };\n\t Utils.objectEqual = function (obj1, obj2) {\n\t return _.isEqual(obj1, obj2);\n\t };\n\t Utils.isCoveoField = function (field) {\n\t return isCoveoFieldRegex.test(field);\n\t };\n\t Utils.escapeRegexCharacter = function (str) {\n\t var ret = str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n\t return ret;\n\t };\n\t Utils.getCaseInsensitiveProperty = function (object, name) {\n\t // First try using a fast case-sensitive lookup\n\t var value = object[name];\n\t // Then try a fast case-sensitive lookup with lowercase name\n\t if (value == null) {\n\t var lowerCaseName_1 = name.toLowerCase();\n\t value = object[lowerCaseName_1];\n\t // Then try a slow scanning of all the properties\n\t if (value == null) {\n\t var matchingKey = _.find(_.keys(object), function (key) { return key.toLowerCase() == lowerCaseName_1; });\n\t if (matchingKey != null) {\n\t value = object[matchingKey];\n\t }\n\t }\n\t }\n\t return value;\n\t };\n\t Utils.getFieldValue = function (result, name) {\n\t // Be as forgiving as possible about the field name, since we expect\n\t // user provided values.\n\t if (name == null) {\n\t return undefined;\n\t }\n\t name = Utils.trim(name);\n\t if (name[0] == '@') {\n\t name = name.substr(1);\n\t }\n\t if (name == '') {\n\t return undefined;\n\t }\n\t // At this point the name should be well formed\n\t if (!Utils.isCoveoField('@' + name)) {\n\t throw \"Not a valid field : \" + name;\n\t }\n\t // Handle namespace field values of the form sf.Foo.Bar\n\t var parts = name.split('.').reverse();\n\t var obj = result.raw;\n\t while (parts.length > 1) {\n\t obj = Utils.getCaseInsensitiveProperty(obj, parts.pop());\n\t if (Utils.isUndefined(obj)) {\n\t return undefined;\n\t }\n\t }\n\t var value = Utils.getCaseInsensitiveProperty(obj, parts[0]);\n\t // If still nothing, look at the root of the result\n\t if (value == null) {\n\t value = Utils.getCaseInsensitiveProperty(result, name);\n\t }\n\t return value;\n\t };\n\t Utils.throttle = function (func, wait, options, context, args) {\n\t if (options === void 0) { options = {}; }\n\t var result;\n\t var timeout = null;\n\t var previous = 0;\n\t var later = function () {\n\t previous = options.leading === false ? 0 : new Date().getTime();\n\t timeout = null;\n\t result = func.apply(context, args);\n\t };\n\t return function () {\n\t var now = new Date().getTime();\n\t if (!previous && options.leading === false) {\n\t previous = now;\n\t }\n\t var remaining = wait - (now - previous);\n\t context = this;\n\t args = arguments;\n\t if (remaining <= 0) {\n\t clearTimeout(timeout);\n\t timeout = null;\n\t previous = now;\n\t result = func.apply(context, args);\n\t }\n\t else if (!timeout && options.trailing !== false) {\n\t timeout = setTimeout(later, remaining);\n\t }\n\t return result;\n\t };\n\t };\n\t Utils.extendDeep = function (target, src) {\n\t if (!target) {\n\t target = {};\n\t }\n\t var isArray = _.isArray(src);\n\t var toReturn = isArray && [] || {};\n\t if (isArray) {\n\t target = target || [];\n\t toReturn = toReturn['concat'](target);\n\t _.each(src, function (e, i, obj) {\n\t if (typeof target[i] === 'undefined') {\n\t toReturn[i] = e;\n\t }\n\t else if (typeof e === 'object') {\n\t toReturn[i] = Utils.extendDeep(target[i], e);\n\t }\n\t else {\n\t if (target.indexOf(e) === -1) {\n\t toReturn['push'](e);\n\t }\n\t }\n\t });\n\t }\n\t else {\n\t if (target && typeof target === 'object') {\n\t _.each(_.keys(target), function (key) {\n\t toReturn[key] = target[key];\n\t });\n\t }\n\t _.each(_.keys(src), function (key) {\n\t if (typeof src[key] !== 'object' || !src[key]) {\n\t toReturn[key] = src[key];\n\t }\n\t else {\n\t if (!target[key]) {\n\t toReturn[key] = src[key];\n\t }\n\t else {\n\t toReturn[key] = Utils.extendDeep(target[key], src[key]);\n\t }\n\t }\n\t });\n\t }\n\t return toReturn;\n\t };\n\t Utils.getQueryStringValue = function (key, queryString) {\n\t if (queryString === void 0) { queryString = window.location.search; }\n\t return queryString.replace(new RegExp('^(?:.*[&\\\\?]' + key.replace(/[\\.\\+\\*]/g, '\\\\$&') + '(?:\\\\=([^&]*))?)?.*$', 'i'), '$1');\n\t };\n\t Utils.isValidUrl = function (str) {\n\t var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\n\t return regexp.test(str);\n\t };\n\t Utils.debounce = function (func, wait) {\n\t var timeout;\n\t var stackTraceTimeout;\n\t return function () {\n\t var _this = this;\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t if (timeout == null) {\n\t timeout = setTimeout(function () {\n\t timeout = null;\n\t }, wait);\n\t stackTraceTimeout = setTimeout(function () {\n\t func.apply(_this, args);\n\t stackTraceTimeout = null;\n\t });\n\t }\n\t else if (stackTraceTimeout == null) {\n\t clearTimeout(timeout);\n\t timeout = setTimeout(function () {\n\t func.apply(_this, args);\n\t timeout = null;\n\t }, wait);\n\t }\n\t };\n\t };\n\t Utils.readCookie = function (name) {\n\t var nameEQ = name + '=';\n\t var ca = document.cookie.split(';');\n\t for (var i = 0; i < ca.length; i++) {\n\t var c = ca[i];\n\t while (c.charAt(0) == ' ') {\n\t c = c.substring(1, c.length);\n\t }\n\t if (c.indexOf(nameEQ) == 0) {\n\t return c.substring(nameEQ.length, c.length);\n\t }\n\t }\n\t return null;\n\t };\n\t Utils.toDashCase = function (camelCased) {\n\t return camelCased.replace(/([a-z][A-Z])/g, function (g) { return g[0] + '-' + g[1].toLowerCase(); });\n\t };\n\t // Based on http://stackoverflow.com/a/8412989\n\t Utils.parseXml = function (xml) {\n\t if (typeof DOMParser != 'undefined') {\n\t return (new DOMParser()).parseFromString(xml, 'text/xml');\n\t }\n\t else if (typeof ActiveXObject != 'undefined' && new ActiveXObject('Microsoft.XMLDOM')) {\n\t var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');\n\t xmlDoc.async = 'false';\n\t xmlDoc.loadXML(xml);\n\t return xmlDoc;\n\t }\n\t else {\n\t throw new Error('No XML parser found');\n\t }\n\t };\n\t Utils.copyObject = function (target, src) {\n\t var _this = this;\n\t _.each(_.keys(src), function (key) {\n\t if (typeof src[key] !== 'object' || !src[key]) {\n\t target[key] = src[key];\n\t }\n\t else if (!target[key]) {\n\t target[key] = src[key];\n\t }\n\t else {\n\t _this.copyObject(target[key], src[key]);\n\t }\n\t });\n\t };\n\t Utils.copyObjectAttributes = function (target, src, attributes) {\n\t var _this = this;\n\t _.each(_.keys(src), function (key) {\n\t if (_.contains(attributes, key)) {\n\t if (typeof src[key] !== 'object' || !src[key]) {\n\t target[key] = src[key];\n\t }\n\t else if (!target[key]) {\n\t target[key] = src[key];\n\t }\n\t else {\n\t _this.copyObject(target[key], src[key]);\n\t }\n\t }\n\t });\n\t };\n\t return Utils;\n\t}());\n\texports.Utils = Utils;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.8.3\n\t// http://underscorejs.org\n\t// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t// Underscore may be freely distributed under the MIT license.\n\t\n\t(function() {\n\t\n\t // Baseline setup\n\t // --------------\n\t\n\t // Establish the root object, `window` in the browser, or `exports` on the server.\n\t var root = this;\n\t\n\t // Save the previous value of the `_` variable.\n\t var previousUnderscore = root._;\n\t\n\t // Save bytes in the minified (but not gzipped) version:\n\t var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\t\n\t // Create quick reference variables for speed access to core prototypes.\n\t var\n\t push = ArrayProto.push,\n\t slice = ArrayProto.slice,\n\t toString = ObjProto.toString,\n\t hasOwnProperty = ObjProto.hasOwnProperty;\n\t\n\t // All **ECMAScript 5** native function implementations that we hope to use\n\t // are declared here.\n\t var\n\t nativeIsArray = Array.isArray,\n\t nativeKeys = Object.keys,\n\t nativeBind = FuncProto.bind,\n\t nativeCreate = Object.create;\n\t\n\t // Naked function reference for surrogate-prototype-swapping.\n\t var Ctor = function(){};\n\t\n\t // Create a safe reference to the Underscore object for use below.\n\t var _ = function(obj) {\n\t if (obj instanceof _) return obj;\n\t if (!(this instanceof _)) return new _(obj);\n\t this._wrapped = obj;\n\t };\n\t\n\t // Export the Underscore object for **Node.js**, with\n\t // backwards-compatibility for the old `require()` API. If we're in\n\t // the browser, add `_` as a global object.\n\t if (true) {\n\t if (typeof module !== 'undefined' && module.exports) {\n\t exports = module.exports = _;\n\t }\n\t exports._ = _;\n\t } else {\n\t root._ = _;\n\t }\n\t\n\t // Current version.\n\t _.VERSION = '1.8.3';\n\t\n\t // Internal function that returns an efficient (for current engines) version\n\t // of the passed-in callback, to be repeatedly applied in other Underscore\n\t // functions.\n\t var optimizeCb = function(func, context, argCount) {\n\t if (context === void 0) return func;\n\t switch (argCount == null ? 3 : argCount) {\n\t case 1: return function(value) {\n\t return func.call(context, value);\n\t };\n\t case 2: return function(value, other) {\n\t return func.call(context, value, other);\n\t };\n\t case 3: return function(value, index, collection) {\n\t return func.call(context, value, index, collection);\n\t };\n\t case 4: return function(accumulator, value, index, collection) {\n\t return func.call(context, accumulator, value, index, collection);\n\t };\n\t }\n\t return function() {\n\t return func.apply(context, arguments);\n\t };\n\t };\n\t\n\t // A mostly-internal function to generate callbacks that can be applied\n\t // to each element in a collection, returning the desired result — either\n\t // identity, an arbitrary callback, a property matcher, or a property accessor.\n\t var cb = function(value, context, argCount) {\n\t if (value == null) return _.identity;\n\t if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n\t if (_.isObject(value)) return _.matcher(value);\n\t return _.property(value);\n\t };\n\t _.iteratee = function(value, context) {\n\t return cb(value, context, Infinity);\n\t };\n\t\n\t // An internal function for creating assigner functions.\n\t var createAssigner = function(keysFunc, undefinedOnly) {\n\t return function(obj) {\n\t var length = arguments.length;\n\t if (length < 2 || obj == null) return obj;\n\t for (var index = 1; index < length; index++) {\n\t var source = arguments[index],\n\t keys = keysFunc(source),\n\t l = keys.length;\n\t for (var i = 0; i < l; i++) {\n\t var key = keys[i];\n\t if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];\n\t }\n\t }\n\t return obj;\n\t };\n\t };\n\t\n\t // An internal function for creating a new object that inherits from another.\n\t var baseCreate = function(prototype) {\n\t if (!_.isObject(prototype)) return {};\n\t if (nativeCreate) return nativeCreate(prototype);\n\t Ctor.prototype = prototype;\n\t var result = new Ctor;\n\t Ctor.prototype = null;\n\t return result;\n\t };\n\t\n\t var property = function(key) {\n\t return function(obj) {\n\t return obj == null ? void 0 : obj[key];\n\t };\n\t };\n\t\n\t // Helper for collection methods to determine whether a collection\n\t // should be iterated as an array or as an object\n\t // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n\t // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n\t var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\t var getLength = property('length');\n\t var isArrayLike = function(collection) {\n\t var length = getLength(collection);\n\t return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n\t };\n\t\n\t // Collection Functions\n\t // --------------------\n\t\n\t // The cornerstone, an `each` implementation, aka `forEach`.\n\t // Handles raw objects in addition to array-likes. Treats all\n\t // sparse array-likes as if they were dense.\n\t _.each = _.forEach = function(obj, iteratee, context) {\n\t iteratee = optimizeCb(iteratee, context);\n\t var i, length;\n\t if (isArrayLike(obj)) {\n\t for (i = 0, length = obj.length; i < length; i++) {\n\t iteratee(obj[i], i, obj);\n\t }\n\t } else {\n\t var keys = _.keys(obj);\n\t for (i = 0, length = keys.length; i < length; i++) {\n\t iteratee(obj[keys[i]], keys[i], obj);\n\t }\n\t }\n\t return obj;\n\t };\n\t\n\t // Return the results of applying the iteratee to each element.\n\t _.map = _.collect = function(obj, iteratee, context) {\n\t iteratee = cb(iteratee, context);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length,\n\t results = Array(length);\n\t for (var index = 0; index < length; index++) {\n\t var currentKey = keys ? keys[index] : index;\n\t results[index] = iteratee(obj[currentKey], currentKey, obj);\n\t }\n\t return results;\n\t };\n\t\n\t // Create a reducing function iterating left or right.\n\t function createReduce(dir) {\n\t // Optimized iterator function as using arguments.length\n\t // in the main function will deoptimize the, see #1991.\n\t function iterator(obj, iteratee, memo, keys, index, length) {\n\t for (; index >= 0 && index < length; index += dir) {\n\t var currentKey = keys ? keys[index] : index;\n\t memo = iteratee(memo, obj[currentKey], currentKey, obj);\n\t }\n\t return memo;\n\t }\n\t\n\t return function(obj, iteratee, memo, context) {\n\t iteratee = optimizeCb(iteratee, context, 4);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length,\n\t index = dir > 0 ? 0 : length - 1;\n\t // Determine the initial value if none is provided.\n\t if (arguments.length < 3) {\n\t memo = obj[keys ? keys[index] : index];\n\t index += dir;\n\t }\n\t return iterator(obj, iteratee, memo, keys, index, length);\n\t };\n\t }\n\t\n\t // **Reduce** builds up a single result from a list of values, aka `inject`,\n\t // or `foldl`.\n\t _.reduce = _.foldl = _.inject = createReduce(1);\n\t\n\t // The right-associative version of reduce, also known as `foldr`.\n\t _.reduceRight = _.foldr = createReduce(-1);\n\t\n\t // Return the first value which passes a truth test. Aliased as `detect`.\n\t _.find = _.detect = function(obj, predicate, context) {\n\t var key;\n\t if (isArrayLike(obj)) {\n\t key = _.findIndex(obj, predicate, context);\n\t } else {\n\t key = _.findKey(obj, predicate, context);\n\t }\n\t if (key !== void 0 && key !== -1) return obj[key];\n\t };\n\t\n\t // Return all the elements that pass a truth test.\n\t // Aliased as `select`.\n\t _.filter = _.select = function(obj, predicate, context) {\n\t var results = [];\n\t predicate = cb(predicate, context);\n\t _.each(obj, function(value, index, list) {\n\t if (predicate(value, index, list)) results.push(value);\n\t });\n\t return results;\n\t };\n\t\n\t // Return all the elements for which a truth test fails.\n\t _.reject = function(obj, predicate, context) {\n\t return _.filter(obj, _.negate(cb(predicate)), context);\n\t };\n\t\n\t // Determine whether all of the elements match a truth test.\n\t // Aliased as `all`.\n\t _.every = _.all = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length;\n\t for (var index = 0; index < length; index++) {\n\t var currentKey = keys ? keys[index] : index;\n\t if (!predicate(obj[currentKey], currentKey, obj)) return false;\n\t }\n\t return true;\n\t };\n\t\n\t // Determine if at least one element in the object matches a truth test.\n\t // Aliased as `any`.\n\t _.some = _.any = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var keys = !isArrayLike(obj) && _.keys(obj),\n\t length = (keys || obj).length;\n\t for (var index = 0; index < length; index++) {\n\t var currentKey = keys ? keys[index] : index;\n\t if (predicate(obj[currentKey], currentKey, obj)) return true;\n\t }\n\t return false;\n\t };\n\t\n\t // Determine if the array or object contains a given item (using `===`).\n\t // Aliased as `includes` and `include`.\n\t _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n\t if (!isArrayLike(obj)) obj = _.values(obj);\n\t if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n\t return _.indexOf(obj, item, fromIndex) >= 0;\n\t };\n\t\n\t // Invoke a method (with arguments) on every item in a collection.\n\t _.invoke = function(obj, method) {\n\t var args = slice.call(arguments, 2);\n\t var isFunc = _.isFunction(method);\n\t return _.map(obj, function(value) {\n\t var func = isFunc ? method : value[method];\n\t return func == null ? func : func.apply(value, args);\n\t });\n\t };\n\t\n\t // Convenience version of a common use case of `map`: fetching a property.\n\t _.pluck = function(obj, key) {\n\t return _.map(obj, _.property(key));\n\t };\n\t\n\t // Convenience version of a common use case of `filter`: selecting only objects\n\t // containing specific `key:value` pairs.\n\t _.where = function(obj, attrs) {\n\t return _.filter(obj, _.matcher(attrs));\n\t };\n\t\n\t // Convenience version of a common use case of `find`: getting the first object\n\t // containing specific `key:value` pairs.\n\t _.findWhere = function(obj, attrs) {\n\t return _.find(obj, _.matcher(attrs));\n\t };\n\t\n\t // Return the maximum element (or element-based computation).\n\t _.max = function(obj, iteratee, context) {\n\t var result = -Infinity, lastComputed = -Infinity,\n\t value, computed;\n\t if (iteratee == null && obj != null) {\n\t obj = isArrayLike(obj) ? obj : _.values(obj);\n\t for (var i = 0, length = obj.length; i < length; i++) {\n\t value = obj[i];\n\t if (value > result) {\n\t result = value;\n\t }\n\t }\n\t } else {\n\t iteratee = cb(iteratee, context);\n\t _.each(obj, function(value, index, list) {\n\t computed = iteratee(value, index, list);\n\t if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n\t result = value;\n\t lastComputed = computed;\n\t }\n\t });\n\t }\n\t return result;\n\t };\n\t\n\t // Return the minimum element (or element-based computation).\n\t _.min = function(obj, iteratee, context) {\n\t var result = Infinity, lastComputed = Infinity,\n\t value, computed;\n\t if (iteratee == null && obj != null) {\n\t obj = isArrayLike(obj) ? obj : _.values(obj);\n\t for (var i = 0, length = obj.length; i < length; i++) {\n\t value = obj[i];\n\t if (value < result) {\n\t result = value;\n\t }\n\t }\n\t } else {\n\t iteratee = cb(iteratee, context);\n\t _.each(obj, function(value, index, list) {\n\t computed = iteratee(value, index, list);\n\t if (computed < lastComputed || computed === Infinity && result === Infinity) {\n\t result = value;\n\t lastComputed = computed;\n\t }\n\t });\n\t }\n\t return result;\n\t };\n\t\n\t // Shuffle a collection, using the modern version of the\n\t // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n\t _.shuffle = function(obj) {\n\t var set = isArrayLike(obj) ? obj : _.values(obj);\n\t var length = set.length;\n\t var shuffled = Array(length);\n\t for (var index = 0, rand; index < length; index++) {\n\t rand = _.random(0, index);\n\t if (rand !== index) shuffled[index] = shuffled[rand];\n\t shuffled[rand] = set[index];\n\t }\n\t return shuffled;\n\t };\n\t\n\t // Sample **n** random values from a collection.\n\t // If **n** is not specified, returns a single random element.\n\t // The internal `guard` argument allows it to work with `map`.\n\t _.sample = function(obj, n, guard) {\n\t if (n == null || guard) {\n\t if (!isArrayLike(obj)) obj = _.values(obj);\n\t return obj[_.random(obj.length - 1)];\n\t }\n\t return _.shuffle(obj).slice(0, Math.max(0, n));\n\t };\n\t\n\t // Sort the object's values by a criterion produced by an iteratee.\n\t _.sortBy = function(obj, iteratee, context) {\n\t iteratee = cb(iteratee, context);\n\t return _.pluck(_.map(obj, function(value, index, list) {\n\t return {\n\t value: value,\n\t index: index,\n\t criteria: iteratee(value, index, list)\n\t };\n\t }).sort(function(left, right) {\n\t var a = left.criteria;\n\t var b = right.criteria;\n\t if (a !== b) {\n\t if (a > b || a === void 0) return 1;\n\t if (a < b || b === void 0) return -1;\n\t }\n\t return left.index - right.index;\n\t }), 'value');\n\t };\n\t\n\t // An internal function used for aggregate \"group by\" operations.\n\t var group = function(behavior) {\n\t return function(obj, iteratee, context) {\n\t var result = {};\n\t iteratee = cb(iteratee, context);\n\t _.each(obj, function(value, index) {\n\t var key = iteratee(value, index, obj);\n\t behavior(result, value, key);\n\t });\n\t return result;\n\t };\n\t };\n\t\n\t // Groups the object's values by a criterion. Pass either a string attribute\n\t // to group by, or a function that returns the criterion.\n\t _.groupBy = group(function(result, value, key) {\n\t if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n\t });\n\t\n\t // Indexes the object's values by a criterion, similar to `groupBy`, but for\n\t // when you know that your index values will be unique.\n\t _.indexBy = group(function(result, value, key) {\n\t result[key] = value;\n\t });\n\t\n\t // Counts instances of an object that group by a certain criterion. Pass\n\t // either a string attribute to count by, or a function that returns the\n\t // criterion.\n\t _.countBy = group(function(result, value, key) {\n\t if (_.has(result, key)) result[key]++; else result[key] = 1;\n\t });\n\t\n\t // Safely create a real, live array from anything iterable.\n\t _.toArray = function(obj) {\n\t if (!obj) return [];\n\t if (_.isArray(obj)) return slice.call(obj);\n\t if (isArrayLike(obj)) return _.map(obj, _.identity);\n\t return _.values(obj);\n\t };\n\t\n\t // Return the number of elements in an object.\n\t _.size = function(obj) {\n\t if (obj == null) return 0;\n\t return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n\t };\n\t\n\t // Split a collection into two arrays: one whose elements all satisfy the given\n\t // predicate, and one whose elements all do not satisfy the predicate.\n\t _.partition = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var pass = [], fail = [];\n\t _.each(obj, function(value, key, obj) {\n\t (predicate(value, key, obj) ? pass : fail).push(value);\n\t });\n\t return [pass, fail];\n\t };\n\t\n\t // Array Functions\n\t // ---------------\n\t\n\t // Get the first element of an array. Passing **n** will return the first N\n\t // values in the array. Aliased as `head` and `take`. The **guard** check\n\t // allows it to work with `_.map`.\n\t _.first = _.head = _.take = function(array, n, guard) {\n\t if (array == null) return void 0;\n\t if (n == null || guard) return array[0];\n\t return _.initial(array, array.length - n);\n\t };\n\t\n\t // Returns everything but the last entry of the array. Especially useful on\n\t // the arguments object. Passing **n** will return all the values in\n\t // the array, excluding the last N.\n\t _.initial = function(array, n, guard) {\n\t return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n\t };\n\t\n\t // Get the last element of an array. Passing **n** will return the last N\n\t // values in the array.\n\t _.last = function(array, n, guard) {\n\t if (array == null) return void 0;\n\t if (n == null || guard) return array[array.length - 1];\n\t return _.rest(array, Math.max(0, array.length - n));\n\t };\n\t\n\t // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n\t // Especially useful on the arguments object. Passing an **n** will return\n\t // the rest N values in the array.\n\t _.rest = _.tail = _.drop = function(array, n, guard) {\n\t return slice.call(array, n == null || guard ? 1 : n);\n\t };\n\t\n\t // Trim out all falsy values from an array.\n\t _.compact = function(array) {\n\t return _.filter(array, _.identity);\n\t };\n\t\n\t // Internal implementation of a recursive `flatten` function.\n\t var flatten = function(input, shallow, strict, startIndex) {\n\t var output = [], idx = 0;\n\t for (var i = startIndex || 0, length = getLength(input); i < length; i++) {\n\t var value = input[i];\n\t if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n\t //flatten current level of array or arguments object\n\t if (!shallow) value = flatten(value, shallow, strict);\n\t var j = 0, len = value.length;\n\t output.length += len;\n\t while (j < len) {\n\t output[idx++] = value[j++];\n\t }\n\t } else if (!strict) {\n\t output[idx++] = value;\n\t }\n\t }\n\t return output;\n\t };\n\t\n\t // Flatten out an array, either recursively (by default), or just one level.\n\t _.flatten = function(array, shallow) {\n\t return flatten(array, shallow, false);\n\t };\n\t\n\t // Return a version of the array that does not contain the specified value(s).\n\t _.without = function(array) {\n\t return _.difference(array, slice.call(arguments, 1));\n\t };\n\t\n\t // Produce a duplicate-free version of the array. If the array has already\n\t // been sorted, you have the option of using a faster algorithm.\n\t // Aliased as `unique`.\n\t _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n\t if (!_.isBoolean(isSorted)) {\n\t context = iteratee;\n\t iteratee = isSorted;\n\t isSorted = false;\n\t }\n\t if (iteratee != null) iteratee = cb(iteratee, context);\n\t var result = [];\n\t var seen = [];\n\t for (var i = 0, length = getLength(array); i < length; i++) {\n\t var value = array[i],\n\t computed = iteratee ? iteratee(value, i, array) : value;\n\t if (isSorted) {\n\t if (!i || seen !== computed) result.push(value);\n\t seen = computed;\n\t } else if (iteratee) {\n\t if (!_.contains(seen, computed)) {\n\t seen.push(computed);\n\t result.push(value);\n\t }\n\t } else if (!_.contains(result, value)) {\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t };\n\t\n\t // Produce an array that contains the union: each distinct element from all of\n\t // the passed-in arrays.\n\t _.union = function() {\n\t return _.uniq(flatten(arguments, true, true));\n\t };\n\t\n\t // Produce an array that contains every item shared between all the\n\t // passed-in arrays.\n\t _.intersection = function(array) {\n\t var result = [];\n\t var argsLength = arguments.length;\n\t for (var i = 0, length = getLength(array); i < length; i++) {\n\t var item = array[i];\n\t if (_.contains(result, item)) continue;\n\t for (var j = 1; j < argsLength; j++) {\n\t if (!_.contains(arguments[j], item)) break;\n\t }\n\t if (j === argsLength) result.push(item);\n\t }\n\t return result;\n\t };\n\t\n\t // Take the difference between one array and a number of other arrays.\n\t // Only the elements present in just the first array will remain.\n\t _.difference = function(array) {\n\t var rest = flatten(arguments, true, true, 1);\n\t return _.filter(array, function(value){\n\t return !_.contains(rest, value);\n\t });\n\t };\n\t\n\t // Zip together multiple lists into a single array -- elements that share\n\t // an index go together.\n\t _.zip = function() {\n\t return _.unzip(arguments);\n\t };\n\t\n\t // Complement of _.zip. Unzip accepts an array of arrays and groups\n\t // each array's elements on shared indices\n\t _.unzip = function(array) {\n\t var length = array && _.max(array, getLength).length || 0;\n\t var result = Array(length);\n\t\n\t for (var index = 0; index < length; index++) {\n\t result[index] = _.pluck(array, index);\n\t }\n\t return result;\n\t };\n\t\n\t // Converts lists into objects. Pass either a single array of `[key, value]`\n\t // pairs, or two parallel arrays of the same length -- one of keys, and one of\n\t // the corresponding values.\n\t _.object = function(list, values) {\n\t var result = {};\n\t for (var i = 0, length = getLength(list); i < length; i++) {\n\t if (values) {\n\t result[list[i]] = values[i];\n\t } else {\n\t result[list[i][0]] = list[i][1];\n\t }\n\t }\n\t return result;\n\t };\n\t\n\t // Generator function to create the findIndex and findLastIndex functions\n\t function createPredicateIndexFinder(dir) {\n\t return function(array, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var length = getLength(array);\n\t var index = dir > 0 ? 0 : length - 1;\n\t for (; index >= 0 && index < length; index += dir) {\n\t if (predicate(array[index], index, array)) return index;\n\t }\n\t return -1;\n\t };\n\t }\n\t\n\t // Returns the first index on an array-like that passes a predicate test\n\t _.findIndex = createPredicateIndexFinder(1);\n\t _.findLastIndex = createPredicateIndexFinder(-1);\n\t\n\t // Use a comparator function to figure out the smallest index at which\n\t // an object should be inserted so as to maintain order. Uses binary search.\n\t _.sortedIndex = function(array, obj, iteratee, context) {\n\t iteratee = cb(iteratee, context, 1);\n\t var value = iteratee(obj);\n\t var low = 0, high = getLength(array);\n\t while (low < high) {\n\t var mid = Math.floor((low + high) / 2);\n\t if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n\t }\n\t return low;\n\t };\n\t\n\t // Generator function to create the indexOf and lastIndexOf functions\n\t function createIndexFinder(dir, predicateFind, sortedIndex) {\n\t return function(array, item, idx) {\n\t var i = 0, length = getLength(array);\n\t if (typeof idx == 'number') {\n\t if (dir > 0) {\n\t i = idx >= 0 ? idx : Math.max(idx + length, i);\n\t } else {\n\t length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n\t }\n\t } else if (sortedIndex && idx && length) {\n\t idx = sortedIndex(array, item);\n\t return array[idx] === item ? idx : -1;\n\t }\n\t if (item !== item) {\n\t idx = predicateFind(slice.call(array, i, length), _.isNaN);\n\t return idx >= 0 ? idx + i : -1;\n\t }\n\t for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n\t if (array[idx] === item) return idx;\n\t }\n\t return -1;\n\t };\n\t }\n\t\n\t // Return the position of the first occurrence of an item in an array,\n\t // or -1 if the item is not included in the array.\n\t // If the array is large and already in sort order, pass `true`\n\t // for **isSorted** to use binary search.\n\t _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n\t _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\t\n\t // Generate an integer Array containing an arithmetic progression. A port of\n\t // the native Python `range()` function. See\n\t // [the Python documentation](http://docs.python.org/library/functions.html#range).\n\t _.range = function(start, stop, step) {\n\t if (stop == null) {\n\t stop = start || 0;\n\t start = 0;\n\t }\n\t step = step || 1;\n\t\n\t var length = Math.max(Math.ceil((stop - start) / step), 0);\n\t var range = Array(length);\n\t\n\t for (var idx = 0; idx < length; idx++, start += step) {\n\t range[idx] = start;\n\t }\n\t\n\t return range;\n\t };\n\t\n\t // Function (ahem) Functions\n\t // ------------------\n\t\n\t // Determines whether to execute a function as a constructor\n\t // or a normal function with the provided arguments\n\t var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n\t if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n\t var self = baseCreate(sourceFunc.prototype);\n\t var result = sourceFunc.apply(self, args);\n\t if (_.isObject(result)) return result;\n\t return self;\n\t };\n\t\n\t // Create a function bound to a given object (assigning `this`, and arguments,\n\t // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n\t // available.\n\t _.bind = function(func, context) {\n\t if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n\t if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n\t var args = slice.call(arguments, 2);\n\t var bound = function() {\n\t return executeBound(func, bound, context, this, args.concat(slice.call(arguments)));\n\t };\n\t return bound;\n\t };\n\t\n\t // Partially apply a function by creating a version that has had some of its\n\t // arguments pre-filled, without changing its dynamic `this` context. _ acts\n\t // as a placeholder, allowing any combination of arguments to be pre-filled.\n\t _.partial = function(func) {\n\t var boundArgs = slice.call(arguments, 1);\n\t var bound = function() {\n\t var position = 0, length = boundArgs.length;\n\t var args = Array(length);\n\t for (var i = 0; i < length; i++) {\n\t args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];\n\t }\n\t while (position < arguments.length) args.push(arguments[position++]);\n\t return executeBound(func, bound, this, this, args);\n\t };\n\t return bound;\n\t };\n\t\n\t // Bind a number of an object's methods to that object. Remaining arguments\n\t // are the method names to be bound. Useful for ensuring that all callbacks\n\t // defined on an object belong to it.\n\t _.bindAll = function(obj) {\n\t var i, length = arguments.length, key;\n\t if (length <= 1) throw new Error('bindAll must be passed function names');\n\t for (i = 1; i < length; i++) {\n\t key = arguments[i];\n\t obj[key] = _.bind(obj[key], obj);\n\t }\n\t return obj;\n\t };\n\t\n\t // Memoize an expensive function by storing its results.\n\t _.memoize = function(func, hasher) {\n\t var memoize = function(key) {\n\t var cache = memoize.cache;\n\t var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n\t if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n\t return cache[address];\n\t };\n\t memoize.cache = {};\n\t return memoize;\n\t };\n\t\n\t // Delays a function for the given number of milliseconds, and then calls\n\t // it with the arguments supplied.\n\t _.delay = function(func, wait) {\n\t var args = slice.call(arguments, 2);\n\t return setTimeout(function(){\n\t return func.apply(null, args);\n\t }, wait);\n\t };\n\t\n\t // Defers a function, scheduling it to run after the current call stack has\n\t // cleared.\n\t _.defer = _.partial(_.delay, _, 1);\n\t\n\t // Returns a function, that, when invoked, will only be triggered at most once\n\t // during a given window of time. Normally, the throttled function will run\n\t // as much as it can, without ever going more than once per `wait` duration;\n\t // but if you'd like to disable the execution on the leading edge, pass\n\t // `{leading: false}`. To disable execution on the trailing edge, ditto.\n\t _.throttle = function(func, wait, options) {\n\t var context, args, result;\n\t var timeout = null;\n\t var previous = 0;\n\t if (!options) options = {};\n\t var later = function() {\n\t previous = options.leading === false ? 0 : _.now();\n\t timeout = null;\n\t result = func.apply(context, args);\n\t if (!timeout) context = args = null;\n\t };\n\t return function() {\n\t var now = _.now();\n\t if (!previous && options.leading === false) previous = now;\n\t var remaining = wait - (now - previous);\n\t context = this;\n\t args = arguments;\n\t if (remaining <= 0 || remaining > wait) {\n\t if (timeout) {\n\t clearTimeout(timeout);\n\t timeout = null;\n\t }\n\t previous = now;\n\t result = func.apply(context, args);\n\t if (!timeout) context = args = null;\n\t } else if (!timeout && options.trailing !== false) {\n\t timeout = setTimeout(later, remaining);\n\t }\n\t return result;\n\t };\n\t };\n\t\n\t // Returns a function, that, as long as it continues to be invoked, will not\n\t // be triggered. The function will be called after it stops being called for\n\t // N milliseconds. If `immediate` is passed, trigger the function on the\n\t // leading edge, instead of the trailing.\n\t _.debounce = function(func, wait, immediate) {\n\t var timeout, args, context, timestamp, result;\n\t\n\t var later = function() {\n\t var last = _.now() - timestamp;\n\t\n\t if (last < wait && last >= 0) {\n\t timeout = setTimeout(later, wait - last);\n\t } else {\n\t timeout = null;\n\t if (!immediate) {\n\t result = func.apply(context, args);\n\t if (!timeout) context = args = null;\n\t }\n\t }\n\t };\n\t\n\t return function() {\n\t context = this;\n\t args = arguments;\n\t timestamp = _.now();\n\t var callNow = immediate && !timeout;\n\t if (!timeout) timeout = setTimeout(later, wait);\n\t if (callNow) {\n\t result = func.apply(context, args);\n\t context = args = null;\n\t }\n\t\n\t return result;\n\t };\n\t };\n\t\n\t // Returns the first function passed as an argument to the second,\n\t // allowing you to adjust arguments, run code before and after, and\n\t // conditionally execute the original function.\n\t _.wrap = function(func, wrapper) {\n\t return _.partial(wrapper, func);\n\t };\n\t\n\t // Returns a negated version of the passed-in predicate.\n\t _.negate = function(predicate) {\n\t return function() {\n\t return !predicate.apply(this, arguments);\n\t };\n\t };\n\t\n\t // Returns a function that is the composition of a list of functions, each\n\t // consuming the return value of the function that follows.\n\t _.compose = function() {\n\t var args = arguments;\n\t var start = args.length - 1;\n\t return function() {\n\t var i = start;\n\t var result = args[start].apply(this, arguments);\n\t while (i--) result = args[i].call(this, result);\n\t return result;\n\t };\n\t };\n\t\n\t // Returns a function that will only be executed on and after the Nth call.\n\t _.after = function(times, func) {\n\t return function() {\n\t if (--times < 1) {\n\t return func.apply(this, arguments);\n\t }\n\t };\n\t };\n\t\n\t // Returns a function that will only be executed up to (but not including) the Nth call.\n\t _.before = function(times, func) {\n\t var memo;\n\t return function() {\n\t if (--times > 0) {\n\t memo = func.apply(this, arguments);\n\t }\n\t if (times <= 1) func = null;\n\t return memo;\n\t };\n\t };\n\t\n\t // Returns a function that will be executed at most one time, no matter how\n\t // often you call it. Useful for lazy initialization.\n\t _.once = _.partial(_.before, 2);\n\t\n\t // Object Functions\n\t // ----------------\n\t\n\t // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n\t var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n\t var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n\t 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\t\n\t function collectNonEnumProps(obj, keys) {\n\t var nonEnumIdx = nonEnumerableProps.length;\n\t var constructor = obj.constructor;\n\t var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;\n\t\n\t // Constructor is a special case.\n\t var prop = 'constructor';\n\t if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\t\n\t while (nonEnumIdx--) {\n\t prop = nonEnumerableProps[nonEnumIdx];\n\t if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n\t keys.push(prop);\n\t }\n\t }\n\t }\n\t\n\t // Retrieve the names of an object's own properties.\n\t // Delegates to **ECMAScript 5**'s native `Object.keys`\n\t _.keys = function(obj) {\n\t if (!_.isObject(obj)) return [];\n\t if (nativeKeys) return nativeKeys(obj);\n\t var keys = [];\n\t for (var key in obj) if (_.has(obj, key)) keys.push(key);\n\t // Ahem, IE < 9.\n\t if (hasEnumBug) collectNonEnumProps(obj, keys);\n\t return keys;\n\t };\n\t\n\t // Retrieve all the property names of an object.\n\t _.allKeys = function(obj) {\n\t if (!_.isObject(obj)) return [];\n\t var keys = [];\n\t for (var key in obj) keys.push(key);\n\t // Ahem, IE < 9.\n\t if (hasEnumBug) collectNonEnumProps(obj, keys);\n\t return keys;\n\t };\n\t\n\t // Retrieve the values of an object's properties.\n\t _.values = function(obj) {\n\t var keys = _.keys(obj);\n\t var length = keys.length;\n\t var values = Array(length);\n\t for (var i = 0; i < length; i++) {\n\t values[i] = obj[keys[i]];\n\t }\n\t return values;\n\t };\n\t\n\t // Returns the results of applying the iteratee to each element of the object\n\t // In contrast to _.map it returns an object\n\t _.mapObject = function(obj, iteratee, context) {\n\t iteratee = cb(iteratee, context);\n\t var keys = _.keys(obj),\n\t length = keys.length,\n\t results = {},\n\t currentKey;\n\t for (var index = 0; index < length; index++) {\n\t currentKey = keys[index];\n\t results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n\t }\n\t return results;\n\t };\n\t\n\t // Convert an object into a list of `[key, value]` pairs.\n\t _.pairs = function(obj) {\n\t var keys = _.keys(obj);\n\t var length = keys.length;\n\t var pairs = Array(length);\n\t for (var i = 0; i < length; i++) {\n\t pairs[i] = [keys[i], obj[keys[i]]];\n\t }\n\t return pairs;\n\t };\n\t\n\t // Invert the keys and values of an object. The values must be serializable.\n\t _.invert = function(obj) {\n\t var result = {};\n\t var keys = _.keys(obj);\n\t for (var i = 0, length = keys.length; i < length; i++) {\n\t result[obj[keys[i]]] = keys[i];\n\t }\n\t return result;\n\t };\n\t\n\t // Return a sorted list of the function names available on the object.\n\t // Aliased as `methods`\n\t _.functions = _.methods = function(obj) {\n\t var names = [];\n\t for (var key in obj) {\n\t if (_.isFunction(obj[key])) names.push(key);\n\t }\n\t return names.sort();\n\t };\n\t\n\t // Extend a given object with all the properties in passed-in object(s).\n\t _.extend = createAssigner(_.allKeys);\n\t\n\t // Assigns a given object with all the own properties in the passed-in object(s)\n\t // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n\t _.extendOwn = _.assign = createAssigner(_.keys);\n\t\n\t // Returns the first key on an object that passes a predicate test\n\t _.findKey = function(obj, predicate, context) {\n\t predicate = cb(predicate, context);\n\t var keys = _.keys(obj), key;\n\t for (var i = 0, length = keys.length; i < length; i++) {\n\t key = keys[i];\n\t if (predicate(obj[key], key, obj)) return key;\n\t }\n\t };\n\t\n\t // Return a copy of the object only containing the whitelisted properties.\n\t _.pick = function(object, oiteratee, context) {\n\t var result = {}, obj = object, iteratee, keys;\n\t if (obj == null) return result;\n\t if (_.isFunction(oiteratee)) {\n\t keys = _.allKeys(obj);\n\t iteratee = optimizeCb(oiteratee, context);\n\t } else {\n\t keys = flatten(arguments, false, false, 1);\n\t iteratee = function(value, key, obj) { return key in obj; };\n\t obj = Object(obj);\n\t }\n\t for (var i = 0, length = keys.length; i < length; i++) {\n\t var key = keys[i];\n\t var value = obj[key];\n\t if (iteratee(value, key, obj)) result[key] = value;\n\t }\n\t return result;\n\t };\n\t\n\t // Return a copy of the object without the blacklisted properties.\n\t _.omit = function(obj, iteratee, context) {\n\t if (_.isFunction(iteratee)) {\n\t iteratee = _.negate(iteratee);\n\t } else {\n\t var keys = _.map(flatten(arguments, false, false, 1), String);\n\t iteratee = function(value, key) {\n\t return !_.contains(keys, key);\n\t };\n\t }\n\t return _.pick(obj, iteratee, context);\n\t };\n\t\n\t // Fill in a given object with default properties.\n\t _.defaults = createAssigner(_.allKeys, true);\n\t\n\t // Creates an object that inherits from the given prototype object.\n\t // If additional properties are provided then they will be added to the\n\t // created object.\n\t _.create = function(prototype, props) {\n\t var result = baseCreate(prototype);\n\t if (props) _.extendOwn(result, props);\n\t return result;\n\t };\n\t\n\t // Create a (shallow-cloned) duplicate of an object.\n\t _.clone = function(obj) {\n\t if (!_.isObject(obj)) return obj;\n\t return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n\t };\n\t\n\t // Invokes interceptor with the obj, and then returns obj.\n\t // The primary purpose of this method is to \"tap into\" a method chain, in\n\t // order to perform operations on intermediate results within the chain.\n\t _.tap = function(obj, interceptor) {\n\t interceptor(obj);\n\t return obj;\n\t };\n\t\n\t // Returns whether an object has a given set of `key:value` pairs.\n\t _.isMatch = function(object, attrs) {\n\t var keys = _.keys(attrs), length = keys.length;\n\t if (object == null) return !length;\n\t var obj = Object(object);\n\t for (var i = 0; i < length; i++) {\n\t var key = keys[i];\n\t if (attrs[key] !== obj[key] || !(key in obj)) return false;\n\t }\n\t return true;\n\t };\n\t\n\t\n\t // Internal recursive comparison function for `isEqual`.\n\t var eq = function(a, b, aStack, bStack) {\n\t // Identical objects are equal. `0 === -0`, but they aren't identical.\n\t // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n\t if (a === b) return a !== 0 || 1 / a === 1 / b;\n\t // A strict comparison is necessary because `null == undefined`.\n\t if (a == null || b == null) return a === b;\n\t // Unwrap any wrapped objects.\n\t if (a instanceof _) a = a._wrapped;\n\t if (b instanceof _) b = b._wrapped;\n\t // Compare `[[Class]]` names.\n\t var className = toString.call(a);\n\t if (className !== toString.call(b)) return false;\n\t switch (className) {\n\t // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n\t case '[object RegExp]':\n\t // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n\t case '[object String]':\n\t // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n\t // equivalent to `new String(\"5\")`.\n\t return '' + a === '' + b;\n\t case '[object Number]':\n\t // `NaN`s are equivalent, but non-reflexive.\n\t // Object(NaN) is equivalent to NaN\n\t if (+a !== +a) return +b !== +b;\n\t // An `egal` comparison is performed for other numeric values.\n\t return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n\t case '[object Date]':\n\t case '[object Boolean]':\n\t // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n\t // millisecond representations. Note that invalid dates with millisecond representations\n\t // of `NaN` are not equivalent.\n\t return +a === +b;\n\t }\n\t\n\t var areArrays = className === '[object Array]';\n\t if (!areArrays) {\n\t if (typeof a != 'object' || typeof b != 'object') return false;\n\t\n\t // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n\t // from different frames are.\n\t var aCtor = a.constructor, bCtor = b.constructor;\n\t if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n\t _.isFunction(bCtor) && bCtor instanceof bCtor)\n\t && ('constructor' in a && 'constructor' in b)) {\n\t return false;\n\t }\n\t }\n\t // Assume equality for cyclic structures. The algorithm for detecting cyclic\n\t // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\t\n\t // Initializing stack of traversed objects.\n\t // It's done here since we only need them for objects and arrays comparison.\n\t aStack = aStack || [];\n\t bStack = bStack || [];\n\t var length = aStack.length;\n\t while (length--) {\n\t // Linear search. Performance is inversely proportional to the number of\n\t // unique nested structures.\n\t if (aStack[length] === a) return bStack[length] === b;\n\t }\n\t\n\t // Add the first object to the stack of traversed objects.\n\t aStack.push(a);\n\t bStack.push(b);\n\t\n\t // Recursively compare objects and arrays.\n\t if (areArrays) {\n\t // Compare array lengths to determine if a deep comparison is necessary.\n\t length = a.length;\n\t if (length !== b.length) return false;\n\t // Deep compare the contents, ignoring non-numeric properties.\n\t while (length--) {\n\t if (!eq(a[length], b[length], aStack, bStack)) return false;\n\t }\n\t } else {\n\t // Deep compare objects.\n\t var keys = _.keys(a), key;\n\t length = keys.length;\n\t // Ensure that both objects contain the same number of properties before comparing deep equality.\n\t if (_.keys(b).length !== length) return false;\n\t while (length--) {\n\t // Deep compare each member\n\t key = keys[length];\n\t if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n\t }\n\t }\n\t // Remove the first object from the stack of traversed objects.\n\t aStack.pop();\n\t bStack.pop();\n\t return true;\n\t };\n\t\n\t // Perform a deep comparison to check if two objects are equal.\n\t _.isEqual = function(a, b) {\n\t return eq(a, b);\n\t };\n\t\n\t // Is a given array, string, or object empty?\n\t // An \"empty\" object has no enumerable own-properties.\n\t _.isEmpty = function(obj) {\n\t if (obj == null) return true;\n\t if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n\t return _.keys(obj).length === 0;\n\t };\n\t\n\t // Is a given value a DOM element?\n\t _.isElement = function(obj) {\n\t return !!(obj && obj.nodeType === 1);\n\t };\n\t\n\t // Is a given value an array?\n\t // Delegates to ECMA5's native Array.isArray\n\t _.isArray = nativeIsArray || function(obj) {\n\t return toString.call(obj) === '[object Array]';\n\t };\n\t\n\t // Is a given variable an object?\n\t _.isObject = function(obj) {\n\t var type = typeof obj;\n\t return type === 'function' || type === 'object' && !!obj;\n\t };\n\t\n\t // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError.\n\t _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) {\n\t _['is' + name] = function(obj) {\n\t return toString.call(obj) === '[object ' + name + ']';\n\t };\n\t });\n\t\n\t // Define a fallback version of the method in browsers (ahem, IE < 9), where\n\t // there isn't any inspectable \"Arguments\" type.\n\t if (!_.isArguments(arguments)) {\n\t _.isArguments = function(obj) {\n\t return _.has(obj, 'callee');\n\t };\n\t }\n\t\n\t // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n\t // IE 11 (#1621), and in Safari 8 (#1929).\n\t if (typeof /./ != 'function' && typeof Int8Array != 'object') {\n\t _.isFunction = function(obj) {\n\t return typeof obj == 'function' || false;\n\t };\n\t }\n\t\n\t // Is a given object a finite number?\n\t _.isFinite = function(obj) {\n\t return isFinite(obj) && !isNaN(parseFloat(obj));\n\t };\n\t\n\t // Is the given value `NaN`? (NaN is the only number which does not equal itself).\n\t _.isNaN = function(obj) {\n\t return _.isNumber(obj) && obj !== +obj;\n\t };\n\t\n\t // Is a given value a boolean?\n\t _.isBoolean = function(obj) {\n\t return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n\t };\n\t\n\t // Is a given value equal to null?\n\t _.isNull = function(obj) {\n\t return obj === null;\n\t };\n\t\n\t // Is a given variable undefined?\n\t _.isUndefined = function(obj) {\n\t return obj === void 0;\n\t };\n\t\n\t // Shortcut function for checking if an object has a given property directly\n\t // on itself (in other words, not on a prototype).\n\t _.has = function(obj, key) {\n\t return obj != null && hasOwnProperty.call(obj, key);\n\t };\n\t\n\t // Utility Functions\n\t // -----------------\n\t\n\t // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n\t // previous owner. Returns a reference to the Underscore object.\n\t _.noConflict = function() {\n\t root._ = previousUnderscore;\n\t return this;\n\t };\n\t\n\t // Keep the identity function around for default iteratees.\n\t _.identity = function(value) {\n\t return value;\n\t };\n\t\n\t // Predicate-generating functions. Often useful outside of Underscore.\n\t _.constant = function(value) {\n\t return function() {\n\t return value;\n\t };\n\t };\n\t\n\t _.noop = function(){};\n\t\n\t _.property = property;\n\t\n\t // Generates a function for a given object that returns a given property.\n\t _.propertyOf = function(obj) {\n\t return obj == null ? function(){} : function(key) {\n\t return obj[key];\n\t };\n\t };\n\t\n\t // Returns a predicate for checking whether an object has a given set of\n\t // `key:value` pairs.\n\t _.matcher = _.matches = function(attrs) {\n\t attrs = _.extendOwn({}, attrs);\n\t return function(obj) {\n\t return _.isMatch(obj, attrs);\n\t };\n\t };\n\t\n\t // Run a function **n** times.\n\t _.times = function(n, iteratee, context) {\n\t var accum = Array(Math.max(0, n));\n\t iteratee = optimizeCb(iteratee, context, 1);\n\t for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n\t return accum;\n\t };\n\t\n\t // Return a random integer between min and max (inclusive).\n\t _.random = function(min, max) {\n\t if (max == null) {\n\t max = min;\n\t min = 0;\n\t }\n\t return min + Math.floor(Math.random() * (max - min + 1));\n\t };\n\t\n\t // A (possibly faster) way to get the current timestamp as an integer.\n\t _.now = Date.now || function() {\n\t return new Date().getTime();\n\t };\n\t\n\t // List of HTML entities for escaping.\n\t var escapeMap = {\n\t '&': '&',\n\t '<': '<',\n\t '>': '>',\n\t '\"': '"',\n\t \"'\": ''',\n\t '`': '`'\n\t };\n\t var unescapeMap = _.invert(escapeMap);\n\t\n\t // Functions for escaping and unescaping strings to/from HTML interpolation.\n\t var createEscaper = function(map) {\n\t var escaper = function(match) {\n\t return map[match];\n\t };\n\t // Regexes for identifying a key that needs to be escaped\n\t var source = '(?:' + _.keys(map).join('|') + ')';\n\t var testRegexp = RegExp(source);\n\t var replaceRegexp = RegExp(source, 'g');\n\t return function(string) {\n\t string = string == null ? '' : '' + string;\n\t return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n\t };\n\t };\n\t _.escape = createEscaper(escapeMap);\n\t _.unescape = createEscaper(unescapeMap);\n\t\n\t // If the value of the named `property` is a function then invoke it with the\n\t // `object` as context; otherwise, return it.\n\t _.result = function(object, property, fallback) {\n\t var value = object == null ? void 0 : object[property];\n\t if (value === void 0) {\n\t value = fallback;\n\t }\n\t return _.isFunction(value) ? value.call(object) : value;\n\t };\n\t\n\t // Generate a unique integer id (unique within the entire client session).\n\t // Useful for temporary DOM ids.\n\t var idCounter = 0;\n\t _.uniqueId = function(prefix) {\n\t var id = ++idCounter + '';\n\t return prefix ? prefix + id : id;\n\t };\n\t\n\t // By default, Underscore uses ERB-style template delimiters, change the\n\t // following template settings to use alternative delimiters.\n\t _.templateSettings = {\n\t evaluate : /<%([\\s\\S]+?)%>/g,\n\t interpolate : /<%=([\\s\\S]+?)%>/g,\n\t escape : /<%-([\\s\\S]+?)%>/g\n\t };\n\t\n\t // When customizing `templateSettings`, if you don't want to define an\n\t // interpolation, evaluation or escaping regex, we need one that is\n\t // guaranteed not to match.\n\t var noMatch = /(.)^/;\n\t\n\t // Certain characters need to be escaped so that they can be put into a\n\t // string literal.\n\t var escapes = {\n\t \"'\": \"'\",\n\t '\\\\': '\\\\',\n\t '\\r': 'r',\n\t '\\n': 'n',\n\t '\\u2028': 'u2028',\n\t '\\u2029': 'u2029'\n\t };\n\t\n\t var escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\t\n\t var escapeChar = function(match) {\n\t return '\\\\' + escapes[match];\n\t };\n\t\n\t // JavaScript micro-templating, similar to John Resig's implementation.\n\t // Underscore templating handles arbitrary delimiters, preserves whitespace,\n\t // and correctly escapes quotes within interpolated code.\n\t // NB: `oldSettings` only exists for backwards compatibility.\n\t _.template = function(text, settings, oldSettings) {\n\t if (!settings && oldSettings) settings = oldSettings;\n\t settings = _.defaults({}, settings, _.templateSettings);\n\t\n\t // Combine delimiters into one regular expression via alternation.\n\t var matcher = RegExp([\n\t (settings.escape || noMatch).source,\n\t (settings.interpolate || noMatch).source,\n\t (settings.evaluate || noMatch).source\n\t ].join('|') + '|$', 'g');\n\t\n\t // Compile the template source, escaping string literals appropriately.\n\t var index = 0;\n\t var source = \"__p+='\";\n\t text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n\t source += text.slice(index, offset).replace(escaper, escapeChar);\n\t index = offset + match.length;\n\t\n\t if (escape) {\n\t source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n\t } else if (interpolate) {\n\t source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n\t } else if (evaluate) {\n\t source += \"';\\n\" + evaluate + \"\\n__p+='\";\n\t }\n\t\n\t // Adobe VMs need the match returned to produce the correct offest.\n\t return match;\n\t });\n\t source += \"';\\n\";\n\t\n\t // If a variable is not specified, place data values in local scope.\n\t if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\t\n\t source = \"var __t,__p='',__j=Array.prototype.join,\" +\n\t \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n\t source + 'return __p;\\n';\n\t\n\t try {\n\t var render = new Function(settings.variable || 'obj', '_', source);\n\t } catch (e) {\n\t e.source = source;\n\t throw e;\n\t }\n\t\n\t var template = function(data) {\n\t return render.call(this, data, _);\n\t };\n\t\n\t // Provide the compiled source as a convenience for precompilation.\n\t var argument = settings.variable || 'obj';\n\t template.source = 'function(' + argument + '){\\n' + source + '}';\n\t\n\t return template;\n\t };\n\t\n\t // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n\t _.chain = function(obj) {\n\t var instance = _(obj);\n\t instance._chain = true;\n\t return instance;\n\t };\n\t\n\t // OOP\n\t // ---------------\n\t // If Underscore is called as a function, it returns a wrapped object that\n\t // can be used OO-style. This wrapper holds altered versions of all the\n\t // underscore functions. Wrapped objects may be chained.\n\t\n\t // Helper function to continue chaining intermediate results.\n\t var result = function(instance, obj) {\n\t return instance._chain ? _(obj).chain() : obj;\n\t };\n\t\n\t // Add your own custom functions to the Underscore object.\n\t _.mixin = function(obj) {\n\t _.each(_.functions(obj), function(name) {\n\t var func = _[name] = obj[name];\n\t _.prototype[name] = function() {\n\t var args = [this._wrapped];\n\t push.apply(args, arguments);\n\t return result(this, func.apply(_, args));\n\t };\n\t });\n\t };\n\t\n\t // Add all of the Underscore functions to the wrapper object.\n\t _.mixin(_);\n\t\n\t // Add all mutator Array functions to the wrapper.\n\t _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n\t var method = ArrayProto[name];\n\t _.prototype[name] = function() {\n\t var obj = this._wrapped;\n\t method.apply(obj, arguments);\n\t if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n\t return result(this, obj);\n\t };\n\t });\n\t\n\t // Add all accessor Array functions to the wrapper.\n\t _.each(['concat', 'join', 'slice'], function(name) {\n\t var method = ArrayProto[name];\n\t _.prototype[name] = function() {\n\t return result(this, method.apply(this._wrapped, arguments));\n\t };\n\t });\n\t\n\t // Extracts the result from a wrapped and chained object.\n\t _.prototype.value = function() {\n\t return this._wrapped;\n\t };\n\t\n\t // Provide unwrapping proxy for some methods used in engine operations\n\t // such as arithmetic and JSON stringification.\n\t _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\t\n\t _.prototype.toString = function() {\n\t return '' + this._wrapped;\n\t };\n\t\n\t // AMD registration happens at the end for compatibility with AMD loaders\n\t // that may not enforce next-turn semantics on modules. Even though general\n\t // practice for AMD registration is to be anonymous, underscore registers\n\t // as a named module because, like jQuery, it is a base library that is\n\t // popular enough to be bundled in a third party lib, but not be part of\n\t // an AMD load request. Those cases could generate an error when an\n\t // anonymous define() is called outside of a loader request.\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t return _;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t }\n\t}.call(this));\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar TimeSpan = (function () {\n\t function TimeSpan(time, isMilliseconds) {\n\t if (isMilliseconds === void 0) { isMilliseconds = true; }\n\t if (isMilliseconds) {\n\t this.milliseconds = time;\n\t }\n\t else {\n\t this.milliseconds = time * 1000;\n\t }\n\t }\n\t TimeSpan.prototype.getMilliseconds = function () {\n\t return this.milliseconds;\n\t };\n\t TimeSpan.prototype.getSeconds = function () {\n\t return this.getMilliseconds() / 1000;\n\t };\n\t TimeSpan.prototype.getMinutes = function () {\n\t return this.getSeconds() / 60;\n\t };\n\t TimeSpan.prototype.getHours = function () {\n\t return this.getMinutes() / 60;\n\t };\n\t TimeSpan.prototype.getDays = function () {\n\t return this.getHours() / 24;\n\t };\n\t TimeSpan.prototype.getWeeks = function () {\n\t return this.getDays() / 7;\n\t };\n\t TimeSpan.prototype.getHHMMSS = function () {\n\t var hours = Math.floor(this.getHours());\n\t var minutes = Math.floor(this.getMinutes()) % 60;\n\t var seconds = Math.floor(this.getSeconds()) % 60;\n\t var hoursString, minutesString, secondsString;\n\t if (hours == 0) {\n\t hoursString = '';\n\t }\n\t else {\n\t hoursString = hours < 10 ? '0' + hours.toString() : hours.toString();\n\t }\n\t minutesString = minutes < 10 ? '0' + minutes.toString() : minutes.toString();\n\t secondsString = seconds < 10 ? '0' + seconds.toString() : seconds.toString();\n\t var hhmmss = (hoursString != '' ? hoursString + ':' : '') + minutesString + ':' + secondsString;\n\t return hhmmss;\n\t };\n\t TimeSpan.fromDates = function (from, to) {\n\t Assert_1.Assert.exists(from);\n\t Assert_1.Assert.exists(to);\n\t return new TimeSpan(to.valueOf() - from.valueOf());\n\t };\n\t return TimeSpan;\n\t}());\n\texports.TimeSpan = TimeSpan;\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Not sure about this : In year 2033 who's to say that this list won't be 50 pages long !\n\tvar ResponsiveComponents_1 = __webpack_require__(19);\n\tvar mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\tvar DeviceUtils = (function () {\n\t function DeviceUtils() {\n\t }\n\t DeviceUtils.getDeviceName = function () {\n\t var userAgent = navigator.userAgent;\n\t if (userAgent.match(/Android/i)) {\n\t return 'Android';\n\t }\n\t if (userAgent.match(/BlackBerry/i)) {\n\t return 'BlackBerry';\n\t }\n\t if (userAgent.match(/iPhone/i)) {\n\t return 'iPhone';\n\t }\n\t if (userAgent.match(/iPad/i)) {\n\t return 'iPad';\n\t }\n\t if (userAgent.match(/iPod/i)) {\n\t return 'iPod';\n\t }\n\t if (userAgent.match(/Opera Mini/i)) {\n\t return 'Opera Mini';\n\t }\n\t if (userAgent.match(/IEMobile/i)) {\n\t return 'IE Mobile';\n\t }\n\t if (userAgent.match(/Chrome/i)) {\n\t return 'Chrome';\n\t }\n\t if (userAgent.match(/MSIE/i) || userAgent.match(/Trident/i)) {\n\t return 'IE';\n\t }\n\t if (userAgent.match(/Opera/i)) {\n\t return 'Opera';\n\t }\n\t if (userAgent.match(/Firefox/i)) {\n\t return 'Firefox';\n\t }\n\t if (userAgent.match(/Safari/i)) {\n\t return 'Safari';\n\t }\n\t return 'Others';\n\t };\n\t DeviceUtils.isAndroid = function () {\n\t return DeviceUtils.getDeviceName() == 'Android';\n\t };\n\t DeviceUtils.isIos = function () {\n\t var deviceName = DeviceUtils.getDeviceName();\n\t return deviceName == 'iPhone' || deviceName == 'iPad' || deviceName == 'iPod';\n\t };\n\t DeviceUtils.isIE8or9 = function () {\n\t var myNav = navigator.userAgent.toLowerCase();\n\t if (myNav.indexOf('msie') == -1) {\n\t return false;\n\t }\n\t return parseInt(myNav.split('msie')[1]) < 10;\n\t };\n\t DeviceUtils.isMobileDevice = function () {\n\t return mobile;\n\t };\n\t /**\n\t * @deprecated\n\t *\n\t * Use ResponsiveComponents.isSmallScreenWidth() instead\n\t */\n\t DeviceUtils.isSmallScreenWidth = function () {\n\t return new ResponsiveComponents_1.ResponsiveComponents().isSmallScreenWidth();\n\t };\n\t return DeviceUtils;\n\t}());\n\texports.DeviceUtils = DeviceUtils;\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\texports.MEDIUM_SCREEN_WIDTH = 800;\n\texports.SMALL_SCREEN_WIDTH = 480;\n\t/**\n\t * This class serves as a way to get and set the different screen size breakpoints for the interface.\n\t *\n\t * By settings those, you can impact, amongst other, the {@link Facet}, {@link Tab} or {@link ResultList} behaviour.\n\t *\n\t * For example, the {@link Facet} components of your interface will switch to a dropdown menu when the screen size reaches 800px or less.\n\t *\n\t * You could modify this value using this calls\n\t *\n\t * Normally, you would interact with this class using the instance bound to {@link SearchInterface.responsiveComponents}\n\t */\n\tvar ResponsiveComponents = (function () {\n\t function ResponsiveComponents(windoh) {\n\t if (windoh === void 0) { windoh = window; }\n\t this.windoh = windoh;\n\t }\n\t /**\n\t * Set the breakpoint for small screen size.\n\t * @param width\n\t */\n\t ResponsiveComponents.prototype.setSmallScreenWidth = function (width) {\n\t Assert_1.Assert.check(width < this.getMediumScreenWidth(), \"Cannot set small screen width (\" + width + \") larger or equal to the current medium screen width (\" + this.getMediumScreenWidth() + \")\");\n\t this.smallScreenWidth = width;\n\t };\n\t /**\n\t * Set the breakpoint for medium screen size\n\t * @param width\n\t */\n\t ResponsiveComponents.prototype.setMediumScreenWidth = function (width) {\n\t Assert_1.Assert.check(width > this.getSmallScreenWidth(), \"Cannot set medium screen width (\" + width + \") smaller or equal to the current small screen width (\" + this.getSmallScreenWidth() + \")\");\n\t this.mediumScreenWidth = width;\n\t };\n\t /**\n\t * Get the current breakpoint for small screen size.\n\t *\n\t * If it was not explicitly set by {@link ResponsiveComponents.setSmallScreenWidth}, the default value is `480`.\n\t * @returns {number}\n\t */\n\t ResponsiveComponents.prototype.getSmallScreenWidth = function () {\n\t if (this.smallScreenWidth == null) {\n\t return exports.SMALL_SCREEN_WIDTH;\n\t }\n\t return this.smallScreenWidth;\n\t };\n\t /**\n\t * Get the current breakpoint for medium screen size.\n\t *\n\t * If it was not explicitly set by {@link ResponsiveComponents.setMediumScreenWidth}, the default value is `800`.\n\t * @returns {number}\n\t */\n\t ResponsiveComponents.prototype.getMediumScreenWidth = function () {\n\t if (this.mediumScreenWidth == null) {\n\t return exports.MEDIUM_SCREEN_WIDTH;\n\t }\n\t return this.mediumScreenWidth;\n\t };\n\t /**\n\t * Return true if the current screen size is smaller than the current breakpoint set for small screen width.\n\t * @returns {boolean}\n\t */\n\t ResponsiveComponents.prototype.isSmallScreenWidth = function () {\n\t if (this.windoh['clientWidth'] != null) {\n\t return this.windoh['clientWidth'] <= this.getSmallScreenWidth();\n\t }\n\t else {\n\t return document.body.clientWidth <= this.getSmallScreenWidth();\n\t }\n\t };\n\t /**\n\t * Return true if the current screen size is smaller than the current breakpoint set for medium screen width.\n\t * @returns {boolean}\n\t */\n\t ResponsiveComponents.prototype.isMediumScreenWidth = function () {\n\t if (this.isSmallScreenWidth()) {\n\t return false;\n\t }\n\t if (this.windoh['clientWidth'] != null) {\n\t return this.windoh['clientWidth'] <= this.getMediumScreenWidth();\n\t }\n\t return document.body.clientWidth <= this.getMediumScreenWidth();\n\t };\n\t /**\n\t * Return true if the current screen size is larger than the current breakpoint set for medium and small.\n\t * @returns {boolean}\n\t */\n\t ResponsiveComponents.prototype.isLargeScreenWidth = function () {\n\t return !this.isSmallScreenWidth() && !this.isMediumScreenWidth();\n\t };\n\t return ResponsiveComponents;\n\t}());\n\texports.ResponsiveComponents = ResponsiveComponents;\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar JQueryUtils = (function () {\n\t function JQueryUtils() {\n\t }\n\t JQueryUtils.getJQuery = function () {\n\t if (window && window['Coveo'] && window['Coveo']['$']) {\n\t return window['Coveo']['$'];\n\t }\n\t return false;\n\t };\n\t JQueryUtils.isInstanceOfJQuery = function (obj) {\n\t var jq = this.getJQuery();\n\t if (jq) {\n\t return obj instanceof jq;\n\t }\n\t return false;\n\t };\n\t JQueryUtils.isInstanceOfJqueryEvent = function (obj) {\n\t var jq = this.getJQuery();\n\t if (jq) {\n\t return obj instanceof jq.Event;\n\t }\n\t return false;\n\t };\n\t return JQueryUtils;\n\t}());\n\texports.JQueryUtils = JQueryUtils;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar AjaxError = (function () {\n\t function AjaxError(message, status) {\n\t this.message = message;\n\t this.status = status;\n\t Assert_1.Assert.exists(message);\n\t Assert_1.Assert.exists(status);\n\t this.name = this.type = 'Ajax Error (status: ' + status + ')';\n\t }\n\t return AjaxError;\n\t}());\n\texports.AjaxError = AjaxError;\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar MissingAuthenticationError = (function () {\n\t function MissingAuthenticationError(provider) {\n\t this.provider = provider;\n\t this.isMissingAuthentication = true;\n\t this.name = this.type = this.message = \"Missing Authentication (provider: \" + provider + \")\";\n\t }\n\t return MissingAuthenticationError;\n\t}());\n\texports.MissingAuthenticationError = MissingAuthenticationError;\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\tvar QueryUtils = (function () {\n\t function QueryUtils() {\n\t }\n\t QueryUtils.createGuid = function () {\n\t var guid;\n\t var success = false;\n\t if ((typeof (crypto) != 'undefined' && typeof (crypto.getRandomValues) != 'undefined')) {\n\t try {\n\t guid = QueryUtils.generateWithCrypto();\n\t success = true;\n\t }\n\t catch (e) {\n\t success = false;\n\t }\n\t }\n\t if (!success) {\n\t guid = QueryUtils.generateWithRandom();\n\t }\n\t return guid;\n\t };\n\t // This method is a fallback as it's generate a lot of collisions in Chrome.\n\t QueryUtils.generateWithRandom = function () {\n\t // http://stackoverflow.com/a/2117523\n\t return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n\t return v.toString(16);\n\t });\n\t };\n\t QueryUtils.generateWithCrypto = function () {\n\t var buf = new Uint16Array(8);\n\t crypto.getRandomValues(buf);\n\t var S4 = function (num) {\n\t var ret = num.toString(16);\n\t while (ret.length < 4) {\n\t ret = '0' + ret;\n\t }\n\t return ret;\n\t };\n\t return (S4(buf[0]) + S4(buf[1]) + '-' + S4(buf[2]) + '-' + S4(buf[3]) + '-' + S4(buf[4]) + '-' + S4(buf[5]) + S4(buf[6]) + S4(buf[7]));\n\t };\n\t QueryUtils.setStateObjectOnQueryResults = function (state, results) {\n\t QueryUtils.setPropertyOnResults(results, 'state', state);\n\t };\n\t QueryUtils.setStateObjectOnQueryResult = function (state, result) {\n\t QueryUtils.setPropertyOnResult(result, 'state', state);\n\t };\n\t QueryUtils.setSearchInterfaceObjectOnQueryResult = function (searchInterface, result) {\n\t QueryUtils.setPropertyOnResult(result, 'searchInterface', searchInterface);\n\t };\n\t QueryUtils.setIndexAndUidOnQueryResults = function (query, results, queryUid, pipeline, splitTestRun) {\n\t Assert_1.Assert.exists(query);\n\t Assert_1.Assert.exists(results);\n\t var index = query.firstResult;\n\t QueryUtils.setPropertyOnResults(results, 'queryUid', queryUid);\n\t QueryUtils.setPropertyOnResults(results, 'pipeline', pipeline);\n\t QueryUtils.setPropertyOnResults(results, 'splitTestRun', splitTestRun);\n\t QueryUtils.setPropertyOnResults(results, 'index', index, function () { return ++index; });\n\t };\n\t QueryUtils.setTermsToHighlightOnQueryResults = function (query, results) {\n\t QueryUtils.setPropertyOnResults(results, 'termsToHighlight', results.termsToHighlight);\n\t QueryUtils.setPropertyOnResults(results, 'phrasesToHighlight', results.phrasesToHighlight);\n\t };\n\t QueryUtils.splitFlags = function (flags, delimiter) {\n\t if (delimiter === void 0) { delimiter = ';'; }\n\t Assert_1.Assert.exists(flags);\n\t return flags.split(delimiter);\n\t };\n\t QueryUtils.isAttachment = function (result) {\n\t return _.contains(QueryUtils.splitFlags(result.flags), 'IsAttachment');\n\t };\n\t QueryUtils.containsAttachment = function (result) {\n\t return _.contains(QueryUtils.splitFlags(result.flags), 'ContainsAttachment');\n\t };\n\t QueryUtils.hasHTMLVersion = function (result) {\n\t return _.contains(QueryUtils.splitFlags(result.flags), 'HasHtmlVersion');\n\t };\n\t QueryUtils.hasThumbnail = function (result) {\n\t return _.contains(QueryUtils.splitFlags(result.flags), 'HasThumbnail');\n\t };\n\t QueryUtils.hasExcerpt = function (result) {\n\t return result.excerpt != undefined && result.excerpt != '';\n\t };\n\t QueryUtils.getAuthor = function (result) {\n\t return result.raw['author'];\n\t };\n\t QueryUtils.getUriHash = function (result) {\n\t return result.raw['urihash'];\n\t };\n\t QueryUtils.getObjectType = function (result) {\n\t return result.raw['objecttype'];\n\t };\n\t QueryUtils.getCollection = function (result) {\n\t return result.raw['collection'];\n\t };\n\t QueryUtils.getSource = function (result) {\n\t return result.raw['source'];\n\t };\n\t QueryUtils.getLanguage = function (result) {\n\t return result.raw['language'];\n\t };\n\t QueryUtils.getPermanentId = function (result) {\n\t var fieldValue;\n\t var fieldUsed;\n\t var permanentId = Utils_1.Utils.getFieldValue(result, 'permanentid');\n\t if (permanentId) {\n\t fieldUsed = 'permanentid';\n\t fieldValue = permanentId;\n\t }\n\t else {\n\t fieldUsed = 'urihash';\n\t fieldValue = Utils_1.Utils.getFieldValue(result, 'urihash');\n\t }\n\t return {\n\t fieldValue: fieldValue,\n\t fieldUsed: fieldUsed\n\t };\n\t };\n\t QueryUtils.quoteAndEscapeIfNeeded = function (str) {\n\t Assert_1.Assert.isString(str);\n\t return QueryUtils.isAtomicString(str) || (QueryUtils.isRangeString(str) || QueryUtils.isRangeWithoutOuterBoundsString(str)) ? str : QueryUtils.quoteAndEscape(str);\n\t };\n\t QueryUtils.quoteAndEscape = function (str) {\n\t Assert_1.Assert.isString(str);\n\t return \"\\\"\" + QueryUtils.escapeString(str) + \"\\\"\";\n\t };\n\t QueryUtils.escapeString = function (str) {\n\t Assert_1.Assert.isString(str);\n\t return str.replace(/\"/g, ' ');\n\t };\n\t QueryUtils.isAtomicString = function (str) {\n\t Assert_1.Assert.isString(str);\n\t return /^\\d+(\\.\\d+)?$|^[\\d\\w]+$/.test(str);\n\t };\n\t QueryUtils.isRangeString = function (str) {\n\t Assert_1.Assert.isString(str);\n\t return /^\\d+(\\.\\d+)?\\.\\.\\d+(\\.\\d+)?$|^\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}\\.\\.\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}$/.test(str);\n\t };\n\t QueryUtils.isRangeWithoutOuterBoundsString = function (str) {\n\t Assert_1.Assert.isString(str);\n\t return /^\\d+(\\.\\d+)?$|^\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}$/.test(str);\n\t };\n\t QueryUtils.buildFieldExpression = function (field, operator, values) {\n\t Assert_1.Assert.isNonEmptyString(field);\n\t Assert_1.Assert.stringStartsWith(field, '@');\n\t Assert_1.Assert.isNonEmptyString(operator);\n\t Assert_1.Assert.isLargerOrEqualsThan(1, values.length);\n\t if (values.length == 1) {\n\t return field + operator + QueryUtils.quoteAndEscapeIfNeeded(values[0]);\n\t }\n\t else {\n\t return field + operator + '(' + _.map(values, function (str) { return QueryUtils.quoteAndEscapeIfNeeded(str); }).join(',') + ')';\n\t }\n\t };\n\t QueryUtils.buildFieldNotEqualExpression = function (field, values) {\n\t Assert_1.Assert.isNonEmptyString(field);\n\t Assert_1.Assert.stringStartsWith(field, '@');\n\t Assert_1.Assert.isLargerOrEqualsThan(1, values.length);\n\t var filter;\n\t if (values.length == 1) {\n\t filter = field + '==' + QueryUtils.quoteAndEscapeIfNeeded(values[0]);\n\t }\n\t else {\n\t filter = field + '==' + '(' + _.map(values, function (str) { return QueryUtils.quoteAndEscapeIfNeeded(str); }).join(',') + ')';\n\t }\n\t return '(NOT ' + filter + ')';\n\t };\n\t QueryUtils.mergeQueryString = function (url, queryString) {\n\t var queryStringPosition = url.indexOf('?');\n\t if (queryStringPosition != -1) {\n\t url += '&' + queryString;\n\t }\n\t else {\n\t url += '?' + queryString;\n\t }\n\t return url;\n\t };\n\t QueryUtils.mergePath = function (url, path) {\n\t var urlSplit = url.split('?');\n\t return urlSplit[0] + path + '?' + (urlSplit[1] || '');\n\t };\n\t QueryUtils.setPropertyOnResults = function (results, property, value, afterOneLoop) {\n\t _.each(results.results, function (result) {\n\t QueryUtils.setPropertyOnResult(result, property, value);\n\t value = afterOneLoop ? afterOneLoop() : value;\n\t });\n\t };\n\t QueryUtils.setPropertyOnResult = function (result, property, value) {\n\t result[property] = value;\n\t _.each(result.childResults, function (child) {\n\t child[property] = value;\n\t });\n\t if (!Utils_1.Utils.isNullOrUndefined(result.parentResult)) {\n\t result.parentResult[property] = value;\n\t }\n\t };\n\t // http://stackoverflow.com/a/11582513\n\t QueryUtils.getUrlParameter = function (name) {\n\t return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ''])[1].replace(/\\+/g, '%20')) || null;\n\t };\n\t QueryUtils.isStratusAgnosticField = function (fieldToVerify, fieldToMatch) {\n\t var checkForSystem = /^(@?)(sys)?(.*)/i;\n\t var matchFieldToVerify = checkForSystem.exec(fieldToVerify);\n\t var matchFieldToMatch = checkForSystem.exec(fieldToMatch);\n\t if (matchFieldToVerify && matchFieldToMatch) {\n\t return (matchFieldToVerify[1] + matchFieldToVerify[3]).toLowerCase() == (matchFieldToMatch[1] + matchFieldToMatch[3]).toLowerCase();\n\t }\n\t return false;\n\t };\n\t return QueryUtils;\n\t}());\n\texports.QueryUtils = QueryUtils;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryError = (function () {\n\t function QueryError(errorResponse) {\n\t this.status = errorResponse.statusCode;\n\t this.message = errorResponse.data.message;\n\t this.name = this.type = errorResponse.data.type;\n\t this.queryExecutionReport = errorResponse.data.executionReport;\n\t Assert_1.Assert.isNumber(this.status);\n\t Assert_1.Assert.isNonEmptyString(this.message);\n\t Assert_1.Assert.isNonEmptyString(this.type);\n\t }\n\t return QueryError;\n\t}());\n\texports.QueryError = QueryError;\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.ModalBox = __webpack_require__(26);\n\texports.MagicBox = __webpack_require__(27);\n\texports.LocaleString = __webpack_require__(28);\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\tvar Coveo;!function(e){var o;!function(e){function o(e,o){void 0===o&&(o={});var n=o.body||document.body;n.className?n.className.indexOf(\"coveo-modalBox-opened\")==-1&&(n.className+=\" coveo-modalBox-opened\"):n.className=\"coveo-modalBox-opened\";var c=document.createElement(\"div\");c.className=\"coveo-modalBox\",n.appendChild(c),o.fullscreen===!0&&(c.className+=\" coveo-fullscreen\");var d=document.createElement(\"div\");d.className=\"coveo-overlay\",c.appendChild(d);var s=document.createElement(\"div\");if(s.className=\"coveo-wrapper\",c.appendChild(s),null!=o.title){var r=document.createElement(\"div\");r.className=\"coveo-title\",s.appendChild(r),r.innerHTML=o.title,o.titleClose===!0&&r.addEventListener(\"click\",function(){return v()})}e.className+=\" coveo-body\",s.appendChild(e);var i,v=function(e,t){void 0===e&&(e=0),void 0===t&&(t=!1);var d=null==o.validation||o.validation(e);if(d!==!1||t){c.parentElement&&c.parentElement.removeChild(c);var s=l.indexOf(v);return s>=0&&l.splice(s,1),null==n.querySelector(\".coveo-modalBox\")&&a(n,\"coveo-modalBox-opened\"),!0}return!1},u=function(e,o){var n=document.createElement(\"div\");n.className=\"coveo-button\",n.textContent=e,n.addEventListener(\"click\",function(){return v(o)}),i.appendChild(n)};return null!=o.buttons&&(i=document.createElement(\"div\"),i.className=\"coveo-buttons\",s.appendChild(i),o.buttons&t.OK&&u(\"Ok\",t.OK),o.buttons&t.APPLY&&u(\"Apply\",t.APPLY),o.buttons&t.YES&&u(\"Yes\",t.YES),o.buttons&t.NO&&u(\"No\",t.NO),o.buttons&t.CANCEL&&u(\"Cancel\",t.CANCEL)),l.push(v),o.overlayClose===!0&&d.addEventListener(\"click\",function(e){return v()}),null!=o.className&&(c.className+=\" \"+o.className),{modalBox:c,overlay:d,wrapper:s,buttons:i,content:e,close:v}}function n(e){void 0===e&&(e=!1);for(var o=0;l.length>o;){var n=l[o](0,e);n||o++}}function a(e,o){e.className=e.className.replace(new RegExp(\"(^|\\\\s)\"+o+\"(\\\\s|\\\\b)\",\"g\"),\"$1\")}!function(e){e[e.OK=1]=\"OK\",e[e.APPLY=2]=\"APPLY\",e[e.YES=4]=\"YES\",e[e.NO=8]=\"NO\",e[e.CANCEL=16]=\"CANCEL\"}(e.BUTTON||(e.BUTTON={}));var t=e.BUTTON,l=[];e.open=o,e.close=n}(o=e.ModalBox||(e.ModalBox={}))}(Coveo||(Coveo={}));\n\t\n\t/*** EXPORTS FROM exports-loader ***/\n\tmodule.exports = Coveo.ModalBox;\n\n/***/ },\n/* 27 */\n/***/ function(module, exports) {\n\n\tvar Coveo,__extends=this&&this.__extends||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);function s(){this.constructor=t}t.prototype=null===e?Object.create(e):(s.prototype=e.prototype,new s)};!function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){var s=this;this.expression=e,this.input=n,_.isString(t)?this.value=t:_.isArray(t)&&(this.subResults=t,_.forEach(this.subResults,function(t){t.parent=s}))}return t.prototype.isSuccess=function(){return null!=this.value||null!=this.subResults&&_.all(this.subResults,function(t){return t.isSuccess()})},t.prototype.path=function(t){var e=null!=this.parent&&this.parent!=t?this.parent.path(t):[];return e.push(this),e},t.prototype.findParent=function(t){for(var e=this,n=_.isString(t)?function(e){return t==e.expression.id}:t;null!=e&&!n(e);)e=e.parent;return e},t.prototype.find=function(t){var e=_.isString(t)?function(e){return t==e.expression.id}:t;if(e(this))return this;if(this.subResults)for(var n=0;nthis.getLength())return[];if(null!=e){if(_.isString(e)){if(e==this.expression.id)return[this]}else if(e(this))return[this]}else if(null!=(null==this.value&&null==this.subResults?this.input:this.value))return[this];if(null!=this.subResults){for(var n=[],s=0;s0?_.last(t).input:\"\";return\"Expected \"+_.map(t,function(t){return t.getHumanReadable()}).join(\" or \")+\" but \"+(e.length>0?JSON.stringify(e[0]):\"end of input\")+\" found.\"},t.prototype.before=function(){if(null==this.parent)return\"\";var t=_.indexOf(this.parent.subResults,this);return this.parent.before()+_.chain(this.parent.subResults).first(t).map(function(t){return t.toString()}).join(\"\").value()},t.prototype.after=function(){if(null==this.parent)return\"\";var t=_.indexOf(this.parent.subResults,this);return _.chain(this.parent.subResults).last(this.parent.subResults.length-t-1).map(function(t){return t.toString()}).join(\"\").value()+this.parent.after()},t.prototype.getLength=function(){return null!=this.value?this.value.length:null!=this.subResults?_.reduce(this.subResults,function(t,e){return t+e.getLength()},0):this.input.length},t.prototype.toHtmlElement=function(){var t=document.createElement(\"span\"),e=null!=this.expression?this.expression.id:null;return null!=e&&t.setAttribute(\"data-id\",e),t.setAttribute(\"data-success\",this.isSuccess().toString()),null!=this.value?(t.appendChild(document.createTextNode(this.value)),t.setAttribute(\"data-value\",this.value)):null!=this.subResults?_.each(this.subResults,function(e){t.appendChild(e.toHtmlElement())}):(t.appendChild(document.createTextNode(this.input)),t.setAttribute(\"data-input\",this.input),t.className=\"magic-box-error\"+(this.input.length>0?\"\":\" magic-box-error-empty\")),t.result=this,t},t.prototype.clean=function(e){if(null!=e||!this.isSuccess()){e=e||_.last(this.getBestExpect()).path(this);var n=_.first(e);if(null!=n){var s=_.indexOf(this.subResults,n),i=-1==s?[]:_.map(_.first(this.subResults,s),function(t){return t.clean()});return i.push(n.clean(_.rest(e))),new t(i,this.expression,this.input)}return new t(null,this.expression,this.input)}return null!=this.value?new t(this.value,this.expression,this.input):null!=this.subResults?new t(_.map(this.subResults,function(t){return t.clean()}),this.expression,this.input):void 0},t.prototype.clone=function(){return null!=this.value?new t(this.value,this.expression,this.input):null!=this.subResults?new t(_.map(this.subResults,function(t){return t.clone()}),this.expression,this.input):new t(null,this.expression,this.input)},t.prototype.toString=function(){return null!=this.value?this.value:null!=this.subResults?_.map(this.subResults,function(t){return t.toString()}).join(\"\"):this.input},t.prototype.getHumanReadable=function(){return this.expression instanceof e.ExpressionConstant?JSON.stringify(this.expression.value):this.expression.id},t}(),e.Result=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(n){t.call(this,[n],e.ExpressionEndOfInput,n.input);var s=new e.Result(null,e.ExpressionEndOfInput,n.input.substr(n.getLength()));s.parent=this,this.subResults.push(s)}return __extends(n,t),n}(e.Result),e.EndOfInputResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(e,n,s,i){var o=this;t.call(this,null!=e?[e]:null,n,s),this.result=e,this.expression=n,this.input=s,this.failAttempt=i,_.forEach(this.failAttempt,function(t){t.parent=o})}return __extends(n,t),n.prototype.getExpect=function(){var t=this,e=[];return null!=this.result&&(e=this.result.getExpect()),(e=_.reduce(this.failAttempt,function(t,e){return t.concat(e.getExpect())},e)).length>0&&_.all(e,function(e){return e.input==t.input})?[this]:e},n.prototype.clean=function(t){if(null!=t||!this.isSuccess()){t=_.rest(t||_.last(this.getBestExpect()).path(this));var n=_.first(t);return null==n?new e.Result(null,this.expression,this.input):new e.Result([n.clean(_.rest(t))],this.expression,this.input)}return new e.Result(_.map(this.result.subResults,function(t){return t.clean()}),this.expression,this.input)},n}(e.Result),e.OptionResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(e,n,s,i){t.call(this,e,n,s),this.results=e,this.expression=n,this.input=s,_.last(e)!=i&&(this.failAttempt=i,null!=this.failAttempt&&(this.failAttempt.parent=this))}return __extends(n,t),n.prototype.getExpect=function(){var e=t.prototype.getExpect.call(this);return null!=this.failAttempt?e.concat(this.failAttempt.getExpect()):e},n.prototype.clean=function(n){if(null!=this.failAttempt&&(null!=n||!this.isSuccess())){n=n||_.last(this.getBestExpect()).path(this);var s=_.first(n);if(null!=s&&s==this.failAttempt){var i=_.last(this.subResults),o=_.map(null!=i&&i.isSuccess()?this.subResults:_.initial(this.subResults),function(t){return t.clean()});return o.push(s.clean(_.rest(n))),new e.Result(o,this.expression,this.input)}}return t.prototype.clean.call(this,n)},n}(e.Result),e.RefResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e){this.value=t,this.id=e}return t.prototype.parse=function(t,n){var s=0==t.indexOf(this.value),i=new e.Result(s?this.value:null,this,t);return s&&n&&t.length>this.value.length?new e.EndOfInputResult(i):i},t.prototype.toString=function(){return this.value},t}(),e.ExpressionConstant=n}(Coveo||(Coveo={})),function(t){(t.MagicBox||(t.MagicBox={})).ExpressionEndOfInput={id:\"end of input\",parse:null}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){this.func=t,this.id=e,this.grammar=n}return t.prototype.parse=function(t,e){return this.func(t,e,this)},t.prototype.toString=function(){return this.id},t}(),e.ExpressionFunction=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e){if(this.parts=t,this.id=e,0==t.length)throw JSON.stringify(e)+\" should have at least 1 parts\"}return t.prototype.parse=function(t,n){for(var s,i=[],o=t,r=0;r0){var l=_.last(r);(i=s.parse(l.input,!0)).isSuccess()?r[r.length-1]=i:(r.push(new e.Result(null,e.ExpressionEndOfInput,l.input.substr(l.getLength()))),i=s.parse(l.input.substr(l.getLength()),!0))}else if(0!=t.length){var p=new e.Result(null,e.ExpressionEndOfInput,t);return new e.RefResult([p],this,t,i)}return new e.RefResult(r,this,t,i)},t.prototype.toString=function(){return this.id},t}(),e.ExpressionRef=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){this.value=t,this.id=e}return t.prototype.parse=function(t,n){var s=t.match(this.value);null!=s&&0!=s.index&&(s=null);var i=new e.Result(null!=s?s[0]:null,this,t);return i.isSuccess()&&n&&t.length>i.value.length?new e.EndOfInputResult(i):i},t.prototype.toString=function(){return this.id},t}(),e.ExpressionRegExp=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,n){void 0===n&&(n={}),this.expressions={},this.start=new e.ExpressionRef(t,null,\"start\",this),this.addExpressions(n)}return t.prototype.addExpressions=function(t){var e=this;_.each(t,function(t,n){e.addExpression(n,t)})},t.prototype.addExpression=function(e,n){if(e in this.expressions)throw\"Grammar already contain the id:\"+e;this.expressions[e]=t.buildExpression(n,e,this)},t.prototype.getExpression=function(t){return this.expressions[t]},t.prototype.parse=function(t){return this.start.parse(t,!0)},t.buildExpression=function(t,n,s){if(\"undefined\"==typeof t)throw\"Invalid Expression: \"+t;if(_.isString(t))return this.buildStringExpression(t,n,s);if(_.isArray(t))return new e.ExpressionOptions(_.map(t,function(t,i){return new e.ExpressionRef(t,null,n+\"_\"+i,s)}),n);if(_.isRegExp(t))return new e.ExpressionRegExp(t,n,s);if(_.isFunction(t))return new e.ExpressionFunction(t,n,s);throw\"Invalid Expression: \"+t},t.buildStringExpression=function(n,s,i){var o=t.stringMatch(n,t.spliter),r=_.map(o,function(t,n){if(t[1]){var o=t[1],r=t[3]?Number(t[3]):t[2]||null;return new e.ExpressionRef(o,r,s+\"_\"+n,i)}return new e.ExpressionConstant(t[4],s+\"_\"+n)});if(1==r.length){var u=r[0];return u.id=s,u}return new e.ExpressionList(r,s)},t.stringMatch=function(t,e){for(var n,s=[],i=new RegExp(e.source,\"g\");null!==(n=i.exec(t));)s.push(n);return s},t.spliter=/\\[(\\w+)(\\*|\\+|\\?|\\{([1-9][0-9]*)\\})?\\]|(.[^\\[]*)/,t}(),e.Grammar=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,n,s){this.element=t,this.onchange=n,this.magicBox=s,this.hasFocus=!1,this.justPressedTab=!1,this.underlay=document.createElement(\"div\"),this.underlay.className=\"magic-box-underlay\",this.highlightContainer=document.createElement(\"span\"),this.highlightContainer.className=\"magic-box-highlight-container\",this.underlay.appendChild(this.highlightContainer),this.ghostTextContainer=document.createElement(\"span\"),this.ghostTextContainer.className=\"magic-box-ghost-text\",this.underlay.appendChild(this.ghostTextContainer),this.input=e.$$(t).find(\"input\"),this.input?t.insertBefore(this.underlay,this.input):(this.input=document.createElement(\"input\"),t.appendChild(this.underlay),t.appendChild(this.input)),this.input.spellcheck=!1,this.input.setAttribute(\"form\",\"coveo-dummy-form\"),this.input.setAttribute(\"autocomplete\",\"off\"),this.setupHandler()}return t.prototype.updateInput=function(){this.input.value!=this.result.input&&(this.input.value=this.result.input,this.hasFocus&&this.setCursor(this.getValue().length))},t.prototype.updateHighlight=function(){e.$$(this.highlightContainer).empty(),this.highlightContainer.appendChild(this.result.toHtmlElement())},t.prototype.updateWordCompletion=function(){e.$$(this.ghostTextContainer).empty(),null!=this.wordCompletion&&this.ghostTextContainer.appendChild(document.createTextNode(this.wordCompletion.substr(this.result.input.length)))},t.prototype.updateScroll=function(t){var n=this;void 0===t&&(t=!0);var s=function(){n.underlay.clientWidth0&&this.element.contains(s[0])&&this.addSelectedClass(s[0])},t.prototype.handleMouseOut=function(t){var n=e.$$(t.target),s=n.parents(this.options.selectableClass);if(t.relatedTarget){var i=e.$$(t.relatedTarget).parents(this.options.selectableClass);n.hasClass(this.options.selectedClass)&&!e.$$(t.relatedTarget).hasClass(this.options.selectableClass)?n.removeClass(this.options.selectedClass):0==i.length&&s.length>0&&e.$$(s[0]).removeClass(this.options.selectedClass)}else n.hasClass(this.options.selectedClass)?n.removeClass(this.options.selectedClass):s.length>0&&e.$$(s[0]).removeClass(this.options.selectedClass)},t.prototype.moveDown=function(){var t=this.element.getElementsByClassName(this.options.selectedClass).item(0),n=this.element.getElementsByClassName(this.options.selectableClass),s=-1;if(null!=t){e.$$(t).removeClass(this.options.selectedClass);for(var i=0;i0?(e.$$(this.element).addClass(\"magic-box-hasSuggestion\"),this.hasSuggestions=!0):(e.$$(this.element).removeClass(\"magic-box-hasSuggestion\"),this.hasSuggestions=!1)},t.prototype.returnMoved=function(t){if(null!=t){if(t.suggestion)return t.suggestion;if(t[\"no-text-suggestion\"])return null;if(t instanceof HTMLElement)return{text:e.$$(t).text()}}return null},t.prototype.addSelectedClass=function(t){for(var n=this.element.getElementsByClassName(this.options.selectedClass),s=0;s'+_.escape(e)+\"\"};t.highlightText=function(t,e,s,i,o){if(void 0===s&&(s=!1),void 0===i&&(i=\"magic-box-hightlight\"),void 0===o&&(o=\"\"),0==e.length)return t;var r=e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),u=new RegExp(\"(\"+r+\")|(.*?(?=\"+r+\")|.+)\",s?\"gi\":\"g\");return t.replace(u,function(t,e,s){return n(null!=e?i:o,t)})};var s=function(){function t(t){this.el=t}return t.prototype.text=function(t){if(!t)return this.el.innerText||this.el.textContent;void 0!=this.el.innerText?this.el.innerText=t:void 0!=this.el.textContent&&(this.el.textContent=t)},t.prototype.nodeListToArray=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t.item(e);return n},t.prototype.empty=function(){for(;this.el.firstChild;)this.el.removeChild(this.el.firstChild)},t.prototype.show=function(){this.el.style.display=\"visible\"},t.prototype.hide=function(){this.el.style.display=\"none\"},t.prototype.toggle=function(t){void 0===t?\"visible\"==this.el.style.display?this.hide():this.show():t?this.show():this.hide()},t.prototype.find=function(t){return this.el.querySelector(t)},t.prototype.is=function(t){return this.el.tagName.toLowerCase()==t.toLowerCase()||!(\".\"!=t[0]||!this.hasClass(t.substr(1)))||\"#\"==t[0]&&this.el.getAttribute(\"id\")==t.substr(1)},t.prototype.closest=function(t){for(var n=this.el,s=!1;!s&&(e.$$(n).hasClass(t)&&(s=!0),\"body\"!=n.tagName.toLowerCase())&&null!=n.parentElement;)s||(n=n.parentElement);if(s)return n},t.prototype.parent=function(t){if(void 0!=this.el.parentElement)return this.traverseAncestorForClass(this.el.parentElement,t)},t.prototype.parents=function(e){for(var n=[],s=this.parent(e);s;)n.push(s),s=new t(s).parent(e);return n},t.prototype.findAll=function(t){return this.nodeListToArray(this.el.querySelectorAll(t))},t.prototype.findClass=function(t){return\"getElementsByClassName\"in this.el?this.nodeListToArray(this.el.getElementsByClassName(t)):this.nodeListToArray(this.el.querySelectorAll(\".\"+t))},t.prototype.findId=function(t){return document.getElementById(t)},t.prototype.addClass=function(t){this.hasClass(t)||(this.el.className?this.el.className+=\" \"+t:this.el.className=t)},t.prototype.removeClass=function(t){this.el.className=this.el.className.replace(new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|\\\\b)\",\"g\"),\"$1\")},t.prototype.toggleClass=function(t,e){e?this.addClass(t):this.removeClass(t)},t.prototype.getClass=function(){return this.el.className.match(t.CLASS_NAME_REGEX)||[]},t.prototype.hasClass=function(t){return _.contains(this.getClass(),t)},t.prototype.detach=function(){this.el.parentElement&&this.el.parentElement.removeChild(this.el)},t.prototype.on=function(e,n){var s=this;if(_.isArray(e))_.each(e,function(t){s.on(t,n)});else{var i=this.getJQuery();if(i)i(this.el).on(e,n);else if(this.el.addEventListener){var o=function(t){n(t,t.detail)};t.handlers.push({eventHandle:n,fn:o}),this.el.addEventListener(e,o,!1)}else this.el.on&&this.el.on(\"on\"+e,n)}},t.prototype.one=function(t,e){var n=this;if(_.isArray(t))_.each(t,function(t){n.one(t,e)});else{var s=function(i){return n.off(t,s),e(i)};this.on(t,s)}},t.prototype.off=function(e,n){var s=this;if(_.isArray(e))_.each(e,function(t){s.off(t,n)});else{var i=this.getJQuery();if(i)i(this.el).off(e,n);else if(this.el.removeEventListener){var o=0,r=_.find(t.handlers,function(t,e){if(t.eventHandle==n)return o=e,!0});r&&(this.el.removeEventListener(e,r.fn,!1),t.handlers.splice(o,1))}else this.el.off&&this.el.off(\"on\"+e,n)}},t.prototype.trigger=function(t,e){var n=this.getJQuery();if(n)n(this.el).trigger(t,e);else if(void 0!==CustomEvent){var s=new CustomEvent(t,{detail:e,bubbles:!0});this.el.dispatchEvent(s)}},t.prototype.isEmpty=function(){return t.ONLY_WHITE_SPACE_REGEX.test(this.el.innerHTML)},t.prototype.isDescendant=function(t){for(var e=this.el.parentNode;null!=e;){if(e==t)return!0;e=e.parentNode}return!1},t.prototype.traverseAncestorForClass=function(t,n){void 0===t&&(t=this.el),0==n.indexOf(\".\")&&(n=n.substr(1));for(var s=!1;!s&&(e.$$(t).hasClass(n)&&(s=!0),\"body\"!=t.tagName.toLowerCase())&&null!=t.parentElement;)s||(t=t.parentElement);if(s)return t},t.prototype.getJQuery=function(){return void 0!=window.jQuery&&window.jQuery},t.CLASS_NAME_REGEX=/-?[_a-zA-Z]+[_a-zA-Z0-9-]*/g,t.ONLY_WHITE_SPACE_REGEX=/^\\s*$/,t.handlers=[],t}();t.Dom=s})((e=t.MagicBox||(t.MagicBox={})).Utils||(e.Utils={}))}(Coveo||(Coveo={})),function(t){var e;(e=t.MagicBox||(t.MagicBox={})).$$=function(t){return window.Coveo&&window.Coveo.$$?window.Coveo.$$(t):new e.Utils.Dom(t)}}(Coveo||(Coveo={})),function(t){var e;(function(t){function n(t,e,n,s){_.each(s.expressions,function(e){_.contains(t,e)||t.push(e)}),_.each(s.basicExpressions,function(t){_.contains(e,t)||e.push(t)}),_.each(s.grammars,function(t,e){if(e in n){if(!_.isArray(n[e])||!_.isArray(t))throw _.each(t,function(t){n[e].push(t)}),\"Can not merge \"+e+\"(\"+new String(t)+\" => \"+new String(n[e])+\")\";_.each(t,function(t){n[e].push(t)})}else n[e]=t})}function s(){for(var t=[],e=0;eu.value.length?new e.EndOfInputResult(u):u}}}}(Coveo||(Coveo={})),function(t){var e;((e=t.MagicBox||(t.MagicBox={})).Grammars||(e.Grammars={})).SubExpression={basicExpressions:[\"SubExpression\"],grammars:{SubExpression:\"([Expressions])\"}}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Date={grammars:{Date:\"[DateYear]/[DateMonth]/[DateDay]\",DateYear:/([0-9]{4})/,DateMonth:/(1[0-2]|0?[1-9])/,DateDay:/([1-2][0-9]|3[0-1]|0?[1-9])/,DateRange:\"[Date][Spaces?]..[Spaces?][Date]\",DateRelative:[\"DateRelativeNegative\",\"DateRelativeTerm\"],DateRelativeTerm:/now|today|yesterday/,DateRelativeNegative:\"[DateRelativeTerm][DateRelativeNegativeRef]\",DateRelativeNegativeRef:/([\\-\\+][0-9]+(s|m|h|d|mo|y))/},include:[n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Field={basicExpressions:[\"FieldSimpleQuery\",\"FieldQuery\",\"Field\"],grammars:{FieldQuery:\"[Field][OptionalSpaces][FieldQueryOperation]\",FieldQueryOperation:[\"FieldQueryValue\",\"FieldQueryNumeric\"],FieldQueryValue:\"[FieldOperator][OptionalSpaces][FieldValue]\",FieldQueryNumeric:\"[FieldOperatorNumeric][OptionalSpaces][FieldValueNumeric]\",FieldSimpleQuery:\"[FieldName]:[OptionalSpaces][FieldValue]\",Field:\"@[FieldName]\",FieldName:/[a-zA-Z][a-zA-Z0-9\\.\\_]*/,FieldOperator:/==|=|<>/,FieldOperatorNumeric:/<=|>=|<|>/,FieldValue:[\"DateRange\",\"NumberRange\",\"DateRelative\",\"Date\",\"Number\",\"FieldValueList\",\"FieldValueString\"],FieldValueNumeric:[\"DateRelative\",\"Date\",\"Number\"],FieldValueString:[\"DoubleQuoted\",\"FieldValueNotQuoted\"],FieldValueList:\"([FieldValueString][FieldValueStringList*])\",FieldValueStringList:\"[FieldValueSeparator][FieldValueString]\",FieldValueSeparator:/ *, */,FieldValueNotQuoted:/[^ \\(\\),]+/,NumberRange:\"[Number][Spaces?]..[Spaces?][Number]\"},include:[n.Date,n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).QueryExtension={basicExpressions:[\"QueryExtension\"],grammars:{QueryExtension:\"$[QueryExtensionName]([QueryExtensionArguments])\",QueryExtensionName:/\\w+/,QueryExtensionArguments:\"[QueryExtensionArgumentList*][QueryExtensionArgument]\",QueryExtensionArgumentList:\"[QueryExtensionArgument][Spaces?],[Spaces?]\",QueryExtensionArgument:\"[QueryExtensionArgumentName]:[Spaces?][QueryExtensionArgumentValue]\",QueryExtensionArgumentName:/\\w+/,QueryExtensionArgumentValue:[\"SingleQuoted\",\"Expressions\"]},include:[n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).NestedQuery={basicExpressions:[\"NestedQuery\"],grammars:{NestedQuery:\"[[NestedField][OptionalSpaces][Expressions]]\",NestedField:\"[[Field]]\",FieldValue:[\"NestedQuery\"]},include:[n.Field]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Complete={include:[n.NestedQuery,n.QueryExtension,n.SubExpression,n.Field,n.Basic]}}(Coveo||(Coveo={})),function(t){!function(t){var e=function(){function e(e,n,s){var i=this;void 0===s&&(s={}),this.element=e,this.grammar=n,this.options=s,this.lastSuggestions=[],_.isUndefined(this.options.inline)&&(this.options.inline=!1),t.$$(e).addClass(\"magic-box\"),this.options.inline&&t.$$(e).addClass(\"magic-box-inline\"),this.result=this.grammar.parse(\"\"),this.displayedResult=this.result.clean(),this.clearDom=document.createElement(\"div\"),this.clearDom.className=\"magic-box-clear\";var o=document.createElement(\"div\");o.className=\"magic-box-icon\",this.clearDom.appendChild(o);var r=t.$$(e).find(\".magic-box-input\");r?e.insertBefore(this.clearDom,r):((r=document.createElement(\"div\")).className=\"magic-box-input\",e.appendChild(this.clearDom),e.appendChild(r)),this.inputManager=new t.InputManager(r,function(t,e){e?(i.setText(t),i.onselect&&i.onselect(i.getFirstSuggestionText())):(i.setText(t),i.showSuggestion(),i.onchange&&i.onchange())},this),this.inputManager.ontabpress=function(){i.ontabpress&&i.ontabpress()};var u=this.inputManager.getValue();u&&(this.displayedResult.input=u),this.inputManager.setResult(this.displayedResult);var a=document.createElement(\"div\");a.className=\"magic-box-suggestions\",this.element.appendChild(a),this.suggestionsManager=new t.SuggestionsManager(a,{selectableClass:this.options.selectableSuggestionClass,selectedClass:this.options.selectedSuggestionClass,timeout:this.options.suggestionTimeout}),this.setupHandler()}return e.prototype.getResult=function(){return this.result},e.prototype.getDisplayedResult=function(){return this.displayedResult},e.prototype.setText=function(e){t.$$(this.element).toggleClass(\"magic-box-notEmpty\",e.length>0),this.result=this.grammar.parse(e),this.displayedResult=this.result.clean(),this.inputManager.setResult(this.displayedResult)},e.prototype.setCursor=function(t){this.inputManager.setCursor(t)},e.prototype.getCursor=function(){return this.inputManager.getCursor()},e.prototype.resultAtCursor=function(t){return this.displayedResult.resultAt(this.getCursor(),t)},e.prototype.setupHandler=function(){var e=this;this.inputManager.onblur=function(){t.$$(e.element).removeClass(\"magic-box-hasFocus\"),e.onblur&&e.onblur(),e.options.inline||e.clearSuggestion()},this.inputManager.onfocus=function(){t.$$(e.element).addClass(\"magic-box-hasFocus\"),e.showSuggestion(),e.onfocus&&e.onfocus()},this.inputManager.onkeydown=function(t){return 38!=t&&40!=t&&(13==t?(null==e.suggestionsManager.select()&&e.onsubmit&&e.onsubmit(),!1):(27==t&&(e.clearSuggestion(),e.blur()),!0))},this.inputManager.onchangecursor=function(){e.showSuggestion()},this.inputManager.onkeyup=function(t){if(38==t)e.onmove&&e.onmove(),e.focusOnSuggestion(e.suggestionsManager.moveUp()),e.onchange&&e.onchange();else{if(40!=t)return!0;e.onmove&&e.onmove(),e.focusOnSuggestion(e.suggestionsManager.moveDown()),e.onchange&&e.onchange()}return!1},this.clearDom.onclick=function(){e.clear()}},e.prototype.showSuggestion=function(){var t=this;this.suggestionsManager.mergeSuggestions(null!=this.getSuggestions?this.getSuggestions():[],function(e){t.updateSuggestion(e)})},e.prototype.updateSuggestion=function(t){var e=this;this.lastSuggestions=t;var n=this.getFirstSuggestionText();this.inputManager.setWordCompletion(n&&n.text),this.onsuggestions&&this.onsuggestions(t),_.each(t,function(t){null==t.onSelect&&null!=t.text&&(t.onSelect=function(){e.setText(t.text),e.onselect&&e.onselect(t)})})},e.prototype.focus=function(){t.$$(this.element).addClass(\"magic-box-hasFocus\"),this.inputManager.focus()},e.prototype.blur=function(){this.inputManager.blur()},e.prototype.clearSuggestion=function(){var t=this;this.suggestionsManager.mergeSuggestions([],function(e){t.updateSuggestion(e)}),this.inputManager.setWordCompletion(null)},e.prototype.focusOnSuggestion=function(t){null==t||null==t.text?(t=this.getFirstSuggestionText(),this.inputManager.setResult(this.displayedResult,t&&t.text)):this.inputManager.setResult(this.grammar.parse(t.text).clean(),t.text)},e.prototype.getFirstSuggestionText=function(){return _.find(this.lastSuggestions,function(t){return null!=t.text})},e.prototype.getText=function(){return this.inputManager.getValue()},e.prototype.getWordCompletion=function(){return this.inputManager.getWordCompletion()},e.prototype.clear=function(){this.setText(\"\"),this.showSuggestion(),this.focus(),this.onclear&&this.onclear()},e.prototype.hasSuggestions=function(){return this.suggestionsManager.hasSuggestions},e}();t.Instance=e,t.create=function(t,n,s){return new e(t,n,s)},t.requestAnimationFrame=function(t){return\"requestAnimationFrame\"in window?window.requestAnimationFrame(t):setTimeout(t)}}(t.MagicBox||(t.MagicBox={}))}(Coveo||(Coveo={}));\n\t\n\t/*** EXPORTS FROM exports-loader ***/\n\tmodule.exports = Coveo.MagicBox;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports) {\n\n\t!function(){\"use strict\";var t,e,n=\"undefined\",r=\"string\",i=self.navigator,o=String,a=Object.prototype.hasOwnProperty,l={},u={},s=!1,f=!0,c=/^\\s*application\\/(?:vnd\\.oftn\\.|x-)?l10n\\+json\\s*(?:$|;)/i,p=\"locale\",g=\"defaultLocale\",h=\"toLocaleString\",y=\"toLowerCase\",v=Array.prototype.indexOf||function(t){for(var e=this.length,n=0;e>n;n++)if(n in this&&this[n]===t)return n;return-1},d=function(e){var n=new t;return n.open(\"GET\",e,s),n.send(null),200!==n.status?(setTimeout(function(){var t=new Error(\"Unable to load localization data: \"+e);throw t.name=\"Localization Error\",t},0),{}):JSON.parse(n.responseText)},m=o[h]=function(t){if(arguments.length>0&&\"number\"!=typeof t)if(typeof t===r)m(d(t));else if(t===s)u={};else{var e,n,i;for(e in t)if(a.call(t,e)){if(n=t[e],e=e[y](),e in u&&n!==s||(u[e]={}),n===s)continue;if(typeof n===r){if(0!==o[p][y]().indexOf(e)){e in l||(l[e]=[]),l[e].push(n);continue}n=d(n)}for(i in n)a.call(n,i)&&(u[e][i]=n[i])}}return Function.prototype[h].apply(o,arguments)},w=function(t){for(var e,n=l[t],r=0,i=n.length;i>r;r++)e={},e[t]=d(n[r]),m(e);delete l[t]},b=o.prototype[h]=function(){var t,n=e,r=o[n?g:p],i=r[y]().split(\"-\"),a=i.length,c=this.valueOf();e=s;do if(t=i.slice(0,a).join(\"-\"),t in l&&w(t),t in u&&c in u[t])return u[t][c];while(a-->1);return!n&&o[g]?(e=f,b.call(c)):c};if(typeof XMLHttpRequest===n&&typeof ActiveXObject!==n){var L=ActiveXObject;t=function(){try{return new L(\"Msxml2.XMLHTTP.6.0\")}catch(t){}try{return new L(\"Msxml2.XMLHTTP.3.0\")}catch(e){}try{return new L(\"Msxml2.XMLHTTP\")}catch(n){}throw new Error(\"XMLHttpRequest not supported by this browser.\")}}else t=XMLHttpRequest;if(o[g]=o[g]||\"\",o[p]=i&&(i.language||i.userLanguage)||\"\",typeof document!==n)for(var T,M=document.getElementsByTagName(\"link\"),O=M.length;O--;){var X=M[O],x=(X.getAttribute(\"rel\")||\"\")[y]().split(/\\s+/);c.test(X.type)&&(-1!==v.call(x,\"localizations\")?m(X.getAttribute(\"href\")):-1!==v.call(x,\"localization\")&&(T={},T[(X.getAttribute(\"hreflang\")||\"\")[y]()]=X.getAttribute(\"href\"),m(T)))}}();\n\t\n\t/*** EXPORTS FROM exports-loader ***/\n\tmodule.exports = window.String.toLocaleString;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Globalize = __webpack_require__(30);\n\tvar merge = function (obj1, obj2) {\n\t var obj3 = {};\n\t for (var attrname in obj1) {\n\t obj3[attrname] = obj1[attrname];\n\t }\n\t for (var attrname in obj2) {\n\t obj3[attrname] = obj2[attrname];\n\t }\n\t return obj3;\n\t};\n\tvar dict = {\n\t \"Unknown\": \"Unknown\",\n\t \"And\": \"AND\",\n\t \"Authenticating\": \"Authenticating {0}...\",\n\t \"Clear\": \"Clear {0}\",\n\t \"CompleteQuery\": \"Complete Query\",\n\t \"Exclude\": \"Exclude {0}\",\n\t \"EnterTag\": \"Add Tag\",\n\t \"Next\": \"Next\",\n\t \"Last\": \"Last\",\n\t \"Link\": \"Link\",\n\t \"Or\": \"OR\",\n\t \"Previous\": \"Previous\",\n\t \"QueryDidntMatchAnyDocuments\": \"Your query did not match any documents.\",\n\t \"QueryException\": \"Your query has an error: {0}.\",\n\t \"Me\": \"Me\",\n\t \"Remove\": \"Remove\",\n\t \"Search\": \"Search\",\n\t \"SearchFor\": \"Search for {0}\",\n\t \"ShareQuery\": \"Share Query\",\n\t \"Preferences\": \"Preferences\",\n\t \"LinkOpeningSettings\": \"Link Opening Settings\",\n\t \"Reauthenticate\": \"Reauthenticate {0}\",\n\t \"ResultsFilteringExpression\": \"Results Filtering Expressions\",\n\t \"FiltersInYourPreferences\": \"Filters in your preferences\",\n\t \"Create\": \"Create\",\n\t \"SearchIn\": \"Search in {0}\",\n\t \"Seconds\": \"in {0} seconds\",\n\t \"ShowingResultsOf\": \"Results {0}-{1} of {2}\",\n\t \"SwitchTo\": \"Switch to {0}\",\n\t \"Unexclude\": \"Unexclude {0}\",\n\t \"ClearAllFilters\": \"Clear All Filters\",\n\t \"SkipLogin\": \"Skip login\",\n\t \"LoginInProgress\": \"Login in progress, please wait ...\",\n\t \"Login\": \"Log In\",\n\t \"GetStarted\": \"Get Started\",\n\t \"More\": \"More\",\n\t \"NMore\": \"{0} more...\",\n\t \"Less\": \"Fewer\",\n\t \"Settings\": \"Settings\",\n\t \"Score\": \"Score\",\n\t \"ScoreDescription\": \"The score is computed from the number of occurrences as well as from the position in the result set.\",\n\t \"Occurrences\": \"Occurrences\",\n\t \"OccurrencesDescription\": \"Sort by number of occurrences, with values having the highest number appearing first.\",\n\t \"Label\": \"Label\",\n\t \"Of\": \"of\",\n\t \"LabelDescription\": \"Sort alphabetically on the field values.\",\n\t \"Value\": \"Value\",\n\t \"ValueDescription\": \"Sort on the values of the first computed field\",\n\t \"AlphaAscending\": \"Value Ascending\",\n\t \"AlphaDescending\": \"Value Descending\",\n\t \"ChiSquare\": \"Chi Square\",\n\t \"Nosort\": \"No Sort\",\n\t \"NosortDescription\": \"Do not sort the values. The values will be returned in a random order.\",\n\t \"RelativeFrequency\": \"Relative Frequency\",\n\t \"RelativeFrequencyDescription\": \"Sort based on the relative frequency of values. Less common values will appear higher.\",\n\t \"DateDistribution\": \"Date distribution\",\n\t \"Custom\": \"Custom\",\n\t \"CustomDescription\": \"Sort based on a custom order\",\n\t \"ComputedField\": \"Computed Field\",\n\t \"Ascending\": \"Ascending\",\n\t \"Descending\": \"Descending\",\n\t \"noResultFor\": \"No results for {0}\",\n\t \"autoCorrectedQueryTo\": \"Query was automatically corrected to {0}\",\n\t \"didYouMean\": \"Did you mean: {0}\",\n\t \"SuggestedResults\": \"Suggested Results\",\n\t \"SuggestedQueries\": \"Suggested Queries\",\n\t \"MostRelevantItems\": \"Most relevant items:\",\n\t \"AllItems\": \"All items:\",\n\t \"ShowLess\": \"Show less\",\n\t \"ShowMore\": \"Show more\",\n\t \"HideFacet\": \"Hide Facet\",\n\t \"ShowFacet\": \"Show Facet\",\n\t \"AndOthers\": \"and {0} others\",\n\t \"Others\": \"{0} others\",\n\t \"MostRelevantPosts\": \"Most Relevant Posts:\",\n\t \"CompleteThread\": \"Complete Thread:\",\n\t \"ShowCompleteThread\": \"Show Complete Thread\",\n\t \"ShowOnlyTopMatchingPosts\": \"Show Only Top Matching Posts\",\n\t \"MostRelevantReplies\": \"Most Relevant Replies:\",\n\t \"AllConversation\": \"All Conversation:\",\n\t \"ShowAllConversation\": \"Show All Conversation\",\n\t \"ShowAllReplies\": \"Show All Replies\",\n\t \"ShowOnlyMostRelevantReplies\": \"Show Only Most Relevant Replies\",\n\t \"Close\": \"Close\",\n\t \"Open\": \"Open\",\n\t \"OpenInOutlookWhenPossible\": \"Open in Outlook (when possible)\",\n\t \"AlwaysOpenInNewWindow\": \"Always open results in new window\",\n\t \"Quickview\": \"Quick View\",\n\t \"NoQuickview\": \"The Quick View for this document is unavailable\",\n\t \"ErrorReport\": \"Error Report\",\n\t \"OopsError\": \"Something went wrong.\",\n\t \"ProblemPersists\": \"If the problem persists contact the administrator.\",\n\t \"GoBack\": \"Go Back\",\n\t \"Reset\": \"Reset\",\n\t \"Retry\": \"Retry\",\n\t \"MoreInfo\": \"More Information\",\n\t \"Username\": \"Username\",\n\t \"Password\": \"Password\",\n\t \"PostedBy\": \"Posted by\",\n\t \"CannotConnect\": \"Cannot connect to the server address.\",\n\t \"BadUserPass\": \"Password does not match with username.\",\n\t \"PleaseEnterYourCredentials\": \"Please enter your credentials for {0}.\",\n\t \"PleaseEnterYourSearchPage\": \"Please enter your search page URL\",\n\t \"Collapse\": \"Collapse\",\n\t \"Collapsable\": \"Collapsible\",\n\t \"Expand\": \"Expand\",\n\t \"Today\": \"Today\",\n\t \"Yesterday\": \"Yesterday\",\n\t \"Tomorrow\": \"Tomorrow\",\n\t \"Duration\": \"Duration: {0}\",\n\t \"IndexDuration\": \"Index Duration: {0}\",\n\t \"ProxyDuration\": \"Proxy Duration: {0}\",\n\t \"ClientDuration\": \"Client Duration: {0}\",\n\t \"Unavailable\": \"Unavailable\",\n\t \"Reply\": \"Reply\",\n\t \"ReplyAll\": \"Reply All\",\n\t \"Forward\": \"Forward\",\n\t \"From\": \"From\",\n\t \"Caption\": \"Caption\",\n\t \"Expression\": \"Expression\",\n\t \"Tab\": \"Tab\",\n\t \"Tabs\": \"Tabs\",\n\t \"EnterExpressionName\": \"Enter expression name\",\n\t \"EnterExpressionToFilterWith\": \"Enter expression to filter results with\",\n\t \"SelectTab\": \"Select Tab\",\n\t \"SelectAll\": \"Select All\",\n\t \"PageUrl\": \"Search page URL\",\n\t \"ErrorSavingToDevice\": \"Error while saving the information to your device\",\n\t \"ErrorReadingFromDevice\": \"Error while reading the information from your device\",\n\t \"AppIntro\": \"Speak with a product specialist who can answer your questions about Coveo and help you decide which Coveo solution is right for you. Or, try a live demo !\",\n\t \"TryDemo\": \"Try the demo\",\n\t \"ContactUs\": \"Contact us\",\n\t \"NewToCoveo\": \"New to Coveo?\",\n\t \"LetUsHelpGetStarted\": \"Let us help you get started\",\n\t \"LikesThis\": \"{0} likes this.\",\n\t \"CannotConnectSearchPage\": \"Cannot connect to your search page\",\n\t \"AreYouSureDeleteFilter\": \"Are you sure you want to delete the filter {0} with the expression {1}\",\n\t \"OnlineHelp\": \"Online Help\",\n\t \"Done\": \"Done\",\n\t \"SaveFacetState\": \"Save this facet state\",\n\t \"ClearFacetState\": \"Clear facet state\",\n\t \"DisplayingTheOnlyMessage\": \"Displaying the only message in this conversation\",\n\t \"NoNetworkConnection\": \"No network connection\",\n\t \"UnknownConnection\": \"Unknown connection\",\n\t \"EthernetConnection\": \"Ethernet connection\",\n\t \"WiFi\": \"WiFi connection\",\n\t \"CELL\": \"Cellular connection\",\n\t \"CELL_2G\": \"Cellular 2G connection\",\n\t \"CELL_3G\": \"Cellular 3G connection\",\n\t \"CELL_4G\": \"Cellular 4G connection\",\n\t \"Relevance\": \"Relevance\",\n\t \"Date\": \"Date\",\n\t \"Amount\": \"Amount\",\n\t \"QueryExceptionNoException\": \"No exception\",\n\t \"QueryExceptionInvalidSyntax\": \"Invalid syntax\",\n\t \"QueryExceptionInvalidCustomField\": \"Invalid custom field\",\n\t \"QueryExceptionInvalidDate\": \"Invalid date\",\n\t \"QueryExceptionInvalidExactPhrase\": \"Invalid exact phrase\",\n\t \"QueryExceptionInvalidDateOp\": \"Invalid date operator\",\n\t \"QueryExceptionInvalidNear\": \"Invalid NEAR operator\",\n\t \"QueryExceptionInvalidWeightedNear\": \"Invalid weighted NEAR\",\n\t \"QueryExceptionInvalidTerm\": \"Invalid term\",\n\t \"QueryExceptionTooManyTerms\": \"Too many terms\",\n\t \"QueryExceptionWildcardTooGeneral\": \"Wildcard too general\",\n\t \"QueryExceptionInvalidSortField\": \"Invalid sort field\",\n\t \"QueryExceptionInvalidSmallStringOp\": \"Invalid small string operator\",\n\t \"QueryExceptionRequestedResultsMax\": \"Requested results maximum\",\n\t \"QueryExceptionAggregatedMirrorDead\": \"Aggregated mirror is offline\",\n\t \"QueryExceptionAggregatedMirrorQueryTimeOut\": \"Aggregated mirror query timeout\",\n\t \"QueryExceptionAggregatedMirrorInvalidBuildNumber\": \"Aggregated mirror invalid build number\",\n\t \"QueryExceptionAggregatedMirrorCannotConnect\": \"Aggregated mirror cannot connect\",\n\t \"QueryExceptionNotEnoughLeadingCharsWildcard\": \"Not enough leading character wildcard\",\n\t \"QueryExceptionSecurityInverterNotFound\": \"Security inverter not found\",\n\t \"QueryExceptionSecurityInverterAccessDenied\": \"Security inverter access denied\",\n\t \"QueryExceptionAggregatedMirrorCannotImpersonate\": \"Aggregated mirror cannot impersonate\",\n\t \"QueryExceptionUnexpected\": \"Unexpected\",\n\t \"QueryExceptionAccessDenied\": \"Access denied\",\n\t \"QueryExceptionSuperUserTokenInvalid\": \"Super user token invalid\",\n\t \"QueryExceptionSuperUserTokenExpired\": \"Super user token is expired\",\n\t \"QueryExceptionLicenseQueriesExpired\": \"Queries license expired\",\n\t \"QueryExceptionLicenseSuperUserTokenNotSupported\": \"License super user token not supported\",\n\t \"QueryExceptionInvalidSession\": \"Invalid session\",\n\t \"QueryExceptionInvalidDocument\": \"Invalid document\",\n\t \"QueryExceptionSearchDisabled\": \"Search disabled\",\n\t \"FileType\": \"File type\",\n\t \"ShowAttachment\": \"Show attachment\",\n\t \"OnFeed\": \"on {0}'s feed.\",\n\t \"Author\": \"Author\",\n\t \"NoTitle\": \"No title\",\n\t \"CurrentSelections\": \"Current selections\",\n\t \"AllContent\": \"All content\",\n\t \"CancelLastAction\": \"Cancel last action\",\n\t \"SearchTips\": \"Search tips\",\n\t \"CheckSpelling\": \"Check the spelling of your keywords.\",\n\t \"TryUsingFewerKeywords\": \"Try using fewer, different or more general keywords.\",\n\t \"SelectFewerFilters\": \"Select fewer filters to broaden your search.\",\n\t \"Document\": \"Document\",\n\t \"Time\": \"Time\",\n\t \"StartDate\": \"Start Date\",\n\t \"StartTime\": \"Start Time\",\n\t \"DurationTitle\": \"Duration\",\n\t \"UserQuery\": \"User query\",\n\t \"ShowUserActions\": \"Show User Actions\",\n\t \"NoData\": \"No data available\",\n\t \"EventType\": \"Event type\",\n\t \"GoToFullSearch\": \"Full search\",\n\t \"GoToEdition\": \"Customize Panel\",\n\t \"RemoveContext\": \"Remove context\",\n\t \"BoxAttachToCase\": \"Attach to case\",\n\t \"AttachToCase\": \"Attach to case\",\n\t \"Attach\": \"Attach\",\n\t \"Attached\": \"Attached\",\n\t \"Detach\": \"Detach\",\n\t \"Details\": \"Details\",\n\t \"AdditionalFilters\": \"Additional filters\",\n\t \"SelectNonContextualSearch\": \"Remove the context from the current record to broaden your search\",\n\t \"CopyPasteToSupport\": \"Copy paste this message to Coveo Support team for more information.\",\n\t \"FollowQueryDescription\": \"Alert me for changes to the search results of this query.\",\n\t \"SearchAlerts_Panel\": \"Manage Alerts\",\n\t \"SearchAlerts_PanelDescription\": \"View and manage your search alerts.\",\n\t \"SearchAlerts_PanelNoSearchAlerts\": \"You have no subscriptions.\",\n\t \"SearchAlerts_Fail\": \"The Search Alerts service is currently unavailable.\",\n\t \"SearchAlerts_Type\": \"Type\",\n\t \"SearchAlerts_Content\": \"Content\",\n\t \"SearchAlerts_Actions\": \"Action\",\n\t \"EmptyQuery\": \"<empty>\",\n\t \"SearchAlerts_Type_followQuery\": \"Query\",\n\t \"SearchAlerts_Type_followDocument\": \"Item\",\n\t \"SearchAlerts_unFollowing\": \"Stop Following\",\n\t \"SearchAlerts_follow\": \"Follow\",\n\t \"SearchAlerts_followed\": \"Followed\",\n\t \"SearchAlerts_followQuery\": \"Follow Query\",\n\t \"Subscription_StopFollowingQuery\": \"Stop Following Query\",\n\t \"SearchAlerts_Frequency\": \"When\",\n\t \"SubscriptionsManageSubscriptions\": \"Manage Alerts\",\n\t \"SubscriptionsMessageFollowQuery\": \"You will receive alerts when the query {0} returns new or updated items.\",\n\t \"SubscriptionsMessageFollow\": \"You will receive alerts for changes to the item {0}.\",\n\t \"Expiration\": \"Expiration\",\n\t \"Monthly\": \"Monthly\",\n\t \"Daily\": \"Daily\",\n\t \"Monday\": \"Monday\",\n\t \"Tuesday\": \"Tuesday\",\n\t \"Wednesday\": \"Wednesday\",\n\t \"Thursday\": \"Thursday\",\n\t \"Friday\": \"Friday\",\n\t \"Saturday\": \"Saturday\",\n\t \"Sunday\": \"Sunday\",\n\t \"NextDay\": \"Next {0}\",\n\t \"LastDay\": \"Last {0}\",\n\t \"StartTypingCaseForSuggestions\": \"Describe your problem to see possible solutions\",\n\t \"ExportToExcel\": \"Export to Excel\",\n\t \"ExportToExcelDescription\": \"Export search results to Excel\",\n\t \"CaseCreationNoResults\": \"No recommended solutions were found\",\n\t \"SortBy\": \"Sort by\",\n\t \"BoxCreateArticle\": \"Create Article\",\n\t \"Facets\": \"Facets\",\n\t \"AdvancedSearch\": \"Advanced Search\",\n\t \"Keywords\": \"Keywords\",\n\t \"AllTheseWords\": \"All these words\",\n\t \"ExactPhrase\": \"This exact phrase\",\n\t \"AnyOfTheseWords\": \"Any of these words\",\n\t \"NoneOfTheseWords\": \"None of these words\",\n\t \"Anytime\": \"Anytime\",\n\t \"InTheLast\": \"In the last\",\n\t \"Days\": \"days\",\n\t \"Months\": \"months\",\n\t \"Between\": \"Between\",\n\t \"Language\": \"Language\",\n\t \"Size\": \"Size\",\n\t \"AtLeast\": \"at least\",\n\t \"AtMost\": \"at most\",\n\t \"Contains\": \"contains\",\n\t \"DoesNotContain\": \"does not contain\",\n\t \"Matches\": \"matches\",\n\t \"Bytes\": \"bytes\",\n\t \"list\": \"List\",\n\t \"card\": \"Card\",\n\t \"table\": \"Table\",\n\t \"ResultLinks\": \"Result links\",\n\t \"EnableQuerySyntax\": \"Enable query syntax\",\n\t \"On\": \"On\",\n\t \"Off\": \"Off\",\n\t \"Automatic\": \"Automatic\",\n\t \"ResultsPerPage\": \"Results per page\",\n\t \"objecttype_people\": \"People\",\n\t \"objecttype_message\": \"Message\",\n\t \"objecttype_feed\": \"RSS Feed\",\n\t \"objecttype_thread\": \"Thread\",\n\t \"objecttype_file\": \"File\",\n\t \"objecttype_board\": \"Board\",\n\t \"objecttype_category\": \"Category\",\n\t \"objecttype_account\": \"Account\",\n\t \"objecttype_annotation\": \"Note\",\n\t \"objecttype_campaign\": \"Campaign\",\n\t \"objecttype_case\": \"Case\",\n\t \"objecttype_contentversion\": \"Salesforce File\",\n\t \"objecttype_contact\": \"Contact\",\n\t \"objecttype_contract\": \"Contract\",\n\t \"objecttype_event\": \"Event\",\n\t \"objecttype_email\": \"Email\",\n\t \"objecttype_goal\": \"Goal\",\n\t \"objecttype_incident\": \"Case\",\n\t \"objecttype_invoice\": \"Invoice\",\n\t \"objecttype_lead\": \"Lead\",\n\t \"objecttype_list\": \"Marketing List\",\n\t \"objecttype_solution\": \"Solution\",\n\t \"objecttype_task\": \"Task\",\n\t \"objecttype_user\": \"User\",\n\t \"objecttype_attachment\": \"Attachment\",\n\t \"objecttype_casecomment\": \"Case Comment\",\n\t \"objecttype_opportunity\": \"Opportunity\",\n\t \"objecttype_opportunityproduct\": \"Opportunity Product\",\n\t \"objecttype_feeditem\": \"Chatter\",\n\t \"objecttype_feedcomment\": \"Chatter\",\n\t \"objecttype_note\": \"Note\",\n\t \"objecttype_product\": \"Product\",\n\t \"objecttype_partner\": \"Partner\",\n\t \"objecttype_queueitem\": \"Queue Item\",\n\t \"objecttype_quote\": \"Quote\",\n\t \"objecttype_salesliterature\": \"Sales Literature\",\n\t \"objecttype_salesorder\": \"Sales Order\",\n\t \"objecttype_service\": \"Service\",\n\t \"objecttype_socialprofile\": \"Social Profile\",\n\t \"objecttype_kbdocumentation\": \"Documentation\",\n\t \"objecttype_kbtechnicalarticle\": \"Documentation\",\n\t \"objecttype_kbsolution\": \"Solution\",\n\t \"objecttype_kbknowledgearticle\": \"Knowledge Article\",\n\t \"objecttype_kbattachment\": \"Attachment\",\n\t \"objecttype_kbarticle\": \"Article\",\n\t \"objecttype_kbarticlecomment\": \"Article Comment\",\n\t \"objecttype_knowledgearticle\": \"Knowledge Article\",\n\t \"filetype_box user\": \"Box User\",\n\t \"filetype_html\": \"HTML File\",\n\t \"filetype_wiki\": \"Wiki\",\n\t \"filetype_webscraperwebpage\": \"Web Page\",\n\t \"filetype_image\": \"Image\",\n\t \"filetype_folder\": \"Folder\",\n\t \"filetype_txt\": \"Text\",\n\t \"filetype_zip\": \"Zip File\",\n\t \"filetype_olefile\": \"OLE file\",\n\t \"filetype_gmailmessage\": \"Gmail Message\",\n\t \"filetype_pdf\": \"PDF File\",\n\t \"filetype_swf\": \"Flash File\",\n\t \"filetype_xml\": \"XML File\",\n\t \"filetype_vsd\": \"Visio\",\n\t \"filetype_svg\": \"SVG\",\n\t \"filetype_svm\": \"Open Office\",\n\t \"filetype_rssitem\": \"RSS feed\",\n\t \"filetype_doc\": \"Document\",\n\t \"filetype_docx\": \"Microsoft Word Document\",\n\t \"filetype_xls\": \"Spreadsheet Document\",\n\t \"filetype_ppt\": \"Presentation Document\",\n\t \"filetype_video\": \"Video\",\n\t \"filetype_youtube\": \"YouTube video\",\n\t \"filetype_saleforceitem\": \"Salesforce\",\n\t \"filetype_dynamicscrmitem\": \"Dynamics CRM\",\n\t \"filetype_salesforceitem\": \"Salesforce\",\n\t \"filetype_odt\": \"Open Text Document\",\n\t \"filetype_cfpage\": \"Confluence Page\",\n\t \"filetype_cfcomment\": \"Confluence Comment\",\n\t \"filetype_cfspace\": \"Confluence Space\",\n\t \"filetype_cfblogentry\": \"Confluence Blog Entry\",\n\t \"filetype_confluencespace\": \"Confluence Space\",\n\t \"filetype_exchangemessage\": \"Message\",\n\t \"filetype_exchangeappointment\": \"Appointment\",\n\t \"filetype_exchangenote\": \"Note\",\n\t \"filetype_exchangetask\": \"Task\",\n\t \"filetype_exchangeperson\": \"Exchange User\",\n\t \"filetype_activedirperson\": \"Active Directory User\",\n\t \"filetype_exchangeactivity\": \"Activity\",\n\t \"filetype_exchangecalendarmessage\": \"Calendar Message\",\n\t \"filetype_exchangedocument\": \"Exchange Document\",\n\t \"filetype_exchangedsn\": \"DSN\",\n\t \"filetype_exchangefreebusy\": \"Free/Busy\",\n\t \"filetype_exchangegroup\": \"Group\",\n\t \"filetype_exchangerssfeed\": \"RSS Feed\",\n\t \"filetype_exchangejunkmessage\": \"Junk Email\",\n\t \"filetype_exchangeofficecom\": \"Communications\",\n\t \"filetype_lithiummessage\": \"Lithium Message\",\n\t \"filetype_lithiumthread\": \"Lithium Thread\",\n\t \"filetype_lithiumboard\": \"Lithium Board\",\n\t \"filetype_lithiumcategory\": \"Lithium Category\",\n\t \"filetype_lithiumcommunity\": \"Lithium Community\",\n\t \"filetype_spportal\": \"Portal\",\n\t \"filetype_spsite\": \"Site\",\n\t \"filetype_spuserprofile\": \"SharePoint User\",\n\t \"filetype_sparea\": \"Area\",\n\t \"filetype_spannouncement\": \"Announcement\",\n\t \"filetype_spannouncementlist\": \"Announcements\",\n\t \"filetype_spcontact\": \"Contact\",\n\t \"filetype_spcontactlist\": \"Contacts\",\n\t \"filetype_spcustomlist\": \"Custom Lists\",\n\t \"filetype_spdiscussionboard\": \"Discussion Board\",\n\t \"filetype_spdiscussionboardlist\": \"Discussion Boards\",\n\t \"filetype_spdocumentlibrarylist\": \"Document Library\",\n\t \"filetype_spevent\": \"Event\",\n\t \"filetype_speventlist\": \"Events\",\n\t \"filetype_spformlibrarylist\": \"Form Library\",\n\t \"filetype_spissue\": \"Issue\",\n\t \"filetype_spissuelist\": \"Issues\",\n\t \"filetype_splink\": \"Link\",\n\t \"filetype_splinklist\": \"Links\",\n\t \"filetype_sppicturelibrarylist\": \"Picture Library\",\n\t \"filetype_spsurvey\": \"Survey\",\n\t \"filetype_spsurveylist\": \"Surveys\",\n\t \"filetype_sptask\": \"Task\",\n\t \"filetype_sptasklist\": \"Tasks\",\n\t \"filetype_spagenda\": \"Agenda\",\n\t \"filetype_spagendalist\": \"Ordres du jour\",\n\t \"filetype_spattendee\": \"Attendee\",\n\t \"filetype_spattendeelist\": \"Attendees\",\n\t \"filetype_spcustomgridlist\": \"Custom Grids\",\n\t \"filetype_spdecision\": \"Decision\",\n\t \"filetype_spdecisionlist\": \"Decisions\",\n\t \"filetype_spobjective\": \"Objective\",\n\t \"filetype_spobjectivelist\": \"Objectives\",\n\t \"filetype_sptextbox\": \"Textbox\",\n\t \"filetype_sptextboxlist\": \"Textbox list\",\n\t \"filetype_spthingstobring\": \"Thing To Bring\",\n\t \"filetype_spthingstobringlist\": \"Things To Bring\",\n\t \"filetype_sparealisting\": \"Area Listing\",\n\t \"filetype_spmeetingserie\": \"Meeting series\",\n\t \"filetype_spmeetingserielist\": \"Meeting Series List\",\n\t \"filetype_spsitedirectory\": \"Site Directory Item\",\n\t \"filetype_spsitedirectorylist\": \"Site Directory\",\n\t \"filetype_spdatasource\": \"Data Source\",\n\t \"filetype_spdatasourcelist\": \"Data Source List\",\n\t \"filetype_splisttemplatecataloglist\": \"List Template Gallery\",\n\t \"filetype_spwebpartcataloglist\": \"WebPart Gallery\",\n\t \"filetype_spwebtemplatecataloglist\": \"Site Template Gallery\",\n\t \"filetype_spworkspacepagelist\": \"Workspace Pages\",\n\t \"filetype_spunknownlist\": \"Custom List\",\n\t \"filetype_spadministratortask\": \"Administrator Task\",\n\t \"filetype_spadministratortasklist\": \"Administrator Tasks\",\n\t \"filetype_spareadocumentlibrarylist\": \"Area Document Library\",\n\t \"filetype_spblogcategory\": \"Blog Category\",\n\t \"filetype_spblogcategorylist\": \"Blog Categories\",\n\t \"filetype_spblogcomment\": \"Blog Comment\",\n\t \"filetype_spblogcommentlist\": \"Blog Comments\",\n\t \"filetype_spblogpost\": \"Blog Post\",\n\t \"filetype_spblogpostlist\": \"Blog Posts\",\n\t \"filetype_spdataconnectionlibrarylist\": \"Data Connection Library\",\n\t \"filetype_spdistributiongroup\": \"Distribution Group\",\n\t \"filetype_spdistributiongrouplist\": \"Distribution Groups\",\n\t \"filetype_spipfslist\": \"InfoPath Forms Servers\",\n\t \"filetype_spkeyperformanceindicator\": \"Key Performance Indicator\",\n\t \"filetype_spkeyperformanceindicatorlist\": \"Key Performance Indicators\",\n\t \"filetype_splanguagesandtranslator\": \"Languages and Translator\",\n\t \"filetype_splanguagesandtranslatorlist\": \"Languages and Translators\",\n\t \"filetype_spmasterpagescataloglist\": \"Master Page Gallery\",\n\t \"filetype_spnocodeworkflowlibrarylist\": \"No-code Workflow Libraries\",\n\t \"filetype_spprojecttask\": \"Project Task\",\n\t \"filetype_spprojecttasklist\": \"Project Tasks\",\n\t \"filetype_sppublishingpageslibrarylist\": \"Page Library\",\n\t \"filetype_spreportdocumentlibrarylist\": \"Report Document Library\",\n\t \"filetype_spreportlibrarylist\": \"Report Library\",\n\t \"filetype_spslidelibrarylist\": \"Slide Library\",\n\t \"filetype_sptab\": \"Tabs\",\n\t \"filetype_sptablist\": \"Tabs List\",\n\t \"filetype_sptranslationmanagementlibrarylist\": \"Translation Management Library\",\n\t \"filetype_spuserinformation\": \"User Information\",\n\t \"filetype_spuserinformationlist\": \"User Information List\",\n\t \"filetype_spwikipagelibrarylist\": \"Wiki Page Library\",\n\t \"filetype_spworkflowhistory\": \"Workflow History\",\n\t \"filetype_spworkflowhistorylist\": \"Workflow History List\",\n\t \"filetype_spworkflowprocess\": \"Custom Workflow Process\",\n\t \"filetype_spworkflowprocesslist\": \"Custom Workflow Processes\",\n\t \"filetype_sppublishingimageslibrarylist\": \"Publishing Image Library\",\n\t \"filetype_spcirculation\": \"Circulation\",\n\t \"filetype_spcirculationlist\": \"Circulations\",\n\t \"filetype_spdashboardslibrarylist\": \"Dashboards Library\",\n\t \"filetype_spdataconnectionforperformancepointlibrarylist\": \"PerformancePoint Data Connection Library\",\n\t \"filetype_sphealthreport\": \"Health Report\",\n\t \"filetype_sphealthreportlist\": \"Health Reports\",\n\t \"filetype_sphealthrule\": \"Health Rule\",\n\t \"filetype_sphealthrulelist\": \"Health Rules\",\n\t \"filetype_spimedictionary\": \"IME Dictionary\",\n\t \"filetype_spimedictionarylist\": \"IME Dictionaries\",\n\t \"filetype_spperformancepointcontent\": \"PerformancePoint Content\",\n\t \"filetype_spperformancepointcontentlist\": \"PerformancePoint Contents\",\n\t \"filetype_spphonecallmemo\": \"Phone Call Memo\",\n\t \"filetype_spphonecallmemolist\": \"Phone Call Memos\",\n\t \"filetype_sprecordlibrarylist\": \"Record Library\",\n\t \"filetype_spresource\": \"Resource\",\n\t \"filetype_spresourcelist\": \"Resources\",\n\t \"filetype_spprocessdiagramslibrarylist\": \"Process Diagram Library\",\n\t \"filetype_spsitethemeslibrarylist\": \"Site Theme Library\",\n\t \"filetype_spsolutionslibrarylist\": \"Solution Library\",\n\t \"filetype_spwfpublibrarylist\": \"WFPUB Library\",\n\t \"filetype_spwhereabout\": \"Whereabout\",\n\t \"filetype_spwhereaboutlist\": \"Whereabouts\",\n\t \"filetype_spdocumentlink\": \"Link to a Document\",\n\t \"filetype_spdocumentset\": \"Document Set\",\n\t \"filetype_spmicrofeedpost\": \"Microfeed Post\",\n\t \"filetype_spmicrofeedlist\": \"Microfeed\",\n\t \"filetype_splistfolder\": \"List Folder\",\n\t \"filetype_youtubevideo\": \"YouTube video\",\n\t \"filetype_youtubeplaylistitem\": \"YouTube playlist item\",\n\t};\n\tfunction defaultLanguage() {\n\t var locales = String[\"locales\"] || (String[\"locales\"] = {});\n\t locales[\"en\"] = merge(locales[\"en\"], dict);\n\t String[\"toLocaleString\"].call(this, { \"en\": dict });\n\t String[\"locale\"] = \"en\";\n\t String[\"defaultLocale\"] = \"en\";\n\t Globalize.culture(\"en\");\n\t}\n\texports.defaultLanguage = defaultLanguage;\n\tfunction setLanguageAfterPageLoaded() {\n\t var locales = String[\"locales\"] || (String[\"locales\"] = {});\n\t locales[\"en\"] = merge(locales[\"en\"], dict);\n\t String[\"toLocaleString\"].call(this, { \"en\": dict });\n\t String[\"locale\"] = \"en\";\n\t String[\"defaultLocale\"] = \"en\";\n\t Globalize.culture(\"en\");\n\t}\n\texports.setLanguageAfterPageLoaded = setLanguageAfterPageLoaded;\n\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = global[\"Globalize\"] = __webpack_require__(31);\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*! globalize - v0.1.1 - 2013-04-30\n\t* https://github.com/jquery/globalize\n\t* Copyright 2013 ; Licensed MIT */\n\tvar Globalize = (function(e,r){var t,n,a,s,u,l,i,c,o,f,d,p,h,g,b,m,y,M,v,k,z,F,A,x;t=function(e){return new t.prototype.init(e)}, true?module.exports=t:e.Globalize=t,t.cultures={},t.prototype={constructor:t,init:function(e){return this.cultures=t.cultures,this.cultureSelector=e,this}},t.prototype.init.prototype=t.prototype,t.cultures[\"default\"]={name:\"en\",englishName:\"English\",nativeName:\"English\",isRTL:!1,language:\"en\",numberFormat:{pattern:[\"-n\"],decimals:2,\",\":\",\",\".\":\".\",groupSizes:[3],\"+\":\"+\",\"-\":\"-\",NaN:\"NaN\",negativeInfinity:\"-Infinity\",positiveInfinity:\"Infinity\",percent:{pattern:[\"-n %\",\"n %\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"%\"},currency:{pattern:[\"($n)\",\"$n\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"$\"}},calendars:{standard:{name:\"Gregorian_USEnglish\",\"/\":\"/\",\":\":\":\",firstDay:0,days:{names:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],namesAbbr:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],namesShort:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"]},months:{names:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\",\"\"],namesAbbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"\"]},AM:[\"AM\",\"am\",\"AM\"],PM:[\"PM\",\"pm\",\"PM\"],eras:[{name:\"A.D.\",start:null,offset:0}],twoDigitYearMax:2029,patterns:{d:\"M/d/yyyy\",D:\"dddd, MMMM dd, yyyy\",t:\"h:mm tt\",T:\"h:mm:ss tt\",f:\"dddd, MMMM dd, yyyy h:mm tt\",F:\"dddd, MMMM dd, yyyy h:mm:ss tt\",M:\"MMMM dd\",Y:\"yyyy MMMM\",S:\"yyyy'-'MM'-'dd'T'HH':'mm':'ss\"}}},messages:{}},t.cultures[\"default\"].calendar=t.cultures[\"default\"].calendars.standard,t.cultures.en=t.cultures[\"default\"],t.cultureSelector=\"en\",n=/^0x[a-f0-9]+$/i,a=/^[+\\-]?infinity$/i,s=/^[+\\-]?\\d*\\.?\\d*(e[+\\-]?\\d+)?$/,u=/^\\s+|\\s+$/g,l=function(e,r){if(e.indexOf)return e.indexOf(r);for(var t=0,n=e.length;n>t;t++)if(e[t]===r)return t;return-1},i=function(e,r){return e.substr(e.length-r.length)===r},c=function(){var e,t,n,a,s,u,l=arguments[0]||{},i=1,p=arguments.length,h=!1;for(\"boolean\"==typeof l&&(h=l,l=arguments[1]||{},i=2),\"object\"==typeof l||f(l)||(l={});p>i;i++)if(null!=(e=arguments[i]))for(t in e)n=l[t],a=e[t],l!==a&&(h&&a&&(d(a)||(s=o(a)))?(s?(s=!1,u=n&&o(n)?n:[]):u=n&&d(n)?n:{},l[t]=c(h,u,a)):a!==r&&(l[t]=a));return l},o=Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},f=function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},d=function(e){return\"[object Object]\"===Object.prototype.toString.call(e)},p=function(e,r){return 0===e.indexOf(r)},h=function(e){return(e+\"\").replace(u,\"\")},g=function(e){return isNaN(e)?0/0:Math[0>e?\"ceil\":\"floor\"](e)},b=function(e,r,t){var n;for(n=e.length;r>n;n+=1)e=t?\"0\"+e:e+\"0\";return e},m=function(e,r){for(var t=0,n=!1,a=0,s=e.length;s>a;a++){var u=e.charAt(a);switch(u){case\"'\":n?r.push(\"'\"):t++,n=!1;break;case\"\\\\\":n&&r.push(\"\\\\\"),n=!n;break;default:r.push(u),n=!1}}return t},y=function(e,r){r=r||\"F\";var t,n=e.patterns,a=r.length;if(1===a){if(t=n[r],!t)throw\"Invalid date format string '\"+r+\"'.\";r=t}else 2===a&&\"%\"===r.charAt(0)&&(r=r.charAt(1));return r},M=function(e,r,t){function n(e,r){var t,n=e+\"\";return r>1&&r>n.length?(t=v[r-2]+n,t.substr(t.length-r,r)):t=n}function a(){return h||g?h:(h=A.test(r),g=!0,h)}function s(e,r){if(b)return b[r];switch(r){case 0:return e.getFullYear();case 1:return e.getMonth();case 2:return e.getDate();default:throw\"Invalid part value \"+r}}var u,l=t.calendar,i=l.convert;if(!r||!r.length||\"i\"===r){if(t&&t.name.length)if(i)u=M(e,l.patterns.F,t);else{var c=new Date(e.getTime()),o=z(e,l.eras);c.setFullYear(F(e,l,o)),u=c.toLocaleString()}else u=\"\"+e;return u}var f=l.eras,d=\"s\"===r;r=y(l,r),u=[];var p,h,g,b,v=[\"0\",\"00\",\"000\"],A=/([^d]|^)(d|dd)([^d]|$)/g,x=0,I=k();for(!d&&i&&(b=i.fromGregorian(e));;){var S=I.lastIndex,w=I.exec(r),C=r.slice(S,w?w.index:r.length);if(x+=m(C,u),!w)break;if(x%2)u.push(w[0]);else{var D=w[0],H=D.length;switch(D){case\"ddd\":case\"dddd\":var O=3===H?l.days.namesAbbr:l.days.names;u.push(O[e.getDay()]);break;case\"d\":case\"dd\":h=!0,u.push(n(s(e,2),H));break;case\"MMM\":case\"MMMM\":var N=s(e,1);u.push(l.monthsGenitive&&a()?l.monthsGenitive[3===H?\"namesAbbr\":\"names\"][N]:l.months[3===H?\"namesAbbr\":\"names\"][N]);break;case\"M\":case\"MM\":u.push(n(s(e,1)+1,H));break;case\"y\":case\"yy\":case\"yyyy\":N=b?b[0]:F(e,l,z(e,f),d),4>H&&(N%=100),u.push(n(N,H));break;case\"h\":case\"hh\":p=e.getHours()%12,0===p&&(p=12),u.push(n(p,H));break;case\"H\":case\"HH\":u.push(n(e.getHours(),H));break;case\"m\":case\"mm\":u.push(n(e.getMinutes(),H));break;case\"s\":case\"ss\":u.push(n(e.getSeconds(),H));break;case\"t\":case\"tt\":N=12>e.getHours()?l.AM?l.AM[0]:\" \":l.PM?l.PM[0]:\" \",u.push(1===H?N.charAt(0):N);break;case\"f\":case\"ff\":case\"fff\":u.push(n(e.getMilliseconds(),3).substr(0,H));break;case\"z\":case\"zz\":p=e.getTimezoneOffset()/60,u.push((0>=p?\"+\":\"-\")+n(Math.floor(Math.abs(p)),H));break;case\"zzz\":p=e.getTimezoneOffset()/60,u.push((0>=p?\"+\":\"-\")+n(Math.floor(Math.abs(p)),2)+\":\"+n(Math.abs(e.getTimezoneOffset()%60),2));break;case\"g\":case\"gg\":l.eras&&u.push(l.eras[z(e,f)].name);break;case\"/\":u.push(l[\"/\"]);break;default:throw\"Invalid date format pattern '\"+D+\"'.\"}}}return u.join(\"\")},function(){var e;e=function(e,r,t){var n=t.groupSizes,a=n[0],s=1,u=Math.pow(10,r),l=Math.round(e*u)/u;isFinite(l)||(l=e),e=l;var i=e+\"\",c=\"\",o=i.split(/e/i),f=o.length>1?parseInt(o[1],10):0;i=o[0],o=i.split(\".\"),i=o[0],c=o.length>1?o[1]:\"\",f>0?(c=b(c,f,!1),i+=c.slice(0,f),c=c.substr(f)):0>f&&(f=-f,i=b(i,f+1,!0),c=i.slice(-f,i.length)+c,i=i.slice(0,-f)),c=r>0?t[\".\"]+(c.length>r?c.slice(0,r):b(c,r)):\"\";for(var d=i.length-1,p=t[\",\"],h=\"\";d>=0;){if(0===a||a>d)return i.slice(0,d+1)+(h.length?p+h+c:c);h=i.slice(d-a+1,d+1)+(h.length?p+h:\"\"),d-=a,n.length>s&&(a=n[s],s++)}return i.slice(0,d+1)+p+h+c},v=function(r,t,n){if(!isFinite(r))return 1/0===r?n.numberFormat.positiveInfinity:r===-1/0?n.numberFormat.negativeInfinity:n.numberFormat.NaN;if(!t||\"i\"===t)return n.name.length?r.toLocaleString():\"\"+r;t=t||\"D\";var a,s=n.numberFormat,u=Math.abs(r),l=-1;t.length>1&&(l=parseInt(t.slice(1),10));var i,c=t.charAt(0).toUpperCase();switch(c){case\"D\":a=\"n\",u=g(u),-1!==l&&(u=b(\"\"+u,l,!0)),0>r&&(u=\"-\"+u);break;case\"N\":i=s;case\"C\":i=i||s.currency;case\"P\":i=i||s.percent,a=0>r?i.pattern[0]:i.pattern[1]||\"n\",-1===l&&(l=i.decimals),u=e(u*(\"P\"===c?100:1),l,i);break;default:throw\"Bad number format specifier: \"+c}for(var o=/n|\\$|-|%/g,f=\"\";;){var d=o.lastIndex,p=o.exec(a);if(f+=a.slice(d,p?p.index:a.length),!p)break;switch(p[0]){case\"n\":f+=u;break;case\"$\":f+=s.currency.symbol;break;case\"-\":/[1-9]/.test(u)&&(f+=s[\"-\"]);break;case\"%\":f+=s.percent.symbol}}return f}}(),k=function(){return/\\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g},z=function(e,r){if(!r)return 0;for(var t,n=e.getTime(),a=0,s=r.length;s>a;a++)if(t=r[a].start,null===t||n>=t)return a;return 0},F=function(e,r,t,n){var a=e.getFullYear();return!n&&r.eras&&(a-=r.eras[t].offset),a},function(){var e,r,t,n,a,s,u;e=function(e,r){if(100>r){var t=new Date,n=z(t),a=F(t,e,n),s=e.twoDigitYearMax;s=\"string\"==typeof s?(new Date).getFullYear()%100+parseInt(s,10):s,r+=a-a%100,r>s&&(r-=100)}return r},r=function(e,r,t){var n,a=e.days,i=e._upperDays;return i||(e._upperDays=i=[u(a.names),u(a.namesAbbr),u(a.namesShort)]),r=s(r),t?(n=l(i[1],r),-1===n&&(n=l(i[2],r))):n=l(i[0],r),n},t=function(e,r,t){var n=e.months,a=e.monthsGenitive||e.months,i=e._upperMonths,c=e._upperMonthsGen;i||(e._upperMonths=i=[u(n.names),u(n.namesAbbr)],e._upperMonthsGen=c=[u(a.names),u(a.namesAbbr)]),r=s(r);var o=l(t?i[1]:i[0],r);return 0>o&&(o=l(t?c[1]:c[0],r)),o},n=function(e,r){var t=e._parseRegExp;if(t){var n=t[r];if(n)return n}else e._parseRegExp=t={};for(var a,s=y(e,r).replace(/([\\^\\$\\.\\*\\+\\?\\|\\[\\]\\(\\)\\{\\}])/g,\"\\\\\\\\$1\"),u=[\"^\"],l=[],i=0,c=0,o=k();null!==(a=o.exec(s));){var f=s.slice(i,a.index);if(i=o.lastIndex,c+=m(f,u),c%2)u.push(a[0]);else{var d,p=a[0],h=p.length;switch(p){case\"dddd\":case\"ddd\":case\"MMMM\":case\"MMM\":case\"gg\":case\"g\":d=\"(\\\\D+)\";break;case\"tt\":case\"t\":d=\"(\\\\D*)\";break;case\"yyyy\":case\"fff\":case\"ff\":case\"f\":d=\"(\\\\d{\"+h+\"})\";break;case\"dd\":case\"d\":case\"MM\":case\"M\":case\"yy\":case\"y\":case\"HH\":case\"H\":case\"hh\":case\"h\":case\"mm\":case\"m\":case\"ss\":case\"s\":d=\"(\\\\d\\\\d?)\";break;case\"zzz\":d=\"([+-]?\\\\d\\\\d?:\\\\d{2})\";break;case\"zz\":case\"z\":d=\"([+-]?\\\\d\\\\d?)\";break;case\"/\":d=\"(\\\\/)\";break;default:throw\"Invalid date format pattern '\"+p+\"'.\"}d&&u.push(d),l.push(a[0])}}m(s.slice(i),u),u.push(\"$\");var g=u.join(\"\").replace(/\\s+/g,\"\\\\s+\"),b={regExp:g,groups:l};return t[r]=b},a=function(e,r,t){return r>e||e>t},s=function(e){return e.split(\"\\u00a0\").join(\" \").toUpperCase()},u=function(e){for(var r=[],t=0,n=e.length;n>t;t++)r[t]=s(e[t]);return r},A=function(s,u,l){s=h(s);var i=l.calendar,c=n(i,u),o=RegExp(c.regExp).exec(s);if(null===o)return null;for(var f,d=c.groups,g=null,b=null,m=null,y=null,M=null,v=0,k=0,z=0,F=0,A=null,x=!1,I=0,S=d.length;S>I;I++){var w=o[I+1];if(w){var C=d[I],D=C.length,H=parseInt(w,10);switch(C){case\"dd\":case\"d\":if(y=H,a(y,1,31))return null;break;case\"MMM\":case\"MMMM\":if(m=t(i,w,3===D),a(m,0,11))return null;break;case\"M\":case\"MM\":if(m=H-1,a(m,0,11))return null;break;case\"y\":case\"yy\":case\"yyyy\":if(b=4>D?e(i,H):H,a(b,0,9999))return null;break;case\"h\":case\"hh\":if(v=H,12===v&&(v=0),a(v,0,11))return null;break;case\"H\":case\"HH\":if(v=H,a(v,0,23))return null;break;case\"m\":case\"mm\":if(k=H,a(k,0,59))return null;break;case\"s\":case\"ss\":if(z=H,a(z,0,59))return null;break;case\"tt\":case\"t\":if(x=i.PM&&(w===i.PM[0]||w===i.PM[1]||w===i.PM[2]),!x&&(!i.AM||w!==i.AM[0]&&w!==i.AM[1]&&w!==i.AM[2]))return null;break;case\"f\":case\"ff\":case\"fff\":if(F=H*Math.pow(10,3-D),a(F,0,999))return null;break;case\"ddd\":case\"dddd\":if(M=r(i,w,3===D),a(M,0,6))return null;break;case\"zzz\":var O=w.split(/:/);if(2!==O.length)return null;if(f=parseInt(O[0],10),a(f,-12,13))return null;var N=parseInt(O[1],10);if(a(N,0,59))return null;A=60*f+(p(w,\"-\")?-N:N);break;case\"z\":case\"zz\":if(f=H,a(f,-12,13))return null;A=60*f;break;case\"g\":case\"gg\":var T=w;if(!T||!i.eras)return null;T=h(T.toLowerCase());for(var j=0,$=i.eras.length;$>j;j++)if(T===i.eras[j].name.toLowerCase()){g=j;break}if(null===g)return null}}}var P,G=new Date,E=i.convert;if(P=E?E.fromGregorian(G)[0]:G.getFullYear(),null===b?b=P:i.eras&&(b+=i.eras[g||0].offset),null===m&&(m=0),null===y&&(y=1),E){if(G=E.toGregorian(b,m,y),null===G)return null}else{if(G.setFullYear(b,m,y),G.getDate()!==y)return null;if(null!==M&&G.getDay()!==M)return null}if(x&&12>v&&(v+=12),G.setHours(v,k,z,F),null!==A){var Y=G.getMinutes()-(A+G.getTimezoneOffset());G.setHours(G.getHours()+parseInt(Y/60,10),Y%60)}return G}}(),x=function(e,r,t){var n,a=r[\"-\"],s=r[\"+\"];switch(t){case\"n -\":a=\" \"+a,s=\" \"+s;case\"n-\":i(e,a)?n=[\"-\",e.substr(0,e.length-a.length)]:i(e,s)&&(n=[\"+\",e.substr(0,e.length-s.length)]);break;case\"- n\":a+=\" \",s+=\" \";case\"-n\":p(e,a)?n=[\"-\",e.substr(a.length)]:p(e,s)&&(n=[\"+\",e.substr(s.length)]);break;case\"(n)\":p(e,\"(\")&&i(e,\")\")&&(n=[\"-\",e.substr(1,e.length-2)])}return n||[\"\",e]},t.prototype.findClosestCulture=function(e){return t.findClosestCulture.call(this,e)},t.prototype.format=function(e,r,n){return t.format.call(this,e,r,n)},t.prototype.localize=function(e,r){return t.localize.call(this,e,r)},t.prototype.parseInt=function(e,r,n){return t.parseInt.call(this,e,r,n)},t.prototype.parseFloat=function(e,r,n){return t.parseFloat.call(this,e,r,n)},t.prototype.culture=function(e){return t.culture.call(this,e)},t.addCultureInfo=function(e,r,t){var n={},a=!1;\"string\"!=typeof e?(t=e,e=this.culture().name,n=this.cultures[e]):\"string\"!=typeof r?(t=r,a=null==this.cultures[e],n=this.cultures[e]||this.cultures[\"default\"]):(a=!0,n=this.cultures[r]),this.cultures[e]=c(!0,{},n,t),a&&(this.cultures[e].calendar=this.cultures[e].calendars.standard)},t.findClosestCulture=function(e){var r;if(!e)return this.findClosestCulture(this.cultureSelector)||this.cultures[\"default\"];if(\"string\"==typeof e&&(e=e.split(\",\")),o(e)){var t,n,a=this.cultures,s=e,u=s.length,l=[];for(n=0;u>n;n++){e=h(s[n]);var i,c=e.split(\";\");t=h(c[0]),1===c.length?i=1:(e=h(c[1]),0===e.indexOf(\"q=\")?(e=e.substr(2),i=parseFloat(e),i=isNaN(i)?0:i):i=1),l.push({lang:t,pri:i})}for(l.sort(function(e,r){return e.prir.pri?-1:0}),n=0;u>n;n++)if(t=l[n].lang,r=a[t])return r;for(n=0;u>n;n++)for(t=l[n].lang;;){var f=t.lastIndexOf(\"-\");if(-1===f)break;if(t=t.substr(0,f),r=a[t])return r}for(n=0;u>n;n++){t=l[n].lang;for(var d in a){var p=a[d];if(p.language===t)return p}}}else if(\"object\"==typeof e)return e;return r||null},t.format=function(e,r,t){var n=this.findClosestCulture(t);return e instanceof Date?e=M(e,r,n):\"number\"==typeof e&&(e=v(e,r,n)),e},t.localize=function(e,r){return this.findClosestCulture(r).messages[e]||this.cultures[\"default\"].messages[e]},t.parseDate=function(e,r,t){t=this.findClosestCulture(t);var n,a,s;if(r){if(\"string\"==typeof r&&(r=[r]),r.length)for(var u=0,l=r.length;l>u;u++){var i=r[u];if(i&&(n=A(e,i,t)))break}}else{s=t.calendar.patterns;for(a in s)if(n=A(e,s[a],t))break}return n||null},t.parseInt=function(e,r,n){return g(t.parseFloat(e,r,n))},t.parseFloat=function(e,r,t){\"number\"!=typeof r&&(t=r,r=10);var u=this.findClosestCulture(t),l=0/0,i=u.numberFormat;if(e.indexOf(u.numberFormat.currency.symbol)>-1&&(e=e.replace(u.numberFormat.currency.symbol,\"\"),e=e.replace(u.numberFormat.currency[\".\"],u.numberFormat[\".\"])),e.indexOf(u.numberFormat.percent.symbol)>-1&&(e=e.replace(u.numberFormat.percent.symbol,\"\")),e=e.replace(/ /g,\"\"),a.test(e))l=parseFloat(e);else if(!r&&n.test(e))l=parseInt(e,16);else{var c=x(e,i,i.pattern[0]),o=c[0],f=c[1];\"\"===o&&\"(n)\"!==i.pattern[0]&&(c=x(e,i,\"(n)\"),o=c[0],f=c[1]),\"\"===o&&\"-n\"!==i.pattern[0]&&(c=x(e,i,\"-n\"),o=c[0],f=c[1]),o=o||\"+\";var d,p,h=f.indexOf(\"e\");0>h&&(h=f.indexOf(\"E\")),0>h?(p=f,d=null):(p=f.substr(0,h),d=f.substr(h+1));var g,b,m=i[\".\"],y=p.indexOf(m);0>y?(g=p,b=null):(g=p.substr(0,y),b=p.substr(y+m.length));var M=i[\",\"];g=g.split(M).join(\"\");var v=M.replace(/\\u00A0/g,\" \");M!==v&&(g=g.split(v).join(\"\"));var k=o+g;if(null!==b&&(k+=\".\"+b),null!==d){var z=x(d,i,\"-n\");k+=\"e\"+(z[0]||\"+\")+z[1]}s.test(k)&&(l=parseFloat(k))}return l},t.culture=function(e){return e!==r&&(this.cultureSelector=e),this.findClosestCulture(e)||this.cultures[\"default\"]}; return Globalize;}(this));\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\texports.Assert = Assert_1.Assert;\n\tvar Cache_1 = __webpack_require__(33);\n\texports.Cache = Cache_1.Cache;\n\tvar Defer_1 = __webpack_require__(34);\n\texports.Defer = Defer_1.Defer;\n\tvar L10N_1 = __webpack_require__(35);\n\texports.L10N = L10N_1.L10N;\n\tvar Logger_1 = __webpack_require__(13);\n\texports.Logger = Logger_1.Logger;\n\tvar Options_1 = __webpack_require__(36);\n\texports.Options = Options_1.Options;\n\tvar Strings_1 = __webpack_require__(37);\n\texports.l = Strings_1.l;\n\n\n/***/ },\n/* 33 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Cache = (function () {\n\t function Cache(onEmpty) {\n\t this.onEmpty = onEmpty;\n\t this.cache = [];\n\t }\n\t Cache.prototype.get = function () {\n\t if (this.cache.length == 0) {\n\t return this.onEmpty();\n\t }\n\t else {\n\t return this.cache.pop();\n\t }\n\t };\n\t Cache.prototype.push = function (value) {\n\t this.cache.push(value);\n\t };\n\t return Cache;\n\t}());\n\texports.Cache = Cache;\n\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar Defer = (function () {\n\t function Defer() {\n\t }\n\t Defer.defer = function (code) {\n\t Defer.functions.push(code);\n\t Defer.arm();\n\t };\n\t Defer.flush = function () {\n\t while (Defer.popOne()) {\n\t }\n\t };\n\t Defer.arm = function () {\n\t _.defer(function () {\n\t if (Defer.popOne()) {\n\t Defer.arm();\n\t }\n\t });\n\t };\n\t Defer.popOne = function () {\n\t if (Defer.functions.length > 0) {\n\t var fun = Defer.functions[0];\n\t Defer.functions = _.rest(Defer.functions);\n\t fun();\n\t return Defer.functions.length > 0;\n\t }\n\t else {\n\t return false;\n\t }\n\t };\n\t return Defer;\n\t}());\n\tDefer.functions = [];\n\texports.Defer = Defer;\n\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar _ = __webpack_require__(16);\n\tString.toLocaleString = ExternalModulesShim_1.LocaleString;\n\tvar pluralRegex = /(((?!<\\/pl>).)*)<\\/pl>/g;\n\tvar singularRegex = /(((?!<\\/sn>).)*)<\\/sn>/g;\n\texports.L10N = {\n\t format: function (key) {\n\t var args = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\t var value = key.toLocaleString();\n\t if (args.length > 0) {\n\t var last = _.last(args);\n\t // Last argument is either the count or a boolean forcing plural (true) or singular (false)\n\t if (_.isBoolean(last) || _.isNumber(last)) {\n\t args.pop();\n\t value = exports.L10N.formatPlSn(value, last);\n\t }\n\t _.each(args, function (arg, i) { return value = value.replace(\"{\" + i + \"}\", arg); });\n\t }\n\t return value;\n\t },\n\t formatPlSn: function (value, count) {\n\t var isPlural = _.isBoolean(count) ? count : count > 1;\n\t if (isPlural) {\n\t value = value.replace(pluralRegex, '$1').replace(singularRegex, '');\n\t }\n\t else {\n\t value = value.replace(pluralRegex, '').replace(singularRegex, '$1');\n\t }\n\t return value;\n\t }\n\t};\n\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\tvar Options = (function () {\n\t function Options() {\n\t }\n\t Options.prototype.merge = function (provided) {\n\t return _.extend({}, this, provided);\n\t };\n\t Options.prototype.mergeDeep = function (provided) {\n\t return _.extend({}, Utils_1.Utils.extendDeep(this, provided));\n\t };\n\t return Options;\n\t}());\n\texports.Options = Options;\n\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar L10N_1 = __webpack_require__(35);\n\tfunction l() {\n\t var params = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t params[_i] = arguments[_i];\n\t }\n\t return L10N_1.L10N.format.apply(this, arguments);\n\t}\n\texports.l = l;\n\t;\n\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar AnalyticsEndpoint_1 = __webpack_require__(39);\n\texports.AnalyticsEndpoint = AnalyticsEndpoint_1.AnalyticsEndpoint;\n\tvar EndpointCaller_1 = __webpack_require__(12);\n\texports.EndpointCaller = EndpointCaller_1.EndpointCaller;\n\tvar QueryError_1 = __webpack_require__(24);\n\texports.QueryError = QueryError_1.QueryError;\n\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Logger_1 = __webpack_require__(13);\n\tvar EndpointCaller_1 = __webpack_require__(12);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar CookieUtils_1 = __webpack_require__(40);\n\tvar _ = __webpack_require__(16);\n\tvar AnalyticsEndpoint = (function () {\n\t function AnalyticsEndpoint(options) {\n\t this.options = options;\n\t this.logger = new Logger_1.Logger(this);\n\t var endpointCallerOptions = {\n\t accessToken: (this.options.token && this.options.token != '') ? this.options.token : null\n\t };\n\t this.endpointCaller = new EndpointCaller_1.EndpointCaller(endpointCallerOptions);\n\t this.organization = options.organization;\n\t }\n\t AnalyticsEndpoint.prototype.getCurrentVisitId = function () {\n\t return this.visitId;\n\t };\n\t AnalyticsEndpoint.prototype.getCurrentVisitIdPromise = function () {\n\t var _this = this;\n\t return new Promise(function (resolve, reject) {\n\t if (_this.getCurrentVisitId()) {\n\t resolve(_this.getCurrentVisitId());\n\t }\n\t else {\n\t var url = _this.buildAnalyticsUrl('/analytics/visit');\n\t _this.getFromService(url, {})\n\t .then(function (response) {\n\t _this.visitId = response.id;\n\t resolve(_this.visitId);\n\t })\n\t .catch(function (response) {\n\t reject(response);\n\t });\n\t }\n\t });\n\t };\n\t AnalyticsEndpoint.prototype.sendSearchEvents = function (searchEvents) {\n\t if (searchEvents.length > 0) {\n\t this.logger.info('Logging analytics search events', searchEvents);\n\t return this.sendToService(searchEvents, 'searches', 'searchEvents');\n\t }\n\t };\n\t AnalyticsEndpoint.prototype.sendDocumentViewEvent = function (documentViewEvent) {\n\t Assert_1.Assert.exists(documentViewEvent);\n\t this.logger.info('Logging analytics document view', documentViewEvent);\n\t return this.sendToService(documentViewEvent, 'click', 'clickEvent');\n\t };\n\t AnalyticsEndpoint.prototype.sendCustomEvent = function (customEvent) {\n\t Assert_1.Assert.exists(customEvent);\n\t this.logger.info('Logging analytics custom event', customEvent);\n\t return this.sendToService(customEvent, 'custom', 'customEvent');\n\t };\n\t AnalyticsEndpoint.prototype.getTopQueries = function (params) {\n\t var url = this.buildAnalyticsUrl('/stats/topQueries');\n\t return this.getFromService(url, params);\n\t };\n\t AnalyticsEndpoint.prototype.sendToService = function (data, path, paramName) {\n\t var _this = this;\n\t var url = QueryUtils_1.QueryUtils.mergePath(this.options.serviceUrl, '/rest/' + (AnalyticsEndpoint.CUSTOM_ANALYTICS_VERSION || AnalyticsEndpoint.DEFAULT_ANALYTICS_VERSION) + '/analytics/' + path);\n\t var queryString = [];\n\t if (this.organization) {\n\t queryString.push('org=' + this.organization);\n\t }\n\t if (CookieUtils_1.Cookie.get('visitorId')) {\n\t queryString.push('visitor=' + encodeURIComponent(CookieUtils_1.Cookie.get('visitorId')));\n\t }\n\t // We use pendingRequest because we don't want to have 2 request to analytics at the same time.\n\t // Otherwise the cookie visitId won't be set correctly.\n\t if (AnalyticsEndpoint.pendingRequest == null) {\n\t AnalyticsEndpoint.pendingRequest = this.endpointCaller.call({\n\t errorsAsSuccess: false,\n\t method: 'POST',\n\t queryString: queryString,\n\t requestData: data,\n\t url: url,\n\t responseType: 'text',\n\t requestDataType: 'application/json'\n\t }).then(function (res) {\n\t return _this.handleAnalyticsEventResponse(res.data);\n\t }).finally(function () {\n\t AnalyticsEndpoint.pendingRequest = null;\n\t });\n\t return AnalyticsEndpoint.pendingRequest;\n\t }\n\t else {\n\t return AnalyticsEndpoint.pendingRequest.finally(function () {\n\t return _this.sendToService(data, path, paramName);\n\t });\n\t }\n\t };\n\t AnalyticsEndpoint.prototype.getFromService = function (url, params) {\n\t var paramsToSend = (this.options.token && this.options.token != '') ? _.extend({ 'access_token': this.options.token }, params) : params;\n\t return this.endpointCaller.call({\n\t errorsAsSuccess: false,\n\t method: 'GET',\n\t queryString: this.options.organization ? ['org=' + encodeURIComponent(this.options.organization)] : [],\n\t requestData: paramsToSend,\n\t responseType: 'json',\n\t url: url\n\t }).then(function (res) {\n\t return res.data;\n\t });\n\t };\n\t AnalyticsEndpoint.prototype.handleAnalyticsEventResponse = function (response) {\n\t var visitId;\n\t var visitorId;\n\t if (response['visitId']) {\n\t visitId = response['visitId'];\n\t visitorId = response['visitorId'];\n\t }\n\t else if (response['searchEventResponses']) {\n\t visitId = _.first(response['searchEventResponses']).visitId;\n\t visitorId = _.first(response['searchEventResponses']).visitorId;\n\t }\n\t if (visitId) {\n\t this.visitId = visitId;\n\t }\n\t if (visitorId) {\n\t CookieUtils_1.Cookie.set('visitorId', visitorId, AnalyticsEndpoint.VISITOR_COOKIE_TIME);\n\t }\n\t return response;\n\t };\n\t AnalyticsEndpoint.prototype.buildAnalyticsUrl = function (path) {\n\t return this.options.serviceUrl + '/rest/' + (AnalyticsEndpoint.CUSTOM_ANALYTICS_VERSION || AnalyticsEndpoint.DEFAULT_ANALYTICS_VERSION) + path;\n\t };\n\t return AnalyticsEndpoint;\n\t}());\n\tAnalyticsEndpoint.DEFAULT_ANALYTICS_URI = 'https://usageanalytics.coveo.com';\n\tAnalyticsEndpoint.DEFAULT_ANALYTICS_VERSION = 'v15';\n\tAnalyticsEndpoint.CUSTOM_ANALYTICS_VERSION = undefined;\n\tAnalyticsEndpoint.VISITOR_COOKIE_TIME = 10000 * 24 * 60 * 60 * 1000;\n\texports.AnalyticsEndpoint = AnalyticsEndpoint;\n\n\n/***/ },\n/* 40 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Code originally taken from : https://developers.livechatinc.com/blog/setting-cookies-to-subdomains-in-javascript/\n\tvar Cookie = (function () {\n\t function Cookie() {\n\t }\n\t Cookie.set = function (name, value, expiration) {\n\t var domain, domainParts, date, expires, host;\n\t if (expiration) {\n\t date = new Date();\n\t date.setTime(date.getTime() + expiration);\n\t expires = '; expires=' + date.toGMTString();\n\t }\n\t else {\n\t expires = '';\n\t }\n\t host = location.hostname;\n\t if (host.split('.').length === 1) {\n\t // no '.' in a domain - it's localhost or something similar\n\t document.cookie = this.prefix + name + '=' + value + expires + '; path=/';\n\t }\n\t else {\n\t // Remember the cookie on all subdomains.\n\t //\n\t // Start with trying to set cookie to the top domain.\n\t // (example: if user is on foo.com, try to set\n\t // cookie to domain '.com')\n\t //\n\t // If the cookie will not be set, it means '.com'\n\t // is a top level domain and we need to\n\t // set the cookie to '.foo.com'\n\t domainParts = host.split('.');\n\t domainParts.shift();\n\t domain = '.' + domainParts.join('.');\n\t document.cookie = this.prefix + name + '=' + value + expires + '; path=/; domain=' + domain;\n\t // check if cookie was successfuly set to the given domain\n\t // (otherwise it was a Top-Level Domain)\n\t if (Cookie.get(name) == null || Cookie.get(name) != value) {\n\t // append '.' to current domain\n\t domain = '.' + host;\n\t document.cookie = this.prefix + name + '=' + value + expires + '; path=/; domain=' + domain;\n\t }\n\t }\n\t };\n\t Cookie.get = function (name) {\n\t var nameEQ = this.prefix + name + '=';\n\t var ca = document.cookie.split(';');\n\t for (var i = 0; i < ca.length; i++) {\n\t var c = ca[i];\n\t while (c.charAt(0) == ' ') {\n\t c = c.substring(1, c.length);\n\t }\n\t if (c.indexOf(nameEQ) == 0) {\n\t return c.substring(nameEQ.length, c.length);\n\t }\n\t }\n\t return null;\n\t };\n\t Cookie.erase = function (name) {\n\t Cookie.set(name, '', -1);\n\t };\n\t return Cookie;\n\t}());\n\tCookie.prefix = 'coveo_';\n\texports.Cookie = Cookie;\n\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar AdvancedSearchEvents_1 = __webpack_require__(42);\n\texports.AdvancedSearchEvents = AdvancedSearchEvents_1.AdvancedSearchEvents;\n\tvar AnalyticsEvents_1 = __webpack_require__(43);\n\texports.AnalyticsEvents = AnalyticsEvents_1.AnalyticsEvents;\n\tvar BreadcrumbEvents_1 = __webpack_require__(44);\n\texports.BreadcrumbEvents = BreadcrumbEvents_1.BreadcrumbEvents;\n\tvar DebugEvents_1 = __webpack_require__(45);\n\texports.DebugEvents = DebugEvents_1.DebugEvents;\n\tvar ImageResultListEvents_1 = __webpack_require__(46);\n\texports.ImageResultListEvents = ImageResultListEvents_1.ImageResultListEvents;\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\texports.InitializationEvents = InitializationEvents_1.InitializationEvents;\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\texports.OmniboxEvents = OmniboxEvents_1.OmniboxEvents;\n\tvar PreferencesPanelEvents_1 = __webpack_require__(49);\n\texports.PreferencesPanelEvents = PreferencesPanelEvents_1.PreferencesPanelEvents;\n\tvar QueryEvents_1 = __webpack_require__(50);\n\texports.QueryEvents = QueryEvents_1.QueryEvents;\n\tvar ResultListEvents_1 = __webpack_require__(51);\n\texports.ResultListEvents = ResultListEvents_1.ResultListEvents;\n\tvar ResultLayoutEvents_1 = __webpack_require__(52);\n\texports.ResultLayoutEvents = ResultLayoutEvents_1.ResultLayoutEvents;\n\tvar SearchAlertEvents_1 = __webpack_require__(53);\n\texports.SearchAlertsEvents = SearchAlertEvents_1.SearchAlertsEvents;\n\tvar SettingsEvents_1 = __webpack_require__(54);\n\texports.SettingsEvents = SettingsEvents_1.SettingsEvents;\n\tvar SliderEvents_1 = __webpack_require__(55);\n\texports.SliderEvents = SliderEvents_1.SliderEvents;\n\tvar StandaloneSearchInterfaceEvents_1 = __webpack_require__(56);\n\texports.StandaloneSearchInterfaceEvents = StandaloneSearchInterfaceEvents_1.StandaloneSearchInterfaceEvents;\n\n\n/***/ },\n/* 42 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t/**\n\t * This static class is there to contains the different string definition for all the events related to the {@link AdvancedSearch} component.\n\t */\n\tvar AdvancedSearchEvents = (function () {\n\t function AdvancedSearchEvents() {\n\t }\n\t return AdvancedSearchEvents;\n\t}());\n\t/**\n\t * Triggered when the {@link AdvancedSearch} component is being built.\n\t *\n\t * Allows external code to add new sections in the **Advanced Search** panel.\n\t *\n\t * All bound handlers receive {@link IBuildingAdvancedSearchEventArgs} as an argument\n\t *\n\t * @type {string}\n\t */\n\tAdvancedSearchEvents.buildingAdvancedSearch = 'buildingAdvancedSearch';\n\tAdvancedSearchEvents.executeAdvancedSearch = 'executeAdvancedSearch';\n\texports.AdvancedSearchEvents = AdvancedSearchEvents;\n\n\n/***/ },\n/* 43 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t/**\n\t * This static class is there to contains the different string definition for all the events related to analytics.\n\t */\n\tvar AnalyticsEvents = (function () {\n\t function AnalyticsEvents() {\n\t }\n\t return AnalyticsEvents;\n\t}());\n\tAnalyticsEvents.searchEvent = 'analyticsSearchEvent';\n\tAnalyticsEvents.documentViewEvent = 'analyticsDocumentViewEvent';\n\tAnalyticsEvents.customEvent = 'analyticsCustomEvent';\n\t/**\n\t * Triggered whenever an analytics event is logged. This event allows external code to modify the analytics data.\n\t *\n\t * All bound handlers will receive {@link IChangeAnalyticsCustomDataEventArgs} as an argument.\n\t *\n\t * The string value is `changeAnalyticsCustomData`.\n\t */\n\tAnalyticsEvents.changeAnalyticsCustomData = 'changeAnalyticsCustomData';\n\texports.AnalyticsEvents = AnalyticsEvents;\n\n\n/***/ },\n/* 44 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t/**\n\t * This static class is there to contains the different string definition for all the events related to {@link Breadcrumb}.\n\t */\n\tvar BreadcrumbEvents = (function () {\n\t function BreadcrumbEvents() {\n\t }\n\t return BreadcrumbEvents;\n\t}());\n\t/**\n\t * Triggered when the breadcrumb needs to update its content. External code can use this event to provide bits of HTML that should be included in the breadcrumb.\n\t *\n\t * All handlers bound to this event will receive a {@link IPopulateBreadcrumbEventArgs} as an argument.\n\t */\n\tBreadcrumbEvents.populateBreadcrumb = 'populateBreadcrumb';\n\t/**\n\t * Triggered when the user clicks the Clear All button in the breadcrumb. When this event is raised, every filter that is included in the breadcrumb should be removed.\n\t *\n\t * This event does not provide custom event data.\n\t */\n\tBreadcrumbEvents.clearBreadcrumb = 'clearBreadcrumb';\n\tBreadcrumbEvents.redrawBreadcrumb = 'redrawBreadcrumb';\n\texports.BreadcrumbEvents = BreadcrumbEvents;\n\n\n/***/ },\n/* 45 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar DebugEvents = (function () {\n\t function DebugEvents() {\n\t }\n\t return DebugEvents;\n\t}());\n\tDebugEvents.showDebugPanel = 'showDebugPanel';\n\texports.DebugEvents = DebugEvents;\n\n\n/***/ },\n/* 46 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ImageResultListEvents = (function () {\n\t function ImageResultListEvents() {\n\t }\n\t return ImageResultListEvents;\n\t}());\n\tImageResultListEvents.imageResultsLayoutComplete = 'imageResultsLayoutComplete';\n\texports.ImageResultListEvents = ImageResultListEvents;\n\n\n/***/ },\n/* 47 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t/**\n\t * This static class is there to contain the different string definitions for all the events related to initialization.\n\t *\n\t * Note that these events will only be triggered when the {@link init} function is called.\n\t *\n\t * This means these events are normally called only once when the search interface is initialized.\n\t */\n\tvar InitializationEvents = (function () {\n\t function InitializationEvents() {\n\t }\n\t return InitializationEvents;\n\t}());\n\t/**\n\t * This event is triggered right before each components inside the search interface get initialized (eg: Before the constructor of each component is executed).\n\t *\n\t * The string value is `beforeInitialization`.\n\t * @type {string}\n\t */\n\tInitializationEvents.beforeInitialization = 'beforeInitialization';\n\t/**\n\t * Triggered after the components are initialized (eg: After the constructor of each component is executed)\n\t * but before their state is set from the hash portion of the URL (e.g., http://mysearchinterface#q=myQuery ).\n\t *\n\t * This is also before the first query is launched (if the {@link SearchInterface.options.autoTriggerQuery} is `true`).\n\t *\n\t * The string value is `afterComponentsInitialization`.\n\t * @type {string}\n\t */\n\tInitializationEvents.afterComponentsInitialization = 'afterComponentsInitialization';\n\t/**\n\t * Triggered right before the state from the URL (e.g., http://mysearchinterface#q=myQuery ) gets applied in the interface.\n\t *\n\t * This will typically only be useful if the {@link SearchInterface.options.enableHistory} is set to `true`.\n\t *\n\t * The string value is `restoreHistoryState`.\n\t * @type {string}\n\t */\n\tInitializationEvents.restoreHistoryState = 'restoreHistoryState';\n\t/**\n\t * Triggered right after the UI is fully initialized.\n\t *\n\t * Concretely this means that the constructor of each component has been executed, and that the state coming for the URL (e.g., http://mysearchinterface#q=myquery) has been applied.\n\t *\n\t * It is triggered *before* the first query is launched, and if the {@link SearchInterface.options.autoTriggerQuery} is `true`.\n\t *\n\t * The string value is `afterInitialization`.\n\t * @type {string}\n\t */\n\tInitializationEvents.afterInitialization = 'afterInitialization';\n\t/**\n\t * This is triggered when the UI needs to be dynamically removed so that components can unbind any internal handlers they might have set globally on the window or the document.\n\t *\n\t * After this event has been executed, the search interface can be dynamically removed and all handlers can be considered cleanly removed.\n\t *\n\t * The string value is `nuke`.\n\t * @type {string}\n\t */\n\tInitializationEvents.nuke = 'nuke';\n\texports.InitializationEvents = InitializationEvents;\n\n\n/***/ },\n/* 48 */\n/***/ function(module, exports) {\n\n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar OmniboxEvents = (function () {\n\t function OmniboxEvents() {\n\t }\n\t return OmniboxEvents;\n\t}());\n\tOmniboxEvents.populateOmnibox = 'populateOmnibox';\n\tOmniboxEvents.openOmnibox = 'openOmnibox';\n\tOmniboxEvents.closeOmnibox = 'closeOmnibox';\n\tOmniboxEvents.populateOmniboxSuggestions = 'populateOmniboxSuggestions';\n\tOmniboxEvents.omniboxPreprocessResultForQuery = 'omniboxPreprocessResultForQuery';\n\texports.OmniboxEvents = OmniboxEvents;\n\n\n/***/ },\n/* 49 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar PreferencesPanelEvents = (function () {\n\t function PreferencesPanelEvents() {\n\t }\n\t return PreferencesPanelEvents;\n\t}());\n\tPreferencesPanelEvents.savePreferences = 'savePreferences';\n\tPreferencesPanelEvents.exitPreferencesWithoutSave = 'exitPreferencesWithoutSave';\n\texports.PreferencesPanelEvents = PreferencesPanelEvents;\n\n\n/***/ },\n/* 50 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t/**\n\t * This static class is there to contains the different string definition for all the events related to query.\n\t *\n\t * Note that these events will only be triggered when the {@link QueryController.executeQuery} method is used, either directly or by using {@link executeQuery}\n\t */\n\tvar QueryEvents = (function () {\n\t function QueryEvents() {\n\t }\n\t return QueryEvents;\n\t}());\n\t/**\n\t * Triggered when a new query is launched.\n\t *\n\t * All bound handlers will receive {@link INewQueryEventArgs} as an argument.\n\t *\n\t * The string value is `newQuery`.\n\t * @type {string}\n\t */\n\tQueryEvents.newQuery = 'newQuery';\n\t/**\n\t * Triggered when the query is being built.\n\t *\n\t * This is typically where all components will contribute their part to the {@link IQuery} using the {@link QueryBuilder}.\n\t *\n\t * All bound handlers will receive {@link IBuildingQueryEventArgs} as an argument.\n\t *\n\t * The string value is `buildingQuery`.\n\t * @type {string}\n\t */\n\tQueryEvents.buildingQuery = 'buildingQuery';\n\t/**\n\t * Triggered when the query is done being built.\n\t *\n\t * This is typically where the facet will add it's {@link IGroupByRequest} to the {@link IQuery}.\n\t *\n\t * All bound handlers will receive {@link IDoneBuildingQueryEventArgs} as an argument.\n\t *\n\t * The string value is `doneBuildingQuery`.\n\t * @type {string}\n\t */\n\tQueryEvents.doneBuildingQuery = 'doneBuildingQuery';\n\t/**\n\t * Triggered when the query is being executed on the Search API.\n\t *\n\t * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument.\n\t *\n\t * The string value is `duringQuery`.\n\t * @type {string}\n\t */\n\tQueryEvents.duringQuery = 'duringQuery';\n\t/**\n\t * Triggered when more results are being fetched on the Search API (think : infinite scrolling, or pager).\n\t *\n\t * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument.\n\t *\n\t * The string value is `duringFetchMoreQuery`.\n\t * @type {string}\n\t */\n\tQueryEvents.duringFetchMoreQuery = 'duringFetchMoreQuery';\n\t/**\n\t * Triggered when a query successfully returns from the Search API.\n\t *\n\t * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument.\n\t *\n\t * The string value is `querySuccess`.\n\t * @type {string}\n\t */\n\tQueryEvents.querySuccess = 'querySuccess';\n\t/**\n\t * Triggered when a more results were successfully returned from the Search API. (think : infinite scrolling, or pager).\n\t *\n\t * All bound handlers will receive {@link IFetchMoreSuccessEventArgs} as an argument.\n\t *\n\t * The string value is `fetchMoreSuccess`.\n\t * @type {string}\n\t */\n\tQueryEvents.fetchMoreSuccess = 'fetchMoreSuccess';\n\t/**\n\t * Triggered after the main query success event has finished executing.\n\t *\n\t * This is typically where facets will process the {@link IGroupByResult} and render themselves.\n\t *\n\t * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument.\n\t *\n\t * The string value is `deferredQuerySuccess`.\n\t * @type {string}\n\t */\n\tQueryEvents.deferredQuerySuccess = 'deferredQuerySuccess';\n\t/**\n\t * Triggered when there was an error executing a query on the Search API.\n\t *\n\t * All bound handlers will receive {@link IQueryErrorEventArgs} as an argument.\n\t *\n\t * The string value is `queryError`.\n\t * @type {string}\n\t */\n\tQueryEvents.queryError = 'queryError';\n\t/**\n\t * Triggered before the {@link QueryEvents.querySuccess} event.\n\t *\n\t * This allows external code to modify the results before rendering them.\n\t *\n\t * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results.\n\t *\n\t * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument.\n\t *\n\t * The string value is `preprocessResults`.\n\t * @type {string}\n\t */\n\tQueryEvents.preprocessResults = 'preprocessResults';\n\t/**\n\t * Triggered before the {@link QueryEvents.fetchMoreSuccess} event.\n\t *\n\t * This allows external code to modify the results before rendering them.\n\t *\n\t * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results.\n\t *\n\t * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument.\n\t *\n\t * The string value is `preprocessMoreResults`.\n\t * @type {string}\n\t */\n\tQueryEvents.preprocessMoreResults = 'preprocessMoreResults';\n\t/**\n\t * Triggered when there is no result for a particular query.\n\t *\n\t * All bound handlers will receive {@link INoResultsEventArgs} as an argument.\n\t *\n\t * The string value is `noResults`.\n\t * @type {string}\n\t */\n\tQueryEvents.noResults = 'noResults';\n\tQueryEvents.buildingCallOptions = 'buildingCallOptions';\n\texports.QueryEvents = QueryEvents;\n\n\n/***/ },\n/* 51 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ResultListEvents = (function () {\n\t function ResultListEvents() {\n\t }\n\t return ResultListEvents;\n\t}());\n\tResultListEvents.newResultsDisplayed = 'newResultsDisplayed';\n\tResultListEvents.newResultDisplayed = 'newResultDisplayed';\n\tResultListEvents.openQuickview = 'openQuickview';\n\tResultListEvents.changeLayout = 'changeLayout';\n\texports.ResultListEvents = ResultListEvents;\n\n\n/***/ },\n/* 52 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ResultLayoutEvents = (function () {\n\t function ResultLayoutEvents() {\n\t }\n\t return ResultLayoutEvents;\n\t}());\n\tResultLayoutEvents.populateResultLayout = 'populateResultLayout';\n\texports.ResultLayoutEvents = ResultLayoutEvents;\n\n\n/***/ },\n/* 53 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar SearchAlertsEvents = (function () {\n\t function SearchAlertsEvents() {\n\t }\n\t return SearchAlertsEvents;\n\t}());\n\tSearchAlertsEvents.searchAlertsCreated = 'searchAlertsCreated';\n\tSearchAlertsEvents.searchAlertsDeleted = 'searchAlertsDeleted';\n\tSearchAlertsEvents.searchAlertsFail = 'searchAlertsFail';\n\tSearchAlertsEvents.searchAlertsPopulateMessage = 'searchAlertsPopulateMessage';\n\texports.SearchAlertsEvents = SearchAlertsEvents;\n\n\n/***/ },\n/* 54 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar SettingsEvents = (function () {\n\t function SettingsEvents() {\n\t }\n\t return SettingsEvents;\n\t}());\n\tSettingsEvents.settingsPopulateMenu = 'settingsPopulateMenu';\n\texports.SettingsEvents = SettingsEvents;\n\n\n/***/ },\n/* 55 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar SliderEvents = (function () {\n\t function SliderEvents() {\n\t }\n\t return SliderEvents;\n\t}());\n\tSliderEvents.startSlide = 'startSlide';\n\tSliderEvents.duringSlide = 'duringSlide';\n\tSliderEvents.endSlide = 'endSlide';\n\tSliderEvents.graphValueSelected = 'graphValueSelected';\n\texports.SliderEvents = SliderEvents;\n\n\n/***/ },\n/* 56 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar StandaloneSearchInterfaceEvents = (function () {\n\t function StandaloneSearchInterfaceEvents() {\n\t }\n\t return StandaloneSearchInterfaceEvents;\n\t}());\n\tStandaloneSearchInterfaceEvents.beforeRedirect = 'beforeRedirect';\n\texports.StandaloneSearchInterfaceEvents = StandaloneSearchInterfaceEvents;\n\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ColorUtils_1 = __webpack_require__(58);\n\texports.ColorUtils = ColorUtils_1.ColorUtils;\n\tvar CookieUtils_1 = __webpack_require__(40);\n\texports.Cookie = CookieUtils_1.Cookie;\n\tvar CurrencyUtils_1 = __webpack_require__(59);\n\texports.CurrencyUtils = CurrencyUtils_1.CurrencyUtils;\n\tvar DateUtils_1 = __webpack_require__(60);\n\texports.DateUtils = DateUtils_1.DateUtils;\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\texports.DeviceUtils = DeviceUtils_1.DeviceUtils;\n\tvar Dom_1 = __webpack_require__(61);\n\texports.Dom = Dom_1.Dom;\n\texports.$$ = Dom_1.$$;\n\tvar DomUtils_1 = __webpack_require__(62);\n\texports.DomUtils = DomUtils_1.DomUtils;\n\tvar EmailUtils_1 = __webpack_require__(66);\n\texports.EmailUtils = EmailUtils_1.EmailUtils;\n\tvar HashUtils_1 = __webpack_require__(67);\n\texports.HashUtils = HashUtils_1.HashUtils;\n\tvar HighlightUtils_1 = __webpack_require__(68);\n\texports.HighlightUtils = HighlightUtils_1.HighlightUtils;\n\texports.StringAndHoles = HighlightUtils_1.StringAndHoles;\n\tvar HtmlUtils_1 = __webpack_require__(69);\n\texports.HTMLUtils = HtmlUtils_1.HTMLUtils;\n\tvar KeyboardUtils_1 = __webpack_require__(70);\n\texports.KEYBOARD = KeyboardUtils_1.KEYBOARD;\n\texports.KeyboardUtils = KeyboardUtils_1.KeyboardUtils;\n\tvar LocalStorageUtils_1 = __webpack_require__(71);\n\texports.LocalStorageUtils = LocalStorageUtils_1.LocalStorageUtils;\n\tvar OSUtils_1 = __webpack_require__(72);\n\texports.OSUtils = OSUtils_1.OSUtils;\n\texports.OS_NAME = OSUtils_1.OS_NAME;\n\tvar PopupUtils_1 = __webpack_require__(73);\n\texports.PopupUtils = PopupUtils_1.PopupUtils;\n\tvar QueryUtils_1 = __webpack_require__(23);\n\texports.QueryUtils = QueryUtils_1.QueryUtils;\n\tvar StreamHighlightUtils_1 = __webpack_require__(74);\n\texports.StreamHighlightUtils = StreamHighlightUtils_1.StreamHighlightUtils;\n\tvar StringUtils_1 = __webpack_require__(64);\n\texports.StringUtils = StringUtils_1.StringUtils;\n\tvar TimeSpanUtils_1 = __webpack_require__(17);\n\texports.TimeSpan = TimeSpanUtils_1.TimeSpan;\n\tvar Utils_1 = __webpack_require__(15);\n\texports.Utils = Utils_1.Utils;\n\n\n/***/ },\n/* 58 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ColorUtils = (function () {\n\t function ColorUtils() {\n\t }\n\t ColorUtils.hsvToRgb = function (h, s, v) {\n\t var r, g, b;\n\t var i = Math.floor(h * 6);\n\t var f = h * 6 - i;\n\t var p = v * (1 - s);\n\t var q = v * (1 - f * s);\n\t var t = v * (1 - (1 - f) * s);\n\t switch (i % 6) {\n\t case 0:\n\t r = v, g = t, b = p;\n\t break;\n\t case 1:\n\t r = q, g = v, b = p;\n\t break;\n\t case 2:\n\t r = p, g = v, b = t;\n\t break;\n\t case 3:\n\t r = p, g = q, b = v;\n\t break;\n\t case 4:\n\t r = t, g = p, b = v;\n\t break;\n\t case 5:\n\t r = v, g = p, b = q;\n\t break;\n\t }\n\t return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n\t };\n\t ColorUtils.rgbToHsv = function (r, g, b) {\n\t r = r / 255, g = g / 255, b = b / 255;\n\t var max = Math.max(r, g, b), min = Math.min(r, g, b);\n\t var h, s, v = max;\n\t var d = max - min;\n\t s = max == 0 ? 0 : d / max;\n\t if (max == min) {\n\t h = 0; // achromatic\n\t }\n\t else {\n\t switch (max) {\n\t case r:\n\t h = (g - b) / d + (g < b ? 6 : 0);\n\t break;\n\t case g:\n\t h = (b - r) / d + 2;\n\t break;\n\t case b:\n\t h = (r - g) / d + 4;\n\t break;\n\t }\n\t h /= 6;\n\t }\n\t return [h, s, v];\n\t };\n\t return ColorUtils;\n\t}());\n\texports.ColorUtils = ColorUtils;\n\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Options_1 = __webpack_require__(36);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Globalize = __webpack_require__(30);\n\tvar DefaultCurrencyToStringOptions = (function (_super) {\n\t __extends(DefaultCurrencyToStringOptions, _super);\n\t function DefaultCurrencyToStringOptions() {\n\t var _this = _super !== null && _super.apply(this, arguments) || this;\n\t _this.decimals = 0;\n\t return _this;\n\t }\n\t return DefaultCurrencyToStringOptions;\n\t}(Options_1.Options));\n\tvar CurrencyUtils = (function () {\n\t function CurrencyUtils() {\n\t }\n\t CurrencyUtils.currencyToString = function (value, options) {\n\t if (Utils_1.Utils.isNullOrUndefined(value)) {\n\t return '';\n\t }\n\t value = Number(value);\n\t Assert_1.Assert.isNumber(value);\n\t options = new DefaultCurrencyToStringOptions().merge(options);\n\t var currency = Globalize.culture().numberFormat.currency;\n\t var backup = currency.symbol;\n\t if (Utils_1.Utils.isNonEmptyString(options.symbol)) {\n\t currency.symbol = options.symbol;\n\t }\n\t var str = Globalize.format(value, 'c' + options.decimals.toString());\n\t currency.symbol = backup;\n\t return str;\n\t };\n\t return CurrencyUtils;\n\t}());\n\texports.CurrencyUtils = CurrencyUtils;\n\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Options_1 = __webpack_require__(36);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar TimeSpanUtils_1 = __webpack_require__(17);\n\tvar Globalize = __webpack_require__(30);\n\tvar _ = __webpack_require__(16);\n\tvar DefaultDateToStringOptions = (function (_super) {\n\t __extends(DefaultDateToStringOptions, _super);\n\t function DefaultDateToStringOptions() {\n\t var _this = _super !== null && _super.apply(this, arguments) || this;\n\t _this.now = new Date();\n\t _this.useTodayYesterdayAndTomorrow = true;\n\t _this.useWeekdayIfThisWeek = true;\n\t _this.omitYearIfCurrentOne = true;\n\t _this.useLongDateFormat = false;\n\t _this.includeTimeIfToday = true;\n\t _this.includeTimeIfThisWeek = true;\n\t _this.alwaysIncludeTime = false;\n\t _this.predefinedFormat = undefined;\n\t return _this;\n\t }\n\t return DefaultDateToStringOptions;\n\t}(Options_1.Options));\n\tvar DateUtils = (function () {\n\t function DateUtils() {\n\t }\n\t DateUtils.convertFromJsonDateIfNeeded = function (date) {\n\t if (_.isDate(date)) {\n\t return date;\n\t }\n\t else if (date !== null && !isNaN(Number(date))) {\n\t return new Date(Number(date));\n\t }\n\t else if (_.isString(date)) {\n\t return new Date(date.replace('@', ' '));\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t DateUtils.dateForQuery = function (date) {\n\t return date.getFullYear() + '/' + DateUtils.padNumber((date.getMonth() + 1).toString()) + '/' + DateUtils.padNumber(date.getDate().toString());\n\t };\n\t DateUtils.padNumber = function (num, length) {\n\t if (length === void 0) { length = 2; }\n\t while (num.length < length) {\n\t num = '0' + num;\n\t }\n\t return num;\n\t };\n\t DateUtils.keepOnlyDatePart = function (date) {\n\t return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\t };\n\t DateUtils.offsetDateByDays = function (date, offset) {\n\t var newDate = new Date(date.valueOf());\n\t newDate.setDate(newDate.getDate() + offset);\n\t return newDate;\n\t };\n\t DateUtils.dateToString = function (d, options) {\n\t if (Utils_1.Utils.isNullOrUndefined(d)) {\n\t return '';\n\t }\n\t options = new DefaultDateToStringOptions().merge(options);\n\t var dateOnly = DateUtils.keepOnlyDatePart(d);\n\t if (options.predefinedFormat) {\n\t return Globalize.format(dateOnly, options.predefinedFormat);\n\t }\n\t var today = DateUtils.keepOnlyDatePart(options.now);\n\t if (options.useTodayYesterdayAndTomorrow) {\n\t if (dateOnly.valueOf() == today.valueOf()) {\n\t return Strings_1.l('Today');\n\t }\n\t var tomorrow = DateUtils.offsetDateByDays(today, 1);\n\t if (dateOnly.valueOf() == tomorrow.valueOf()) {\n\t return Strings_1.l('Tomorrow');\n\t }\n\t var yesterday = DateUtils.offsetDateByDays(today, -1);\n\t if (dateOnly.valueOf() == yesterday.valueOf()) {\n\t return Strings_1.l('Yesterday');\n\t }\n\t }\n\t var isThisWeek = Math.abs(TimeSpanUtils_1.TimeSpan.fromDates(dateOnly, today).getDays()) < 7;\n\t if (options.useWeekdayIfThisWeek && isThisWeek) {\n\t if (dateOnly.valueOf() > today.valueOf()) {\n\t return Strings_1.l('NextDay', Globalize.format(dateOnly, 'dddd'));\n\t }\n\t else {\n\t return Strings_1.l('LastDay', Globalize.format(dateOnly, 'dddd'));\n\t }\n\t }\n\t if (options.omitYearIfCurrentOne && dateOnly.getFullYear() === today.getFullYear()) {\n\t return Globalize.format(dateOnly, 'M');\n\t }\n\t if (options.useLongDateFormat) {\n\t return Globalize.format(dateOnly, 'D');\n\t }\n\t return Globalize.format(dateOnly, 'd');\n\t };\n\t DateUtils.timeToString = function (date, options) {\n\t if (Utils_1.Utils.isNullOrUndefined(date)) {\n\t return '';\n\t }\n\t return Globalize.format(date, 't');\n\t };\n\t DateUtils.dateTimeToString = function (date, options) {\n\t if (Utils_1.Utils.isNullOrUndefined(date)) {\n\t return '';\n\t }\n\t options = new DefaultDateToStringOptions().merge(options);\n\t var today = DateUtils.keepOnlyDatePart(options.now);\n\t var isThisWeek = Math.abs(TimeSpanUtils_1.TimeSpan.fromDates(date, today).getDays()) < 7;\n\t var datePart = DateUtils.dateToString(date, options);\n\t var dateWithoutTime = DateUtils.keepOnlyDatePart(date);\n\t if (options.alwaysIncludeTime || (options.includeTimeIfThisWeek && isThisWeek) || (options.includeTimeIfToday && dateWithoutTime.valueOf() == today.valueOf())) {\n\t return datePart + ', ' + DateUtils.timeToString(date);\n\t }\n\t else {\n\t return datePart;\n\t }\n\t };\n\t DateUtils.monthToString = function (month) {\n\t var date = new Date(1980, month);\n\t return Globalize.format(date, 'MMMM');\n\t };\n\t DateUtils.isValid = function (date) {\n\t if (date instanceof Date) {\n\t return !isNaN(date.getTime());\n\t }\n\t return false;\n\t };\n\t DateUtils.timeBetween = function (from, to) {\n\t if (Utils_1.Utils.isNullOrUndefined(from) || Utils_1.Utils.isNullOrUndefined(to)) {\n\t return '';\n\t }\n\t return ('0' + ((to.getTime() - from.getTime()) / (1000 * 60 * 60)).toFixed()).slice(-2) +\n\t ':' + ('0' + ((to.getTime() - from.getTime()) % (1000 * 60 * 60) / (1000 * 60)).toFixed()).slice(-2) +\n\t ':' + ('0' + ((to.getTime() - from.getTime()) % (1000 * 60) / (1000)).toFixed()).slice(-2);\n\t };\n\t return DateUtils;\n\t}());\n\texports.DateUtils = DateUtils;\n\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar JQueryutils_1 = __webpack_require__(20);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * This is essentially an helper class for dom manipulation.
\n\t * This is intended to provide some basic functionality normally offered by jQuery.
\n\t * To minimize the multiple jQuery conflict we have while integrating in various system, we implemented the very small subset that the framework needs.
\n\t * See {@link $$}, which is a function that wraps this class constructor, for less verbose code.\n\t */\n\tvar Dom = (function () {\n\t /**\n\t * Create a new Dom object with the given HTMLElement\n\t * @param el The HTMLElement to wrap in a Dom object\n\t */\n\t function Dom(el) {\n\t Assert_1.Assert.exists(el);\n\t this.el = el;\n\t }\n\t /**\n\t * Helper function to quickly create an HTMLElement\n\t * @param type The type of the element (e.g. div, span)\n\t * @param props The props (id, className, attributes) of the element
\n\t * Can be either specified in dashed-case strings ('my-attribute') or camelCased keys (myAttribute),\n\t * the latter of which will automatically get replaced to dash-case.\n\t * @param innerHTML The contents of the new HTMLElement, either in string form or as another HTMLElement\n\t */\n\t Dom.createElement = function (type, props) {\n\t var children = [];\n\t for (var _i = 2; _i < arguments.length; _i++) {\n\t children[_i - 2] = arguments[_i];\n\t }\n\t var elem = document.createElement(type);\n\t for (var key in props) {\n\t if (key === 'className') {\n\t elem.className = props['className'];\n\t }\n\t else {\n\t var attr = key.indexOf('-') !== -1 ? key : Utils_1.Utils.toDashCase(key);\n\t elem.setAttribute(attr, props[key]);\n\t }\n\t }\n\t _.each(children, function (child) {\n\t if (child instanceof HTMLElement) {\n\t elem.appendChild(child);\n\t }\n\t else if (_.isString(child)) {\n\t elem.innerHTML += child;\n\t }\n\t else if (child instanceof Dom) {\n\t elem.appendChild(child.el);\n\t }\n\t });\n\t return elem;\n\t };\n\t /**\n\t * Adds the element to the children of the current element\n\t * @param element The element to append\n\t * @returns {string}\n\t */\n\t Dom.prototype.append = function (element) {\n\t this.el.appendChild(element);\n\t };\n\t /**\n\t * Get the css value of the specified property.
\n\t * @param property The property\n\t * @returns {string}\n\t */\n\t Dom.prototype.css = function (property) {\n\t if (this.el.style[property]) {\n\t return this.el.style[property];\n\t }\n\t return window.getComputedStyle(this.el).getPropertyValue(property);\n\t };\n\t /**\n\t * Get or set the text content of the HTMLElement.
\n\t * @param txt Optional. If given, this will set the text content of the element. If not, will return the text content.\n\t * @returns {string}\n\t */\n\t Dom.prototype.text = function (txt) {\n\t if (Utils_1.Utils.isUndefined(txt)) {\n\t return this.el.innerText || this.el.textContent;\n\t }\n\t else {\n\t if (this.el.innerText != undefined) {\n\t this.el.innerText = txt;\n\t }\n\t else if (this.el.textContent != undefined) {\n\t this.el.textContent = txt;\n\t }\n\t }\n\t };\n\t /**\n\t * Performant way to transform a NodeList to an array of HTMLElement, for manipulation
\n\t * http://jsperf.com/nodelist-to-array/72\n\t * @param nodeList a {NodeList} to convert to an array\n\t * @returns {HTMLElement[]}\n\t */\n\t Dom.prototype.nodeListToArray = function (nodeList) {\n\t var i = nodeList.length;\n\t var arr = new Array(i);\n\t while (i--) {\n\t arr[i] = nodeList.item(i);\n\t }\n\t return arr;\n\t };\n\t /**\n\t * Empty (remove all child) from the element;\n\t */\n\t Dom.prototype.empty = function () {\n\t while (this.el.firstChild) {\n\t this.el.removeChild(this.el.firstChild);\n\t }\n\t };\n\t /**\n\t * Empty the element and all childs from the dom;\n\t */\n\t Dom.prototype.remove = function () {\n\t this.el.parentNode.removeChild(this.el);\n\t };\n\t /**\n\t * Show the element;\n\t */\n\t Dom.prototype.show = function () {\n\t this.el.style.display = 'block';\n\t };\n\t /**\n\t * Hide the element;\n\t */\n\t Dom.prototype.hide = function () {\n\t this.el.style.display = 'none';\n\t };\n\t /**\n\t * Toggle the element visibility.
\n\t * Optional visible parameter, if specified will set the element visibility\n\t * @param visible Optional parameter to display or hide the element\n\t */\n\t Dom.prototype.toggle = function (visible) {\n\t if (visible === undefined) {\n\t if (this.el.style.display == 'block') {\n\t this.hide();\n\t }\n\t else {\n\t this.show();\n\t }\n\t }\n\t else {\n\t if (visible) {\n\t this.show();\n\t }\n\t else {\n\t this.hide();\n\t }\n\t }\n\t };\n\t /**\n\t * Returns the value of the specified attribute.\n\t * @param name The name of the attribute\n\t */\n\t Dom.prototype.getAttribute = function (name) {\n\t return this.el.getAttribute(name);\n\t };\n\t /**\n\t * Sets the value of the specified attribute.\n\t * @param name The name of the attribute\n\t * @param value The value to set\n\t */\n\t Dom.prototype.setAttribute = function (name, value) {\n\t this.el.setAttribute(name, value);\n\t };\n\t /**\n\t * Find a child element, given a CSS selector\n\t * @param selector A CSS selector, can be a .className or #id\n\t * @returns {HTMLElement}\n\t */\n\t Dom.prototype.find = function (selector) {\n\t return this.el.querySelector(selector);\n\t };\n\t /**\n\t * Check if the element match the selector.
\n\t * The selector can be a class, an id or a tag.
\n\t * Eg : .is('.foo') or .is('#foo') or .is('div').\n\t */\n\t Dom.prototype.is = function (selector) {\n\t if (this.el.tagName.toLowerCase() == selector.toLowerCase()) {\n\t return true;\n\t }\n\t if (selector[0] == '.') {\n\t if (this.hasClass(selector.substr(1))) {\n\t return true;\n\t }\n\t }\n\t if (selector[0] == '#') {\n\t if (this.el.getAttribute('id') == selector.substr(1)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t };\n\t /**\n\t * Get the first element that matches the classname by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t *\n\t * Stops at the body of the document\n\t * @param className A CSS classname\n\t */\n\t Dom.prototype.closest = function (className) {\n\t return this.traverseAncestorForClass(this.el, className);\n\t };\n\t /**\n\t * Get the first element that matches the classname by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t *\n\t * Stops at the body of the document\n\t * @returns {any}\n\t */\n\t Dom.prototype.parent = function (className) {\n\t if (this.el.parentElement == undefined) {\n\t return undefined;\n\t }\n\t return this.traverseAncestorForClass(this.el.parentElement, className);\n\t };\n\t /**\n\t * Get all the ancestors of the current element that match the given className\n\t *\n\t * Return an empty array if none found.\n\t * @param className\n\t * @returns {HTMLElement[]}\n\t */\n\t Dom.prototype.parents = function (className) {\n\t var parentsFound = [];\n\t var parentFound = this.parent(className);\n\t while (parentFound) {\n\t parentsFound.push(parentFound);\n\t parentFound = new Dom(parentFound).parent(className);\n\t }\n\t return parentsFound;\n\t };\n\t /**\n\t * Return all children\n\t * @returns {HTMLElement[]}\n\t */\n\t Dom.prototype.children = function () {\n\t return this.nodeListToArray(this.el.children);\n\t };\n\t /**\n\t * Return all siblings\n\t * @returns {HTMLElement[]}\n\t */\n\t Dom.prototype.siblings = function (selector) {\n\t var sibs = [];\n\t var currentElement = this.el.parentNode.firstChild;\n\t for (; currentElement; currentElement = currentElement.nextSibling) {\n\t if (currentElement != this.el) {\n\t if (this.matches(currentElement, selector) || !selector) {\n\t sibs.push(currentElement);\n\t }\n\t }\n\t }\n\t return sibs;\n\t };\n\t Dom.prototype.matches = function (element, selector) {\n\t var all = document.querySelectorAll(selector);\n\t for (var i = 0; i < all.length; i++) {\n\t if (all[i] === element) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t };\n\t /**\n\t * Find all children that match the given CSS selector\n\t * @param selector A CSS selector, can be a .className\n\t * @returns {HTMLElement[]}\n\t */\n\t Dom.prototype.findAll = function (selector) {\n\t return this.nodeListToArray(this.el.querySelectorAll(selector));\n\t };\n\t /**\n\t * Find the child elements using a className\n\t * @param className Class of the childs elements to find\n\t * @returns {HTMLElement[]}\n\t */\n\t Dom.prototype.findClass = function (className) {\n\t if ('getElementsByClassName' in this.el) {\n\t return this.nodeListToArray(this.el.getElementsByClassName(className));\n\t }\n\t // For ie 8\n\t return this.nodeListToArray(this.el.querySelectorAll('.' + className));\n\t };\n\t /**\n\t * Find an element using an ID\n\t * @param id ID of the element to find\n\t * @returns {HTMLElement}\n\t */\n\t Dom.prototype.findId = function (id) {\n\t return document.getElementById(id);\n\t };\n\t Dom.prototype.addClass = function (className) {\n\t var _this = this;\n\t if (_.isArray(className)) {\n\t _.each(className, function (name) {\n\t _this.addClass(name);\n\t });\n\t }\n\t else {\n\t if (!this.hasClass(className)) {\n\t if (this.el.className) {\n\t this.el.className += ' ' + className;\n\t }\n\t else {\n\t this.el.className = className;\n\t }\n\t }\n\t }\n\t };\n\t /**\n\t * Remove the class on the element. Works even if the element does not possess the class.\n\t * @param className Classname to remove on the the element\n\t */\n\t Dom.prototype.removeClass = function (className) {\n\t this.el.className = this.el.className.replace(new RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|\\\\b)\", 'g'), '$1').trim();\n\t };\n\t /**\n\t * Toggle the class on the element.\n\t * @param className Classname to toggle\n\t * @swtch If true, add the class regardless and if false, remove the class\n\t */\n\t Dom.prototype.toggleClass = function (className, swtch) {\n\t if (Utils_1.Utils.isNullOrUndefined(swtch)) {\n\t if (this.hasClass(className)) {\n\t this.removeClass(className);\n\t }\n\t else {\n\t this.addClass(className);\n\t }\n\t }\n\t else {\n\t if (swtch) {\n\t this.addClass(className);\n\t }\n\t else {\n\t this.removeClass(className);\n\t }\n\t }\n\t };\n\t /**\n\t * Sets the inner html of the element\n\t * @param html The html to set\n\t */\n\t Dom.prototype.setHtml = function (html) {\n\t this.el.innerHTML = html;\n\t };\n\t /**\n\t * Return an array with all the classname on the element. Empty array if the element has not classname\n\t * @returns {any|Array}\n\t */\n\t Dom.prototype.getClass = function () {\n\t return this.el.className.match(Dom.CLASS_NAME_REGEX) || [];\n\t };\n\t /**\n\t * Check if the element has the given class name\n\t * @param className Classname to verify\n\t * @returns {boolean}\n\t */\n\t Dom.prototype.hasClass = function (className) {\n\t return _.contains(this.getClass(), className);\n\t };\n\t /**\n\t * Detach the element from the DOM.\n\t */\n\t Dom.prototype.detach = function () {\n\t this.el.parentElement && this.el.parentElement.removeChild(this.el);\n\t };\n\t /**\n\t * Insert the current node after the given reference node\n\t * @param refNode\n\t */\n\t Dom.prototype.insertAfter = function (refNode) {\n\t refNode.parentNode && refNode.parentNode.insertBefore(this.el, refNode.nextSibling);\n\t };\n\t /**\n\t * Insert the current node before the given reference node\n\t * @param refNode\n\t */\n\t Dom.prototype.insertBefore = function (refNode) {\n\t refNode.parentNode && refNode.parentNode.insertBefore(this.el, refNode);\n\t };\n\t /**\n\t * Insert the given node as the first child of the current node\n\t * @param toPrepend\n\t */\n\t Dom.prototype.prepend = function (toPrepend) {\n\t if (this.el.firstChild) {\n\t new Dom(toPrepend).insertBefore(this.el.firstChild);\n\t }\n\t else {\n\t this.el.appendChild(toPrepend);\n\t }\n\t };\n\t Dom.prototype.on = function (type, eventHandle) {\n\t var _this = this;\n\t if (_.isArray(type)) {\n\t _.each(type, function (t) {\n\t _this.on(t, eventHandle);\n\t });\n\t }\n\t else {\n\t var modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n\t var jq = JQueryutils_1.JQueryUtils.getJQuery();\n\t if (jq) {\n\t jq(this.el).on(modifiedType, eventHandle);\n\t }\n\t else if (this.el.addEventListener) {\n\t var fn = function (e) {\n\t eventHandle(e, e.detail);\n\t };\n\t Dom.handlers.push({\n\t eventHandle: eventHandle,\n\t fn: fn\n\t });\n\t this.el.addEventListener(modifiedType, fn, false);\n\t }\n\t else if (this.el['on']) {\n\t this.el['on']('on' + modifiedType, eventHandle);\n\t }\n\t }\n\t };\n\t Dom.prototype.one = function (type, eventHandle) {\n\t var _this = this;\n\t if (_.isArray(type)) {\n\t _.each(type, function (t) {\n\t _this.one(t, eventHandle);\n\t });\n\t }\n\t else {\n\t var modifiedType_1 = this.processEventTypeToBeJQueryCompatible(type);\n\t var once_1 = function (e, args) {\n\t _this.off(modifiedType_1, once_1);\n\t return eventHandle(e, args);\n\t };\n\t this.on(modifiedType_1, once_1);\n\t }\n\t };\n\t Dom.prototype.off = function (type, eventHandle) {\n\t var _this = this;\n\t if (_.isArray(type)) {\n\t _.each(type, function (t) {\n\t _this.off(t, eventHandle);\n\t });\n\t }\n\t else {\n\t var modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n\t var jq = JQueryutils_1.JQueryUtils.getJQuery();\n\t if (jq) {\n\t jq(this.el).off(modifiedType, eventHandle);\n\t }\n\t else if (this.el.removeEventListener) {\n\t var idx_1 = 0;\n\t var found = _.find(Dom.handlers, function (handlerObj, i) {\n\t if (handlerObj.eventHandle == eventHandle) {\n\t idx_1 = i;\n\t return true;\n\t }\n\t });\n\t if (found) {\n\t this.el.removeEventListener(modifiedType, found.fn, false);\n\t Dom.handlers.splice(idx_1, 1);\n\t }\n\t }\n\t else if (this.el['off']) {\n\t this.el['off']('on' + modifiedType, eventHandle);\n\t }\n\t }\n\t };\n\t /**\n\t * Trigger an event on the element.\n\t * @param type The event type to trigger\n\t * @param data\n\t */\n\t Dom.prototype.trigger = function (type, data) {\n\t var modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n\t var jq = JQueryutils_1.JQueryUtils.getJQuery();\n\t if (jq) {\n\t jq(this.el).trigger(modifiedType, data);\n\t }\n\t else if (CustomEvent !== undefined) {\n\t var event_1 = new CustomEvent(modifiedType, { detail: data, bubbles: true });\n\t this.el.dispatchEvent(event_1);\n\t }\n\t else {\n\t new Logger_1.Logger(this).error('CANNOT TRIGGER EVENT FOR OLDER BROWSER');\n\t }\n\t };\n\t /**\n\t * Check if the element is \"empty\" (has no innerHTML content). Whitespace is considered empty
\n\t * @returns {boolean}\n\t */\n\t Dom.prototype.isEmpty = function () {\n\t return Dom.ONLY_WHITE_SPACE_REGEX.test(this.el.innerHTML);\n\t };\n\t /**\n\t * Check if the element is a descendant of parent\n\t * @param other\n\t */\n\t Dom.prototype.isDescendant = function (parent) {\n\t var node = this.el.parentNode;\n\t while (node != null) {\n\t if (node == parent) {\n\t return true;\n\t }\n\t node = node.parentNode;\n\t }\n\t return false;\n\t };\n\t /**\n\t * Replace the current element with the other element, then detach the current element\n\t * @param otherElem\n\t */\n\t Dom.prototype.replaceWith = function (otherElem) {\n\t var parent = this.el.parentNode;\n\t if (parent) {\n\t new Dom(otherElem).insertAfter(this.el);\n\t }\n\t this.detach();\n\t };\n\t // based on http://api.jquery.com/position/\n\t /**\n\t * Return the position relative to the offset parent.\n\t */\n\t Dom.prototype.position = function () {\n\t var offsetParent = this.offsetParent();\n\t var offset = this.offset();\n\t var parentOffset = { top: 0, left: 0 };\n\t if (!$$(offsetParent).is('html')) {\n\t parentOffset = $$(offsetParent).offset();\n\t }\n\t var borderTopWidth = parseInt($$(offsetParent).css('borderTopWidth'));\n\t var borderLeftWidth = parseInt($$(offsetParent).css('borderLeftWidth'));\n\t borderTopWidth = isNaN(borderTopWidth) ? 0 : borderTopWidth;\n\t borderLeftWidth = isNaN(borderLeftWidth) ? 0 : borderLeftWidth;\n\t parentOffset = {\n\t top: parentOffset.top + borderTopWidth,\n\t left: parentOffset.left + borderLeftWidth\n\t };\n\t var marginTop = parseInt(this.css('marginTop'));\n\t var marginLeft = parseInt(this.css('marginLeft'));\n\t marginTop = isNaN(marginTop) ? 0 : marginTop;\n\t marginLeft = isNaN(marginLeft) ? 0 : marginLeft;\n\t return {\n\t top: offset.top - parentOffset.top - marginTop,\n\t left: offset.left - parentOffset.left - marginLeft\n\t };\n\t };\n\t // based on https://api.jquery.com/offsetParent/\n\t /**\n\t * Returns the offset parent. The offset parent is the closest parent that is positioned.\n\t * An element is positioned when its position property is not 'static', which is the default.\n\t */\n\t Dom.prototype.offsetParent = function () {\n\t var offsetParent = this.el.offsetParent;\n\t while (offsetParent instanceof HTMLElement && $$(offsetParent).css('position') === 'static') {\n\t // Will break out if it stumbles upon an non-HTMLElement and return documentElement\n\t offsetParent = offsetParent.offsetParent;\n\t }\n\t if (!(offsetParent instanceof HTMLElement)) {\n\t return document.documentElement;\n\t }\n\t return offsetParent;\n\t };\n\t // based on http://api.jquery.com/offset/\n\t /**\n\t * Return the position relative to the document.\n\t */\n\t Dom.prototype.offset = function () {\n\t // In <=IE11, calling getBoundingClientRect on a disconnected node throws an error\n\t if (!this.el.getClientRects().length) {\n\t return { top: 0, left: 0 };\n\t }\n\t var rect = this.el.getBoundingClientRect();\n\t if (rect.width || rect.height) {\n\t var doc = this.el.ownerDocument;\n\t var docElem = doc.documentElement;\n\t return {\n\t top: rect.top + window.pageYOffset - docElem.clientTop,\n\t left: rect.left + window.pageXOffset - docElem.clientLeft\n\t };\n\t }\n\t return rect;\n\t };\n\t /**\n\t * Returns the offset width of the element\n\t */\n\t Dom.prototype.width = function () {\n\t return this.el.offsetWidth;\n\t };\n\t /**\n\t * Returns the offset height of the element\n\t */\n\t Dom.prototype.height = function () {\n\t return this.el.offsetHeight;\n\t };\n\t /**\n\t * Clone the node\n\t * @param deep true if the children of the node should also be cloned, or false to clone only the specified node.\n\t * @returns {Dom}\n\t */\n\t Dom.prototype.clone = function (deep) {\n\t if (deep === void 0) { deep = false; }\n\t return $$(this.el.cloneNode(deep));\n\t };\n\t Dom.prototype.processEventTypeToBeJQueryCompatible = function (event) {\n\t // From https://api.jquery.com/on/\n\t // [...]\n\t // > In addition, the .trigger() method can trigger both standard browser event names and custom event names to call attached handlers. Event names should only contain alphanumerics, underscore, and colon characters.\n\t if (event) {\n\t return event.replace(/[^a-zA-Z0-9\\:\\_]/g, '');\n\t }\n\t return event;\n\t };\n\t Dom.prototype.traverseAncestorForClass = function (current, className) {\n\t if (current === void 0) { current = this.el; }\n\t if (className.indexOf('.') == 0) {\n\t className = className.substr(1);\n\t }\n\t var found = false;\n\t while (!found) {\n\t if ($$(current).hasClass(className)) {\n\t found = true;\n\t }\n\t if (current.tagName.toLowerCase() == 'body') {\n\t break;\n\t }\n\t if (current.parentElement == null) {\n\t break;\n\t }\n\t if (!found) {\n\t current = current.parentElement;\n\t }\n\t }\n\t if (found) {\n\t return current;\n\t }\n\t return undefined;\n\t };\n\t return Dom;\n\t}());\n\tDom.CLASS_NAME_REGEX = /-?[_a-zA-Z]+[_a-zA-Z0-9-]*/g;\n\tDom.ONLY_WHITE_SPACE_REGEX = /^\\s*$/;\n\tDom.handlers = [];\n\texports.Dom = Dom;\n\tvar Win = (function () {\n\t function Win(win) {\n\t this.win = win;\n\t }\n\t Win.prototype.height = function () {\n\t return this.win.innerHeight;\n\t };\n\t Win.prototype.width = function () {\n\t return this.win.innerWidth;\n\t };\n\t Win.prototype.scrollY = function () {\n\t return this.supportPageOffset() ? this.win.pageYOffset : this.isCSS1Compat() ? this.win.document.documentElement.scrollTop : this.win.document.body.scrollTop;\n\t };\n\t Win.prototype.scrollX = function () {\n\t return this.supportPageOffset() ? window.pageXOffset : this.isCSS1Compat() ? document.documentElement.scrollLeft : document.body.scrollLeft;\n\t };\n\t Win.prototype.isCSS1Compat = function () {\n\t return (this.win.document.compatMode || '') === 'CSS1Compat';\n\t };\n\t Win.prototype.supportPageOffset = function () {\n\t return this.win.pageXOffset !== undefined;\n\t };\n\t return Win;\n\t}());\n\texports.Win = Win;\n\tvar Doc = (function () {\n\t function Doc(doc) {\n\t this.doc = doc;\n\t }\n\t Doc.prototype.height = function () {\n\t var body = this.doc.body;\n\t return Math.max(body.scrollHeight, body.offsetHeight);\n\t };\n\t Doc.prototype.width = function () {\n\t var body = this.doc.body;\n\t return Math.max(body.scrollWidth, body.offsetWidth);\n\t };\n\t return Doc;\n\t}());\n\texports.Doc = Doc;\n\tfunction $$() {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t if (args.length === 1 && args[0] instanceof Dom) {\n\t return args[0];\n\t }\n\t else if (args.length === 1 && (!_.isString(args[0]))) {\n\t return new Dom(args[0]);\n\t }\n\t else {\n\t return new Dom(Dom.createElement.apply(Dom, args));\n\t }\n\t}\n\texports.$$ = $$;\n\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar DateUtils_1 = __webpack_require__(60);\n\tvar FileTypes_1 = __webpack_require__(63);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar DomUtils = (function () {\n\t function DomUtils() {\n\t }\n\t DomUtils.getPopUpCloseButton = function (captionForClose, captionForReminder) {\n\t var container = document.createElement('span');\n\t var closeButton = document.createElement('span');\n\t Dom_1.$$(closeButton).addClass('coveo-close-button');\n\t container.appendChild(closeButton);\n\t var iconClose = document.createElement('span');\n\t Dom_1.$$(iconClose).addClass('coveo-icon');\n\t Dom_1.$$(iconClose).addClass('coveo-sprites-quickview-close');\n\t closeButton.appendChild(iconClose);\n\t Dom_1.$$(closeButton).text(captionForClose);\n\t var closeReminder = document.createElement('span');\n\t Dom_1.$$(closeReminder).addClass('coveo-pop-up-reminder');\n\t Dom_1.$$(closeReminder).text(captionForReminder);\n\t container.appendChild(closeReminder);\n\t return container.outerHTML;\n\t };\n\t DomUtils.getBasicLoadingAnimation = function () {\n\t var loadDotClass = 'coveo-loading-dot';\n\t var dom = document.createElement('div');\n\t dom.className = 'coveo-first-loading-animation';\n\t dom.innerHTML = \"\\n
\\n
\\n
\\n
\\n
\\n
\";\n\t return dom;\n\t };\n\t DomUtils.highlightElement = function (initialString, valueToSearch) {\n\t var regex = new RegExp(Utils_1.Utils.escapeRegexCharacter(StringUtils_1.StringUtils.latinize(valueToSearch)), 'i');\n\t var firstChar = StringUtils_1.StringUtils.latinize(initialString).search(regex);\n\t var lastChar = firstChar + valueToSearch.length;\n\t return StringUtils_1.StringUtils.htmlEncode(initialString.slice(0, firstChar)) + \"\" + StringUtils_1.StringUtils.htmlEncode(initialString.slice(firstChar, lastChar)) + \"\" + StringUtils_1.StringUtils.htmlEncode(initialString.slice(lastChar));\n\t };\n\t DomUtils.getLoadingSpinner = function () {\n\t var loading = Dom_1.$$('div', {\n\t className: 'coveo-loading-spinner'\n\t });\n\t return loading.el;\n\t };\n\t DomUtils.getModalBoxHeader = function (title) {\n\t var header = Dom_1.$$('div');\n\t header.el.innerHTML = \"
\\n \\n \\n \\n
\\n
\\n \" + (title || '') + \"\\n
\";\n\t return header;\n\t };\n\t DomUtils.getQuickviewHeader = function (result, options, bindings) {\n\t var date = '';\n\t if (options.showDate) {\n\t date = DateUtils_1.DateUtils.dateTimeToString(new Date(Utils_1.Utils.getFieldValue(result, 'date')));\n\t }\n\t var fileType = FileTypes_1.FileTypes.get(result);\n\t var header = Dom_1.$$('div');\n\t header.el.innerHTML = \"
\\n \" + date + \"\\n \\n \\n \\n
\\n \";\n\t new Coveo[Coveo['Salesforce'] ? 'SalesforceResultLink' : 'ResultLink'](header.find('.coveo-quickview-pop-up-reminder'), undefined, bindings, result);\n\t return header;\n\t };\n\t return DomUtils;\n\t}());\n\texports.DomUtils = DomUtils;\n\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar _ = __webpack_require__(16);\n\t// On-demand mapping of file types to captions. Used by facets, but I don't\n\t// really like this. Maybe a dedicated filetype facet would be better? Hmm...\n\tvar fileTypeCaptions;\n\tvar FileTypes = (function () {\n\t function FileTypes() {\n\t }\n\t FileTypes.get = function (result) {\n\t var objecttype = Utils_1.Utils.getFieldValue(result, 'objecttype');\n\t var filetype = Utils_1.Utils.getFieldValue(result, 'filetype');\n\t // When @objecttype is File we fallback on @filetype for icons and such\n\t if (Utils_1.Utils.isNonEmptyString(objecttype) && objecttype.toLowerCase() != 'file') {\n\t return FileTypes.getObjectType(objecttype);\n\t }\n\t else if (Utils_1.Utils.isNonEmptyString(filetype)) {\n\t return FileTypes.getFileType(filetype);\n\t }\n\t else {\n\t return {\n\t // This will render a default icon. Really it should not happen.\n\t icon: 'coveo-icon filetype',\n\t caption: Strings_1.l('Unknown')\n\t };\n\t }\n\t };\n\t FileTypes.getObjectType = function (objecttype) {\n\t // We must use lowercase filetypes because that's how the CSS classes\n\t // are generated (they are case sensitive, alas).\n\t objecttype = objecttype.toLowerCase();\n\t var variableValue = \"objecttype_\" + objecttype;\n\t // Most object types have a set of localized strings in the main dictionary\n\t var localizedString = Strings_1.l(variableValue);\n\t return {\n\t 'icon': 'coveo-icon objecttype ' + objecttype.replace(' ', '-'),\n\t caption: localizedString != variableValue ? localizedString : objecttype\n\t };\n\t };\n\t FileTypes.getFileType = function (filetype) {\n\t // We must use lowercase filetypes because that's how the CSS classes\n\t // are generated (they are case sensitive, alas).\n\t filetype = filetype.toLowerCase();\n\t // Sometimes, filetype begins with a period (typically means the index has\n\t // no idea and uses the file extension as a filetype).\n\t if (filetype[0] == '.') {\n\t filetype = filetype.substring(1);\n\t }\n\t var variableValue = \"filetype_\" + filetype;\n\t // Most filetypes have a set of localized strings in the main dictionary\n\t var localizedString = Strings_1.l(variableValue);\n\t return {\n\t 'icon': 'coveo-icon filetype ' + filetype.replace(' ', '-'),\n\t caption: localizedString != variableValue ? localizedString : filetype\n\t };\n\t };\n\t FileTypes.getFileTypeCaptions = function () {\n\t if (fileTypeCaptions == undefined) {\n\t fileTypeCaptions = {};\n\t var strings = String['locales'][String['locale'].toLowerCase()];\n\t Assert_1.Assert.isNotUndefined(strings);\n\t _.each(_.keys(strings), function (key) {\n\t if (key.indexOf('filetype_') == 0) {\n\t fileTypeCaptions[key.substr('filetype_'.length)] = key.toLocaleString();\n\t }\n\t else if (key.indexOf('objecttype_') == 0) {\n\t fileTypeCaptions[key.substr('objecttype_'.length)] = key.toLocaleString();\n\t }\n\t });\n\t }\n\t return fileTypeCaptions;\n\t };\n\t return FileTypes;\n\t}());\n\texports.FileTypes = FileTypes;\n\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar latinize = __webpack_require__(65);\n\tvar _ = __webpack_require__(16);\n\tvar StringUtils = (function () {\n\t function StringUtils() {\n\t }\n\t StringUtils.javascriptEncode = function (value) {\n\t Assert_1.Assert.isString(value);\n\t value = value.replace(/\\\\/g, '\\\\\\\\');\n\t value = value.replace(/'/g, '\\\\\\'');\n\t value = value.replace(/\"/g, '\\\\\"');\n\t return value;\n\t };\n\t StringUtils.htmlEncode = function (value) {\n\t Assert_1.Assert.isString(value);\n\t var div = Dom_1.$$('div');\n\t div.text(value);\n\t return div.el.innerHTML;\n\t };\n\t StringUtils.splice = function (value, index, remove, toAdd) {\n\t return value.slice(0, index) + toAdd + value.slice(index + Math.abs(remove));\n\t };\n\t StringUtils.removeMiddle = function (value, length, toAdd) {\n\t if (value.length < length) {\n\t return value;\n\t }\n\t var toRemove = value.length - length;\n\t var index = Math.floor(length / 2);\n\t return StringUtils.splice(value, index, toRemove, toAdd);\n\t };\n\t StringUtils.regexEncode = function (value) {\n\t Assert_1.Assert.isString(value);\n\t return value.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n\t };\n\t StringUtils.stringToRegex = function (value, ignoreAccent) {\n\t if (ignoreAccent === void 0) { ignoreAccent = false; }\n\t Assert_1.Assert.isString(value);\n\t var encoded = StringUtils.regexEncode(value);\n\t if (ignoreAccent) {\n\t return _.map(encoded, function (char) {\n\t var regexp = _.find(StringUtils.accented, function (regexp) { return char.match(regexp) != null; });\n\t if (regexp) {\n\t return regexp.source;\n\t }\n\t return char;\n\t }).join('');\n\t }\n\t return encoded;\n\t };\n\t StringUtils.wildcardsToRegex = function (value, ignoreAccent) {\n\t if (ignoreAccent === void 0) { ignoreAccent = false; }\n\t Assert_1.Assert.isString(value);\n\t var encoded = StringUtils.stringToRegex(value, ignoreAccent);\n\t encoded = encoded.replace(/\\\\\\*/, '.*');\n\t encoded = encoded.replace(/\\\\\\?/, '.');\n\t return encoded;\n\t };\n\t StringUtils.getHighlights = function (strToSearch, regexToFind, dataHighlightGroupTerm) {\n\t var match, indexes = [];\n\t while (match = regexToFind.exec(strToSearch)) {\n\t var desiredMatch = match[2];\n\t var undesiredMatch = match[1];\n\t var offset = match.index + undesiredMatch.length;\n\t indexes.push({ offset: offset, length: desiredMatch.length, dataHighlightGroupTerm: dataHighlightGroupTerm });\n\t if (!regexToFind.global) {\n\t break;\n\t }\n\t }\n\t return _.isEmpty(indexes) ? undefined : indexes;\n\t };\n\t StringUtils.encodeCarriageReturn = function (strToEncode) {\n\t Assert_1.Assert.isString(strToEncode);\n\t return strToEncode.replace(/\\n/g, '
');\n\t };\n\t StringUtils.equalsCaseInsensitive = function (str1, str2) {\n\t return str1.toLowerCase() == str2.toLowerCase();\n\t };\n\t StringUtils.match = function (value, regex) {\n\t var results = [];\n\t var arr;\n\t while ((arr = regex.exec(value)) !== null) {\n\t results.push(arr);\n\t }\n\t return results;\n\t };\n\t StringUtils.hashCode = function (str) {\n\t var hash = 0;\n\t var len = str.length;\n\t for (var i = 0; i < len; i++) {\n\t var char = str.charCodeAt(i);\n\t hash = ((hash << 5) - hash) + char;\n\t hash = hash & hash; // Convert to 32bit integer\n\t }\n\t return hash.toString(16);\n\t };\n\t // http://stackoverflow.com/a/25575009\n\t StringUtils.latinize = function (str) {\n\t return latinize(str);\n\t };\n\t StringUtils.capitalizeFirstLetter = function (str) {\n\t return str.charAt(0).toUpperCase() + str.slice(1);\n\t };\n\t return StringUtils;\n\t}());\n\tStringUtils.accented = {\n\t 'A': /[Aa\\xaa\\xc0-\\xc5\\xe0-\\xe5\\u0100-\\u0105\\u01cd\\u01ce\\u0200-\\u0203\\u0226\\u0227\\u1d2c\\u1d43\\u1e00\\u1e01\\u1e9a\\u1ea0-\\u1ea3\\u2090\\u2100\\u2101\\u213b\\u249c\\u24b6\\u24d0\\u3371-\\u3374\\u3380-\\u3384\\u3388\\u3389\\u33a9-\\u33af\\u33c2\\u33ca\\u33df\\u33ff\\uff21\\uff41]/g,\n\t 'B': /[Bb\\u1d2e\\u1d47\\u1e02-\\u1e07\\u212c\\u249d\\u24b7\\u24d1\\u3374\\u3385-\\u3387\\u33c3\\u33c8\\u33d4\\u33dd\\uff22\\uff42]/g,\n\t 'C': /[Cc\\xc7\\xe7\\u0106-\\u010d\\u1d9c\\u2100\\u2102\\u2103\\u2105\\u2106\\u212d\\u216d\\u217d\\u249e\\u24b8\\u24d2\\u3376\\u3388\\u3389\\u339d\\u33a0\\u33a4\\u33c4-\\u33c7\\uff23\\uff43]/g,\n\t 'D': /[Dd\\u010e\\u010f\\u01c4-\\u01c6\\u01f1-\\u01f3\\u1d30\\u1d48\\u1e0a-\\u1e13\\u2145\\u2146\\u216e\\u217e\\u249f\\u24b9\\u24d3\\u32cf\\u3372\\u3377-\\u3379\\u3397\\u33ad-\\u33af\\u33c5\\u33c8\\uff24\\uff44]/g,\n\t 'E': /[Ee\\xc8-\\xcb\\xe8-\\xeb\\u0112-\\u011b\\u0204-\\u0207\\u0228\\u0229\\u1d31\\u1d49\\u1e18-\\u1e1b\\u1eb8-\\u1ebd\\u2091\\u2121\\u212f\\u2130\\u2147\\u24a0\\u24ba\\u24d4\\u3250\\u32cd\\u32ce\\uff25\\uff45]/g,\n\t 'F': /[Ff\\u1da0\\u1e1e\\u1e1f\\u2109\\u2131\\u213b\\u24a1\\u24bb\\u24d5\\u338a-\\u338c\\u3399\\ufb00-\\ufb04\\uff26\\uff46]/g,\n\t 'G': /[Gg\\u011c-\\u0123\\u01e6\\u01e7\\u01f4\\u01f5\\u1d33\\u1d4d\\u1e20\\u1e21\\u210a\\u24a2\\u24bc\\u24d6\\u32cc\\u32cd\\u3387\\u338d-\\u338f\\u3393\\u33ac\\u33c6\\u33c9\\u33d2\\u33ff\\uff27\\uff47]/g,\n\t 'H': /[Hh\\u0124\\u0125\\u021e\\u021f\\u02b0\\u1d34\\u1e22-\\u1e2b\\u1e96\\u210b-\\u210e\\u24a3\\u24bd\\u24d7\\u32cc\\u3371\\u3390-\\u3394\\u33ca\\u33cb\\u33d7\\uff28\\uff48]/g,\n\t 'I': /[Ii\\xcc-\\xcf\\xec-\\xef\\u0128-\\u0130\\u0132\\u0133\\u01cf\\u01d0\\u0208-\\u020b\\u1d35\\u1d62\\u1e2c\\u1e2d\\u1ec8-\\u1ecb\\u2071\\u2110\\u2111\\u2139\\u2148\\u2160-\\u2163\\u2165-\\u2168\\u216a\\u216b\\u2170-\\u2173\\u2175-\\u2178\\u217a\\u217b\\u24a4\\u24be\\u24d8\\u337a\\u33cc\\u33d5\\ufb01\\ufb03\\uff29\\uff49]/g,\n\t 'J': /[Jj\\u0132-\\u0135\\u01c7-\\u01cc\\u01f0\\u02b2\\u1d36\\u2149\\u24a5\\u24bf\\u24d9\\u2c7c\\uff2a\\uff4a]/g,\n\t 'K': /[Kk\\u0136\\u0137\\u01e8\\u01e9\\u1d37\\u1d4f\\u1e30-\\u1e35\\u212a\\u24a6\\u24c0\\u24da\\u3384\\u3385\\u3389\\u338f\\u3391\\u3398\\u339e\\u33a2\\u33a6\\u33aa\\u33b8\\u33be\\u33c0\\u33c6\\u33cd-\\u33cf\\uff2b\\uff4b]/g,\n\t 'L': /[Ll\\u0139-\\u0140\\u01c7-\\u01c9\\u02e1\\u1d38\\u1e36\\u1e37\\u1e3a-\\u1e3d\\u2112\\u2113\\u2121\\u216c\\u217c\\u24a7\\u24c1\\u24db\\u32cf\\u3388\\u3389\\u33d0-\\u33d3\\u33d5\\u33d6\\u33ff\\ufb02\\ufb04\\uff2c\\uff4c]/g,\n\t 'M': /[Mm\\u1d39\\u1d50\\u1e3e-\\u1e43\\u2120\\u2122\\u2133\\u216f\\u217f\\u24a8\\u24c2\\u24dc\\u3377-\\u3379\\u3383\\u3386\\u338e\\u3392\\u3396\\u3399-\\u33a8\\u33ab\\u33b3\\u33b7\\u33b9\\u33bd\\u33bf\\u33c1\\u33c2\\u33ce\\u33d0\\u33d4-\\u33d6\\u33d8\\u33d9\\u33de\\u33df\\uff2d\\uff4d]/g,\n\t 'N': /[Nn\\xd1\\xf1\\u0143-\\u0149\\u01ca-\\u01cc\\u01f8\\u01f9\\u1d3a\\u1e44-\\u1e4b\\u207f\\u2115\\u2116\\u24a9\\u24c3\\u24dd\\u3381\\u338b\\u339a\\u33b1\\u33b5\\u33bb\\u33cc\\u33d1\\uff2e\\uff4e]/g,\n\t 'O': /[Oo\\xba\\xd2-\\xd6\\xf2-\\xf6\\u014c-\\u0151\\u01a0\\u01a1\\u01d1\\u01d2\\u01ea\\u01eb\\u020c-\\u020f\\u022e\\u022f\\u1d3c\\u1d52\\u1ecc-\\u1ecf\\u2092\\u2105\\u2116\\u2134\\u24aa\\u24c4\\u24de\\u3375\\u33c7\\u33d2\\u33d6\\uff2f\\uff4f]/g,\n\t 'P': /[Pp\\u1d3e\\u1d56\\u1e54-\\u1e57\\u2119\\u24ab\\u24c5\\u24df\\u3250\\u3371\\u3376\\u3380\\u338a\\u33a9-\\u33ac\\u33b0\\u33b4\\u33ba\\u33cb\\u33d7-\\u33da\\uff30\\uff50]/g,\n\t 'Q': /[Qq\\u211a\\u24ac\\u24c6\\u24e0\\u33c3\\uff31\\uff51]/g,\n\t 'R': /[Rr\\u0154-\\u0159\\u0210-\\u0213\\u02b3\\u1d3f\\u1d63\\u1e58-\\u1e5b\\u1e5e\\u1e5f\\u20a8\\u211b-\\u211d\\u24ad\\u24c7\\u24e1\\u32cd\\u3374\\u33ad-\\u33af\\u33da\\u33db\\uff32\\uff52]/g,\n\t 'S': /[Ss\\u015a-\\u0161\\u017f\\u0218\\u0219\\u02e2\\u1e60-\\u1e63\\u20a8\\u2101\\u2120\\u24ae\\u24c8\\u24e2\\u33a7\\u33a8\\u33ae-\\u33b3\\u33db\\u33dc\\ufb06\\uff33\\uff53]/g,\n\t 'T': /[Tt\\u0162-\\u0165\\u021a\\u021b\\u1d40\\u1d57\\u1e6a-\\u1e71\\u1e97\\u2121\\u2122\\u24af\\u24c9\\u24e3\\u3250\\u32cf\\u3394\\u33cf\\ufb05\\ufb06\\uff34\\uff54]/g,\n\t 'U': /[Uu\\xd9-\\xdc\\xf9-\\xfc\\u0168-\\u0173\\u01af\\u01b0\\u01d3\\u01d4\\u0214-\\u0217\\u1d41\\u1d58\\u1d64\\u1e72-\\u1e77\\u1ee4-\\u1ee7\\u2106\\u24b0\\u24ca\\u24e4\\u3373\\u337a\\uff35\\uff55]/g,\n\t 'V': /[Vv\\u1d5b\\u1d65\\u1e7c-\\u1e7f\\u2163-\\u2167\\u2173-\\u2177\\u24b1\\u24cb\\u24e5\\u2c7d\\u32ce\\u3375\\u33b4-\\u33b9\\u33dc\\u33de\\uff36\\uff56]/g,\n\t 'W': /[Ww\\u0174\\u0175\\u02b7\\u1d42\\u1e80-\\u1e89\\u1e98\\u24b2\\u24cc\\u24e6\\u33ba-\\u33bf\\u33dd\\uff37\\uff57]/g,\n\t 'X': /[Xx\\u02e3\\u1e8a-\\u1e8d\\u2093\\u213b\\u2168-\\u216b\\u2178-\\u217b\\u24b3\\u24cd\\u24e7\\u33d3\\uff38\\uff58]/g,\n\t 'Y': /[Yy\\xdd\\xfd\\xff\\u0176-\\u0178\\u0232\\u0233\\u02b8\\u1e8e\\u1e8f\\u1e99\\u1ef2-\\u1ef9\\u24b4\\u24ce\\u24e8\\u33c9\\uff39\\uff59]/g,\n\t 'Z': /[Zz\\u0179-\\u017e\\u01f1-\\u01f3\\u1dbb\\u1e90-\\u1e95\\u2124\\u2128\\u24b5\\u24cf\\u24e9\\u3390-\\u3394\\uff3a\\uff5a]/g\n\t};\n\texports.StringUtils = StringUtils;\n\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(root, factory) {\n\t if (true) {\n\t // AMD. Register as an anonymous module.\n\t !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports === 'object') {\n\t // CommonJS\n\t module.exports = factory();\n\t } else {\n\t // running in browser\n\t root.latinize = factory();\n\t }\n\t})(this, function() {\n\t\n\t function latinize(str) {\n\t if (typeof str === 'string') {\n\t return str.replace(/[^A-Za-z0-9]/g, function(x) {\n\t return latinize.characters[x] || x;\n\t });\n\t } else {\n\t return str;\n\t }\n\t }\n\t\n\t latinize.characters = {\n\t 'Á': 'A',\n\t 'Ă': 'A',\n\t 'Ắ': 'A',\n\t 'Ặ': 'A',\n\t 'Ằ': 'A',\n\t 'Ẳ': 'A',\n\t 'Ẵ': 'A',\n\t 'Ǎ': 'A',\n\t 'Â': 'A',\n\t 'Ấ': 'A',\n\t 'Ậ': 'A',\n\t 'Ầ': 'A',\n\t 'Ẩ': 'A',\n\t 'Ẫ': 'A',\n\t 'Ä': 'A',\n\t 'Ǟ': 'A',\n\t 'Ȧ': 'A',\n\t 'Ǡ': 'A',\n\t 'Ạ': 'A',\n\t 'Ȁ': 'A',\n\t 'À': 'A',\n\t 'Ả': 'A',\n\t 'Ȃ': 'A',\n\t 'Ā': 'A',\n\t 'Ą': 'A',\n\t 'Å': 'A',\n\t 'Ǻ': 'A',\n\t 'Ḁ': 'A',\n\t 'Ⱥ': 'A',\n\t 'Ã': 'A',\n\t 'Ꜳ': 'AA',\n\t 'Æ': 'AE',\n\t 'Ǽ': 'AE',\n\t 'Ǣ': 'AE',\n\t 'Ꜵ': 'AO',\n\t 'Ꜷ': 'AU',\n\t 'Ꜹ': 'AV',\n\t 'Ꜻ': 'AV',\n\t 'Ꜽ': 'AY',\n\t 'Ḃ': 'B',\n\t 'Ḅ': 'B',\n\t 'Ɓ': 'B',\n\t 'Ḇ': 'B',\n\t 'Ƀ': 'B',\n\t 'Ƃ': 'B',\n\t 'Ć': 'C',\n\t 'Č': 'C',\n\t 'Ç': 'C',\n\t 'Ḉ': 'C',\n\t 'Ĉ': 'C',\n\t 'Ċ': 'C',\n\t 'Ƈ': 'C',\n\t 'Ȼ': 'C',\n\t 'Ď': 'D',\n\t 'Ḑ': 'D',\n\t 'Ḓ': 'D',\n\t 'Ḋ': 'D',\n\t 'Ḍ': 'D',\n\t 'Ɗ': 'D',\n\t 'Ḏ': 'D',\n\t 'Dz': 'D',\n\t 'Dž': 'D',\n\t 'Đ': 'D',\n\t 'Ƌ': 'D',\n\t 'DZ': 'DZ',\n\t 'DŽ': 'DZ',\n\t 'É': 'E',\n\t 'Ĕ': 'E',\n\t 'Ě': 'E',\n\t 'Ȩ': 'E',\n\t 'Ḝ': 'E',\n\t 'Ê': 'E',\n\t 'Ế': 'E',\n\t 'Ệ': 'E',\n\t 'Ề': 'E',\n\t 'Ể': 'E',\n\t 'Ễ': 'E',\n\t 'Ḙ': 'E',\n\t 'Ë': 'E',\n\t 'Ė': 'E',\n\t 'Ẹ': 'E',\n\t 'Ȅ': 'E',\n\t 'È': 'E',\n\t 'Ẻ': 'E',\n\t 'Ȇ': 'E',\n\t 'Ē': 'E',\n\t 'Ḗ': 'E',\n\t 'Ḕ': 'E',\n\t 'Ę': 'E',\n\t 'Ɇ': 'E',\n\t 'Ẽ': 'E',\n\t 'Ḛ': 'E',\n\t 'Ꝫ': 'ET',\n\t 'Ḟ': 'F',\n\t 'Ƒ': 'F',\n\t 'Ǵ': 'G',\n\t 'Ğ': 'G',\n\t 'Ǧ': 'G',\n\t 'Ģ': 'G',\n\t 'Ĝ': 'G',\n\t 'Ġ': 'G',\n\t 'Ɠ': 'G',\n\t 'Ḡ': 'G',\n\t 'Ǥ': 'G',\n\t 'Ḫ': 'H',\n\t 'Ȟ': 'H',\n\t 'Ḩ': 'H',\n\t 'Ĥ': 'H',\n\t 'Ⱨ': 'H',\n\t 'Ḧ': 'H',\n\t 'Ḣ': 'H',\n\t 'Ḥ': 'H',\n\t 'Ħ': 'H',\n\t 'Í': 'I',\n\t 'Ĭ': 'I',\n\t 'Ǐ': 'I',\n\t 'Î': 'I',\n\t 'Ï': 'I',\n\t 'Ḯ': 'I',\n\t 'İ': 'I',\n\t 'Ị': 'I',\n\t 'Ȉ': 'I',\n\t 'Ì': 'I',\n\t 'Ỉ': 'I',\n\t 'Ȋ': 'I',\n\t 'Ī': 'I',\n\t 'Į': 'I',\n\t 'Ɨ': 'I',\n\t 'Ĩ': 'I',\n\t 'Ḭ': 'I',\n\t 'Ꝺ': 'D',\n\t 'Ꝼ': 'F',\n\t 'Ᵹ': 'G',\n\t 'Ꞃ': 'R',\n\t 'Ꞅ': 'S',\n\t 'Ꞇ': 'T',\n\t 'Ꝭ': 'IS',\n\t 'Ĵ': 'J',\n\t 'Ɉ': 'J',\n\t 'Ḱ': 'K',\n\t 'Ǩ': 'K',\n\t 'Ķ': 'K',\n\t 'Ⱪ': 'K',\n\t 'Ꝃ': 'K',\n\t 'Ḳ': 'K',\n\t 'Ƙ': 'K',\n\t 'Ḵ': 'K',\n\t 'Ꝁ': 'K',\n\t 'Ꝅ': 'K',\n\t 'Ĺ': 'L',\n\t 'Ƚ': 'L',\n\t 'Ľ': 'L',\n\t 'Ļ': 'L',\n\t 'Ḽ': 'L',\n\t 'Ḷ': 'L',\n\t 'Ḹ': 'L',\n\t 'Ⱡ': 'L',\n\t 'Ꝉ': 'L',\n\t 'Ḻ': 'L',\n\t 'Ŀ': 'L',\n\t 'Ɫ': 'L',\n\t 'Lj': 'L',\n\t 'Ł': 'L',\n\t 'LJ': 'LJ',\n\t 'Ḿ': 'M',\n\t 'Ṁ': 'M',\n\t 'Ṃ': 'M',\n\t 'Ɱ': 'M',\n\t 'Ń': 'N',\n\t 'Ň': 'N',\n\t 'Ņ': 'N',\n\t 'Ṋ': 'N',\n\t 'Ṅ': 'N',\n\t 'Ṇ': 'N',\n\t 'Ǹ': 'N',\n\t 'Ɲ': 'N',\n\t 'Ṉ': 'N',\n\t 'Ƞ': 'N',\n\t 'Nj': 'N',\n\t 'Ñ': 'N',\n\t 'NJ': 'NJ',\n\t 'Ó': 'O',\n\t 'Ŏ': 'O',\n\t 'Ǒ': 'O',\n\t 'Ô': 'O',\n\t 'Ố': 'O',\n\t 'Ộ': 'O',\n\t 'Ồ': 'O',\n\t 'Ổ': 'O',\n\t 'Ỗ': 'O',\n\t 'Ö': 'O',\n\t 'Ȫ': 'O',\n\t 'Ȯ': 'O',\n\t 'Ȱ': 'O',\n\t 'Ọ': 'O',\n\t 'Ő': 'O',\n\t 'Ȍ': 'O',\n\t 'Ò': 'O',\n\t 'Ỏ': 'O',\n\t 'Ơ': 'O',\n\t 'Ớ': 'O',\n\t 'Ợ': 'O',\n\t 'Ờ': 'O',\n\t 'Ở': 'O',\n\t 'Ỡ': 'O',\n\t 'Ȏ': 'O',\n\t 'Ꝋ': 'O',\n\t 'Ꝍ': 'O',\n\t 'Ō': 'O',\n\t 'Ṓ': 'O',\n\t 'Ṑ': 'O',\n\t 'Ɵ': 'O',\n\t 'Ǫ': 'O',\n\t 'Ǭ': 'O',\n\t 'Ø': 'O',\n\t 'Ǿ': 'O',\n\t 'Õ': 'O',\n\t 'Ṍ': 'O',\n\t 'Ṏ': 'O',\n\t 'Ȭ': 'O',\n\t 'Ƣ': 'OI',\n\t 'Ꝏ': 'OO',\n\t 'Ɛ': 'E',\n\t 'Ɔ': 'O',\n\t 'Ȣ': 'OU',\n\t 'Ṕ': 'P',\n\t 'Ṗ': 'P',\n\t 'Ꝓ': 'P',\n\t 'Ƥ': 'P',\n\t 'Ꝕ': 'P',\n\t 'Ᵽ': 'P',\n\t 'Ꝑ': 'P',\n\t 'Ꝙ': 'Q',\n\t 'Ꝗ': 'Q',\n\t 'Ŕ': 'R',\n\t 'Ř': 'R',\n\t 'Ŗ': 'R',\n\t 'Ṙ': 'R',\n\t 'Ṛ': 'R',\n\t 'Ṝ': 'R',\n\t 'Ȑ': 'R',\n\t 'Ȓ': 'R',\n\t 'Ṟ': 'R',\n\t 'Ɍ': 'R',\n\t 'Ɽ': 'R',\n\t 'Ꜿ': 'C',\n\t 'Ǝ': 'E',\n\t 'Ś': 'S',\n\t 'Ṥ': 'S',\n\t 'Š': 'S',\n\t 'Ṧ': 'S',\n\t 'Ş': 'S',\n\t 'Ŝ': 'S',\n\t 'Ș': 'S',\n\t 'Ṡ': 'S',\n\t 'Ṣ': 'S',\n\t 'Ṩ': 'S',\n\t 'ß': 'ss',\n\t 'Ť': 'T',\n\t 'Ţ': 'T',\n\t 'Ṱ': 'T',\n\t 'Ț': 'T',\n\t 'Ⱦ': 'T',\n\t 'Ṫ': 'T',\n\t 'Ṭ': 'T',\n\t 'Ƭ': 'T',\n\t 'Ṯ': 'T',\n\t 'Ʈ': 'T',\n\t 'Ŧ': 'T',\n\t 'Ɐ': 'A',\n\t 'Ꞁ': 'L',\n\t 'Ɯ': 'M',\n\t 'Ʌ': 'V',\n\t 'Ꜩ': 'TZ',\n\t 'Ú': 'U',\n\t 'Ŭ': 'U',\n\t 'Ǔ': 'U',\n\t 'Û': 'U',\n\t 'Ṷ': 'U',\n\t 'Ü': 'U',\n\t 'Ǘ': 'U',\n\t 'Ǚ': 'U',\n\t 'Ǜ': 'U',\n\t 'Ǖ': 'U',\n\t 'Ṳ': 'U',\n\t 'Ụ': 'U',\n\t 'Ű': 'U',\n\t 'Ȕ': 'U',\n\t 'Ù': 'U',\n\t 'Ủ': 'U',\n\t 'Ư': 'U',\n\t 'Ứ': 'U',\n\t 'Ự': 'U',\n\t 'Ừ': 'U',\n\t 'Ử': 'U',\n\t 'Ữ': 'U',\n\t 'Ȗ': 'U',\n\t 'Ū': 'U',\n\t 'Ṻ': 'U',\n\t 'Ų': 'U',\n\t 'Ů': 'U',\n\t 'Ũ': 'U',\n\t 'Ṹ': 'U',\n\t 'Ṵ': 'U',\n\t 'Ꝟ': 'V',\n\t 'Ṿ': 'V',\n\t 'Ʋ': 'V',\n\t 'Ṽ': 'V',\n\t 'Ꝡ': 'VY',\n\t 'Ẃ': 'W',\n\t 'Ŵ': 'W',\n\t 'Ẅ': 'W',\n\t 'Ẇ': 'W',\n\t 'Ẉ': 'W',\n\t 'Ẁ': 'W',\n\t 'Ⱳ': 'W',\n\t 'Ẍ': 'X',\n\t 'Ẋ': 'X',\n\t 'Ý': 'Y',\n\t 'Ŷ': 'Y',\n\t 'Ÿ': 'Y',\n\t 'Ẏ': 'Y',\n\t 'Ỵ': 'Y',\n\t 'Ỳ': 'Y',\n\t 'Ƴ': 'Y',\n\t 'Ỷ': 'Y',\n\t 'Ỿ': 'Y',\n\t 'Ȳ': 'Y',\n\t 'Ɏ': 'Y',\n\t 'Ỹ': 'Y',\n\t 'Ź': 'Z',\n\t 'Ž': 'Z',\n\t 'Ẑ': 'Z',\n\t 'Ⱬ': 'Z',\n\t 'Ż': 'Z',\n\t 'Ẓ': 'Z',\n\t 'Ȥ': 'Z',\n\t 'Ẕ': 'Z',\n\t 'Ƶ': 'Z',\n\t 'IJ': 'IJ',\n\t 'Œ': 'OE',\n\t 'ᴀ': 'A',\n\t 'ᴁ': 'AE',\n\t 'ʙ': 'B',\n\t 'ᴃ': 'B',\n\t 'ᴄ': 'C',\n\t 'ᴅ': 'D',\n\t 'ᴇ': 'E',\n\t 'ꜰ': 'F',\n\t 'ɢ': 'G',\n\t 'ʛ': 'G',\n\t 'ʜ': 'H',\n\t 'ɪ': 'I',\n\t 'ʁ': 'R',\n\t 'ᴊ': 'J',\n\t 'ᴋ': 'K',\n\t 'ʟ': 'L',\n\t 'ᴌ': 'L',\n\t 'ᴍ': 'M',\n\t 'ɴ': 'N',\n\t 'ᴏ': 'O',\n\t 'ɶ': 'OE',\n\t 'ᴐ': 'O',\n\t 'ᴕ': 'OU',\n\t 'ᴘ': 'P',\n\t 'ʀ': 'R',\n\t 'ᴎ': 'N',\n\t 'ᴙ': 'R',\n\t 'ꜱ': 'S',\n\t 'ᴛ': 'T',\n\t 'ⱻ': 'E',\n\t 'ᴚ': 'R',\n\t 'ᴜ': 'U',\n\t 'ᴠ': 'V',\n\t 'ᴡ': 'W',\n\t 'ʏ': 'Y',\n\t 'ᴢ': 'Z',\n\t 'á': 'a',\n\t 'ă': 'a',\n\t 'ắ': 'a',\n\t 'ặ': 'a',\n\t 'ằ': 'a',\n\t 'ẳ': 'a',\n\t 'ẵ': 'a',\n\t 'ǎ': 'a',\n\t 'â': 'a',\n\t 'ấ': 'a',\n\t 'ậ': 'a',\n\t 'ầ': 'a',\n\t 'ẩ': 'a',\n\t 'ẫ': 'a',\n\t 'ä': 'a',\n\t 'ǟ': 'a',\n\t 'ȧ': 'a',\n\t 'ǡ': 'a',\n\t 'ạ': 'a',\n\t 'ȁ': 'a',\n\t 'à': 'a',\n\t 'ả': 'a',\n\t 'ȃ': 'a',\n\t 'ā': 'a',\n\t 'ą': 'a',\n\t 'ᶏ': 'a',\n\t 'ẚ': 'a',\n\t 'å': 'a',\n\t 'ǻ': 'a',\n\t 'ḁ': 'a',\n\t 'ⱥ': 'a',\n\t 'ã': 'a',\n\t 'ꜳ': 'aa',\n\t 'æ': 'ae',\n\t 'ǽ': 'ae',\n\t 'ǣ': 'ae',\n\t 'ꜵ': 'ao',\n\t 'ꜷ': 'au',\n\t 'ꜹ': 'av',\n\t 'ꜻ': 'av',\n\t 'ꜽ': 'ay',\n\t 'ḃ': 'b',\n\t 'ḅ': 'b',\n\t 'ɓ': 'b',\n\t 'ḇ': 'b',\n\t 'ᵬ': 'b',\n\t 'ᶀ': 'b',\n\t 'ƀ': 'b',\n\t 'ƃ': 'b',\n\t 'ɵ': 'o',\n\t 'ć': 'c',\n\t 'č': 'c',\n\t 'ç': 'c',\n\t 'ḉ': 'c',\n\t 'ĉ': 'c',\n\t 'ɕ': 'c',\n\t 'ċ': 'c',\n\t 'ƈ': 'c',\n\t 'ȼ': 'c',\n\t 'ď': 'd',\n\t 'ḑ': 'd',\n\t 'ḓ': 'd',\n\t 'ȡ': 'd',\n\t 'ḋ': 'd',\n\t 'ḍ': 'd',\n\t 'ɗ': 'd',\n\t 'ᶑ': 'd',\n\t 'ḏ': 'd',\n\t 'ᵭ': 'd',\n\t 'ᶁ': 'd',\n\t 'đ': 'd',\n\t 'ɖ': 'd',\n\t 'ƌ': 'd',\n\t 'ı': 'i',\n\t 'ȷ': 'j',\n\t 'ɟ': 'j',\n\t 'ʄ': 'j',\n\t 'dz': 'dz',\n\t 'dž': 'dz',\n\t 'é': 'e',\n\t 'ĕ': 'e',\n\t 'ě': 'e',\n\t 'ȩ': 'e',\n\t 'ḝ': 'e',\n\t 'ê': 'e',\n\t 'ế': 'e',\n\t 'ệ': 'e',\n\t 'ề': 'e',\n\t 'ể': 'e',\n\t 'ễ': 'e',\n\t 'ḙ': 'e',\n\t 'ë': 'e',\n\t 'ė': 'e',\n\t 'ẹ': 'e',\n\t 'ȅ': 'e',\n\t 'è': 'e',\n\t 'ẻ': 'e',\n\t 'ȇ': 'e',\n\t 'ē': 'e',\n\t 'ḗ': 'e',\n\t 'ḕ': 'e',\n\t 'ⱸ': 'e',\n\t 'ę': 'e',\n\t 'ᶒ': 'e',\n\t 'ɇ': 'e',\n\t 'ẽ': 'e',\n\t 'ḛ': 'e',\n\t 'ꝫ': 'et',\n\t 'ḟ': 'f',\n\t 'ƒ': 'f',\n\t 'ᵮ': 'f',\n\t 'ᶂ': 'f',\n\t 'ǵ': 'g',\n\t 'ğ': 'g',\n\t 'ǧ': 'g',\n\t 'ģ': 'g',\n\t 'ĝ': 'g',\n\t 'ġ': 'g',\n\t 'ɠ': 'g',\n\t 'ḡ': 'g',\n\t 'ᶃ': 'g',\n\t 'ǥ': 'g',\n\t 'ḫ': 'h',\n\t 'ȟ': 'h',\n\t 'ḩ': 'h',\n\t 'ĥ': 'h',\n\t 'ⱨ': 'h',\n\t 'ḧ': 'h',\n\t 'ḣ': 'h',\n\t 'ḥ': 'h',\n\t 'ɦ': 'h',\n\t 'ẖ': 'h',\n\t 'ħ': 'h',\n\t 'ƕ': 'hv',\n\t 'í': 'i',\n\t 'ĭ': 'i',\n\t 'ǐ': 'i',\n\t 'î': 'i',\n\t 'ï': 'i',\n\t 'ḯ': 'i',\n\t 'ị': 'i',\n\t 'ȉ': 'i',\n\t 'ì': 'i',\n\t 'ỉ': 'i',\n\t 'ȋ': 'i',\n\t 'ī': 'i',\n\t 'į': 'i',\n\t 'ᶖ': 'i',\n\t 'ɨ': 'i',\n\t 'ĩ': 'i',\n\t 'ḭ': 'i',\n\t 'ꝺ': 'd',\n\t 'ꝼ': 'f',\n\t 'ᵹ': 'g',\n\t 'ꞃ': 'r',\n\t 'ꞅ': 's',\n\t 'ꞇ': 't',\n\t 'ꝭ': 'is',\n\t 'ǰ': 'j',\n\t 'ĵ': 'j',\n\t 'ʝ': 'j',\n\t 'ɉ': 'j',\n\t 'ḱ': 'k',\n\t 'ǩ': 'k',\n\t 'ķ': 'k',\n\t 'ⱪ': 'k',\n\t 'ꝃ': 'k',\n\t 'ḳ': 'k',\n\t 'ƙ': 'k',\n\t 'ḵ': 'k',\n\t 'ᶄ': 'k',\n\t 'ꝁ': 'k',\n\t 'ꝅ': 'k',\n\t 'ĺ': 'l',\n\t 'ƚ': 'l',\n\t 'ɬ': 'l',\n\t 'ľ': 'l',\n\t 'ļ': 'l',\n\t 'ḽ': 'l',\n\t 'ȴ': 'l',\n\t 'ḷ': 'l',\n\t 'ḹ': 'l',\n\t 'ⱡ': 'l',\n\t 'ꝉ': 'l',\n\t 'ḻ': 'l',\n\t 'ŀ': 'l',\n\t 'ɫ': 'l',\n\t 'ᶅ': 'l',\n\t 'ɭ': 'l',\n\t 'ł': 'l',\n\t 'lj': 'lj',\n\t 'ſ': 's',\n\t 'ẜ': 's',\n\t 'ẛ': 's',\n\t 'ẝ': 's',\n\t 'ḿ': 'm',\n\t 'ṁ': 'm',\n\t 'ṃ': 'm',\n\t 'ɱ': 'm',\n\t 'ᵯ': 'm',\n\t 'ᶆ': 'm',\n\t 'ń': 'n',\n\t 'ň': 'n',\n\t 'ņ': 'n',\n\t 'ṋ': 'n',\n\t 'ȵ': 'n',\n\t 'ṅ': 'n',\n\t 'ṇ': 'n',\n\t 'ǹ': 'n',\n\t 'ɲ': 'n',\n\t 'ṉ': 'n',\n\t 'ƞ': 'n',\n\t 'ᵰ': 'n',\n\t 'ᶇ': 'n',\n\t 'ɳ': 'n',\n\t 'ñ': 'n',\n\t 'nj': 'nj',\n\t 'ó': 'o',\n\t 'ŏ': 'o',\n\t 'ǒ': 'o',\n\t 'ô': 'o',\n\t 'ố': 'o',\n\t 'ộ': 'o',\n\t 'ồ': 'o',\n\t 'ổ': 'o',\n\t 'ỗ': 'o',\n\t 'ö': 'o',\n\t 'ȫ': 'o',\n\t 'ȯ': 'o',\n\t 'ȱ': 'o',\n\t 'ọ': 'o',\n\t 'ő': 'o',\n\t 'ȍ': 'o',\n\t 'ò': 'o',\n\t 'ỏ': 'o',\n\t 'ơ': 'o',\n\t 'ớ': 'o',\n\t 'ợ': 'o',\n\t 'ờ': 'o',\n\t 'ở': 'o',\n\t 'ỡ': 'o',\n\t 'ȏ': 'o',\n\t 'ꝋ': 'o',\n\t 'ꝍ': 'o',\n\t 'ⱺ': 'o',\n\t 'ō': 'o',\n\t 'ṓ': 'o',\n\t 'ṑ': 'o',\n\t 'ǫ': 'o',\n\t 'ǭ': 'o',\n\t 'ø': 'o',\n\t 'ǿ': 'o',\n\t 'õ': 'o',\n\t 'ṍ': 'o',\n\t 'ṏ': 'o',\n\t 'ȭ': 'o',\n\t 'ƣ': 'oi',\n\t 'ꝏ': 'oo',\n\t 'ɛ': 'e',\n\t 'ᶓ': 'e',\n\t 'ɔ': 'o',\n\t 'ᶗ': 'o',\n\t 'ȣ': 'ou',\n\t 'ṕ': 'p',\n\t 'ṗ': 'p',\n\t 'ꝓ': 'p',\n\t 'ƥ': 'p',\n\t 'ᵱ': 'p',\n\t 'ᶈ': 'p',\n\t 'ꝕ': 'p',\n\t 'ᵽ': 'p',\n\t 'ꝑ': 'p',\n\t 'ꝙ': 'q',\n\t 'ʠ': 'q',\n\t 'ɋ': 'q',\n\t 'ꝗ': 'q',\n\t 'ŕ': 'r',\n\t 'ř': 'r',\n\t 'ŗ': 'r',\n\t 'ṙ': 'r',\n\t 'ṛ': 'r',\n\t 'ṝ': 'r',\n\t 'ȑ': 'r',\n\t 'ɾ': 'r',\n\t 'ᵳ': 'r',\n\t 'ȓ': 'r',\n\t 'ṟ': 'r',\n\t 'ɼ': 'r',\n\t 'ᵲ': 'r',\n\t 'ᶉ': 'r',\n\t 'ɍ': 'r',\n\t 'ɽ': 'r',\n\t 'ↄ': 'c',\n\t 'ꜿ': 'c',\n\t 'ɘ': 'e',\n\t 'ɿ': 'r',\n\t 'ś': 's',\n\t 'ṥ': 's',\n\t 'š': 's',\n\t 'ṧ': 's',\n\t 'ş': 's',\n\t 'ŝ': 's',\n\t 'ș': 's',\n\t 'ṡ': 's',\n\t 'ṣ': 's',\n\t 'ṩ': 's',\n\t 'ʂ': 's',\n\t 'ᵴ': 's',\n\t 'ᶊ': 's',\n\t 'ȿ': 's',\n\t 'ɡ': 'g',\n\t 'ᴑ': 'o',\n\t 'ᴓ': 'o',\n\t 'ᴝ': 'u',\n\t 'ť': 't',\n\t 'ţ': 't',\n\t 'ṱ': 't',\n\t 'ț': 't',\n\t 'ȶ': 't',\n\t 'ẗ': 't',\n\t 'ⱦ': 't',\n\t 'ṫ': 't',\n\t 'ṭ': 't',\n\t 'ƭ': 't',\n\t 'ṯ': 't',\n\t 'ᵵ': 't',\n\t 'ƫ': 't',\n\t 'ʈ': 't',\n\t 'ŧ': 't',\n\t 'ᵺ': 'th',\n\t 'ɐ': 'a',\n\t 'ᴂ': 'ae',\n\t 'ǝ': 'e',\n\t 'ᵷ': 'g',\n\t 'ɥ': 'h',\n\t 'ʮ': 'h',\n\t 'ʯ': 'h',\n\t 'ᴉ': 'i',\n\t 'ʞ': 'k',\n\t 'ꞁ': 'l',\n\t 'ɯ': 'm',\n\t 'ɰ': 'm',\n\t 'ᴔ': 'oe',\n\t 'ɹ': 'r',\n\t 'ɻ': 'r',\n\t 'ɺ': 'r',\n\t 'ⱹ': 'r',\n\t 'ʇ': 't',\n\t 'ʌ': 'v',\n\t 'ʍ': 'w',\n\t 'ʎ': 'y',\n\t 'ꜩ': 'tz',\n\t 'ú': 'u',\n\t 'ŭ': 'u',\n\t 'ǔ': 'u',\n\t 'û': 'u',\n\t 'ṷ': 'u',\n\t 'ü': 'u',\n\t 'ǘ': 'u',\n\t 'ǚ': 'u',\n\t 'ǜ': 'u',\n\t 'ǖ': 'u',\n\t 'ṳ': 'u',\n\t 'ụ': 'u',\n\t 'ű': 'u',\n\t 'ȕ': 'u',\n\t 'ù': 'u',\n\t 'ủ': 'u',\n\t 'ư': 'u',\n\t 'ứ': 'u',\n\t 'ự': 'u',\n\t 'ừ': 'u',\n\t 'ử': 'u',\n\t 'ữ': 'u',\n\t 'ȗ': 'u',\n\t 'ū': 'u',\n\t 'ṻ': 'u',\n\t 'ų': 'u',\n\t 'ᶙ': 'u',\n\t 'ů': 'u',\n\t 'ũ': 'u',\n\t 'ṹ': 'u',\n\t 'ṵ': 'u',\n\t 'ᵫ': 'ue',\n\t 'ꝸ': 'um',\n\t 'ⱴ': 'v',\n\t 'ꝟ': 'v',\n\t 'ṿ': 'v',\n\t 'ʋ': 'v',\n\t 'ᶌ': 'v',\n\t 'ⱱ': 'v',\n\t 'ṽ': 'v',\n\t 'ꝡ': 'vy',\n\t 'ẃ': 'w',\n\t 'ŵ': 'w',\n\t 'ẅ': 'w',\n\t 'ẇ': 'w',\n\t 'ẉ': 'w',\n\t 'ẁ': 'w',\n\t 'ⱳ': 'w',\n\t 'ẘ': 'w',\n\t 'ẍ': 'x',\n\t 'ẋ': 'x',\n\t 'ᶍ': 'x',\n\t 'ý': 'y',\n\t 'ŷ': 'y',\n\t 'ÿ': 'y',\n\t 'ẏ': 'y',\n\t 'ỵ': 'y',\n\t 'ỳ': 'y',\n\t 'ƴ': 'y',\n\t 'ỷ': 'y',\n\t 'ỿ': 'y',\n\t 'ȳ': 'y',\n\t 'ẙ': 'y',\n\t 'ɏ': 'y',\n\t 'ỹ': 'y',\n\t 'ź': 'z',\n\t 'ž': 'z',\n\t 'ẑ': 'z',\n\t 'ʑ': 'z',\n\t 'ⱬ': 'z',\n\t 'ż': 'z',\n\t 'ẓ': 'z',\n\t 'ȥ': 'z',\n\t 'ẕ': 'z',\n\t 'ᵶ': 'z',\n\t 'ᶎ': 'z',\n\t 'ʐ': 'z',\n\t 'ƶ': 'z',\n\t 'ɀ': 'z',\n\t 'ff': 'ff',\n\t 'ffi': 'ffi',\n\t 'ffl': 'ffl',\n\t 'fi': 'fi',\n\t 'fl': 'fl',\n\t 'ij': 'ij',\n\t 'œ': 'oe',\n\t 'st': 'st',\n\t 'ₐ': 'a',\n\t 'ₑ': 'e',\n\t 'ᵢ': 'i',\n\t 'ⱼ': 'j',\n\t 'ₒ': 'o',\n\t 'ᵣ': 'r',\n\t 'ᵤ': 'u',\n\t 'ᵥ': 'v',\n\t 'ₓ': 'x',\n\t 'Ё': 'YO',\n\t 'Й': 'I',\n\t 'Ц': 'TS',\n\t 'У': 'U',\n\t 'К': 'K',\n\t 'Е': 'E',\n\t 'Н': 'N',\n\t 'Г': 'G',\n\t 'Ш': 'SH',\n\t 'Щ': 'SCH',\n\t 'З': 'Z',\n\t 'Х': 'H',\n\t 'Ъ': \"'\",\n\t 'ё': 'yo',\n\t 'й': 'i',\n\t 'ц': 'ts',\n\t 'у': 'u',\n\t 'к': 'k',\n\t 'е': 'e',\n\t 'н': 'n',\n\t 'г': 'g',\n\t 'ш': 'sh',\n\t 'щ': 'sch',\n\t 'з': 'z',\n\t 'х': 'h',\n\t 'ъ': \"'\",\n\t 'Ф': 'F',\n\t 'Ы': 'I',\n\t 'В': 'V',\n\t 'А': 'a',\n\t 'П': 'P',\n\t 'Р': 'R',\n\t 'О': 'O',\n\t 'Л': 'L',\n\t 'Д': 'D',\n\t 'Ж': 'ZH',\n\t 'Э': 'E',\n\t 'ф': 'f',\n\t 'ы': 'i',\n\t 'в': 'v',\n\t 'а': 'a',\n\t 'п': 'p',\n\t 'р': 'r',\n\t 'о': 'o',\n\t 'л': 'l',\n\t 'д': 'd',\n\t 'ж': 'zh',\n\t 'э': 'e',\n\t 'Я': 'Ya',\n\t 'Ч': 'CH',\n\t 'С': 'S',\n\t 'М': 'M',\n\t 'И': 'I',\n\t 'Т': 'T',\n\t 'Ь': \"'\",\n\t 'Б': 'B',\n\t 'Ю': 'YU',\n\t 'я': 'ya',\n\t 'ч': 'ch',\n\t 'с': 's',\n\t 'м': 'm',\n\t 'и': 'i',\n\t 'т': 't',\n\t 'ь': \"'\",\n\t 'б': 'b',\n\t 'ю': 'yu'\n\t };\n\t\n\t return latinize;\n\t});\n\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar _ = __webpack_require__(16);\n\tvar EmailUtils = (function () {\n\t function EmailUtils() {\n\t }\n\t EmailUtils.splitSemicolonSeparatedListOfEmailAddresses = function (addresses) {\n\t var addressesAsList = addresses.split(/\\s*;\\s*/);\n\t return _.filter(addressesAsList, function (s) {\n\t return Utils_1.Utils.exists(s) && Utils_1.Utils.isNonEmptyString(Utils_1.Utils.trim(s));\n\t });\n\t };\n\t EmailUtils.emailAddressesToHyperlinks = function (addresses, companyDomain, me, lengthLimit, truncateName) {\n\t if (lengthLimit === void 0) { lengthLimit = 2; }\n\t if (truncateName === void 0) { truncateName = false; }\n\t addresses = _.filter(addresses, function (s) {\n\t return Utils_1.Utils.exists(s) && Utils_1.Utils.isNonEmptyString(Utils_1.Utils.trim(s));\n\t });\n\t var hyperlinks = _.map(addresses, function (item) {\n\t var emailArray = EmailUtils.parseEmail(item);\n\t var email = emailArray[1];\n\t var name = emailArray[0];\n\t if (Utils_1.Utils.exists(me) && email == me) {\n\t name = Strings_1.l('Me');\n\t }\n\t if (truncateName) {\n\t var split = name.split(' ');\n\t if (!Utils_1.Utils.isNullOrUndefined(split[1])) {\n\t name = split[0] + ' ' + split[1].substring(0, 1) + '.';\n\t }\n\t }\n\t var domainIndex = email.indexOf('@') >= 0 ? email.indexOf('@') + 1 : 0;\n\t var domain = email.substr(domainIndex);\n\t if (Utils_1.Utils.exists(companyDomain) && domain != companyDomain) {\n\t name += ' (' + domain + ')';\n\t }\n\t return '' + name + '';\n\t });\n\t var excess = hyperlinks.length - lengthLimit;\n\t var andOthers = excess > 0 ? EmailUtils.buildEmailAddressesAndOthers(_.last(hyperlinks, excess)) : '';\n\t return _.first(hyperlinks, lengthLimit).join(', ') + andOthers;\n\t };\n\t EmailUtils.buildEmailAddressesAndOthers = function (excessHyperLinks) {\n\t return ' ' + Strings_1.l('AndOthers', excessHyperLinks.length.toString(), excessHyperLinks.length) + '' +\n\t ' , ' + excessHyperLinks.join(' , ') + '';\n\t };\n\t EmailUtils.parseEmail = function (email) {\n\t var name;\n\t var match = email.match(/^\\s*(.*)\\s+<(.*)>$/);\n\t if (match != null) {\n\t name = match[1];\n\t if (/^'.*'|'.*'$/.test(name)) {\n\t name = name.substr(1, name.length - 2);\n\t }\n\t email = match[2];\n\t }\n\t else {\n\t name = email;\n\t email = email;\n\t }\n\t return [name, email];\n\t };\n\t return EmailUtils;\n\t}());\n\texports.EmailUtils = EmailUtils;\n\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\tvar HashUtils = (function () {\n\t function HashUtils() {\n\t }\n\t HashUtils.getHash = function (w) {\n\t if (w === void 0) { w = window; }\n\t Assert_1.Assert.exists(w);\n\t // window.location.hash returns the DECODED hash on Firefox (it's a well known bug),\n\t // so any & in values will be already unescaped. This breaks our value splitting.\n\t // The following trick works on all browsers.\n\t var ret = '#' + (w.location.href.split('#')[1] || '');\n\t return HashUtils.getAjaxcrawlableHash(ret);\n\t };\n\t HashUtils.getValue = function (key, toParse) {\n\t Assert_1.Assert.isNonEmptyString(key);\n\t Assert_1.Assert.exists(toParse);\n\t toParse = HashUtils.getAjaxcrawlableHash(toParse);\n\t var paramValue = HashUtils.getRawValue(key, toParse);\n\t if (paramValue != undefined) {\n\t paramValue = HashUtils.getValueDependingOnType(key, paramValue);\n\t }\n\t return paramValue;\n\t };\n\t HashUtils.encodeValues = function (values) {\n\t var hash = [];\n\t _.each(values, function (valueToEncode, key, obj) {\n\t var encodedValue = '';\n\t if (Utils_1.Utils.isNonEmptyArray(valueToEncode)) {\n\t encodedValue = HashUtils.encodeArray(valueToEncode);\n\t }\n\t else if (_.isObject(valueToEncode) && Utils_1.Utils.isNonEmptyArray(_.keys(valueToEncode))) {\n\t encodedValue = HashUtils.encodeObject(valueToEncode);\n\t }\n\t else if (!Utils_1.Utils.isNullOrUndefined(valueToEncode)) {\n\t encodedValue = encodeURIComponent(valueToEncode.toString());\n\t }\n\t if (encodedValue != '') {\n\t hash.push(key + '=' + encodedValue);\n\t }\n\t });\n\t return hash.join('&');\n\t };\n\t HashUtils.getAjaxcrawlableHash = function (hash) {\n\t if (hash[1] != undefined && hash[1] == '!') {\n\t return hash.substring(0, 1) + hash.substring(2);\n\t }\n\t else {\n\t return hash;\n\t }\n\t };\n\t HashUtils.getRawValue = function (key, toParse) {\n\t Assert_1.Assert.exists(key);\n\t Assert_1.Assert.exists(toParse);\n\t Assert_1.Assert.check(toParse.indexOf('#') == 0 || toParse == '');\n\t var toParseArray = toParse.substr(1).split('&');\n\t var paramPos = 0;\n\t var loop = true;\n\t var paramValue = undefined;\n\t while (loop) {\n\t var paramValuePair = toParseArray[paramPos].split('=');\n\t if (paramValuePair[0] == key) {\n\t loop = false;\n\t paramValue = paramValuePair[1];\n\t }\n\t else {\n\t paramPos++;\n\t if (paramPos >= toParseArray.length) {\n\t paramPos = undefined;\n\t loop = false;\n\t }\n\t }\n\t }\n\t return paramValue;\n\t };\n\t HashUtils.getValueDependingOnType = function (key, paramValue) {\n\t var type = HashUtils.getValueType(key, paramValue);\n\t var returnValue;\n\t if (type == 'object') {\n\t returnValue = HashUtils.decodeObject(paramValue);\n\t }\n\t else if (type == 'array') {\n\t returnValue = HashUtils.decodeArray(paramValue);\n\t }\n\t else {\n\t returnValue = decodeURIComponent(paramValue);\n\t }\n\t return returnValue;\n\t };\n\t HashUtils.getValueType = function (key, paramValue) {\n\t if (key == 'q') {\n\t return 'other';\n\t }\n\t else if (HashUtils.isObject(paramValue)) {\n\t return 'object';\n\t }\n\t else if (HashUtils.isArray(paramValue)) {\n\t return 'array';\n\t }\n\t else {\n\t return 'other';\n\t }\n\t };\n\t HashUtils.isArrayStartNotEncoded = function (value) {\n\t return value.substr(0, 1) == HashUtils.DELIMITER.arrayStart;\n\t };\n\t HashUtils.isArrayStartEncoded = function (value) {\n\t return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.arrayStart)) == 0;\n\t };\n\t HashUtils.isArrayEndNotEncoded = function (value) {\n\t return value.substr(value.length - 1);\n\t };\n\t HashUtils.isArrayEndEncoded = function (value) {\n\t return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.arrayEnd)) == value.length - encodeURIComponent(HashUtils.DELIMITER.arrayEnd).length;\n\t };\n\t HashUtils.isObjectStartNotEncoded = function (value) {\n\t return value.substr(0, 1) == HashUtils.DELIMITER.objectStart;\n\t };\n\t HashUtils.isObjectStartEncoded = function (value) {\n\t return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.objectStart)) == 0;\n\t };\n\t HashUtils.isObjectEndNotEncoded = function (value) {\n\t return value.substr(value.length - 1) == HashUtils.DELIMITER.objectEnd;\n\t };\n\t HashUtils.isObjectEndEncoded = function (value) {\n\t return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.objectEnd)) == value.length - encodeURIComponent(HashUtils.DELIMITER.objectEnd).length;\n\t };\n\t HashUtils.isObject = function (value) {\n\t var isObjectStart = HashUtils.isObjectStartNotEncoded(value) || HashUtils.isObjectStartEncoded(value);\n\t var isObjectEnd = HashUtils.isObjectEndNotEncoded(value) || HashUtils.isObjectEndEncoded(value);\n\t return isObjectStart && isObjectEnd;\n\t };\n\t HashUtils.isArray = function (value) {\n\t var isArrayStart = HashUtils.isArrayStartNotEncoded(value) || HashUtils.isArrayStartEncoded(value);\n\t var isArrayEnd = HashUtils.isArrayEndNotEncoded(value) || HashUtils.isArrayEndEncoded(value);\n\t return isArrayStart && isArrayEnd;\n\t };\n\t HashUtils.encodeArray = function (array) {\n\t var arrayReturn = _.map(array, function (value) {\n\t return encodeURIComponent(value);\n\t });\n\t return HashUtils.DELIMITER.arrayStart + arrayReturn.join(',') + HashUtils.DELIMITER.arrayEnd;\n\t };\n\t HashUtils.encodeObject = function (obj) {\n\t var _this = this;\n\t var retArray = _.map(obj, function (val, key, obj) {\n\t return \"\\\"\" + encodeURIComponent(key) + \"\\\":\" + _this.encodeValue(val);\n\t });\n\t return HashUtils.DELIMITER.objectStart + retArray.join(' , ') + HashUtils.DELIMITER.objectEnd;\n\t };\n\t HashUtils.encodeValue = function (val) {\n\t var encodedValue = '';\n\t if (_.isArray(val)) {\n\t encodedValue = HashUtils.encodeArray(val);\n\t }\n\t else if (_.isObject(val)) {\n\t encodedValue = HashUtils.encodeObject(val);\n\t }\n\t else if (_.isNumber(val) || _.isBoolean(val)) {\n\t encodedValue = encodeURIComponent(val.toString());\n\t }\n\t else {\n\t encodedValue = '\"' + encodeURIComponent(val) + '\"';\n\t }\n\t return encodedValue;\n\t };\n\t HashUtils.decodeObject = function (obj) {\n\t if (HashUtils.isObjectStartEncoded(obj) && HashUtils.isObjectEndEncoded(obj)) {\n\t obj = obj.replace(/encodeURIComponent(HashUtils.Delimiter.objectStart)/, HashUtils.DELIMITER.objectStart);\n\t obj = obj.replace(encodeURIComponent(HashUtils.DELIMITER.objectEnd), HashUtils.DELIMITER.objectEnd);\n\t }\n\t return JSON.parse(decodeURIComponent(obj));\n\t };\n\t HashUtils.decodeArray = function (value) {\n\t if (HashUtils.isArrayStartEncoded(value) && HashUtils.isArrayEndEncoded(value)) {\n\t value = value.replace(encodeURIComponent(HashUtils.DELIMITER.arrayStart), HashUtils.DELIMITER.arrayStart);\n\t value = value.replace(encodeURIComponent(HashUtils.DELIMITER.arrayEnd), HashUtils.DELIMITER.arrayEnd);\n\t }\n\t value = value.substr(1);\n\t value = value.substr(0, value.length - 1);\n\t var array = value.split(',');\n\t return _.map(array, function (val) {\n\t return decodeURIComponent(val);\n\t });\n\t };\n\t return HashUtils;\n\t}());\n\tHashUtils.DELIMITER = {\n\t 'objectStart': '{',\n\t 'objectEnd': '}',\n\t 'arrayStart': '[',\n\t 'arrayEnd': ']',\n\t 'objectStartRegExp': '^{',\n\t 'objectEndRegExp': '}+$',\n\t 'arrayStartRegExp': '^[',\n\t 'arrayEndRegExp': ']+$'\n\t};\n\texports.HashUtils = HashUtils;\n\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar _ = __webpack_require__(16);\n\tvar StringAndHoles = (function () {\n\t function StringAndHoles() {\n\t }\n\t StringAndHoles.replace = function (str, find, replace) {\n\t var strAndHoles = new StringAndHoles();\n\t if (Utils_1.Utils.isNullOrEmptyString(str)) {\n\t return strAndHoles;\n\t }\n\t var index = str.lastIndexOf(find);\n\t if (index == -1) {\n\t strAndHoles.value = str;\n\t return strAndHoles;\n\t }\n\t var holes = [];\n\t while (index >= 0) {\n\t var hole = {\n\t begin: index,\n\t size: find.length,\n\t replacementSize: replace.length\n\t };\n\t holes.push(hole);\n\t str = str.slice(0, index) + replace + str.slice(index + find.length);\n\t index = str.lastIndexOf(find);\n\t }\n\t strAndHoles.holes = holes;\n\t strAndHoles.value = str;\n\t return strAndHoles;\n\t };\n\t /**\n\t * Shorten the passed path intelligently (path-aware).\n\t * Works with *local paths* and *network paths*\n\t * @param uriOrig The path to shorten\n\t * @param length The length to which the path will be shortened.\n\t */\n\t StringAndHoles.shortenPath = function (uriOrig, length) {\n\t var strAndHoles = new StringAndHoles();\n\t var uri = uriOrig;\n\t if (Utils_1.Utils.isNullOrEmptyString(uri) || (uri.length <= length)) {\n\t strAndHoles.value = uri;\n\t return strAndHoles;\n\t }\n\t var holes = [];\n\t var first = -1;\n\t if (Utils_1.Utils.stringStartsWith(uri, '\\\\\\\\')) {\n\t first = uri.indexOf('\\\\', first + 2);\n\t }\n\t else {\n\t first = uri.indexOf('\\\\');\n\t }\n\t if (first !== -1) {\n\t var removed = 0;\n\t var next = uri.indexOf('\\\\', first + 1);\n\t while (next !== -1 && uri.length - removed + StringAndHoles.SHORTEN_END.length > length) {\n\t removed = next - first - 1;\n\t next = uri.indexOf('\\\\', next + 1);\n\t }\n\t if (removed > 0) {\n\t uri = uri.slice(0, first + 1) + StringAndHoles.SHORTEN_END + uri.slice(removed);\n\t var hole = {\n\t begin: first + 1,\n\t size: removed - StringAndHoles.SHORTEN_END.length,\n\t replacementSize: StringAndHoles.SHORTEN_END.length\n\t };\n\t holes.push(hole);\n\t }\n\t }\n\t if (uri.length > length) {\n\t var over = uri.length - length + StringAndHoles.SHORTEN_END.length;\n\t var start = uri.length - over;\n\t uri = uri.slice(0, start) + StringAndHoles.SHORTEN_END;\n\t var hole = {\n\t begin: start,\n\t size: over,\n\t replacementSize: StringAndHoles.SHORTEN_END.length\n\t };\n\t holes.push(hole);\n\t }\n\t strAndHoles.holes = holes;\n\t strAndHoles.value = uri;\n\t return strAndHoles;\n\t };\n\t /**\n\t * Shorten the passed string.\n\t * @param toShortenOrig The string to shorten\n\t * @param length The length to which the string will be shortened.\n\t * @param toAppend The string to append at the end (usually, it is set to '...')\n\t */\n\t StringAndHoles.shortenString = function (toShortenOrig, length, toAppend) {\n\t if (length === void 0) { length = 200; }\n\t var toShorten = toShortenOrig;\n\t toAppend = Utils_1.Utils.toNotNullString(toAppend);\n\t var strAndHoles = new StringAndHoles();\n\t if (Utils_1.Utils.isNullOrEmptyString(toShorten) || length <= toAppend.length) {\n\t strAndHoles.value = toShorten;\n\t return strAndHoles;\n\t }\n\t if (toShorten.length <= length) {\n\t strAndHoles.value = toShorten;\n\t return strAndHoles;\n\t }\n\t var str = toShorten;\n\t length = length - toAppend.length;\n\t str = str.slice(0, length);\n\t if (toShorten.charAt(str.length) !== ' ') {\n\t var pos = str.lastIndexOf(' ');\n\t if (pos !== -1 && str.length - pos < StringAndHoles.WORD_SHORTER) {\n\t str = str.slice(0, pos);\n\t }\n\t }\n\t var holes = [];\n\t holes[0] = {\n\t begin: str.length,\n\t size: toShorten.length - str.length,\n\t replacementSize: toAppend.length\n\t };\n\t str += toAppend;\n\t strAndHoles.value = str;\n\t strAndHoles.holes = holes;\n\t return strAndHoles;\n\t };\n\t /**\n\t * Shorten the passed URI intelligently (path-aware).\n\t * @param toShortenOrig The URI to shorten\n\t * @param length The length to which the URI will be shortened.\n\t */\n\t StringAndHoles.shortenUri = function (uri, length) {\n\t var strAndHoles = new StringAndHoles();\n\t if (Utils_1.Utils.isNullOrEmptyString(uri) || (uri.length <= length)) {\n\t strAndHoles.value = uri;\n\t return strAndHoles;\n\t }\n\t var holes = [];\n\t var first = uri.indexOf('//');\n\t if (first !== -1) {\n\t first = uri.indexOf('/', first + 2);\n\t }\n\t if (first !== -1) {\n\t var removed = 0;\n\t var next = uri.indexOf('/', first + 1);\n\t while (next !== -1 && uri.length - removed + StringAndHoles.SHORTEN_END.length > length) {\n\t removed = next - first - 1;\n\t next = uri.indexOf('/', next + 1);\n\t }\n\t if (removed > 0) {\n\t uri = uri.slice(0, first + 1) + StringAndHoles.SHORTEN_END + uri.slice(first + 1 + removed);\n\t var hole = {\n\t begin: first + 1,\n\t size: removed,\n\t replacementSize: StringAndHoles.SHORTEN_END.length\n\t };\n\t holes.push(hole);\n\t }\n\t }\n\t if (uri.length > length) {\n\t var over = uri.length - length + StringAndHoles.SHORTEN_END.length;\n\t var start = uri.length - over;\n\t uri = uri.slice(0, start) + StringAndHoles.SHORTEN_END;\n\t var hole = {\n\t begin: start,\n\t size: over,\n\t replacementSize: StringAndHoles.SHORTEN_END.length\n\t };\n\t holes.push(hole);\n\t }\n\t strAndHoles.holes = holes;\n\t strAndHoles.value = uri;\n\t return strAndHoles;\n\t };\n\t return StringAndHoles;\n\t}());\n\tStringAndHoles.SHORTEN_END = '...';\n\tStringAndHoles.WORD_SHORTER = 10;\n\texports.StringAndHoles = StringAndHoles;\n\tvar HighlightUtils = (function () {\n\t function HighlightUtils() {\n\t }\n\t /**\n\t * Highlight the passed string using specified highlights and holes.\n\t * @param content The string to highlight items in.\n\t * @param highlights The highlighted positions to highlight in the string.\n\t * @param holes Possible holes which are used to skip highlighting.\n\t * @param cssClass The css class to use on the highlighting `span`.\n\t */\n\t HighlightUtils.highlightString = function (content, highlights, holes, cssClass) {\n\t Assert_1.Assert.isNotUndefined(highlights);\n\t Assert_1.Assert.isNotNull(highlights);\n\t Assert_1.Assert.isNonEmptyString(cssClass);\n\t if (Utils_1.Utils.isNullOrEmptyString(content)) {\n\t return content;\n\t }\n\t var maxIndex = content.length;\n\t var highlighted = '';\n\t var last = 0;\n\t for (var i = 0; i < highlights.length; i++) {\n\t var highlight = highlights[i];\n\t var start = highlight.offset;\n\t var end = start + highlight.length;\n\t if (holes !== null) {\n\t var skip = false;\n\t for (var j = 0; j < holes.length; j++) {\n\t var hole = holes[j];\n\t var holeBegin = hole.begin;\n\t var holeEnd = holeBegin + hole.size;\n\t if (start < holeBegin && end >= holeBegin && end < holeEnd) {\n\t end = holeBegin;\n\t }\n\t else if (start >= holeBegin && end < holeEnd) {\n\t skip = true;\n\t break;\n\t }\n\t else if (start >= holeBegin && start < holeEnd && end >= holeEnd) {\n\t start = holeBegin + hole.replacementSize;\n\t end -= hole.size - hole.replacementSize;\n\t }\n\t else if (start < holeBegin && end >= holeEnd) {\n\t end -= hole.size - hole.replacementSize;\n\t }\n\t else if (start >= holeEnd) {\n\t var offset = hole.size - hole.replacementSize;\n\t start -= offset;\n\t end -= offset;\n\t }\n\t }\n\t if (skip || start === end) {\n\t continue;\n\t }\n\t }\n\t if (end > maxIndex) {\n\t break;\n\t }\n\t highlighted += _.escape(content.slice(last, start));\n\t highlighted += \"\" + text + \"\";\n\t };\n\t return AnchorUtils;\n\t}());\n\texports.AnchorUtils = AnchorUtils;\n\tvar ImageUtils = (function () {\n\t function ImageUtils() {\n\t }\n\t ImageUtils.buildImage = function (src, options) {\n\t var ret = '';\n\t return ret;\n\t };\n\t ImageUtils.selectImageFromResult = function (result) {\n\t return document.querySelector(\"img[data-coveo-uri-hash=\" + result.raw['urihash'] + \"]\");\n\t };\n\t ImageUtils.buildImageWithDirectSrcAttribute = function (endpoint, result) {\n\t var image = new Image();\n\t var dataStreamUri = endpoint.getViewAsDatastreamUri(result.uniqueId, '$Thumbnail$', { contentType: 'image/png' });\n\t image.onload = function () {\n\t ImageUtils.selectImageFromResult(result).setAttribute('src', dataStreamUri);\n\t };\n\t image.src = dataStreamUri;\n\t };\n\t ImageUtils.buildImageWithBase64SrcAttribute = function (endpoint, result) {\n\t endpoint.getRawDataStream(result.uniqueId, '$Thumbnail$')\n\t .then(function (response) {\n\t var rawBinary = String.fromCharCode.apply(null, new Uint8Array(response));\n\t ImageUtils.selectImageFromResult(result).setAttribute('src', 'data:image/png;base64, ' + btoa(rawBinary));\n\t })\n\t .catch(function () {\n\t ImageUtils.selectImageFromResult(result).remove();\n\t });\n\t };\n\t ImageUtils.buildImageFromResult = function (result, endpoint, options) {\n\t options = options ? options : {};\n\t var img = ImageUtils.buildImage(undefined, _.extend(options, { 'data-coveo-uri-hash': result.raw['urihash'] }));\n\t if (endpoint.isJsonp() || DeviceUtils_1.DeviceUtils.isIE8or9()) {\n\t // For jsonp and IE8-9 (XDomain) we can't GET/POST for binary data. We are limited to only setting the src attribute directly on the img.\n\t ImageUtils.buildImageWithDirectSrcAttribute(endpoint, result);\n\t }\n\t else {\n\t // Base 64 img allows us to GET/POST the image as raw binary, so that we can also pass the credential of the user\n\t // Useful for phonegap.\n\t ImageUtils.buildImageWithBase64SrcAttribute(endpoint, result);\n\t }\n\t return img;\n\t };\n\t return ImageUtils;\n\t}());\n\texports.ImageUtils = ImageUtils;\n\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\tvar KEYBOARD;\n\t(function (KEYBOARD) {\n\t KEYBOARD[KEYBOARD[\"BACKSPACE\"] = 8] = \"BACKSPACE\";\n\t KEYBOARD[KEYBOARD[\"TAB\"] = 9] = \"TAB\";\n\t KEYBOARD[KEYBOARD[\"ENTER\"] = 13] = \"ENTER\";\n\t KEYBOARD[KEYBOARD[\"SHIFT\"] = 16] = \"SHIFT\";\n\t KEYBOARD[KEYBOARD[\"CTRL\"] = 17] = \"CTRL\";\n\t KEYBOARD[KEYBOARD[\"ALT\"] = 18] = \"ALT\";\n\t KEYBOARD[KEYBOARD[\"ESCAPE\"] = 27] = \"ESCAPE\";\n\t KEYBOARD[KEYBOARD[\"SPACEBAR\"] = 32] = \"SPACEBAR\";\n\t KEYBOARD[KEYBOARD[\"PAGE_UP\"] = 33] = \"PAGE_UP\";\n\t KEYBOARD[KEYBOARD[\"PAGE_DOWN\"] = 34] = \"PAGE_DOWN\";\n\t KEYBOARD[KEYBOARD[\"HOME\"] = 36] = \"HOME\";\n\t KEYBOARD[KEYBOARD[\"LEFT_ARROW\"] = 37] = \"LEFT_ARROW\";\n\t KEYBOARD[KEYBOARD[\"UP_ARROW\"] = 38] = \"UP_ARROW\";\n\t KEYBOARD[KEYBOARD[\"RIGHT_ARROW\"] = 39] = \"RIGHT_ARROW\";\n\t KEYBOARD[KEYBOARD[\"DOWN_ARROW\"] = 40] = \"DOWN_ARROW\";\n\t KEYBOARD[KEYBOARD[\"INSERT\"] = 45] = \"INSERT\";\n\t KEYBOARD[KEYBOARD[\"DELETE\"] = 46] = \"DELETE\";\n\t})(KEYBOARD = exports.KEYBOARD || (exports.KEYBOARD = {}));\n\tvar KeyboardUtils = (function () {\n\t function KeyboardUtils() {\n\t }\n\t KeyboardUtils.keysEqual = function (key, code) {\n\t if (!Utils_1.Utils.isNullOrUndefined(key.keyCode)) {\n\t return key.keyCode == code;\n\t }\n\t else if (!Utils_1.Utils.isNullOrUndefined(key.which)) {\n\t return key.which == code;\n\t }\n\t return false;\n\t };\n\t KeyboardUtils.isAllowedKeyForOmnibox = function (e) {\n\t var keycode = e.keyCode;\n\t var valid = (KeyboardUtils.isNumberKeyPushed(keycode)) ||\n\t (keycode == 32 || keycode == 13) ||\n\t (KeyboardUtils.isLetterKeyPushed(keycode)) ||\n\t (keycode > 95 && keycode < 112) ||\n\t (keycode > 185 && keycode < 193) ||\n\t (keycode > 218 && keycode < 223) ||\n\t (keycode == KEYBOARD.BACKSPACE || keycode == KEYBOARD.DELETE) ||\n\t (KeyboardUtils.isArrowKeyPushed(keycode));\n\t return valid;\n\t };\n\t KeyboardUtils.isAllowedKeyForSearchAsYouType = function (e) {\n\t return KeyboardUtils.isAllowedKeyForOmnibox(e) && !KeyboardUtils.isArrowKeyPushed(e.keyCode);\n\t };\n\t KeyboardUtils.isDeleteOrBackspace = function (e) {\n\t return KeyboardUtils.keysEqual(e, KEYBOARD.BACKSPACE) || KeyboardUtils.keysEqual(e, KEYBOARD.DELETE);\n\t };\n\t KeyboardUtils.isArrowKeyPushed = function (keycode) {\n\t return keycode == KEYBOARD.LEFT_ARROW ||\n\t keycode == KEYBOARD.UP_ARROW ||\n\t keycode == KEYBOARD.RIGHT_ARROW ||\n\t keycode == KEYBOARD.DOWN_ARROW;\n\t };\n\t KeyboardUtils.isNumberKeyPushed = function (keycode) {\n\t return keycode > 47 && keycode < 58;\n\t };\n\t KeyboardUtils.isLetterKeyPushed = function (keycode) {\n\t return keycode > 64 && keycode < 91;\n\t };\n\t // Return a keyboard event listener that only executes the function if certain keys are pressed.\n\t KeyboardUtils.keypressAction = function (keyCode, action) {\n\t return function (e) {\n\t var data = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t data[_i - 1] = arguments[_i];\n\t }\n\t if (e) {\n\t var eventCode = e.charCode || e.keyCode;\n\t if (eventCode) {\n\t if (_.isArray(keyCode) && _.contains(keyCode, eventCode)) {\n\t action(e);\n\t }\n\t else if (eventCode === keyCode) {\n\t action(e);\n\t }\n\t }\n\t }\n\t };\n\t };\n\t return KeyboardUtils;\n\t}());\n\texports.KeyboardUtils = KeyboardUtils;\n\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar localStorage = window.localStorage;\n\tvar LocalStorageUtils = (function () {\n\t function LocalStorageUtils(id) {\n\t this.id = id;\n\t }\n\t LocalStorageUtils.prototype.save = function (data) {\n\t try {\n\t if (localStorage != null) {\n\t localStorage.setItem(this.getLocalStorageKey(), JSON.stringify(data));\n\t }\n\t }\n\t catch (error) {\n\t }\n\t };\n\t LocalStorageUtils.prototype.load = function () {\n\t try {\n\t if (localStorage == null) {\n\t return null;\n\t }\n\t var value = localStorage.getItem(this.getLocalStorageKey());\n\t return value && JSON.parse(value);\n\t }\n\t catch (error) {\n\t return null;\n\t }\n\t };\n\t LocalStorageUtils.prototype.remove = function (key) {\n\t try {\n\t if (localStorage != null) {\n\t if (key == undefined) {\n\t localStorage.removeItem(this.getLocalStorageKey());\n\t }\n\t else {\n\t var oldObj = this.load();\n\t delete oldObj[key];\n\t this.save(oldObj);\n\t }\n\t }\n\t }\n\t catch (error) {\n\t }\n\t };\n\t LocalStorageUtils.prototype.getLocalStorageKey = function () {\n\t return 'coveo-' + this.id;\n\t };\n\t return LocalStorageUtils;\n\t}());\n\texports.LocalStorageUtils = LocalStorageUtils;\n\n\n/***/ },\n/* 72 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar OS_NAME;\n\t(function (OS_NAME) {\n\t OS_NAME[OS_NAME[\"WINDOWS\"] = 0] = \"WINDOWS\";\n\t OS_NAME[OS_NAME[\"MACOSX\"] = 1] = \"MACOSX\";\n\t OS_NAME[OS_NAME[\"UNIX\"] = 2] = \"UNIX\";\n\t OS_NAME[OS_NAME[\"LINUX\"] = 3] = \"LINUX\";\n\t OS_NAME[OS_NAME[\"UNKNOWN\"] = 4] = \"UNKNOWN\";\n\t})(OS_NAME = exports.OS_NAME || (exports.OS_NAME = {}));\n\tvar OSUtils = (function () {\n\t function OSUtils() {\n\t }\n\t OSUtils.get = function (nav) {\n\t if (nav === void 0) { nav = navigator; }\n\t var osName;\n\t if (nav.appVersion.indexOf('Win') != -1) {\n\t osName = OS_NAME.WINDOWS;\n\t }\n\t else if (nav.appVersion.indexOf('Mac') != -1) {\n\t osName = OS_NAME.MACOSX;\n\t }\n\t else if (nav.appVersion.indexOf('X11') != -1) {\n\t osName = OS_NAME.UNIX;\n\t }\n\t else if (nav.appVersion.indexOf('Linux') != -1) {\n\t osName = OS_NAME.LINUX;\n\t }\n\t else {\n\t osName = OS_NAME.UNKNOWN;\n\t }\n\t return osName;\n\t };\n\t return OSUtils;\n\t}());\n\texports.OSUtils = OSUtils;\n\n\n/***/ },\n/* 73 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar VerticalAlignment;\n\t(function (VerticalAlignment) {\n\t VerticalAlignment[VerticalAlignment[\"TOP\"] = 0] = \"TOP\";\n\t VerticalAlignment[VerticalAlignment[\"MIDDLE\"] = 1] = \"MIDDLE\";\n\t VerticalAlignment[VerticalAlignment[\"BOTTOM\"] = 2] = \"BOTTOM\";\n\t VerticalAlignment[VerticalAlignment[\"INNERTOP\"] = 3] = \"INNERTOP\";\n\t VerticalAlignment[VerticalAlignment[\"INNERBOTTOM\"] = 4] = \"INNERBOTTOM\";\n\t})(VerticalAlignment = exports.VerticalAlignment || (exports.VerticalAlignment = {}));\n\tvar HorizontalAlignment;\n\t(function (HorizontalAlignment) {\n\t HorizontalAlignment[HorizontalAlignment[\"LEFT\"] = 0] = \"LEFT\";\n\t HorizontalAlignment[HorizontalAlignment[\"CENTER\"] = 1] = \"CENTER\";\n\t HorizontalAlignment[HorizontalAlignment[\"RIGHT\"] = 2] = \"RIGHT\";\n\t HorizontalAlignment[HorizontalAlignment[\"INNERLEFT\"] = 3] = \"INNERLEFT\";\n\t HorizontalAlignment[HorizontalAlignment[\"INNERRIGHT\"] = 4] = \"INNERRIGHT\";\n\t})(HorizontalAlignment = exports.HorizontalAlignment || (exports.HorizontalAlignment = {}));\n\tvar PopupUtils = (function () {\n\t function PopupUtils() {\n\t }\n\t PopupUtils.positionPopup = function (popUp, nextTo, boundary, desiredPosition, appendTo, checkForBoundary) {\n\t if (checkForBoundary === void 0) { checkForBoundary = 0; }\n\t popUp.style.position = 'absolute';\n\t if (appendTo) {\n\t Dom_1.$$(appendTo).append(popUp);\n\t }\n\t desiredPosition.verticalOffset = desiredPosition.verticalOffset ? desiredPosition.verticalOffset : 0;\n\t desiredPosition.horizontalOffset = desiredPosition.horizontalOffset ? desiredPosition.horizontalOffset : 0;\n\t var popUpPosition = Dom_1.$$(nextTo).offset();\n\t PopupUtils.basicVerticalAlignment(popUpPosition, popUp, nextTo, desiredPosition);\n\t PopupUtils.basicHorizontalAlignment(popUpPosition, popUp, nextTo, desiredPosition);\n\t PopupUtils.finalAdjustement(Dom_1.$$(popUp).offset(), popUpPosition, popUp, desiredPosition);\n\t var popUpBoundary = PopupUtils.getBoundary(popUp);\n\t var boundaryPosition = PopupUtils.getBoundary(boundary);\n\t if (checkForBoundary < 2) {\n\t var checkBoundary = PopupUtils.checkForOutOfBoundary(popUpBoundary, boundaryPosition);\n\t if (checkBoundary.horizontal != 'ok' && desiredPosition.horizontalClip === true) {\n\t var width = popUp.offsetWidth;\n\t if (popUpBoundary.left < boundaryPosition.left) {\n\t width -= boundaryPosition.left - popUpBoundary.left;\n\t }\n\t if (popUpBoundary.right > boundaryPosition.right) {\n\t width -= popUpBoundary.right - boundaryPosition.right;\n\t }\n\t popUp.style.width = width + 'px';\n\t checkBoundary.horizontal = 'ok';\n\t }\n\t if (checkBoundary.vertical != 'ok' || checkBoundary.horizontal != 'ok') {\n\t var newDesiredPosition = PopupUtils.alignInsideBoundary(desiredPosition, checkBoundary);\n\t PopupUtils.positionPopup(popUp, nextTo, boundary, newDesiredPosition, appendTo, checkForBoundary + 1);\n\t }\n\t }\n\t };\n\t PopupUtils.finalAdjustement = function (popUpOffSet, popUpPosition, popUp, desiredPosition) {\n\t var position = Dom_1.$$(popUp).position();\n\t popUp.style.top = (position.top + desiredPosition.verticalOffset) - (popUpOffSet.top - popUpPosition.top) + 'px';\n\t popUp.style.left = (position.left + desiredPosition.horizontalOffset) - (popUpOffSet.left - popUpPosition.left) + 'px';\n\t };\n\t PopupUtils.basicVerticalAlignment = function (popUpPosition, popUp, nextTo, desiredPosition) {\n\t switch (desiredPosition.vertical) {\n\t case VerticalAlignment.TOP:\n\t popUpPosition.top -= popUp.offsetHeight;\n\t break;\n\t case VerticalAlignment.BOTTOM:\n\t popUpPosition.top += nextTo.offsetHeight;\n\t break;\n\t case VerticalAlignment.MIDDLE:\n\t popUpPosition.top -= popUp.offsetHeight / 3;\n\t case VerticalAlignment.INNERTOP:\n\t break; // Nothing to do, it's the default alignment normally\n\t case VerticalAlignment.INNERBOTTOM:\n\t popUpPosition.top -= popUp.offsetHeight - nextTo.offsetHeight;\n\t break;\n\t default:\n\t break;\n\t }\n\t };\n\t PopupUtils.basicHorizontalAlignment = function (popUpPosition, popUp, nextTo, desiredPosition) {\n\t switch (desiredPosition.horizontal) {\n\t case HorizontalAlignment.LEFT:\n\t popUpPosition.left -= popUp.offsetWidth;\n\t break;\n\t case HorizontalAlignment.RIGHT:\n\t popUpPosition.left += nextTo.offsetWidth;\n\t break;\n\t case HorizontalAlignment.CENTER:\n\t popUpPosition.left += PopupUtils.offSetToAlignCenter(popUp, nextTo);\n\t break;\n\t case HorizontalAlignment.INNERLEFT:\n\t break; // Nothing to do, it's the default alignment normally\n\t case HorizontalAlignment.INNERRIGHT:\n\t popUpPosition.left -= popUp.offsetWidth - nextTo.offsetWidth;\n\t break;\n\t default:\n\t break;\n\t }\n\t };\n\t PopupUtils.alignInsideBoundary = function (oldPosition, checkBoundary) {\n\t var newDesiredPosition = oldPosition;\n\t if (checkBoundary.horizontal == 'left') {\n\t newDesiredPosition.horizontal = HorizontalAlignment.RIGHT;\n\t }\n\t if (checkBoundary.horizontal == 'right') {\n\t newDesiredPosition.horizontal = HorizontalAlignment.LEFT;\n\t }\n\t if (checkBoundary.vertical == 'top') {\n\t newDesiredPosition.vertical = VerticalAlignment.BOTTOM;\n\t }\n\t if (checkBoundary.vertical == 'bottom') {\n\t newDesiredPosition.vertical = VerticalAlignment.TOP;\n\t }\n\t return newDesiredPosition;\n\t };\n\t PopupUtils.offSetToAlignCenter = function (popUp, nextTo) {\n\t return (nextTo.offsetWidth - popUp.offsetWidth) / 2;\n\t };\n\t PopupUtils.getBoundary = function (element) {\n\t var boundaryOffset = Dom_1.$$(element).offset();\n\t var toAddVertically;\n\t if (element.tagName.toLowerCase() == 'body') {\n\t toAddVertically = Math.max(element.scrollHeight, element.offsetHeight);\n\t }\n\t else if (element.tagName.toLowerCase() == 'html') {\n\t toAddVertically = Math.max(element.clientHeight, element.scrollHeight, element.offsetHeight);\n\t }\n\t else {\n\t toAddVertically = element.offsetHeight;\n\t }\n\t return {\n\t top: boundaryOffset.top,\n\t left: boundaryOffset.left,\n\t right: boundaryOffset.left + element.offsetWidth,\n\t bottom: boundaryOffset.top + toAddVertically\n\t };\n\t };\n\t PopupUtils.checkForOutOfBoundary = function (popUpBoundary, boundary) {\n\t var ret = {\n\t vertical: 'ok',\n\t horizontal: 'ok'\n\t };\n\t if (popUpBoundary.top < boundary.top) {\n\t ret.vertical = 'top';\n\t }\n\t if (popUpBoundary.bottom > boundary.bottom) {\n\t ret.vertical = 'bottom';\n\t }\n\t if (popUpBoundary.left < boundary.left) {\n\t ret.horizontal = 'left';\n\t }\n\t if (popUpBoundary.right > boundary.right) {\n\t ret.horizontal = 'right';\n\t }\n\t return ret;\n\t };\n\t return PopupUtils;\n\t}());\n\texports.PopupUtils = PopupUtils;\n\n\n/***/ },\n/* 74 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Options_1 = __webpack_require__(36);\n\tvar HighlightUtils_1 = __webpack_require__(68);\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\t// \\u2011: http://graphemica.com/%E2%80%91\n\t// Used to split terms and phrases. Should match characters that can separate words.\n\tvar wordBoundary = '[\\\\.\\\\-\\\\u2011\\\\s~=,.\\\\|\\\\/:\\'`’;_()!?&+]';\n\tvar regexStart = '(' + wordBoundary + '|^)(';\n\tvar DefaultStreamHighlightOptions = (function (_super) {\n\t __extends(DefaultStreamHighlightOptions, _super);\n\t function DefaultStreamHighlightOptions(cssClass, shorten, regexFlags) {\n\t if (cssClass === void 0) { cssClass = 'coveo-highlight'; }\n\t if (shorten === void 0) { shorten = 0; }\n\t if (regexFlags === void 0) { regexFlags = 'gi'; }\n\t var _this = _super.call(this) || this;\n\t _this.cssClass = cssClass;\n\t _this.shorten = shorten;\n\t _this.regexFlags = regexFlags;\n\t return _this;\n\t }\n\t return DefaultStreamHighlightOptions;\n\t}(Options_1.Options));\n\tvar StreamHighlightUtils = (function () {\n\t function StreamHighlightUtils() {\n\t }\n\t StreamHighlightUtils.highlightStreamHTML = function (stream, termsToHighlight, phrasesToHighlight, options) {\n\t var opts = new DefaultStreamHighlightOptions().merge(options);\n\t var container = createStreamHTMLContainer(stream);\n\t var allElements = Dom_1.$$(container).findAll('*');\n\t if (allElements.length > 0) {\n\t _.each(allElements, function (elem, i) {\n\t var text = Dom_1.$$(elem).text();\n\t elem.innerHTML = HighlightUtils_1.HighlightUtils.highlightString(text, getRestHighlightsForAllTerms(text, termsToHighlight, phrasesToHighlight, opts), [], opts.cssClass);\n\t });\n\t }\n\t else {\n\t return StreamHighlightUtils.highlightStreamText(stream, termsToHighlight, phrasesToHighlight, options);\n\t }\n\t return container.innerHTML;\n\t };\n\t StreamHighlightUtils.highlightStreamText = function (stream, termsToHighlight, phrasesToHighlight, options) {\n\t var opts = new DefaultStreamHighlightOptions().merge(options);\n\t return HighlightUtils_1.HighlightUtils.highlightString(stream, getRestHighlightsForAllTerms(stream, termsToHighlight, phrasesToHighlight, opts), [], opts.cssClass);\n\t };\n\t return StreamHighlightUtils;\n\t}());\n\texports.StreamHighlightUtils = StreamHighlightUtils;\n\tfunction getRestHighlightsForAllTerms(toHighlight, termsToHighlight, phrasesToHighlight, opts) {\n\t var indexes = [];\n\t var sortedTerms = _.keys(termsToHighlight).sort(termsSorting);\n\t _.each(sortedTerms, function (term) {\n\t var termsToIterate = _.compact([term].concat(termsToHighlight[term]).sort(termsSorting));\n\t termsToIterate = _.map(termsToIterate, function (term) { return Utils_1.Utils.escapeRegexCharacter(term); });\n\t var regex = regexStart;\n\t regex += termsToIterate.join('|') + ')(?=(?:' + wordBoundary + '|$)+)';\n\t var indexesFound = StringUtils_1.StringUtils.getHighlights(toHighlight, new RegExp(regex, opts.regexFlags), term);\n\t if (indexesFound != undefined && Utils_1.Utils.isNonEmptyArray(indexesFound)) {\n\t indexes.push(indexesFound);\n\t }\n\t });\n\t _.each(phrasesToHighlight, function (phrase, origPhrase) {\n\t var split = origPhrase.split(' ');\n\t var regex = regexStart;\n\t _.each(split, function (origWord, i) {\n\t regex += '(?:' + [origWord].concat(phrase[origWord]).join('|') + ')';\n\t if (i == split.length - 1) {\n\t regex += '(?=';\n\t }\n\t regex += wordBoundary;\n\t if (i == split.length - 1) {\n\t regex += '|$)';\n\t }\n\t if (i != split.length - 1) {\n\t regex += '+';\n\t }\n\t });\n\t regex += ')';\n\t var indexesFound = StringUtils_1.StringUtils.getHighlights(toHighlight, new RegExp(regex, opts.regexFlags), origPhrase);\n\t if (indexesFound != undefined && Utils_1.Utils.isNonEmptyArray(indexesFound)) {\n\t indexes.push(indexesFound);\n\t }\n\t });\n\t return _.chain(indexes)\n\t .flatten()\n\t .compact()\n\t .uniq(function (highlight) {\n\t return highlight.offset;\n\t })\n\t .sortBy(function (highlight) {\n\t return highlight.offset;\n\t })\n\t .map(function (highlight) {\n\t var keysFromTerms = _.keys(termsToHighlight);\n\t var keysFromPhrases = _.keys(phrasesToHighlight);\n\t var keys = keysFromTerms.concat(keysFromPhrases);\n\t var group = _.indexOf(keys, highlight.dataHighlightGroupTerm) + 1;\n\t return _.extend(highlight, { dataHighlightGroup: group });\n\t })\n\t .value();\n\t}\n\tfunction termsSorting(first, second) {\n\t return first.length - second.length;\n\t}\n\tfunction createStreamHTMLContainer(stream) {\n\t var container = Dom_1.$$('div').el;\n\t container.innerHTML = stream;\n\t return container;\n\t}\n\n\n/***/ },\n/* 75 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar QueryController_1 = __webpack_require__(76);\n\texports.QueryController = QueryController_1.QueryController;\n\tvar FacetQueryController_1 = __webpack_require__(93);\n\texports.FacetQueryController = FacetQueryController_1.FacetQueryController;\n\tvar FacetRangeQueryController_1 = __webpack_require__(96);\n\texports.FacetRangeQueryController = FacetRangeQueryController_1.FacetRangeQueryController;\n\tvar FacetSliderQueryController_1 = __webpack_require__(97);\n\texports.FacetSliderQueryController = FacetSliderQueryController_1.FacetSliderQueryController;\n\tvar HierarchicalFacetQueryController_1 = __webpack_require__(98);\n\texports.HierarchicalFacetQueryController = HierarchicalFacetQueryController_1.HierarchicalFacetQueryController;\n\tvar HistoryController_1 = __webpack_require__(99);\n\texports.HistoryController = HistoryController_1.HistoryController;\n\tvar LocalStorageHistoryController_1 = __webpack_require__(101);\n\texports.LocalStorageHistoryController = LocalStorageHistoryController_1.LocalStorageHistoryController;\n\n\n/***/ },\n/* 76 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar RootComponent_1 = __webpack_require__(77);\n\tvar QueryBuilder_1 = __webpack_require__(79);\n\tvar LocalStorageUtils_1 = __webpack_require__(71);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar SearchEndpointWithDefaultCallOptions_1 = __webpack_require__(81);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar Defer_1 = __webpack_require__(34);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar BaseComponent_1 = __webpack_require__(78);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar coveo_analytics_1 = __webpack_require__(82);\n\tvar _ = __webpack_require__(16);\n\tvar DefaultQueryOptions = (function () {\n\t function DefaultQueryOptions() {\n\t this.searchAsYouType = false;\n\t this.closeModalBox = true;\n\t this.cancel = false;\n\t this.logInActionsHistory = false;\n\t }\n\t return DefaultQueryOptions;\n\t}());\n\t/**\n\t * This class is automatically instantiated and bound to the root of your search interface when you initialize the framework.
\n\t * It is essentially a singleton that wraps the access to the {@link SearchEndpoint} endpoint to execute query, and is in charge of triggering the different query events.
\n\t * This is what every component of the framework uses internally to execute query or access the endpoint.
\n\t * When calling Coveo.executeQuery this class is used.\n\t */\n\tvar QueryController = (function (_super) {\n\t __extends(QueryController, _super);\n\t /**\n\t * Create a new query controller\n\t * @param element\n\t * @param options\n\t */\n\t function QueryController(element, options, usageAnalytics, searchInterface) {\n\t var _this = _super.call(this, element, QueryController.ID) || this;\n\t _this.options = options;\n\t _this.usageAnalytics = usageAnalytics;\n\t _this.searchInterface = searchInterface;\n\t _this.showingExecutingQueryAnimation = false;\n\t _this.localStorage = new LocalStorageUtils_1.LocalStorageUtils('lastQueryHash');\n\t Assert_1.Assert.exists(element);\n\t Assert_1.Assert.exists(options);\n\t _this.firstQuery = true;\n\t _this.historyStore = new coveo_analytics_1.history.HistoryStore();\n\t return _this;\n\t }\n\t /**\n\t * Set the {@link SearchEndpoint} that the query controller should use to execute query\n\t * @param endpoint\n\t */\n\t QueryController.prototype.setEndpoint = function (endpoint) {\n\t this.overrideEndpoint = endpoint;\n\t this.logger.debug('Endpoint set', endpoint);\n\t };\n\t /**\n\t * Get the {@link SearchEndpoint} that is currently used by the query controller to execute query\n\t * @returns {SearchEndpoint}\n\t */\n\t QueryController.prototype.getEndpoint = function () {\n\t var endpoint = this.overrideEndpoint || this.options.endpoint;\n\t // We must wrap the endpoint in a decorator that'll add the call options\n\t // we obtain by firing the proper event. Those are used for authentication\n\t // providers, and I guess other stuff later on.\n\t return new SearchEndpointWithDefaultCallOptions_1.SearchEndpointWithDefaultCallOptions(endpoint, this.getCallOptions());\n\t };\n\t /**\n\t * Return the last query that was performed by the query controller\n\t * @returns {IQuery|Query}\n\t */\n\t QueryController.prototype.getLastQuery = function () {\n\t return this.lastQuery || new QueryBuilder_1.QueryBuilder().build();\n\t };\n\t /**\n\t * Return the last query results set.\n\t * @returns {IQueryResults}\n\t */\n\t QueryController.prototype.getLastResults = function () {\n\t return this.lastQueryResults;\n\t };\n\t /**\n\t * Execute a query and return a Promise of IQueryResults.
\n\t * This will execute the normal query flow, triggering all the necessary query events (newQuery
\n\t * All components present in the interface will act accordingly (modify the query and render results if needed).\n\t * @param options\n\t * @returns {Promise}\n\t */\n\t QueryController.prototype.executeQuery = function (options) {\n\t var _this = this;\n\t options = _.extend(new DefaultQueryOptions(), options);\n\t if (options.closeModalBox) {\n\t ExternalModulesShim_1.ModalBox.close(true);\n\t }\n\t this.logger.debug('Executing new query');\n\t this.cancelAnyCurrentPendingQuery();\n\t if (options.beforeExecuteQuery != null) {\n\t options.beforeExecuteQuery();\n\t }\n\t if (!options.ignoreWarningSearchEvent) {\n\t this.usageAnalytics.warnAboutSearchEvent();\n\t }\n\t this.showExecutingQueryAnimation();\n\t var dataToSendOnNewQuery = {\n\t searchAsYouType: options.searchAsYouType,\n\t cancel: options.cancel,\n\t origin: options.origin\n\t };\n\t this.newQueryEvent(dataToSendOnNewQuery);\n\t if (dataToSendOnNewQuery.cancel) {\n\t this.cancelQuery();\n\t return;\n\t }\n\t var queryBuilder = this.createQueryBuilder(options);\n\t // The query was canceled\n\t if (!queryBuilder) {\n\t return;\n\t }\n\t var query = queryBuilder.build();\n\t if (options.logInActionsHistory) {\n\t this.logQueryInActionsHistory(query, options.isFirstQuery);\n\t }\n\t var endpointToUse = this.getEndpoint();\n\t var promise = this.currentPendingQuery = endpointToUse.search(query);\n\t promise.then(function (queryResults) {\n\t Assert_1.Assert.exists(queryResults);\n\t var firstQuery = _this.firstQuery;\n\t if (_this.firstQuery) {\n\t _this.firstQuery = false;\n\t }\n\t // If our promise is no longer the current one, then the query\n\t // has been cancel. We should do nothing here.\n\t if (promise !== _this.currentPendingQuery) {\n\t return;\n\t }\n\t _this.logger.debug('Query results received', query, queryResults);\n\t var enableHistory = _this.searchInterface && _this.searchInterface.options && _this.searchInterface.options.enableHistory;\n\t if ((!firstQuery || enableHistory) && _this.keepLastSearchUid(query, queryResults)) {\n\t queryResults.searchUid = _this.getLastSearchUid();\n\t queryResults._reusedSearchUid = true;\n\t QueryUtils_1.QueryUtils.setPropertyOnResults(queryResults, 'queryUid', _this.getLastSearchUid());\n\t }\n\t else {\n\t _this.lastQueryHash = _this.queryHash(query, queryResults);\n\t _this.lastSearchUid = queryResults.searchUid;\n\t }\n\t _this.lastQuery = query;\n\t _this.lastQueryResults = queryResults;\n\t _this.currentError = null;\n\t var dataToSendOnPreprocessResult = {\n\t queryBuilder: queryBuilder,\n\t query: query,\n\t results: queryResults,\n\t searchAsYouType: options.searchAsYouType\n\t };\n\t _this.preprocessResultsEvent(dataToSendOnPreprocessResult);\n\t var dataToSendOnNoResult = {\n\t queryBuilder: queryBuilder,\n\t query: query,\n\t results: queryResults,\n\t searchAsYouType: options.searchAsYouType,\n\t retryTheQuery: false\n\t };\n\t if (queryResults.results.length == 0) {\n\t _this.noResultEvent(dataToSendOnNoResult);\n\t }\n\t if (dataToSendOnNoResult.retryTheQuery) {\n\t // When retrying the query, we must forward the results to the deferred we\n\t // initially returned, in case someone is listening on it.\n\t return _this.executeQuery();\n\t }\n\t else {\n\t _this.lastQueryBuilder = queryBuilder;\n\t _this.currentPendingQuery = undefined;\n\t var dataToSendOnSuccess_1 = {\n\t queryBuilder: queryBuilder,\n\t query: query,\n\t results: queryResults,\n\t searchAsYouType: options.searchAsYouType\n\t };\n\t _this.querySuccessEvent(dataToSendOnSuccess_1);\n\t Defer_1.Defer.defer(function () {\n\t _this.deferredQuerySuccessEvent(dataToSendOnSuccess_1);\n\t _this.hideExecutingQueryAnimation();\n\t });\n\t return queryResults;\n\t }\n\t }).catch(function (error) {\n\t // If our deferred is no longer the current one, then the query\n\t // has been cancel. We should do nothing here.\n\t if (promise !== _this.currentPendingQuery) {\n\t return;\n\t }\n\t _this.logger.error('Query triggered an error', query, error);\n\t // this.currentPendingQuery.reject(error);\n\t _this.currentPendingQuery = undefined;\n\t var dataToSendOnError = {\n\t queryBuilder: queryBuilder,\n\t endpoint: endpointToUse,\n\t query: query,\n\t error: error,\n\t searchAsYouType: options.searchAsYouType\n\t };\n\t _this.lastQuery = query;\n\t _this.lastQueryResults = null;\n\t _this.currentError = error;\n\t _this.queryError(dataToSendOnError);\n\t _this.hideExecutingQueryAnimation();\n\t });\n\t var dataToSendDuringQuery = {\n\t queryBuilder: queryBuilder,\n\t query: query,\n\t searchAsYouType: options.searchAsYouType,\n\t promise: promise\n\t };\n\t this.duringQueryEvent(dataToSendDuringQuery);\n\t return this.currentPendingQuery;\n\t };\n\t /**\n\t * Using the same parameters as the last successful query, fetch another batch of results. Particularly useful for infinite scrolling, for example.\n\t * @param count\n\t * @returns {any}\n\t */\n\t QueryController.prototype.fetchMore = function (count) {\n\t var _this = this;\n\t if (this.currentPendingQuery != undefined) {\n\t return undefined;\n\t }\n\t // Send all pending events (think : search as you type)\n\t // This allows us to get the real search id for the results when the query returns\n\t this.usageAnalytics.sendAllPendingEvents();\n\t var queryBuilder = new QueryBuilder_1.QueryBuilder();\n\t this.continueLastQueryBuilder(queryBuilder, count);\n\t var query = queryBuilder.build();\n\t var endpointToUse = this.getEndpoint();\n\t var promise = this.currentPendingQuery = endpointToUse.search(query);\n\t var dataToSendDuringQuery = {\n\t queryBuilder: queryBuilder,\n\t query: query,\n\t searchAsYouType: false,\n\t promise: promise\n\t };\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.duringFetchMoreQuery, dataToSendDuringQuery);\n\t this.lastQueryBuilder = queryBuilder;\n\t this.lastQuery = query;\n\t promise.then(function (results) {\n\t // We re-use the search id from the initial search here, even though the\n\t // server provided us with a new one. 'Fetch mores' are considered to be\n\t // the same query from an analytics point of view.\n\t _this.currentPendingQuery = undefined;\n\t if (_this.lastQueryResults == null) {\n\t _this.lastQueryResults = results;\n\t }\n\t else {\n\t _.forEach(results.results, function (result) {\n\t _this.lastQueryResults.results.push(result);\n\t });\n\t }\n\t var dataToSendOnPreprocessResult = {\n\t queryBuilder: queryBuilder,\n\t query: query,\n\t results: results,\n\t searchAsYouType: false\n\t };\n\t _this.preprocessResultsEvent(dataToSendOnPreprocessResult);\n\t QueryUtils_1.QueryUtils.setIndexAndUidOnQueryResults(query, results, _this.getLastSearchUid(), results.pipeline, results.splitTestRun);\n\t var dataToSendOnFetchMoreSuccess = {\n\t query: query,\n\t results: results,\n\t queryBuilder: queryBuilder,\n\t searchAsYouType: false\n\t };\n\t _this.fetchMoreSuccessEvent(dataToSendOnFetchMoreSuccess);\n\t });\n\t return this.currentPendingQuery;\n\t };\n\t /**\n\t * Cancel any pending query\n\t */\n\t QueryController.prototype.cancelQuery = function () {\n\t this.cancelAnyCurrentPendingQuery();\n\t this.hideExecutingQueryAnimation();\n\t };\n\t QueryController.prototype.deferExecuteQuery = function (options) {\n\t var _this = this;\n\t this.showExecutingQueryAnimation();\n\t Defer_1.Defer.defer(function () { return _this.executeQuery(options); });\n\t };\n\t QueryController.prototype.ensureCreatedQueryBuilder = function () {\n\t if (!this.createdOneQueryBuilder) {\n\t this.createQueryBuilder(new DefaultQueryOptions());\n\t }\n\t };\n\t QueryController.prototype.createQueryBuilder = function (options) {\n\t Assert_1.Assert.exists(options);\n\t this.createdOneQueryBuilder = true;\n\t var queryBuilder = new QueryBuilder_1.QueryBuilder();\n\t // Default values, components will probably override them if they exists\n\t queryBuilder.language = String['locale'];\n\t queryBuilder.firstResult = queryBuilder.firstResult || 0;\n\t // Allow outside code to customize the query builder. We provide two events,\n\t // to allow someone to have a peep at the query builder after the first phase\n\t // and add some stuff depending on what was put in there. The facets are using\n\t // this mechanism to generate query overrides.\n\t var dataToSendDuringBuildingQuery = {\n\t queryBuilder: queryBuilder,\n\t searchAsYouType: options.searchAsYouType,\n\t cancel: options.cancel\n\t };\n\t this.buildingQueryEvent(dataToSendDuringBuildingQuery);\n\t var dataToSendDuringDoneBuildingQuery = {\n\t queryBuilder: queryBuilder,\n\t searchAsYouType: options.searchAsYouType,\n\t cancel: options.cancel\n\t };\n\t this.doneBuildingQueryEvent(dataToSendDuringDoneBuildingQuery);\n\t if (dataToSendDuringBuildingQuery.cancel || dataToSendDuringDoneBuildingQuery.cancel) {\n\t this.cancelQuery();\n\t return;\n\t }\n\t var pipeline = this.getPipelineInUrl();\n\t if (pipeline) {\n\t queryBuilder.pipeline = pipeline;\n\t }\n\t return queryBuilder;\n\t };\n\t QueryController.prototype.isStandaloneSearchbox = function () {\n\t return Utils_1.Utils.isNonEmptyString(this.options.searchPageUri);\n\t };\n\t QueryController.prototype.saveLastQuery = function () {\n\t this.localStorage.save({\n\t expire: new Date().getTime() + 1000 * 60 * 30,\n\t hash: this.lastQueryHash,\n\t uid: this.lastSearchUid\n\t });\n\t };\n\t // This field is exposed for components rendered in the results or on-demand which\n\t // need access to the entire query. For example, the QuickviewDocument need to pass\n\t // the entire query to the Search API. For other components, QueryStateModel or\n\t // listening to events like 'doneBuildingQuery' is the way to go.\n\t QueryController.prototype.getLastQueryHash = function () {\n\t if (this.lastQueryHash != null) {\n\t return this.lastQueryHash;\n\t }\n\t this.loadLastQueryHash();\n\t return this.lastQueryHash || this.queryHash(new QueryBuilder_1.QueryBuilder().build());\n\t };\n\t QueryController.prototype.getLastSearchUid = function () {\n\t if (this.lastSearchUid != null) {\n\t return this.lastSearchUid;\n\t }\n\t this.loadLastQueryHash();\n\t return this.lastSearchUid;\n\t };\n\t QueryController.prototype.loadLastQueryHash = function () {\n\t var lastQuery = this.localStorage.load();\n\t if (lastQuery != null && new Date().getTime() <= lastQuery.expire) {\n\t this.lastQueryHash = lastQuery.hash;\n\t this.lastSearchUid = lastQuery.uid;\n\t this.localStorage.remove();\n\t }\n\t };\n\t QueryController.prototype.continueLastQueryBuilder = function (queryBuilder, count) {\n\t _.extend(queryBuilder, this.lastQueryBuilder);\n\t queryBuilder.firstResult = queryBuilder.firstResult + queryBuilder.numberOfResults;\n\t queryBuilder.numberOfResults = count;\n\t };\n\t QueryController.prototype.getPipelineInUrl = function () {\n\t return QueryUtils_1.QueryUtils.getUrlParameter('pipeline');\n\t };\n\t QueryController.prototype.cancelAnyCurrentPendingQuery = function () {\n\t if (Utils_1.Utils.exists(this.currentPendingQuery)) {\n\t this.logger.debug('Cancelling current pending query');\n\t Promise.reject('Cancelling current pending query');\n\t this.currentPendingQuery = undefined;\n\t return true;\n\t }\n\t return false;\n\t };\n\t QueryController.prototype.showExecutingQueryAnimation = function () {\n\t if (!this.showingExecutingQueryAnimation) {\n\t Dom_1.$$(this.element).addClass('coveo-executing-query');\n\t this.showingExecutingQueryAnimation = true;\n\t }\n\t };\n\t QueryController.prototype.hideExecutingQueryAnimation = function () {\n\t if (this.showingExecutingQueryAnimation) {\n\t Dom_1.$$(this.element).removeClass('coveo-executing-query');\n\t this.showingExecutingQueryAnimation = false;\n\t }\n\t };\n\t QueryController.prototype.keepLastSearchUid = function (query, queryResults) {\n\t return this.getLastQueryHash() == this.queryHash(query, queryResults);\n\t };\n\t QueryController.prototype.queryHash = function (query, queryResults) {\n\t var queryHash = JSON.stringify(_.omit(query, 'firstResult', 'groupBy', 'debug'));\n\t if (queryResults != null) {\n\t queryHash += queryResults.pipeline;\n\t }\n\t return queryHash;\n\t };\n\t QueryController.prototype.getCallOptions = function () {\n\t var args = {\n\t options: {\n\t authentication: []\n\t }\n\t };\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.buildingCallOptions, args);\n\t return args.options;\n\t };\n\t QueryController.prototype.newQueryEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.newQuery, args);\n\t };\n\t QueryController.prototype.buildingQueryEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.buildingQuery, args);\n\t };\n\t QueryController.prototype.doneBuildingQueryEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.doneBuildingQuery, args);\n\t };\n\t QueryController.prototype.duringQueryEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.duringQuery, args);\n\t };\n\t QueryController.prototype.querySuccessEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.querySuccess, args);\n\t };\n\t QueryController.prototype.fetchMoreSuccessEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.fetchMoreSuccess, args);\n\t };\n\t QueryController.prototype.deferredQuerySuccessEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.deferredQuerySuccess, args);\n\t };\n\t QueryController.prototype.queryError = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.queryError, args);\n\t };\n\t QueryController.prototype.preprocessResultsEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.preprocessResults, args);\n\t };\n\t QueryController.prototype.noResultEvent = function (args) {\n\t Dom_1.$$(this.element).trigger(QueryEvents_1.QueryEvents.noResults, args);\n\t };\n\t QueryController.prototype.debugInfo = function () {\n\t var _this = this;\n\t var info = {\n\t 'query': this.lastQuery,\n\t };\n\t if (this.lastQueryResults != null) {\n\t info.queryDuration = function () { return _this.buildQueryDurationSection(_this.lastQueryResults); };\n\t info.results = function () { return _.omit(_this.lastQueryResults, 'results'); };\n\t }\n\t if (this.currentError != null) {\n\t info.error = function () { return _this.currentError; };\n\t }\n\t return info;\n\t };\n\t QueryController.prototype.buildQueryDurationSection = function (queryResults) {\n\t var dom = Dom_1.Dom.createElement('div', { className: 'coveo-debug-queryDuration' });\n\t var graph = Dom_1.Dom.createElement('div', { className: 'coveo-debug-durations' });\n\t var debugRef = BaseComponent_1.BaseComponent.getComponentRef('Debug');\n\t dom.appendChild(graph);\n\t _.forEach(debugRef.durationKeys, function (key) {\n\t var duration = queryResults[key];\n\t if (duration != null) {\n\t graph.appendChild(Dom_1.Dom.createElement('div', {\n\t className: 'coveo-debug-duration',\n\t style: \"width:\" + duration + \"px\",\n\t 'data-id': key\n\t }));\n\t var legend = Dom_1.Dom.createElement('div', { className: 'coveo-debug-duration-legend', 'data-id': key });\n\t dom.appendChild(legend);\n\t var keyDom = Dom_1.Dom.createElement('span', { className: 'coveo-debug-duration-label' });\n\t keyDom.appendChild(document.createTextNode(key));\n\t legend.appendChild(keyDom);\n\t var durationDom = Dom_1.Dom.createElement('span', { className: 'coveo-debug-duration-value' });\n\t durationDom.appendChild(document.createTextNode(duration));\n\t legend.appendChild(durationDom);\n\t }\n\t });\n\t return dom;\n\t };\n\t QueryController.prototype.logQueryInActionsHistory = function (query, isFirstQuery) {\n\t var queryElement = {\n\t name: 'Query',\n\t value: query.q,\n\t time: JSON.stringify(new Date())\n\t };\n\t this.historyStore.addElement(queryElement);\n\t };\n\t return QueryController;\n\t}(RootComponent_1.RootComponent));\n\tQueryController.ID = 'QueryController';\n\texports.QueryController = QueryController;\n\n\n/***/ },\n/* 77 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar BaseComponent_1 = __webpack_require__(78);\n\tvar RootComponent = (function (_super) {\n\t __extends(RootComponent, _super);\n\t function RootComponent(element, type) {\n\t var _this = _super.call(this, element, type) || this;\n\t _this.element = element;\n\t _this.type = type;\n\t return _this;\n\t }\n\t return RootComponent;\n\t}(BaseComponent_1.BaseComponent));\n\texports.RootComponent = RootComponent;\n\n\n/***/ },\n/* 78 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Logger_1 = __webpack_require__(13);\n\t/**\n\t * Every component in the framework ultimately inherits from this base component class.\n\t */\n\tvar BaseComponent = (function () {\n\t function BaseComponent(element, type) {\n\t this.element = element;\n\t this.type = type;\n\t /**\n\t * A disabled component will not participate in the query, or listen to {@link ComponentEvents}.\n\t * @type {boolean}\n\t */\n\t this.disabled = false;\n\t Assert_1.Assert.exists(element);\n\t Assert_1.Assert.isNonEmptyString(type);\n\t this.logger = new Logger_1.Logger(this);\n\t BaseComponent.bindComponentToElement(element, this);\n\t }\n\t /**\n\t * Return the debug info about this component.\n\t * @returns {any}\n\t */\n\t BaseComponent.prototype.debugInfo = function () {\n\t var info = {};\n\t info[this['constructor']['ID']] = this;\n\t return info;\n\t };\n\t /**\n\t * Disable the component.\n\t * Normally this means that the component will not execute handlers for the framework events (query events, for example).\n\t * Component are enabled by default on creation.\n\t */\n\t BaseComponent.prototype.disable = function () {\n\t this.disabled = true;\n\t };\n\t /**\n\t * Enable the component.\n\t * Normally this means that the component will execute handlers for the framework events (query events, for example).\n\t * Components are enabled by default on creation.\n\t */\n\t BaseComponent.prototype.enable = function () {\n\t this.disabled = false;\n\t };\n\t BaseComponent.bindComponentToElement = function (element, component) {\n\t Assert_1.Assert.exists(element);\n\t Assert_1.Assert.exists(component);\n\t Assert_1.Assert.isNonEmptyString(component.type);\n\t element[BaseComponent.computeCssClassNameForType(component.type)] = component;\n\t Dom_1.$$(element).addClass(BaseComponent.computeCssClassNameForType(component.type));\n\t BaseComponent.getBoundComponentsForElement(element).push(component);\n\t };\n\t BaseComponent.computeCssClassName = function (componentClass) {\n\t return BaseComponent.computeCssClassNameForType(componentClass['ID']);\n\t };\n\t BaseComponent.computeCssClassNameForType = function (type) {\n\t Assert_1.Assert.isNonEmptyString(type);\n\t return 'Coveo' + type;\n\t };\n\t BaseComponent.computeSelectorForType = function (type) {\n\t Assert_1.Assert.isNonEmptyString(type);\n\t return '.' + BaseComponent.computeCssClassNameForType(type);\n\t };\n\t BaseComponent.getBoundComponentsForElement = function (element) {\n\t Assert_1.Assert.exists(element);\n\t if (element.CoveoBoundComponents == null) {\n\t element.CoveoBoundComponents = [];\n\t }\n\t return element.CoveoBoundComponents;\n\t };\n\t BaseComponent.getComponentRef = function (component) {\n\t return Coveo[component];\n\t };\n\t return BaseComponent;\n\t}());\n\texports.BaseComponent = BaseComponent;\n\n\n/***/ },\n/* 79 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ExpressionBuilder_1 = __webpack_require__(80);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The QueryBuilder is used to build a {@link IQuery} that will be able to be executed using the Search API.
\n\t * The class exposes several members and methods that help components and external code to build up the final query that is sent to the Search API.
\n\t */\n\tvar QueryBuilder = (function () {\n\t function QueryBuilder() {\n\t /**\n\t * Used to build the basic part of the query expression.
\n\t * This part typically consists of user-entered content such as query keywords, etc.\n\t * @type {Coveo.ExpressionBuilder}\n\t */\n\t this.expression = new ExpressionBuilder_1.ExpressionBuilder();\n\t /**\n\t * Used to build the advanced part of the query expression.
\n\t * This part is typically formed of filter expressions generated by components such as facets, external code, etc.\n\t * @type {Coveo.ExpressionBuilder}\n\t */\n\t this.advancedExpression = new ExpressionBuilder_1.ExpressionBuilder();\n\t /**\n\t * Used to build the advanced part of the query expression.
\n\t * This part is similar to `advancedExpression`, but its content is interpreted as a constant expression by the index and it takes advantage of special caching features.\n\t * @type {Coveo.ExpressionBuilder}\n\t */\n\t this.constantExpression = new ExpressionBuilder_1.ExpressionBuilder();\n\t /**\n\t * The contextual text.
\n\t * This is the contextual text part of the query. It uses the Coveo Machine Learning service to pick key keywords from the text and add them to the basic expression.\n\t * This field is mainly used to pass context such a case description, long textual query or any other form of text that might help in\n\t * refining the query.\n\t */\n\t this.longQueryExpression = new ExpressionBuilder_1.ExpressionBuilder();\n\t /**\n\t * Used to build the disjunctive part of the query expression.
\n\t * When present, this part is evaluated separately from the other expressions and the matching results are merged to those matching expressions, `advancedExpression` and `constantExpression`.
\n\t * The final boolean expression for the query is thus (basic advanced constant) OR (disjunction).\n\t * @type {Coveo.ExpressionBuilder}\n\t */\n\t this.disjunctionExpression = new ExpressionBuilder_1.ExpressionBuilder();\n\t /**\n\t * Whether to disable the special query syntax such as field references for the basic query expression (parameter q).\n\t * It is equivalent to a No syntax block applied to the basic query expression.\n\t * If not specified, the parameter defaults to false.\n\t */\n\t this.disableQuerySyntax = false;\n\t /**\n\t * This is the 0-based index of the first result to return.
\n\t * If not specified, this parameter defaults to 0.\n\t */\n\t this.firstResult = 0;\n\t /**\n\t * This is the number of results to return, starting from {@link IQuery.firstResult}.
\n\t * If not specified, this parameter defaults to 10.\n\t */\n\t this.numberOfResults = 10;\n\t this.requiredFields = [];\n\t this.includeRequiredFields = false;\n\t /**\n\t * Whether to enable query corrections on this query (see {@link DidYouMean}).\n\t */\n\t this.enableDidYouMean = false;\n\t /**\n\t * Whether to enable debug info on the query.
\n\t * This will return additional information on the resulting JSON response from the Search API.
\n\t * Mostly: execution report (a detailed breakdown of the parsed and executed query).\n\t */\n\t this.enableDebug = false;\n\t /**\n\t * This specifies the sort criterion(s) to use to sort results. If not specified, this parameter defaults to relevancy.
\n\t * Possible values are :
\n\t * -- relevancy : This uses all the configured ranking weights as well as any specified ranking expressions to rank results.
\n\t * -- dateascending / datedescending Sort using the value of the `@date` field, which is typically the last modification date of an item in the index.
\n\t * -- qre : Sort using only the weights applied through ranking expressions. This is much like using `relevancy` except that automatic weights based on keyword proximity etc, are not computed.
\n\t * -- nosort : Do not sort the results. The order in which items are returned is essentially random.
\n\t * -- @field ascending / @field descending Sort using the value of a custom field.\n\t */\n\t this.sortCriteria = 'relevancy';\n\t this.retrieveFirstSentences = true;\n\t /**\n\t * This specifies an array of Query Function operation that will be executed on the results.\n\t */\n\t this.queryFunctions = [];\n\t /**\n\t * This specifies an array of Ranking Function operations that will be executed on the results.\n\t */\n\t this.rankingFunctions = [];\n\t /**\n\t * This specifies an array of Group By operations that can be performed on the query results to extract facets.\n\t */\n\t this.groupByRequests = [];\n\t this.enableDuplicateFiltering = false;\n\t }\n\t /**\n\t * Build the current content or state of the query builder and return a {@link IQuery}.
\n\t * build can be called multiple times on the same QueryBuilder.\n\t * @returns {IQuery}\n\t */\n\t QueryBuilder.prototype.build = function () {\n\t var query = {\n\t q: this.expression.build(),\n\t aq: this.advancedExpression.build(),\n\t cq: this.constantExpression.build(),\n\t lq: this.longQueryExpression.build(),\n\t dq: this.disjunctionExpression.build(),\n\t searchHub: this.searchHub,\n\t tab: this.tab,\n\t language: this.language,\n\t pipeline: this.pipeline,\n\t maximumAge: this.maximumAge,\n\t wildcards: this.enableWildcards,\n\t questionMark: this.enableQuestionMarks,\n\t lowercaseOperators: this.enableLowercaseOperators,\n\t partialMatch: this.enablePartialMatch,\n\t partialMatchKeywords: this.partialMatchKeywords,\n\t partialMatchThreshold: this.partialMatchThreshold,\n\t firstResult: this.firstResult,\n\t numberOfResults: this.numberOfResults,\n\t excerptLength: this.excerptLength,\n\t filterField: this.filterField,\n\t filterFieldRange: this.filterFieldRange,\n\t parentField: this.parentField,\n\t childField: this.childField,\n\t fieldsToInclude: this.computeFieldsToInclude(),\n\t fieldsToExclude: this.fieldsToExclude,\n\t enableDidYouMean: this.enableDidYouMean,\n\t sortCriteria: this.sortCriteria,\n\t sortField: this.sortField,\n\t queryFunctions: this.queryFunctions,\n\t rankingFunctions: this.rankingFunctions,\n\t groupBy: this.groupByRequests,\n\t retrieveFirstSentences: this.retrieveFirstSentences,\n\t timezone: this.timezone,\n\t disableQuerySyntax: this.disableQuerySyntax,\n\t enableDuplicateFiltering: this.enableDuplicateFiltering,\n\t enableCollaborativeRating: this.enableCollaborativeRating,\n\t debug: this.enableDebug,\n\t context: this.context,\n\t actionsHistory: this.actionsHistory,\n\t recommendation: this.recommendation\n\t };\n\t return query;\n\t };\n\t /**\n\t * Return only the expression(s) part(s) of the query, as a string.
\n\t * This means the basic, advanced and constant part in a complete expression {@link IQuery.q}, {@link IQuery.aq}, {@link IQuery.cq}.\n\t * @returns {string}\n\t */\n\t QueryBuilder.prototype.computeCompleteExpression = function () {\n\t return this.computeCompleteExpressionParts().full;\n\t };\n\t /**\n\t * Return only the expression(s) part(s) of the query, as an object.\n\t * @returns {{full: string, withoutConstant: string, constant: string}}\n\t */\n\t QueryBuilder.prototype.computeCompleteExpressionParts = function () {\n\t var withoutConstant = ExpressionBuilder_1.ExpressionBuilder.merge(this.expression, this.advancedExpression);\n\t return {\n\t full: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(ExpressionBuilder_1.ExpressionBuilder.merge(withoutConstant, this.constantExpression), this.disjunctionExpression).build(),\n\t withoutConstant: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(withoutConstant, this.disjunctionExpression).build(),\n\t basic: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(this.expression, this.disjunctionExpression).build(),\n\t advanced: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(this.advancedExpression, this.disjunctionExpression).build(),\n\t constant: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(this.constantExpression, this.disjunctionExpression).build()\n\t };\n\t };\n\t /**\n\t * Return only the expression(s) part(s) of the query, as a string, except the given expression.
\n\t * This is used by {@link Facet}, to build their group by request with query override.\n\t * @param except\n\t * @returns {string}\n\t */\n\t QueryBuilder.prototype.computeCompleteExpressionExcept = function (except) {\n\t return this.computeCompleteExpressionPartsExcept(except).full;\n\t };\n\t /**\n\t * Return only the expression(s) part(s) of the query, as an object, except the given expression.
\n\t * This is used by {@link Facet}, to build their group by request with query override.\n\t * @param except\n\t * @returns {{full: string, withoutConstant: string, constant: string}}\n\t */\n\t QueryBuilder.prototype.computeCompleteExpressionPartsExcept = function (except) {\n\t var withoutConstantAndExcept = ExpressionBuilder_1.ExpressionBuilder.merge(this.expression, this.advancedExpression);\n\t withoutConstantAndExcept.remove(except);\n\t var basicAndExcept = new ExpressionBuilder_1.ExpressionBuilder();\n\t basicAndExcept.fromExpressionBuilder(this.expression);\n\t basicAndExcept.remove(except);\n\t var advancedAndExcept = new ExpressionBuilder_1.ExpressionBuilder();\n\t advancedAndExcept.fromExpressionBuilder(this.advancedExpression);\n\t advancedAndExcept.remove(except);\n\t return {\n\t full: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(ExpressionBuilder_1.ExpressionBuilder.merge(withoutConstantAndExcept, this.constantExpression), this.disjunctionExpression).build(),\n\t withoutConstant: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(withoutConstantAndExcept, this.disjunctionExpression).build(),\n\t basic: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(basicAndExcept, this.disjunctionExpression).build(),\n\t advanced: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(advancedAndExcept, this.disjunctionExpression).build(),\n\t constant: ExpressionBuilder_1.ExpressionBuilder.mergeUsingOr(this.constantExpression, this.disjunctionExpression).build()\n\t };\n\t };\n\t /**\n\t * Add fields to specifically include when the results return.
\n\t * This can be used to accelerate the execution time of every query, as there is much less data to process if you whitelist specific fields.\n\t * @param fields\n\t */\n\t QueryBuilder.prototype.addFieldsToInclude = function (fields) {\n\t this.fieldsToInclude = _.uniq((this.fieldsToInclude || []).concat(fields));\n\t };\n\t QueryBuilder.prototype.addRequiredFields = function (fields) {\n\t this.requiredFields = _.uniq(this.requiredFields.concat(fields));\n\t };\n\t /**\n\t * Add fields to specifically exclude when the results return.
\n\t * This can be used to accelerate the execution time of every query, as there is much less data to process if you blacklist specific fields.\n\t * @param fields\n\t */\n\t QueryBuilder.prototype.addFieldsToExclude = function (fields) {\n\t this.fieldsToExclude = _.uniq((this.fieldsToInclude || []).concat(fields));\n\t };\n\t QueryBuilder.prototype.computeFieldsToInclude = function () {\n\t if (this.includeRequiredFields || this.fieldsToInclude != null) {\n\t return this.requiredFields.concat(this.fieldsToInclude || []);\n\t }\n\t else {\n\t return null;\n\t }\n\t };\n\t /**\n\t * Add a single context key->value pair to the query.
\n\t * This is used by the Query pipeline in the Coveo platform.\n\t * @param key\n\t * @param value\n\t */\n\t QueryBuilder.prototype.addContextValue = function (key, value) {\n\t if (this.context == null) {\n\t this.context = {};\n\t }\n\t this.context[key] = value;\n\t };\n\t /**\n\t * Add a context object to the query.
\n\t * This can contain multiple key->value.
\n\t * This is used by the Query pipeline in the Coveo platform.\n\t * @param values\n\t */\n\t QueryBuilder.prototype.addContext = function (values) {\n\t if (this.context == null) {\n\t this.context = {};\n\t }\n\t _.extend(this.context, values);\n\t };\n\t return QueryBuilder;\n\t}());\n\texports.QueryBuilder = QueryBuilder;\n\n\n/***/ },\n/* 80 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * An `ExpressionBuilder` that is mostly used by the {@link QueryBuilder}.
\n\t * It is used to build a single query expression.
\n\t * It allows combining multiple expression parts into a single string and provides utilities to generate common expression parts.\n\t */\n\tvar ExpressionBuilder = (function () {\n\t function ExpressionBuilder() {\n\t this.parts = []; // he he he\n\t this.wrapParts = true;\n\t }\n\t /**\n\t * Add a new part to the expression.\n\t * @param expression\n\t */\n\t ExpressionBuilder.prototype.add = function (expression) {\n\t Assert_1.Assert.isNonEmptyString(expression);\n\t this.parts.push(expression);\n\t };\n\t /**\n\t * Take another `ExpressionBuilder`, and copy it.\n\t * @param expression\n\t */\n\t ExpressionBuilder.prototype.fromExpressionBuilder = function (expression) {\n\t this.parts = this.parts.concat(expression.parts);\n\t };\n\t /**\n\t * Add a new part to the expression, but specific for field values
\n\t * eg @field=(value1,value2,value3).\n\t * @param field The field for which to create an expression (e.g.: @foo).\n\t * @param operator The operator to use e.g.: = (equal) == (strict equal) <> (not equal).\n\t * @param values The values to put in the expression.\n\t */\n\t ExpressionBuilder.prototype.addFieldExpression = function (field, operator, values) {\n\t Assert_1.Assert.isNonEmptyString(field);\n\t Assert_1.Assert.stringStartsWith(field, '@');\n\t Assert_1.Assert.isNonEmptyString(operator);\n\t Assert_1.Assert.isLargerOrEqualsThan(1, values.length);\n\t this.add(QueryUtils_1.QueryUtils.buildFieldExpression(field, operator, values));\n\t };\n\t /**\n\t * Add a new part to the expression, but specific for field values
\n\t * eg : NOT @field==(value1, value2, value3).\n\t * @param field The field for which to create an expression (e.g.: @foo)\n\t * @param values The values to put in the expression.\n\t */\n\t ExpressionBuilder.prototype.addFieldNotEqualExpression = function (field, values) {\n\t Assert_1.Assert.isNonEmptyString(field);\n\t Assert_1.Assert.stringStartsWith(field, '@');\n\t Assert_1.Assert.isLargerOrEqualsThan(1, values.length);\n\t this.add(QueryUtils_1.QueryUtils.buildFieldNotEqualExpression(field, values));\n\t };\n\t /**\n\t * Removes an expression from the builder.\n\t * @param expression\n\t */\n\t ExpressionBuilder.prototype.remove = function (expression) {\n\t Assert_1.Assert.isNonEmptyString(expression);\n\t var index = _.indexOf(this.parts, expression);\n\t if (index != -1) {\n\t this.parts.splice(_.indexOf(this.parts, expression), 1);\n\t }\n\t };\n\t /**\n\t * Checks if the builder is currently empty.\n\t * @returns {boolean}\n\t */\n\t ExpressionBuilder.prototype.isEmpty = function () {\n\t return this.parts.length == 0;\n\t };\n\t /**\n\t * Builds the expression string by combining all the parts together.
\n\t * @param exp expression to join the different parts, default to a space.\n\t * @returns {any}\n\t */\n\t ExpressionBuilder.prototype.build = function (exp) {\n\t if (exp === void 0) { exp = ' '; }\n\t if (this.parts.length == 0) {\n\t return undefined;\n\t }\n\t else if (this.parts.length == 1) {\n\t return this.parts[0];\n\t }\n\t else if (this.wrapParts) {\n\t return '(' + this.parts.join(')' + exp + '(') + ')';\n\t }\n\t else {\n\t return this.parts.join(exp);\n\t }\n\t };\n\t /**\n\t * Merges several `ExpressionBuilder` together.\n\t * @param builders Builders that should be merged.\n\t * @returns {Coveo.ExpressionBuilder}\n\t */\n\t ExpressionBuilder.merge = function () {\n\t var builders = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t builders[_i] = arguments[_i];\n\t }\n\t var merged = new ExpressionBuilder();\n\t _.each(builders, function (builder) {\n\t merged.parts = merged.parts.concat(builder.parts);\n\t });\n\t return merged;\n\t };\n\t /**\n\t * Merges several `ExpressionBuilder` together, using the OR operator.\n\t * @param builders Builders that should be merged.\n\t * @returns {Coveo.ExpressionBuilder}\n\t */\n\t ExpressionBuilder.mergeUsingOr = function () {\n\t var builders = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t builders[_i] = arguments[_i];\n\t }\n\t var nonEmpty = _.filter(builders, function (b) { return !b.isEmpty(); });\n\t var merged = new ExpressionBuilder();\n\t if (nonEmpty.length == 1) {\n\t merged.parts = [].concat(nonEmpty[0].parts);\n\t }\n\t else if (nonEmpty.length > 1) {\n\t var parts = _.map(nonEmpty, function (b) { return b.build(); });\n\t merged.add('(' + parts.join(') OR (') + ')');\n\t }\n\t return merged;\n\t };\n\t return ExpressionBuilder;\n\t}());\n\texports.ExpressionBuilder = ExpressionBuilder;\n\n\n/***/ },\n/* 81 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar SearchEndpointWithDefaultCallOptions = (function () {\n\t function SearchEndpointWithDefaultCallOptions(endpoint, callOptions) {\n\t this.endpoint = endpoint;\n\t this.callOptions = callOptions;\n\t this.options = endpoint.options;\n\t }\n\t SearchEndpointWithDefaultCallOptions.prototype.getBaseUri = function () {\n\t return this.endpoint.getBaseUri();\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getBaseAlertsUri = function () {\n\t return this.endpoint.getBaseAlertsUri();\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getAuthenticationProviderUri = function (provider, returnUri, message) {\n\t return this.endpoint.getAuthenticationProviderUri(provider, returnUri, message);\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.isJsonp = function () {\n\t return this.endpoint.isJsonp();\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.search = function (query, callOptions) {\n\t return this.endpoint.search(query, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getExportToExcelLink = function (query, numberOfResults, callOptions) {\n\t return this.endpoint.getExportToExcelLink(query, numberOfResults, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.tagDocument = function (taggingRequest, callOptions) {\n\t return this.endpoint.tagDocument(taggingRequest, this.enrichCallOptions(taggingRequest));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getRevealQuerySuggest = function (request, callOptions) {\n\t return this.endpoint.getRevealQuerySuggest(request, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.rateDocument = function (ratingRequest, callOptions) {\n\t return this.endpoint.rateDocument(ratingRequest, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getRawDataStream = function (documentUniqueId, dataStreamType, callOptions) {\n\t return this.endpoint.getRawDataStream(documentUniqueId, dataStreamType, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getDocument = function (documentUniqueId, callOptions) {\n\t return this.endpoint.getDocument(documentUniqueId, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getDocumentText = function (documentUniqueID, callOptions) {\n\t return this.endpoint.getDocumentText(documentUniqueID, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getDocumentHtml = function (documentUniqueID, callOptions) {\n\t return this.endpoint.getDocumentHtml(documentUniqueID, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getViewAsHtmlUri = function (documentUniqueID, callOptions) {\n\t return this.endpoint.getViewAsHtmlUri(documentUniqueID, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.getViewAsDatastreamUri = function (documentUniqueID, dataStreamType, callOptions) {\n\t return this.endpoint.getViewAsDatastreamUri(documentUniqueID, dataStreamType, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.listFieldValues = function (request, callOptions) {\n\t return this.endpoint.listFieldValues(request, this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.listFields = function (callOptions) {\n\t return this.endpoint.listFields(this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.extensions = function (callOptions) {\n\t return this.endpoint.extensions(this.enrichCallOptions(callOptions));\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.follow = function (request) {\n\t return this.endpoint.follow(request);\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.listSubscriptions = function (page) {\n\t return this.endpoint.listSubscriptions(page);\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.updateSubscription = function (subscription) {\n\t return this.endpoint.updateSubscription(subscription);\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.deleteSubscription = function (subscription) {\n\t return this.endpoint.deleteSubscription(subscription);\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.logError = function (sentryLog) {\n\t return this.endpoint.logError(sentryLog);\n\t };\n\t SearchEndpointWithDefaultCallOptions.prototype.enrichCallOptions = function (callOptions) {\n\t return _.extend({}, callOptions, this.callOptions);\n\t };\n\t return SearchEndpointWithDefaultCallOptions;\n\t}());\n\texports.SearchEndpointWithDefaultCallOptions = SearchEndpointWithDefaultCallOptions;\n\n\n/***/ },\n/* 82 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar analytics = __webpack_require__(83);\n\texports.analytics = analytics;\n\tvar SimpleAnalytics = __webpack_require__(89);\n\texports.SimpleAnalytics = SimpleAnalytics;\n\tvar history = __webpack_require__(84);\n\texports.history = history;\n\tvar donottrack = __webpack_require__(92);\n\texports.donottrack = donottrack;\n\tvar storage = __webpack_require__(85);\n\texports.storage = storage;\n\n\n/***/ },\n/* 83 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar history_1 = __webpack_require__(84);\n\t__webpack_require__(88);\n\texports.Version = 'v15';\n\texports.Endpoints = {\n\t default: 'https://usageanalytics.coveo.com',\n\t production: 'https://usageanalytics.coveo.com',\n\t dev: 'https://usageanalyticsdev.coveo.com',\n\t staging: 'https://usageanalyticsstaging.coveo.com'\n\t};\n\t;\n\tfunction defaultResponseTransformer(response) {\n\t return response.json().then(function (data) {\n\t data.raw = response;\n\t return data;\n\t });\n\t}\n\tvar Client = (function () {\n\t function Client(opts) {\n\t if (typeof opts === 'undefined') {\n\t throw new Error('You have to pass options to this constructor');\n\t }\n\t this.endpoint = opts.endpoint || exports.Endpoints.default;\n\t this.token = opts.token;\n\t this.version = opts.version || exports.Version;\n\t }\n\t Client.prototype.sendEvent = function (eventType, request) {\n\t return fetch(this.getRestEndpoint() + \"/analytics/\" + eventType, {\n\t method: 'POST',\n\t headers: this.getHeaders(),\n\t mode: 'cors',\n\t body: JSON.stringify(request),\n\t credentials: 'include'\n\t });\n\t };\n\t Client.prototype.sendSearchEvent = function (request) {\n\t return this.sendEvent('search', request).then(defaultResponseTransformer);\n\t };\n\t Client.prototype.sendClickEvent = function (request) {\n\t return this.sendEvent('click', request).then(defaultResponseTransformer);\n\t };\n\t Client.prototype.sendCustomEvent = function (request) {\n\t return this.sendEvent('custom', request).then(defaultResponseTransformer);\n\t };\n\t Client.prototype.sendViewEvent = function (request) {\n\t if (request.referrer === '') {\n\t delete request.referrer;\n\t }\n\t var store = new history_1.HistoryStore();\n\t var historyElement = {\n\t name: 'PageView',\n\t value: request.contentIdValue,\n\t time: JSON.stringify(new Date()),\n\t };\n\t store.addElement(historyElement);\n\t return this.sendEvent('view', request).then(defaultResponseTransformer);\n\t };\n\t Client.prototype.getVisit = function () {\n\t return fetch(this.getRestEndpoint() + \"/analytics/visit\")\n\t .then(defaultResponseTransformer);\n\t };\n\t Client.prototype.getHealth = function () {\n\t return fetch(this.getRestEndpoint() + \"/analytics/monitoring/health\")\n\t .then(defaultResponseTransformer);\n\t };\n\t Client.prototype.getRestEndpoint = function () {\n\t return this.endpoint + \"/rest/\" + this.version;\n\t };\n\t Client.prototype.getHeaders = function () {\n\t var headers = {\n\t 'Content-Type': \"application/json\"\n\t };\n\t if (this.token) {\n\t headers['Authorization'] = \"Bearer \" + this.token;\n\t }\n\t return headers;\n\t };\n\t return Client;\n\t}());\n\texports.Client = Client;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Client;\n\n\n/***/ },\n/* 84 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar storage_1 = __webpack_require__(85);\n\tvar detector = __webpack_require__(86);\n\texports.STORE_KEY = '__coveo.analytics.history';\n\texports.MAX_NUMBER_OF_HISTORY_ELEMENTS = 20;\n\texports.MIN_THRESHOLD_FOR_DUPLICATE_VALUE = 1000 * 60;\n\texports.MAX_VALUE_SIZE = 75;\n\tvar HistoryStore = (function () {\n\t function HistoryStore(store) {\n\t this.store = store || storage_1.getAvailableStorage();\n\t if (!(this.store instanceof storage_1.CookieStorage) && detector.hasCookieStorage()) {\n\t new storage_1.CookieStorage().removeItem(exports.STORE_KEY);\n\t }\n\t }\n\t ;\n\t HistoryStore.prototype.addElement = function (elem) {\n\t elem.internalTime = new Date().getTime();\n\t this.cropQueryElement(elem);\n\t var currentHistory = this.getHistoryWithInternalTime();\n\t if (currentHistory != null) {\n\t if (this.isValidEntry(elem)) {\n\t this.setHistory([elem].concat(currentHistory));\n\t }\n\t }\n\t else {\n\t this.setHistory([elem]);\n\t }\n\t };\n\t HistoryStore.prototype.getHistory = function () {\n\t var history = this.getHistoryWithInternalTime();\n\t return this.stripInternalTime(history);\n\t };\n\t HistoryStore.prototype.getHistoryWithInternalTime = function () {\n\t try {\n\t return JSON.parse(this.store.getItem(exports.STORE_KEY));\n\t }\n\t catch (e) {\n\t return [];\n\t }\n\t };\n\t HistoryStore.prototype.setHistory = function (history) {\n\t try {\n\t this.store.setItem(exports.STORE_KEY, JSON.stringify(history.slice(0, exports.MAX_NUMBER_OF_HISTORY_ELEMENTS)));\n\t }\n\t catch (e) { }\n\t };\n\t HistoryStore.prototype.clear = function () {\n\t try {\n\t this.store.removeItem(exports.STORE_KEY);\n\t }\n\t catch (e) { }\n\t };\n\t HistoryStore.prototype.getMostRecentElement = function () {\n\t var currentHistory = this.getHistoryWithInternalTime();\n\t if (currentHistory != null) {\n\t var sorted = currentHistory.sort(function (first, second) {\n\t if (first.internalTime == null && second.internalTime == null) {\n\t return 0;\n\t }\n\t if (first.internalTime == null && second.internalTime != null) {\n\t return 1;\n\t }\n\t if (first.internalTime != null && second.internalTime == null) {\n\t return -1;\n\t }\n\t return second.internalTime - first.internalTime;\n\t });\n\t return sorted[0];\n\t }\n\t return null;\n\t };\n\t HistoryStore.prototype.cropQueryElement = function (elem) {\n\t if (elem.name && elem.name.toLowerCase() == 'query' && elem.value != null) {\n\t elem.value = elem.value.slice(0, exports.MAX_VALUE_SIZE);\n\t }\n\t };\n\t HistoryStore.prototype.isValidEntry = function (elem) {\n\t var lastEntry = this.getMostRecentElement();\n\t if (lastEntry && lastEntry.value == elem.value) {\n\t return elem.internalTime - lastEntry.internalTime > exports.MIN_THRESHOLD_FOR_DUPLICATE_VALUE;\n\t }\n\t return true;\n\t };\n\t HistoryStore.prototype.stripInternalTime = function (history) {\n\t history.forEach(function (part, index, array) {\n\t delete part.internalTime;\n\t });\n\t return history;\n\t };\n\t return HistoryStore;\n\t}());\n\texports.HistoryStore = HistoryStore;\n\t;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = HistoryStore;\n\n\n/***/ },\n/* 85 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar detector = __webpack_require__(86);\n\tvar cookieutils_1 = __webpack_require__(87);\n\texports.preferredStorage = null;\n\tfunction getAvailableStorage() {\n\t if (exports.preferredStorage) {\n\t return exports.preferredStorage;\n\t }\n\t if (detector.hasLocalStorage()) {\n\t return localStorage;\n\t }\n\t if (detector.hasCookieStorage()) {\n\t return new CookieStorage();\n\t }\n\t if (detector.hasSessionStorage()) {\n\t return sessionStorage;\n\t }\n\t return new NullStorage();\n\t}\n\texports.getAvailableStorage = getAvailableStorage;\n\tvar CookieStorage = (function () {\n\t function CookieStorage() {\n\t }\n\t CookieStorage.prototype.getItem = function (key) {\n\t return cookieutils_1.Cookie.get(key);\n\t };\n\t CookieStorage.prototype.removeItem = function (key) {\n\t cookieutils_1.Cookie.erase(key);\n\t };\n\t CookieStorage.prototype.setItem = function (key, data) {\n\t cookieutils_1.Cookie.set(key, data);\n\t };\n\t return CookieStorage;\n\t}());\n\texports.CookieStorage = CookieStorage;\n\tvar NullStorage = (function () {\n\t function NullStorage() {\n\t }\n\t NullStorage.prototype.getItem = function (key) { return null; };\n\t NullStorage.prototype.removeItem = function (key) { };\n\t NullStorage.prototype.setItem = function (key, data) { };\n\t return NullStorage;\n\t}());\n\texports.NullStorage = NullStorage;\n\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tfunction hasLocalStorage() {\n\t try {\n\t return 'localStorage' in window && window['localStorage'] !== null;\n\t }\n\t catch (e) {\n\t return false;\n\t }\n\t}\n\texports.hasLocalStorage = hasLocalStorage;\n\t;\n\tfunction hasSessionStorage() {\n\t try {\n\t return 'sessionStorage' in window && window['sessionStorage'] !== null;\n\t }\n\t catch (e) {\n\t return false;\n\t }\n\t}\n\texports.hasSessionStorage = hasSessionStorage;\n\t;\n\tfunction hasCookieStorage() {\n\t return navigator.cookieEnabled;\n\t}\n\texports.hasCookieStorage = hasCookieStorage;\n\t;\n\tfunction hasDocument() {\n\t return document !== null;\n\t}\n\texports.hasDocument = hasDocument;\n\t;\n\tfunction hasDocumentLocation() {\n\t return hasDocument() && document.location !== null;\n\t}\n\texports.hasDocumentLocation = hasDocumentLocation;\n\t;\n\n\n/***/ },\n/* 87 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar Cookie = (function () {\n\t function Cookie() {\n\t }\n\t Cookie.set = function (name, value, expiration) {\n\t var domain, domainParts, date, expires, host;\n\t if (expiration) {\n\t date = new Date();\n\t date.setTime(date.getTime() + expiration);\n\t expires = '; expires=' + date.toGMTString();\n\t }\n\t else {\n\t expires = '';\n\t }\n\t host = location.hostname;\n\t if (host.indexOf('.') === -1) {\n\t document.cookie = name + '=' + value + expires + '; path=/';\n\t }\n\t else {\n\t domainParts = host.split('.');\n\t domainParts.shift();\n\t domain = '.' + domainParts.join('.');\n\t document.cookie = name + '=' + value + expires + '; path=/; domain=' + domain;\n\t if (Cookie.get(name) == null || Cookie.get(name) != value) {\n\t domain = '.' + host;\n\t document.cookie = name + '=' + value + expires + '; path=/; domain=' + domain;\n\t }\n\t }\n\t };\n\t Cookie.get = function (name) {\n\t var cookiePrefix = name + '=';\n\t var cookieArray = document.cookie.split(';');\n\t for (var i = 0; i < cookieArray.length; i++) {\n\t var cookie = cookieArray[i];\n\t cookie = cookie.replace(/^\\s+/, '');\n\t if (cookie.indexOf(cookiePrefix) == 0) {\n\t return cookie.substring(cookiePrefix.length, cookie.length);\n\t }\n\t }\n\t return null;\n\t };\n\t Cookie.erase = function (name) {\n\t Cookie.set(name, '', -1);\n\t };\n\t return Cookie;\n\t}());\n\texports.Cookie = Cookie;\n\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\t(function(self) {\n\t 'use strict';\n\t\n\t if (self.fetch) {\n\t return\n\t }\n\t\n\t var support = {\n\t searchParams: 'URLSearchParams' in self,\n\t iterable: 'Symbol' in self && 'iterator' in Symbol,\n\t blob: 'FileReader' in self && 'Blob' in self && (function() {\n\t try {\n\t new Blob()\n\t return true\n\t } catch(e) {\n\t return false\n\t }\n\t })(),\n\t formData: 'FormData' in self,\n\t arrayBuffer: 'ArrayBuffer' in self\n\t }\n\t\n\t if (support.arrayBuffer) {\n\t var viewClasses = [\n\t '[object Int8Array]',\n\t '[object Uint8Array]',\n\t '[object Uint8ClampedArray]',\n\t '[object Int16Array]',\n\t '[object Uint16Array]',\n\t '[object Int32Array]',\n\t '[object Uint32Array]',\n\t '[object Float32Array]',\n\t '[object Float64Array]'\n\t ]\n\t\n\t var isDataView = function(obj) {\n\t return obj && DataView.prototype.isPrototypeOf(obj)\n\t }\n\t\n\t var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n\t return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n\t }\n\t }\n\t\n\t function normalizeName(name) {\n\t if (typeof name !== 'string') {\n\t name = String(name)\n\t }\n\t if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n\t throw new TypeError('Invalid character in header field name')\n\t }\n\t return name.toLowerCase()\n\t }\n\t\n\t function normalizeValue(value) {\n\t if (typeof value !== 'string') {\n\t value = String(value)\n\t }\n\t return value\n\t }\n\t\n\t // Build a destructive iterator for the value list\n\t function iteratorFor(items) {\n\t var iterator = {\n\t next: function() {\n\t var value = items.shift()\n\t return {done: value === undefined, value: value}\n\t }\n\t }\n\t\n\t if (support.iterable) {\n\t iterator[Symbol.iterator] = function() {\n\t return iterator\n\t }\n\t }\n\t\n\t return iterator\n\t }\n\t\n\t function Headers(headers) {\n\t this.map = {}\n\t\n\t if (headers instanceof Headers) {\n\t headers.forEach(function(value, name) {\n\t this.append(name, value)\n\t }, this)\n\t } else if (Array.isArray(headers)) {\n\t headers.forEach(function(header) {\n\t this.append(header[0], header[1])\n\t }, this)\n\t } else if (headers) {\n\t Object.getOwnPropertyNames(headers).forEach(function(name) {\n\t this.append(name, headers[name])\n\t }, this)\n\t }\n\t }\n\t\n\t Headers.prototype.append = function(name, value) {\n\t name = normalizeName(name)\n\t value = normalizeValue(value)\n\t var oldValue = this.map[name]\n\t this.map[name] = oldValue ? oldValue+','+value : value\n\t }\n\t\n\t Headers.prototype['delete'] = function(name) {\n\t delete this.map[normalizeName(name)]\n\t }\n\t\n\t Headers.prototype.get = function(name) {\n\t name = normalizeName(name)\n\t return this.has(name) ? this.map[name] : null\n\t }\n\t\n\t Headers.prototype.has = function(name) {\n\t return this.map.hasOwnProperty(normalizeName(name))\n\t }\n\t\n\t Headers.prototype.set = function(name, value) {\n\t this.map[normalizeName(name)] = normalizeValue(value)\n\t }\n\t\n\t Headers.prototype.forEach = function(callback, thisArg) {\n\t for (var name in this.map) {\n\t if (this.map.hasOwnProperty(name)) {\n\t callback.call(thisArg, this.map[name], name, this)\n\t }\n\t }\n\t }\n\t\n\t Headers.prototype.keys = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push(name) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.values = function() {\n\t var items = []\n\t this.forEach(function(value) { items.push(value) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.entries = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push([name, value]) })\n\t return iteratorFor(items)\n\t }\n\t\n\t if (support.iterable) {\n\t Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n\t }\n\t\n\t function consumed(body) {\n\t if (body.bodyUsed) {\n\t return Promise.reject(new TypeError('Already read'))\n\t }\n\t body.bodyUsed = true\n\t }\n\t\n\t function fileReaderReady(reader) {\n\t return new Promise(function(resolve, reject) {\n\t reader.onload = function() {\n\t resolve(reader.result)\n\t }\n\t reader.onerror = function() {\n\t reject(reader.error)\n\t }\n\t })\n\t }\n\t\n\t function readBlobAsArrayBuffer(blob) {\n\t var reader = new FileReader()\n\t var promise = fileReaderReady(reader)\n\t reader.readAsArrayBuffer(blob)\n\t return promise\n\t }\n\t\n\t function readBlobAsText(blob) {\n\t var reader = new FileReader()\n\t var promise = fileReaderReady(reader)\n\t reader.readAsText(blob)\n\t return promise\n\t }\n\t\n\t function readArrayBufferAsText(buf) {\n\t var view = new Uint8Array(buf)\n\t var chars = new Array(view.length)\n\t\n\t for (var i = 0; i < view.length; i++) {\n\t chars[i] = String.fromCharCode(view[i])\n\t }\n\t return chars.join('')\n\t }\n\t\n\t function bufferClone(buf) {\n\t if (buf.slice) {\n\t return buf.slice(0)\n\t } else {\n\t var view = new Uint8Array(buf.byteLength)\n\t view.set(new Uint8Array(buf))\n\t return view.buffer\n\t }\n\t }\n\t\n\t function Body() {\n\t this.bodyUsed = false\n\t\n\t this._initBody = function(body) {\n\t this._bodyInit = body\n\t if (!body) {\n\t this._bodyText = ''\n\t } else if (typeof body === 'string') {\n\t this._bodyText = body\n\t } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n\t this._bodyBlob = body\n\t } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n\t this._bodyFormData = body\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this._bodyText = body.toString()\n\t } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n\t this._bodyArrayBuffer = bufferClone(body.buffer)\n\t // IE 10-11 can't handle a DataView body.\n\t this._bodyInit = new Blob([this._bodyArrayBuffer])\n\t } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n\t this._bodyArrayBuffer = bufferClone(body)\n\t } else {\n\t throw new Error('unsupported BodyInit type')\n\t }\n\t\n\t if (!this.headers.get('content-type')) {\n\t if (typeof body === 'string') {\n\t this.headers.set('content-type', 'text/plain;charset=UTF-8')\n\t } else if (this._bodyBlob && this._bodyBlob.type) {\n\t this.headers.set('content-type', this._bodyBlob.type)\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n\t }\n\t }\n\t }\n\t\n\t if (support.blob) {\n\t this.blob = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return Promise.resolve(this._bodyBlob)\n\t } else if (this._bodyArrayBuffer) {\n\t return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as blob')\n\t } else {\n\t return Promise.resolve(new Blob([this._bodyText]))\n\t }\n\t }\n\t\n\t this.arrayBuffer = function() {\n\t if (this._bodyArrayBuffer) {\n\t return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n\t } else {\n\t return this.blob().then(readBlobAsArrayBuffer)\n\t }\n\t }\n\t }\n\t\n\t this.text = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return readBlobAsText(this._bodyBlob)\n\t } else if (this._bodyArrayBuffer) {\n\t return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as text')\n\t } else {\n\t return Promise.resolve(this._bodyText)\n\t }\n\t }\n\t\n\t if (support.formData) {\n\t this.formData = function() {\n\t return this.text().then(decode)\n\t }\n\t }\n\t\n\t this.json = function() {\n\t return this.text().then(JSON.parse)\n\t }\n\t\n\t return this\n\t }\n\t\n\t // HTTP methods whose capitalization should be normalized\n\t var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\t\n\t function normalizeMethod(method) {\n\t var upcased = method.toUpperCase()\n\t return (methods.indexOf(upcased) > -1) ? upcased : method\n\t }\n\t\n\t function Request(input, options) {\n\t options = options || {}\n\t var body = options.body\n\t\n\t if (input instanceof Request) {\n\t if (input.bodyUsed) {\n\t throw new TypeError('Already read')\n\t }\n\t this.url = input.url\n\t this.credentials = input.credentials\n\t if (!options.headers) {\n\t this.headers = new Headers(input.headers)\n\t }\n\t this.method = input.method\n\t this.mode = input.mode\n\t if (!body && input._bodyInit != null) {\n\t body = input._bodyInit\n\t input.bodyUsed = true\n\t }\n\t } else {\n\t this.url = String(input)\n\t }\n\t\n\t this.credentials = options.credentials || this.credentials || 'omit'\n\t if (options.headers || !this.headers) {\n\t this.headers = new Headers(options.headers)\n\t }\n\t this.method = normalizeMethod(options.method || this.method || 'GET')\n\t this.mode = options.mode || this.mode || null\n\t this.referrer = null\n\t\n\t if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n\t throw new TypeError('Body not allowed for GET or HEAD requests')\n\t }\n\t this._initBody(body)\n\t }\n\t\n\t Request.prototype.clone = function() {\n\t return new Request(this, { body: this._bodyInit })\n\t }\n\t\n\t function decode(body) {\n\t var form = new FormData()\n\t body.trim().split('&').forEach(function(bytes) {\n\t if (bytes) {\n\t var split = bytes.split('=')\n\t var name = split.shift().replace(/\\+/g, ' ')\n\t var value = split.join('=').replace(/\\+/g, ' ')\n\t form.append(decodeURIComponent(name), decodeURIComponent(value))\n\t }\n\t })\n\t return form\n\t }\n\t\n\t function parseHeaders(rawHeaders) {\n\t var headers = new Headers()\n\t rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n\t var parts = line.split(':')\n\t var key = parts.shift().trim()\n\t if (key) {\n\t var value = parts.join(':').trim()\n\t headers.append(key, value)\n\t }\n\t })\n\t return headers\n\t }\n\t\n\t Body.call(Request.prototype)\n\t\n\t function Response(bodyInit, options) {\n\t if (!options) {\n\t options = {}\n\t }\n\t\n\t this.type = 'default'\n\t this.status = 'status' in options ? options.status : 200\n\t this.ok = this.status >= 200 && this.status < 300\n\t this.statusText = 'statusText' in options ? options.statusText : 'OK'\n\t this.headers = new Headers(options.headers)\n\t this.url = options.url || ''\n\t this._initBody(bodyInit)\n\t }\n\t\n\t Body.call(Response.prototype)\n\t\n\t Response.prototype.clone = function() {\n\t return new Response(this._bodyInit, {\n\t status: this.status,\n\t statusText: this.statusText,\n\t headers: new Headers(this.headers),\n\t url: this.url\n\t })\n\t }\n\t\n\t Response.error = function() {\n\t var response = new Response(null, {status: 0, statusText: ''})\n\t response.type = 'error'\n\t return response\n\t }\n\t\n\t var redirectStatuses = [301, 302, 303, 307, 308]\n\t\n\t Response.redirect = function(url, status) {\n\t if (redirectStatuses.indexOf(status) === -1) {\n\t throw new RangeError('Invalid status code')\n\t }\n\t\n\t return new Response(null, {status: status, headers: {location: url}})\n\t }\n\t\n\t self.Headers = Headers\n\t self.Request = Request\n\t self.Response = Response\n\t\n\t self.fetch = function(input, init) {\n\t return new Promise(function(resolve, reject) {\n\t var request = new Request(input, init)\n\t var xhr = new XMLHttpRequest()\n\t\n\t xhr.onload = function() {\n\t var options = {\n\t status: xhr.status,\n\t statusText: xhr.statusText,\n\t headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n\t }\n\t options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n\t var body = 'response' in xhr ? xhr.response : xhr.responseText\n\t resolve(new Response(body, options))\n\t }\n\t\n\t xhr.onerror = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.ontimeout = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.open(request.method, request.url, true)\n\t\n\t if (request.credentials === 'include') {\n\t xhr.withCredentials = true\n\t }\n\t\n\t if ('responseType' in xhr && support.blob) {\n\t xhr.responseType = 'blob'\n\t }\n\t\n\t request.headers.forEach(function(value, name) {\n\t xhr.setRequestHeader(name, value)\n\t })\n\t\n\t xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n\t })\n\t }\n\t self.fetch.polyfill = true\n\t})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ },\n/* 89 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar analytics = __webpack_require__(83);\n\tvar objectassign_1 = __webpack_require__(90);\n\tvar utils_1 = __webpack_require__(91);\n\tvar SimpleAPI = (function () {\n\t function SimpleAPI() {\n\t }\n\t SimpleAPI.prototype.init = function (token, endpoint) {\n\t if (typeof token === 'undefined') {\n\t throw new Error(\"You must pass your token when you call 'init'\");\n\t }\n\t if (typeof token === 'string') {\n\t endpoint = endpoint || analytics.Endpoints.default;\n\t this.client = new analytics.Client({\n\t token: token,\n\t endpoint: endpoint\n\t });\n\t }\n\t else if (typeof token === 'object' && typeof token.sendEvent !== 'undefined') {\n\t this.client = token;\n\t }\n\t else {\n\t throw new Error(\"You must pass either your token or a valid object when you call 'init'\");\n\t }\n\t };\n\t SimpleAPI.prototype.send = function (event, customData) {\n\t if (typeof this.client == 'undefined') {\n\t throw new Error(\"You must call init before sending an event\");\n\t }\n\t customData = objectassign_1.default({}, {\n\t hash: window.location.hash\n\t }, customData);\n\t switch (event) {\n\t case 'pageview':\n\t this.client.sendViewEvent({\n\t location: window.location.toString(),\n\t referrer: document.referrer,\n\t language: document.documentElement.lang,\n\t title: document.title,\n\t contentIdKey: utils_1.popFromObject(customData, 'contentIdKey'),\n\t contentIdValue: utils_1.popFromObject(customData, 'contentIdValue'),\n\t contentType: utils_1.popFromObject(customData, 'contentType'),\n\t anonymous: utils_1.popFromObject(customData, 'anonymous'),\n\t customData: customData\n\t });\n\t return;\n\t default:\n\t throw new Error(\"Event type: '\" + event + \"' not implemented\");\n\t }\n\t };\n\t SimpleAPI.prototype.onLoad = function (callback) {\n\t if (typeof callback == 'undefined') {\n\t throw new Error(\"You must pass a function when you call 'onLoad'\");\n\t }\n\t callback();\n\t };\n\t return SimpleAPI;\n\t}());\n\texports.SimpleAPI = SimpleAPI;\n\tvar simpleAPI = new SimpleAPI();\n\texports.SimpleAnalytics = function (action) {\n\t var params = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t params[_i - 1] = arguments[_i];\n\t }\n\t var actionFunction = simpleAPI[action];\n\t if (actionFunction) {\n\t return actionFunction.apply(simpleAPI, params);\n\t }\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = exports.SimpleAnalytics;\n\n\n/***/ },\n/* 90 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar objectAssignPonyfill = function (target) {\n\t var sources = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t sources[_i - 1] = arguments[_i];\n\t }\n\t if (target === undefined || target === null) {\n\t throw new TypeError('Cannot convert undefined or null to object');\n\t }\n\t var output = Object(target);\n\t sources.forEach(function (source) {\n\t var from = Object(source);\n\t for (var key in from) {\n\t if (hasOwnProperty.call(from, key)) {\n\t output[key] = from[key];\n\t }\n\t }\n\t if (getOwnPropertySymbols) {\n\t var symbols = getOwnPropertySymbols(from);\n\t symbols.forEach(function (symbol) {\n\t if (propIsEnumerable.call(from, symbol)) {\n\t output[symbol] = from[symbol];\n\t }\n\t });\n\t }\n\t });\n\t return output;\n\t};\n\texports.ponyfill = objectAssignPonyfill;\n\texports.assign = typeof Object.assign === 'function' ? Object.assign : objectAssignPonyfill;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = exports.assign;\n\n\n/***/ },\n/* 91 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tfunction popFromObject(object, key) {\n\t if (object) {\n\t var value = object[key];\n\t delete object[key];\n\t return value;\n\t }\n\t}\n\texports.popFromObject = popFromObject;\n\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\texports.doNotTrack = [true, 'yes', '1'].indexOf(navigator.doNotTrack || navigator.msDoNotTrack || window.doNotTrack);\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = exports.doNotTrack;\n\n\n/***/ },\n/* 93 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ExpressionBuilder_1 = __webpack_require__(80);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar FacetSearchParameters_1 = __webpack_require__(94);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar _ = __webpack_require__(16);\n\tvar FacetQueryController = (function () {\n\t function FacetQueryController(facet) {\n\t this.facet = facet;\n\t }\n\t /**\n\t * Reset the expression for the facet search, used when a new query is triggered\n\t */\n\t FacetQueryController.prototype.prepareForNewQuery = function () {\n\t this.lastGroupByRequestIndex = undefined;\n\t this.expressionToUseForFacetSearch = undefined;\n\t this.constantExpressionToUseForFacetSearch = undefined;\n\t };\n\t /**\n\t * Compute the filter expression that the facet need to output for the query\n\t * @returns {string}\n\t */\n\t FacetQueryController.prototype.computeOurFilterExpression = function () {\n\t var _this = this;\n\t var builder = new ExpressionBuilder_1.ExpressionBuilder();\n\t var selected = this.facet.values.getSelected();\n\t if (selected.length > 0) {\n\t if (this.facet.options.useAnd) {\n\t _.each(selected, function (value) {\n\t builder.addFieldExpression(_this.facet.options.field, '==', [value.value]);\n\t });\n\t }\n\t else {\n\t builder.addFieldExpression(this.facet.options.field, '==', _.map(selected, function (value) { return value.value; }));\n\t }\n\t }\n\t var excluded = this.facet.values.getExcluded();\n\t if (excluded.length > 0) {\n\t builder.addFieldNotEqualExpression(this.facet.options.field, _.map(excluded, function (value) { return value.value; }));\n\t }\n\t if (Utils_1.Utils.isNonEmptyString(this.facet.options.additionalFilter)) {\n\t builder.add(this.facet.options.additionalFilter);\n\t }\n\t return builder.build();\n\t };\n\t /**\n\t * Build the group by request for the facet, and insert it in the query builder\n\t * @param queryBuilder\n\t */\n\t FacetQueryController.prototype.putGroupByIntoQueryBuilder = function (queryBuilder) {\n\t Assert_1.Assert.exists(queryBuilder);\n\t var allowedValues = this.createGroupByAllowedValues();\n\t var groupByRequest = this.createBasicGroupByRequest(allowedValues);\n\t var queryOverrideObject = this.createGroupByQueryOverride(queryBuilder);\n\t if (!Utils_1.Utils.isNullOrUndefined(queryOverrideObject)) {\n\t groupByRequest.queryOverride = queryOverrideObject.basic;\n\t groupByRequest.advancedQueryOverride = queryOverrideObject.advanced;\n\t groupByRequest.constantQueryOverride = queryOverrideObject.constant;\n\t this.expressionToUseForFacetSearch = queryOverrideObject.withoutConstant;\n\t this.basicExpressionToUseForFacetSearch = queryOverrideObject.basic;\n\t this.advancedExpressionToUseForFacetSearch = queryOverrideObject.advanced;\n\t this.constantExpressionToUseForFacetSearch = queryOverrideObject.constant;\n\t }\n\t else {\n\t var parts = queryBuilder.computeCompleteExpressionParts();\n\t this.expressionToUseForFacetSearch = parts.withoutConstant == null ? '@uri' : parts.withoutConstant;\n\t this.basicExpressionToUseForFacetSearch = parts.basic == null ? '@uri' : parts.basic;\n\t this.advancedExpressionToUseForFacetSearch = parts.advanced;\n\t this.constantExpressionToUseForFacetSearch = parts.constant;\n\t }\n\t this.lastGroupByRequestIndex = queryBuilder.groupByRequests.length;\n\t this.lastGroupByRequest = groupByRequest;\n\t queryBuilder.groupByRequests.push(groupByRequest);\n\t };\n\t /**\n\t * Search inside the facet, using a group by request\n\t * @param params\n\t * @param oldLength Optional params, used by the search method to call itself recursively to fetch all required values\n\t * @returns {Promise|Promise}\n\t */\n\t FacetQueryController.prototype.search = function (params, oldLength) {\n\t var _this = this;\n\t if (oldLength === void 0) { oldLength = params.nbResults; }\n\t return new Promise(function (resolve, reject) {\n\t var onResult = function (fieldValues) {\n\t var newLength = fieldValues.length;\n\t fieldValues = _this.checkForFacetSearchValuesToRemove(fieldValues, params.valueToSearch);\n\t if (FacetUtils_1.FacetUtils.needAnotherFacetSearch(fieldValues.length, newLength, oldLength, 5)) {\n\t // This means that we removed enough values from the returned one that we need to perform a new search with more values requested.\n\t params.nbResults += 5;\n\t return _this.search(params, fieldValues.length);\n\t }\n\t else {\n\t resolve(fieldValues);\n\t }\n\t };\n\t var searchPromise = _this.facet.getEndpoint().search(params.getQuery());\n\t _this.currentSearchPromise = searchPromise;\n\t searchPromise.then(function (queryResults) {\n\t if (_this.currentSearchPromise == searchPromise) {\n\t // params.getQuery() will generate a query for all excluded values + some new values\n\t // there is no clean way to do a group by and remove some values\n\t // so instead we request more values than we need, and crop all the one we don't want\n\t var valuesCropped_1 = [];\n\t if (queryResults.groupByResults && queryResults.groupByResults[0]) {\n\t _.each(queryResults.groupByResults[0].values, function (v) {\n\t if (v.lookupValue) {\n\t if (!_.contains(params.alwaysExclude, v.lookupValue.toLowerCase())) {\n\t valuesCropped_1.push(v);\n\t }\n\t }\n\t else {\n\t if (!_.contains(params.alwaysExclude, v.value.toLowerCase())) {\n\t valuesCropped_1.push(v);\n\t }\n\t }\n\t });\n\t }\n\t onResult(_.first(valuesCropped_1, params.nbResults));\n\t }\n\t else {\n\t reject();\n\t }\n\t })\n\t .catch(function (error) {\n\t reject(error);\n\t });\n\t });\n\t };\n\t FacetQueryController.prototype.fetchMore = function (numberOfValuesToFetch) {\n\t var params = new FacetSearchParameters_1.FacetSearchParameters(this.facet);\n\t params.alwaysInclude = this.facet.options.allowedValues || _.pluck(this.facet.values.getAll(), 'value');\n\t params.nbResults = numberOfValuesToFetch;\n\t return this.facet.getEndpoint().search(params.getQuery());\n\t };\n\t FacetQueryController.prototype.searchInFacetToUpdateDelta = function (facetValues) {\n\t var params = new FacetSearchParameters_1.FacetSearchParameters(this.facet);\n\t var query = params.getQuery();\n\t query.aq = this.computeOurFilterExpression();\n\t _.each(facetValues, function (facetValue) {\n\t facetValue.waitingForDelta = true;\n\t });\n\t query.groupBy = [this.createBasicGroupByRequest(_.map(facetValues, function (facetValue) { return facetValue.value; }))];\n\t query.groupBy[0].completeFacetWithStandardValues = false;\n\t return this.facet.getEndpoint().search(query);\n\t };\n\t FacetQueryController.prototype.createGroupByAllowedValues = function () {\n\t // if you want to keep displayed values next time, take all current values as allowed values\n\t // otherwise take only the selected value\n\t if (this.facet.options.allowedValues != undefined) {\n\t return this.facet.options.allowedValues;\n\t }\n\t else if (this.facet.options.customSort != undefined) {\n\t // If there is a custom sort, we still need to add selectedValues to the group by\n\t // Filter out duplicates with a lower case comparison on the value\n\t return this.getUnionWithCustomSortLowercase(this.facet.options.customSort, this.getAllowedValuesFromSelected());\n\t }\n\t else {\n\t return _.map(this.getAllowedValuesFromSelected(), function (facetValue) { return facetValue.value; });\n\t }\n\t };\n\t FacetQueryController.prototype.getUnionWithCustomSortLowercase = function (customSort, facetValues) {\n\t // This will take the custom sort, compare it against the passed in facetValues\n\t // The comparison is lowercase.\n\t // The union of the 2 arrays with duplicated filtered out is returned.\n\t var toCompare = _.map(customSort, function (val) {\n\t return val.toLowerCase();\n\t });\n\t var filtered = _.chain(facetValues)\n\t .filter(function (facetValue) {\n\t return !_.contains(toCompare, facetValue.value.toLowerCase());\n\t })\n\t .map(function (facetValue) {\n\t return facetValue.value;\n\t })\n\t .value();\n\t return _.compact(customSort.concat(filtered));\n\t };\n\t FacetQueryController.prototype.getAllowedValuesFromSelected = function () {\n\t var facetValues = [];\n\t if (this.facet.options.useAnd || !this.facet.keepDisplayedValuesNextTime) {\n\t var selected = this.facet.values.getSelected();\n\t if (selected.length == 0) {\n\t return undefined;\n\t }\n\t facetValues = this.facet.values.getSelected();\n\t }\n\t else {\n\t facetValues = this.facet.values.getAll();\n\t }\n\t return facetValues;\n\t };\n\t FacetQueryController.prototype.createGroupByQueryOverride = function (queryBuilder) {\n\t var additionalFilter = this.facet.options.additionalFilter ? this.facet.options.additionalFilter : '';\n\t var queryOverrideObject = undefined;\n\t if (this.facet.options.useAnd) {\n\t if (Utils_1.Utils.isNonEmptyString(additionalFilter)) {\n\t queryOverrideObject = queryBuilder.computeCompleteExpressionParts();\n\t if (Utils_1.Utils.isEmptyString(queryOverrideObject.basic)) {\n\t queryOverrideObject.basic = '@uri';\n\t }\n\t }\n\t }\n\t else {\n\t if (this.facet.values.hasSelectedOrExcludedValues()) {\n\t queryOverrideObject = queryBuilder.computeCompleteExpressionPartsExcept(this.computeOurFilterExpression());\n\t if (Utils_1.Utils.isEmptyString(queryOverrideObject.basic)) {\n\t queryOverrideObject.basic = '@uri';\n\t }\n\t }\n\t else {\n\t if (Utils_1.Utils.isNonEmptyString(additionalFilter)) {\n\t queryOverrideObject = queryBuilder.computeCompleteExpressionParts();\n\t if (Utils_1.Utils.isEmptyString(queryOverrideObject.basic)) {\n\t queryOverrideObject.basic = '@uri';\n\t }\n\t }\n\t }\n\t }\n\t if (queryOverrideObject) {\n\t if (Utils_1.Utils.isNonEmptyString(additionalFilter)) {\n\t queryOverrideObject.constant = queryOverrideObject.constant ? queryOverrideObject.constant + ' ' + additionalFilter : additionalFilter;\n\t }\n\t }\n\t _.each(_.keys(queryOverrideObject), function (k) {\n\t if (Utils_1.Utils.isEmptyString(queryOverrideObject[k]) || Utils_1.Utils.isNullOrUndefined(queryOverrideObject[k])) {\n\t delete queryOverrideObject[k];\n\t }\n\t });\n\t if (_.keys(queryOverrideObject).length == 0) {\n\t queryOverrideObject = undefined;\n\t }\n\t return queryOverrideObject;\n\t };\n\t FacetQueryController.prototype.createBasicGroupByRequest = function (allowedValues, addComputedField) {\n\t if (addComputedField === void 0) { addComputedField = true; }\n\t var nbOfRequestedValues = this.facet.numberOfValues;\n\t if (this.facet.options.customSort != null) {\n\t // If we have a custom sort, we need to make sure that we always request at least enough values to always receive them\n\t var usedValues = this.getUnionWithCustomSortLowercase(this.facet.options.customSort, this.facet.values.getSelected().concat(this.facet.values.getExcluded()));\n\t nbOfRequestedValues = Math.max(nbOfRequestedValues, usedValues.length);\n\t }\n\t var groupByRequest = {\n\t field: this.facet.options.field,\n\t maximumNumberOfValues: nbOfRequestedValues + (this.facet.options.enableMoreLess ? 1 : 0),\n\t sortCriteria: this.facet.options.sortCriteria,\n\t injectionDepth: this.facet.options.injectionDepth,\n\t completeFacetWithStandardValues: this.facet.options.allowedValues == undefined ? true : false\n\t };\n\t if (this.facet.options.lookupField) {\n\t groupByRequest.lookupField = this.facet.options.lookupField;\n\t }\n\t if (allowedValues != null) {\n\t groupByRequest.allowedValues = allowedValues;\n\t }\n\t if (addComputedField && Utils_1.Utils.isNonEmptyString(this.facet.options.computedField)) {\n\t groupByRequest.computedFields = [{\n\t field: this.facet.options.computedField,\n\t operation: this.facet.options.computedFieldOperation\n\t }];\n\t }\n\t return groupByRequest;\n\t };\n\t FacetQueryController.prototype.checkForFacetSearchValuesToRemove = function (fieldValues, valueToCheckAgainst) {\n\t var _this = this;\n\t var regex = FacetUtils_1.FacetUtils.getRegexToUseForFacetSearch(valueToCheckAgainst, this.facet.options.facetSearchIgnoreAccents);\n\t return _.filter(fieldValues, function (fieldValue) {\n\t var isAllowed = _.isEmpty(_this.facet.options.allowedValues) ||\n\t _.contains(_this.facet.options.allowedValues, fieldValue.value);\n\t var value = _this.facet.getValueCaption(fieldValue);\n\t return isAllowed && regex.test(value);\n\t });\n\t };\n\t return FacetQueryController;\n\t}());\n\texports.FacetQueryController = FacetQueryController;\n\n\n/***/ },\n/* 94 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar QueryBuilder_1 = __webpack_require__(79);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\tvar FacetSearchParameters = (function () {\n\t function FacetSearchParameters(facet) {\n\t this.facet = facet;\n\t this.valueToSearch = '';\n\t this.alwaysInclude = [];\n\t this.alwaysExclude = [];\n\t this.sortCriteria = 'occurrences';\n\t this.fetchMore = false;\n\t this.nbResults = facet.options.numberOfValuesInFacetSearch;\n\t this.ignoreAccents = facet.options.facetSearchIgnoreAccents;\n\t this.searchEvenIfEmpty = facet.searchInterface.isNewDesign();\n\t }\n\t FacetSearchParameters.prototype.setValueToSearch = function (value) {\n\t this.valueToSearch = value;\n\t if (Utils_1.Utils.isNonEmptyString(value)) {\n\t this.valueToSearch = this.valueToSearch.trim();\n\t this.alwaysInclude = this.alwaysInclude.concat(FacetUtils_1.FacetUtils.getValuesToUseForSearchInFacet(this.valueToSearch, this.facet));\n\t }\n\t return this;\n\t };\n\t FacetSearchParameters.prototype.excludeCurrentlyDisplayedValuesInSearch = function (searchResults) {\n\t var _this = this;\n\t _.each(this.getCurrentlyShowedValueInSearch(searchResults), function (v) {\n\t var expandedValues = FacetUtils_1.FacetUtils.getValuesToUseForSearchInFacet(v, _this.facet);\n\t _.each(expandedValues, function (expanded) {\n\t _this.alwaysExclude.push(expanded);\n\t });\n\t });\n\t _.each(this.facet.getDisplayedFacetValues(), function (v) {\n\t var expandedValues = FacetUtils_1.FacetUtils.getValuesToUseForSearchInFacet(v.value, _this.facet);\n\t _.each(expandedValues, function (expanded) {\n\t _this.alwaysExclude.push(expanded);\n\t });\n\t });\n\t };\n\t FacetSearchParameters.prototype.getGroupByRequest = function () {\n\t this.lowerCaseAll();\n\t var nbResults = this.nbResults;\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t nbResults += this.alwaysExclude.length;\n\t }\n\t var typedByUser = [];\n\t if (this.valueToSearch) {\n\t typedByUser = ['*' + this.valueToSearch + '*'];\n\t }\n\t var request = {\n\t allowedValues: typedByUser.concat(this.alwaysInclude).concat(this.alwaysExclude),\n\t maximumNumberOfValues: nbResults,\n\t completeFacetWithStandardValues: this.facet.options.lookupField ? false : true,\n\t field: this.facet.options.field,\n\t sortCriteria: this.facet.options.sortCriteria || this.sortCriteria,\n\t injectionDepth: this.facet.options.injectionDepth,\n\t };\n\t if (this.facet.options.lookupField) {\n\t request.lookupField = this.facet.options.lookupField;\n\t }\n\t if (this.facet.options.computedField) {\n\t request.computedFields = [{\n\t field: this.facet.options.computedField,\n\t operation: this.facet.options.computedFieldOperation\n\t }];\n\t }\n\t return request;\n\t };\n\t FacetSearchParameters.prototype.getQuery = function () {\n\t var lastQuery = _.clone(this.facet.queryController.getLastQuery());\n\t if (!lastQuery) {\n\t // There should normally always be a last query available\n\t // If not, just create an empty one.\n\t lastQuery = new QueryBuilder_1.QueryBuilder().build();\n\t }\n\t lastQuery.q = this.facet.facetQueryController.basicExpressionToUseForFacetSearch;\n\t lastQuery.cq = this.facet.facetQueryController.constantExpressionToUseForFacetSearch;\n\t lastQuery.aq = this.facet.facetQueryController.advancedExpressionToUseForFacetSearch;\n\t lastQuery.enableDidYouMean = false;\n\t lastQuery.firstResult = 0;\n\t lastQuery.numberOfResults = 0;\n\t lastQuery.fieldsToInclude = [];\n\t lastQuery.groupBy = [this.getGroupByRequest()];\n\t return lastQuery;\n\t };\n\t FacetSearchParameters.prototype.getCurrentlyShowedValueInSearch = function (searchResults) {\n\t return _.map(Dom_1.$$(searchResults).findAll('.coveo-facet-value-caption'), function (val) {\n\t return Dom_1.$$(val).text();\n\t });\n\t };\n\t FacetSearchParameters.prototype.lowerCaseAll = function () {\n\t this.alwaysExclude = _.chain(this.alwaysExclude)\n\t .map(function (v) {\n\t return v.toLowerCase();\n\t })\n\t .uniq()\n\t .value();\n\t this.alwaysInclude = _.chain(this.alwaysInclude)\n\t .map(function (v) {\n\t return v.toLowerCase();\n\t })\n\t .uniq()\n\t .value();\n\t };\n\t return FacetSearchParameters;\n\t}());\n\texports.FacetSearchParameters = FacetSearchParameters;\n\n\n/***/ },\n/* 95 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar FileTypes_1 = __webpack_require__(63);\n\tvar DateUtils_1 = __webpack_require__(60);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\tvar FacetUtils = (function () {\n\t function FacetUtils() {\n\t }\n\t FacetUtils.getRegexToUseForFacetSearch = function (value, ignoreAccent) {\n\t return new RegExp(StringUtils_1.StringUtils.stringToRegex(value, ignoreAccent), 'i');\n\t };\n\t FacetUtils.getValuesToUseForSearchInFacet = function (original, facet) {\n\t var ret = [original];\n\t var regex = this.getRegexToUseForFacetSearch(original, facet.options.facetSearchIgnoreAccents);\n\t if (facet.options.valueCaption) {\n\t _.chain(facet.options.valueCaption)\n\t .pairs()\n\t .filter(function (pair) {\n\t return regex.test(pair[1]);\n\t })\n\t .each(function (match) {\n\t ret.push(match[0]);\n\t });\n\t if (QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') || QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')) {\n\t _.each(FileTypes_1.FileTypes.getFileTypeCaptions(), function (value, key) {\n\t if (!(key in facet.options.valueCaption) && regex.test(value)) {\n\t ret.push(key);\n\t }\n\t });\n\t }\n\t }\n\t else if (QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') || QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')) {\n\t _.each(_.filter(_.pairs(FileTypes_1.FileTypes.getFileTypeCaptions()), function (pair) {\n\t return regex.test(pair[1]);\n\t }), function (match) {\n\t ret.push(match[0]);\n\t });\n\t }\n\t else if (QueryUtils_1.QueryUtils.isStratusAgnosticField(facet.options.field, '@month')) {\n\t _.each(_.range(1, 13), function (month) {\n\t if (regex.test(DateUtils_1.DateUtils.monthToString(month - 1))) {\n\t ret.push(('0' + month.toString()).substr(-2));\n\t }\n\t });\n\t }\n\t return ret;\n\t };\n\t FacetUtils.buildFacetSearchPattern = function (values) {\n\t values = _.map(values, function (value) {\n\t return Utils_1.Utils.escapeRegexCharacter(value);\n\t });\n\t values[0] = '.*' + values[0] + '.*';\n\t return values.join('|');\n\t };\n\t FacetUtils.needAnotherFacetSearch = function (currentSearchLength, newSearchLength, oldSearchLength, desiredSearchLength) {\n\t // Something was removed (currentSearch < newSearch)\n\t // && we might want to display more facet search result(currentSearch < desiredSearch)\n\t // && the new query returned more stuff than the old one so there's still more results(currentSearchLength > oldLength)\n\t return currentSearchLength < newSearchLength && currentSearchLength < desiredSearchLength && currentSearchLength > oldSearchLength;\n\t };\n\t FacetUtils.addNoStateCssClassToFacetValues = function (facet, container) {\n\t // This takes care of adding the correct css class on each facet value checkbox (empty white box) if at least one value is selected in that facet\n\t if (facet.values.getSelected().length != 0) {\n\t var noStates = Dom_1.$$(container).findAll('li:not(.coveo-selected)');\n\t _.each(noStates, function (noState) {\n\t Dom_1.$$(noState).addClass('coveo-no-state');\n\t });\n\t }\n\t };\n\t FacetUtils.tryToGetTranslatedCaption = function (field, value) {\n\t var found;\n\t if (QueryUtils_1.QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@filetype')) {\n\t found = FileTypes_1.FileTypes.getFileType(value.toLowerCase()).caption;\n\t }\n\t else if (QueryUtils_1.QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@month')) {\n\t try {\n\t var month = parseInt(value);\n\t found = DateUtils_1.DateUtils.monthToString(month - 1);\n\t }\n\t catch (ex) {\n\t // Do nothing\n\t }\n\t }\n\t return found != undefined && Utils_1.Utils.isNonEmptyString(found) ? found : value;\n\t };\n\t FacetUtils.clipCaptionsToAvoidOverflowingTheirContainer = function (facet, forceClip) {\n\t // in new design, we don't need this : use flexbox instead (sorry IE user)\n\t if (facet.getBindings && facet.getBindings().searchInterface && facet.getBindings().searchInterface.isNewDesign()) {\n\t return;\n\t }\n\t if (!(Coveo.HierarchicalFacet && facet instanceof Coveo.HierarchicalFacet) || forceClip) {\n\t facet.logger.trace('Clipping captions');\n\t // force facet to show to calculate width\n\t Dom_1.$$(facet.element).show();\n\t var element = facet.element;\n\t var captions = Dom_1.$$(element).findAll('.coveo-facet-value-caption');\n\t for (var i = 0; i < captions.length; i++) {\n\t if (captions[i].style.width != '') {\n\t captions[i].style.width = '';\n\t }\n\t }\n\t var labels = Dom_1.$$(element).findAll('.coveo-facet-value-label-wrapper');\n\t var labelsMaxWidth = [];\n\t for (var i = 0; i < labels.length; i++) {\n\t var label = labels[i];\n\t var caption = Dom_1.$$(label).find('.coveo-facet-value-caption');\n\t var labelWidth = label.scrollWidth;\n\t var labelVisibleWidth = label.clientWidth;\n\t var captionWidth = caption.scrollWidth;\n\t var crop = Math.max(0, labelWidth - labelVisibleWidth);\n\t if (crop) {\n\t labelsMaxWidth.push({\n\t element: caption,\n\t width: captionWidth,\n\t crop: crop,\n\t label: label\n\t });\n\t }\n\t }\n\t // remove the specific css class\n\t element.style.display = '';\n\t for (var i = 0; i < labelsMaxWidth.length; i++) {\n\t var labelMaxWidth = labelsMaxWidth[i];\n\t labelMaxWidth.element.style.width = labelMaxWidth.width - labelMaxWidth.crop + 'px';\n\t if (labelMaxWidth.crop > 0) {\n\t labelMaxWidth.label.setAttribute('title', Dom_1.$$(labelMaxWidth.element).text());\n\t }\n\t else {\n\t labelMaxWidth.label.setAttribute('title', null);\n\t }\n\t }\n\t }\n\t };\n\t return FacetUtils;\n\t}());\n\texports.FacetUtils = FacetUtils;\n\n\n/***/ },\n/* 96 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar FacetQueryController_1 = __webpack_require__(93);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar FacetRangeQueryController = (function (_super) {\n\t __extends(FacetRangeQueryController, _super);\n\t function FacetRangeQueryController(facet) {\n\t var _this = _super.call(this, facet) || this;\n\t _this.facet = facet;\n\t return _this;\n\t }\n\t FacetRangeQueryController.prototype.createBasicGroupByRequest = function (allowedValues, addComputedField) {\n\t if (addComputedField === void 0) { addComputedField = true; }\n\t var groupByQuery = _super.prototype.createBasicGroupByRequest.call(this, null, addComputedField);\n\t groupByQuery.allowedValues = undefined;\n\t if (Utils_1.Utils.isNonEmptyArray(this.facet.options.ranges)) {\n\t groupByQuery = this.buildGroupByQueryForPredefinedRanges(groupByQuery);\n\t }\n\t else {\n\t groupByQuery = this.buildGroupByQueryForAutomaticRanges(groupByQuery);\n\t }\n\t return groupByQuery;\n\t };\n\t FacetRangeQueryController.prototype.createGroupByAllowedValues = function () {\n\t return undefined;\n\t };\n\t FacetRangeQueryController.prototype.buildGroupByQueryForAutomaticRanges = function (groupByQuery) {\n\t groupByQuery.generateAutomaticRanges = true;\n\t return groupByQuery;\n\t };\n\t FacetRangeQueryController.prototype.buildGroupByQueryForPredefinedRanges = function (groupByQuery) {\n\t groupByQuery.rangeValues = this.facet.options.ranges;\n\t groupByQuery.maximumNumberOfValues = this.facet.options.ranges.length;\n\t return groupByQuery;\n\t };\n\t return FacetRangeQueryController;\n\t}(FacetQueryController_1.FacetQueryController));\n\texports.FacetRangeQueryController = FacetRangeQueryController;\n\n\n/***/ },\n/* 97 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar ExpressionBuilder_1 = __webpack_require__(80);\n\tvar DateUtils_1 = __webpack_require__(60);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar _ = __webpack_require__(16);\n\tvar FacetSliderQueryController = (function () {\n\t function FacetSliderQueryController(facet) {\n\t var _this = this;\n\t this.facet = facet;\n\t this.facet.bind.onRootElement(QueryEvents_1.QueryEvents.querySuccess, function (args) { return _this.handleQuerySuccess(args); });\n\t }\n\t FacetSliderQueryController.prototype.prepareForNewQuery = function () {\n\t this.lastGroupByRequestIndex = undefined;\n\t };\n\t FacetSliderQueryController.prototype.putGroupByIntoQueryBuilder = function (queryBuilder) {\n\t if (this.facet.options.graph) {\n\t this.putGroupByForGraphIntoQueryBuilder(queryBuilder);\n\t }\n\t this.putGroupByForSliderIntoQueryBuilder(queryBuilder);\n\t };\n\t FacetSliderQueryController.prototype.createBasicGroupByRequest = function () {\n\t var groupByQuery = {\n\t field: this.facet.options.field,\n\t completeFacetWithStandardValues: true,\n\t allowedValues: undefined\n\t };\n\t return groupByQuery;\n\t };\n\t FacetSliderQueryController.prototype.computeOurFilterExpression = function (boundary) {\n\t if (boundary === void 0) { boundary = [this.facet.startOfSlider, this.facet.endOfSlider]; }\n\t var builder = new ExpressionBuilder_1.ExpressionBuilder();\n\t if (boundary[0] != undefined && boundary[1] != undefined) {\n\t if (this.facet.options.excludeOuterBounds) {\n\t this.addFilterExpressionWithOuterBoundsExcluded(boundary[0], boundary[1], builder);\n\t }\n\t else {\n\t this.addFilterExpressionWithOuterBoundsIncluded(boundary[0], boundary[1], builder);\n\t }\n\t }\n\t return builder.build();\n\t };\n\t FacetSliderQueryController.prototype.handleQuerySuccess = function (args) {\n\t var _this = this;\n\t if (!this.isAValidRangeResponse(args)) {\n\t var logger = new Logger_1.Logger(this);\n\t logger.error(\"Cannot instantiate FacetSlider for this field : \" + this.facet.options.field + \". It needs to be configured as a numerical field in the index\");\n\t logger.error(\"Disabling the FacetSlider\", this.facet);\n\t this.facet.disable();\n\t return;\n\t }\n\t if (this.facet.options && this.facet.options.graph && this.rangeValuesForGraphToUse == undefined) {\n\t this.rangeValuesForGraphToUse = [];\n\t var rawValues = args.results.groupByResults[this.graphGroupByQueriesIndex].values;\n\t _.each(rawValues, function (rawValue) {\n\t var rawSplit = rawValue.value.split('..');\n\t _this.rangeValuesForGraphToUse.push({\n\t start: _this.facet.options.dateField ? _this.getISOFormat(rawSplit[0].replace('@', ' ')) : parseInt(rawSplit[0], 10),\n\t end: _this.facet.options.dateField ? _this.getISOFormat(rawSplit[1].replace('@', ' ')) : parseInt(rawSplit[1], 10)\n\t });\n\t });\n\t }\n\t };\n\t FacetSliderQueryController.prototype.isAValidRangeResponse = function (args) {\n\t if (this.lastGroupByRequestIndex != undefined && args.results.groupByResults[this.lastGroupByRequestIndex]) {\n\t var firstValue = args.results.groupByResults[this.lastGroupByRequestIndex].values[0];\n\t if (firstValue && !QueryUtils_1.QueryUtils.isRangeString(firstValue.value)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t };\n\t FacetSliderQueryController.prototype.addFilterExpressionWithOuterBoundsIncluded = function (start, end, builder) {\n\t if (start != this.facet.options.start || end != this.facet.options.end) {\n\t if (this.facet.options.dateField) {\n\t start = this.getFilterDateFormat(start);\n\t end = this.getFilterDateFormat(end);\n\t }\n\t builder.addFieldExpression(this.facet.options.field, '==', [start + '..' + end]);\n\t }\n\t };\n\t FacetSliderQueryController.prototype.addFilterExpressionWithOuterBoundsExcluded = function (start, end, builder) {\n\t var startCompare = this.facet.options.start;\n\t var endCompare = this.facet.options.end;\n\t var startCompared = start;\n\t var endCompared = end;\n\t if (this.facet.options.dateField) {\n\t startCompared = this.getFilterDateFormat(start);\n\t endCompared = this.getFilterDateFormat(end);\n\t startCompare = this.getFilterDateFormat(startCompare);\n\t endCompare = this.getFilterDateFormat(endCompare);\n\t }\n\t else {\n\t startCompared += '';\n\t endCompared += '';\n\t startCompare += '';\n\t endCompare += '';\n\t }\n\t if (startCompared != startCompare && endCompared == endCompare) {\n\t builder.addFieldExpression(this.facet.options.field, '>=', [startCompared]);\n\t }\n\t else if (startCompared == startCompare && endCompared != endCompare) {\n\t builder.addFieldExpression(this.facet.options.field, '<=', [endCompared]);\n\t }\n\t else {\n\t this.addFilterExpressionWithOuterBoundsIncluded(start, end, builder);\n\t }\n\t };\n\t FacetSliderQueryController.prototype.putGroupByForGraphIntoQueryBuilder = function (queryBuilder) {\n\t this.graphGroupByQueriesIndex = queryBuilder.groupByRequests.length;\n\t var basicGroupByRequestForGraph = this.createBasicGroupByRequest();\n\t if (this.facet.isSimpleSliderConfig()) {\n\t basicGroupByRequestForGraph.rangeValues = this.createRangeValuesForGraphUsingStartAndEnd();\n\t basicGroupByRequestForGraph.generateAutomaticRanges = false;\n\t }\n\t else {\n\t basicGroupByRequestForGraph.generateAutomaticRanges = true;\n\t }\n\t var filter = this.computeOurFilterExpression(this.facet.getSliderBoundaryForQuery());\n\t if (filter != undefined) {\n\t var queryOverrideObject = queryBuilder.computeCompleteExpressionPartsExcept(filter);\n\t basicGroupByRequestForGraph.queryOverride = queryOverrideObject.basic;\n\t basicGroupByRequestForGraph.advancedQueryOverride = queryOverrideObject.advanced;\n\t basicGroupByRequestForGraph.constantQueryOverride = queryOverrideObject.constant;\n\t if (basicGroupByRequestForGraph.queryOverride == undefined) {\n\t basicGroupByRequestForGraph.queryOverride = this.facet.options.queryOverride || '@uri';\n\t }\n\t else {\n\t basicGroupByRequestForGraph.queryOverride += (this.facet.options.queryOverride ? ' ' + this.facet.options.queryOverride : '');\n\t }\n\t }\n\t else if (this.facet.options.queryOverride != null) {\n\t var completeExpression = queryBuilder.computeCompleteExpression();\n\t basicGroupByRequestForGraph.queryOverride = (completeExpression != null ? completeExpression + ' ' : '') + this.facet.options.queryOverride;\n\t }\n\t basicGroupByRequestForGraph.sortCriteria = 'nosort';\n\t basicGroupByRequestForGraph.maximumNumberOfValues = this.facet.options.graph.steps;\n\t queryBuilder.groupByRequests.push(basicGroupByRequestForGraph);\n\t };\n\t FacetSliderQueryController.prototype.putGroupByForSliderIntoQueryBuilder = function (queryBuilder) {\n\t this.lastGroupByRequestIndex = queryBuilder.groupByRequests.length;\n\t var maximumNumberOfValues = 1;\n\t if (this.facet.hasAGraph()) {\n\t maximumNumberOfValues = this.facet.options.graph.steps;\n\t }\n\t var rangeValues = undefined;\n\t var _a = this.formatStartAndEnd(), start = _a.start, end = _a.end;\n\t if (this.facet.isSimpleSliderConfig()) {\n\t rangeValues = [{\n\t start: start,\n\t end: end,\n\t label: 'slider',\n\t endInclusive: false\n\t }];\n\t }\n\t var basicGroupByRequestForSlider = this.createBasicGroupByRequest();\n\t basicGroupByRequestForSlider.maximumNumberOfValues = maximumNumberOfValues;\n\t basicGroupByRequestForSlider.queryOverride = this.facet.options.queryOverride || '@uri';\n\t basicGroupByRequestForSlider.sortCriteria = 'nosort';\n\t basicGroupByRequestForSlider.generateAutomaticRanges = !this.facet.isSimpleSliderConfig();\n\t basicGroupByRequestForSlider.rangeValues = rangeValues;\n\t queryBuilder.groupByRequests.push(basicGroupByRequestForSlider);\n\t };\n\t FacetSliderQueryController.prototype.createRangeValuesForGraphUsingStartAndEnd = function () {\n\t var _a = this.formatStartAndEnd(), start = _a.start, end = _a.end;\n\t var oneRange = {\n\t start: start,\n\t end: end,\n\t endInclusive: true,\n\t label: 'Slider'\n\t };\n\t if (this.facet.options.graph.steps == undefined) {\n\t this.facet.options.graph.steps = 10;\n\t }\n\t if (this.facet.options.dateField && isNaN(this.facet.options.start)) {\n\t this.facet.options.start = new Date(this.facet.options.start).getTime();\n\t }\n\t if (this.facet.options.dateField && isNaN(this.facet.options.end)) {\n\t this.facet.options.end = new Date(this.facet.options.end).getTime();\n\t }\n\t if (this.rangeValuesForGraphToUse != undefined) {\n\t return this.usePrebuiltRange(oneRange);\n\t }\n\t else {\n\t return this.buildRange(oneRange);\n\t }\n\t };\n\t FacetSliderQueryController.prototype.usePrebuiltRange = function (basicRangeRequest) {\n\t return _.map(this.rangeValuesForGraphToUse, function (value) {\n\t return {\n\t start: value.start,\n\t end: value.end,\n\t endInclusive: basicRangeRequest.endInclusive,\n\t label: basicRangeRequest.label\n\t };\n\t });\n\t };\n\t FacetSliderQueryController.prototype.buildRange = function (basicRangeRequest) {\n\t var _this = this;\n\t var start = this.facet.options.start;\n\t var oneStep = (this.facet.options.end - this.facet.options.start) / this.facet.options.graph.steps;\n\t return _.map(_.range(0, this.facet.options.graph.steps, 1), function (step) {\n\t var newStart = start + (step * oneStep);\n\t var newEnd = start + ((step + 1) * oneStep);\n\t if (_this.facet.options.dateField) {\n\t newStart = _this.getISOFormat(newStart);\n\t newEnd = _this.getISOFormat(newEnd);\n\t }\n\t return {\n\t endInclusive: basicRangeRequest.endInclusive,\n\t label: basicRangeRequest.label,\n\t start: newStart,\n\t end: newEnd\n\t };\n\t });\n\t };\n\t FacetSliderQueryController.prototype.formatStartAndEnd = function () {\n\t var start = this.facet.options.start;\n\t var end = this.facet.options.end;\n\t if (this.facet.options.dateField) {\n\t start = this.getISOFormat(start);\n\t end = this.getISOFormat(end);\n\t }\n\t return {\n\t start: start,\n\t end: end\n\t };\n\t };\n\t FacetSliderQueryController.prototype.getISOFormat = function (value) {\n\t if (value) {\n\t if (!isNaN(value)) {\n\t value = Number(value);\n\t }\n\t var date = new Date(value);\n\t if (!DateUtils_1.DateUtils.isValid(date)) {\n\t date = new Date(this.getBrowserCompatibleFormat(value));\n\t if (!DateUtils_1.DateUtils.isValid(date)) {\n\t // If we get here, we'll probably get an error further down the line when querying the index anyway ...\n\t this.facet.logger.error('Cannot parse this date format.', value, new Date(value));\n\t return undefined;\n\t }\n\t }\n\t return date.toISOString();\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t FacetSliderQueryController.prototype.getFilterDateFormat = function (rawValue) {\n\t if (rawValue) {\n\t return this.getISOFormat(rawValue).replace('T', '@').replace('.000Z', '').replace(/-/g, '/');\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t FacetSliderQueryController.prototype.getBrowserCompatibleFormat = function (value) {\n\t return value.replace('@', 'T').replace(/\\//g, '-');\n\t };\n\t return FacetSliderQueryController;\n\t}());\n\texports.FacetSliderQueryController = FacetSliderQueryController;\n\n\n/***/ },\n/* 98 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t/// \n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar FacetQueryController_1 = __webpack_require__(93);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar _ = __webpack_require__(16);\n\tvar HierarchicalFacetQueryController = (function (_super) {\n\t __extends(HierarchicalFacetQueryController, _super);\n\t function HierarchicalFacetQueryController(facet) {\n\t var _this = _super.call(this, facet) || this;\n\t _this.facet = facet;\n\t return _this;\n\t }\n\t HierarchicalFacetQueryController.prototype.search = function (params, oldLength) {\n\t var _this = this;\n\t if (oldLength === void 0) { oldLength = params.nbResults; }\n\t // Do a client side search, since HierarchicalFacet should normally have all value client side\n\t var regex = FacetUtils_1.FacetUtils.getRegexToUseForFacetSearch(this.facet.facetSearch.getValueInInputForFacetSearch(), this.facet.options.facetSearchIgnoreAccents);\n\t return new Promise(function (resolve) {\n\t var match = _.chain(_this.facet.getAllValueHierarchy())\n\t .toArray()\n\t .filter(function (v) {\n\t return _this.facet.getValueCaption(v.facetValue).match(regex) != null;\n\t })\n\t .first(_this.facet.options.numberOfValuesInFacetSearch)\n\t .value();\n\t resolve(_.map(match, function (v) {\n\t return v.facetValue;\n\t }));\n\t });\n\t };\n\t HierarchicalFacetQueryController.prototype.getAllowedValuesFromSelected = function () {\n\t return [];\n\t };\n\t return HierarchicalFacetQueryController;\n\t}(FacetQueryController_1.FacetQueryController));\n\texports.HierarchicalFacetQueryController = HierarchicalFacetQueryController;\n\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Model_1 = __webpack_require__(100);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar HashUtils_1 = __webpack_require__(67);\n\tvar Defer_1 = __webpack_require__(34);\n\tvar RootComponent_1 = __webpack_require__(77);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * This component is instantiated automatically by the framework on the root if the {@link SearchInterface}.
\n\t * When the {@link SearchInterface.options.enableHistory} option is set to true, this component is instantiated.
\n\t * It's only job is to apply changes in the {@link QueryStateModel} to the hash in the URL, and vice versa.
\n\t * This component does *not* hold the state of the interface, it only represent it in the URL.\n\t */\n\tvar HistoryController = (function (_super) {\n\t __extends(HistoryController, _super);\n\t /**\n\t * Create a new history controller\n\t * @param element\n\t * @param windoh For mock / test purposes.\n\t * @param model\n\t * @param queryController\n\t * @param hashUtilsModule For mock / test purposes.\n\t */\n\t function HistoryController(element, windoh, model, queryController, hashUtils) {\n\t if (hashUtils === void 0) { hashUtils = HashUtils_1.HashUtils; }\n\t var _this = _super.call(this, element, HistoryController.ID) || this;\n\t _this.windoh = windoh;\n\t _this.model = model;\n\t _this.queryController = queryController;\n\t _this.hashUtils = hashUtils;\n\t _this.ignoreNextHashChange = false;\n\t _this.initialHashChange = false;\n\t _this.willUpdateHash = false;\n\t _this.windoh = _this.windoh || window;\n\t Assert_1.Assert.exists(_this.model);\n\t Assert_1.Assert.exists(_this.queryController);\n\t Dom_1.$$(_this.element).on(InitializationEvents_1.InitializationEvents.restoreHistoryState, function () {\n\t _this.logger.trace('Restore history state. Update model');\n\t _this.updateModelFromHash();\n\t });\n\t Dom_1.$$(_this.element).on(_this.model.getEventName(Model_1.Model.eventTypes.all), function () {\n\t _this.logger.trace('Query model changed. Update hash');\n\t _this.updateHashFromModel();\n\t });\n\t _this.hashchange = function () {\n\t _this.handleHashChange();\n\t };\n\t _this.windoh.addEventListener('hashchange', _this.hashchange);\n\t Dom_1.$$(_this.element).on(InitializationEvents_1.InitializationEvents.nuke, function () { return _this.handleNuke(); });\n\t return _this;\n\t }\n\t /**\n\t * Set the given map of key value in the hash of the URL\n\t * @param values\n\t */\n\t HistoryController.prototype.setHashValues = function (values) {\n\t this.logger.trace('Update history hash');\n\t var hash = '#' + this.hashUtils.encodeValues(values);\n\t this.ignoreNextHashChange = this.windoh.location.hash != hash;\n\t this.logger.trace('ignoreNextHashChange', this.ignoreNextHashChange);\n\t this.logger.trace('initialHashChange', this.initialHashChange);\n\t this.logger.trace('from', this.windoh.location.hash, 'to', hash);\n\t if (this.initialHashChange) {\n\t this.initialHashChange = false;\n\t this.windoh.location.replace(hash);\n\t this.logger.trace('History hash modified', hash);\n\t }\n\t else if (this.ignoreNextHashChange) {\n\t this.windoh.location.hash = hash;\n\t this.logger.trace('History hash created', hash);\n\t }\n\t };\n\t HistoryController.prototype.handleNuke = function () {\n\t this.windoh.removeEventListener('hashchange', this.hashchange);\n\t };\n\t HistoryController.prototype.handleHashChange = function () {\n\t this.logger.trace('History hash changed');\n\t if (this.ignoreNextHashChange) {\n\t this.logger.trace('History hash change ignored');\n\t this.ignoreNextHashChange = false;\n\t return;\n\t }\n\t var diff = this.updateModelFromHash();\n\t if (_.difference(diff, HistoryController.attributesThatDoNotTriggerQuery).length > 0) {\n\t this.queryController.executeQuery();\n\t }\n\t };\n\t HistoryController.prototype.updateHashFromModel = function () {\n\t var _this = this;\n\t this.logger.trace('Model -> history hash');\n\t if (!this.willUpdateHash) {\n\t Defer_1.Defer.defer(function () {\n\t var attributes = _this.model.getAttributes();\n\t _this.setHashValues(attributes);\n\t _this.logger.debug('Saving state to hash', attributes);\n\t _this.willUpdateHash = false;\n\t });\n\t this.willUpdateHash = true;\n\t }\n\t };\n\t HistoryController.prototype.updateModelFromHash = function () {\n\t var _this = this;\n\t this.logger.trace('History hash -> model');\n\t var toSet = {};\n\t var diff = [];\n\t _.each(this.model.attributes, function (value, key, obj) {\n\t var valToSet = _this.getHashValue(key);\n\t toSet[key] = valToSet;\n\t if (_this.model.get(key) != valToSet) {\n\t diff.push(key);\n\t }\n\t });\n\t this.initialHashChange = true;\n\t this.model.setMultiple(toSet);\n\t return diff;\n\t };\n\t HistoryController.prototype.getHashValue = function (key) {\n\t Assert_1.Assert.isNonEmptyString(key);\n\t var value;\n\t try {\n\t value = this.hashUtils.getValue(key, this.hashUtils.getHash(this.windoh));\n\t }\n\t catch (error) {\n\t this.logger.error(\"Could not parse parameter \" + key + \" from URI\");\n\t }\n\t if (Utils_1.Utils.isUndefined(value)) {\n\t value = this.model.defaultAttributes[key];\n\t }\n\t return value;\n\t };\n\t HistoryController.prototype.debugInfo = function () {\n\t return {\n\t 'state': this.model.getAttributes()\n\t };\n\t };\n\t return HistoryController;\n\t}(RootComponent_1.RootComponent));\n\tHistoryController.ID = 'HistoryController';\n\tHistoryController.attributesThatDoNotTriggerQuery = ['quickview'];\n\texports.HistoryController = HistoryController;\n\n\n/***/ },\n/* 100 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar BaseComponent_1 = __webpack_require__(78);\n\tvar _ = __webpack_require__(16);\n\texports.MODEL_EVENTS = {\n\t PREPROCESS: 'preprocess',\n\t CHANGE_ONE: 'change:',\n\t CHANGE: 'change',\n\t RESET: 'reset',\n\t ALL: 'all'\n\t};\n\t/**\n\t * A *model* is a key-value store that triggers various JavaScript events when any value associated to one of its key changes.
\n\t * This class is meant to be extended, one of the most important extension being the {@link QueryStateModel} class.
\n\t * Components set values in this key-value store and listen to triggered events in order to update themselves accordingly.
\n\t */\n\tvar Model = (function (_super) {\n\t __extends(Model, _super);\n\t function Model(element, id, attributes) {\n\t var _this = _super.call(this, element, id) || this;\n\t _this.eventNameSpace = id;\n\t _this.defaultAttributes = Utils_1.Utils.extendDeep(_this.defaultAttributes, attributes);\n\t _this.attributes = attributes;\n\t _this.logger.debug('Creating model');\n\t return _this;\n\t }\n\t /**\n\t * Sets the value of a single specific attribute.
\n\t * Note: this method calls the `setMultiple` method.\n\t * @param attribute\n\t * the specific attribute whose value is to be set.\n\t * @param value\n\t * the value to set the attribute to.\n\t * @param options\n\t * the options (see {@link setMultiple}).\n\t */\n\t Model.prototype.set = function (attribute, value, options) {\n\t var toSet = {};\n\t toSet[attribute] = value;\n\t this.setMultiple(toSet, options);\n\t };\n\t /**\n\t * Gets an object containing all *active* registered attribute key-values.
\n\t * An attribute is considered active when its value is not in its default state.\n\t * @returns {{object}}\n\t */\n\t Model.prototype.getAttributes = function () {\n\t var _this = this;\n\t var attributes = {};\n\t _.each(this.attributes, function (attribute, key) {\n\t if (_.isObject(attribute)) {\n\t if (!Utils_1.Utils.objectEqual(attribute, _this.defaultAttributes[key])) {\n\t attributes[key] = attribute;\n\t }\n\t }\n\t else if (attribute != _this.defaultAttributes[key]) {\n\t attributes[key] = attribute;\n\t }\n\t });\n\t return attributes;\n\t };\n\t /**\n\t * Sets the values of one or many attributes.
\n\t * This method may trigger the following events (in order):
\n\t * • `preprocess`
\n\t * • `changeOne`
\n\t * • `change`
\n\t * • `all`\n\t * @param toSet\n\t * the key-value list of attributes with their new intended values.\n\t * @param options\n\t * if the `customAttribute` option is set to `true`, the method will not validate whether an attribute is registered or not.
\n\t * If the `validateType` option is set to `true`, the method will ensure that each value type is correct.
\n\t * If the `silent` option is set to `true`, then the `changeOne`, `change` and `all` events will not be triggered.\n\t */\n\t Model.prototype.setMultiple = function (toSet, options) {\n\t var _this = this;\n\t var anythingChanged = false;\n\t this.preprocessEvent(toSet);\n\t _.each(toSet, function (value, attribute) {\n\t if (!options || !options.customAttribute) {\n\t _this.checkIfAttributeExists(attribute);\n\t }\n\t value = _this.parseToCorrectType(attribute, value);\n\t if (!options || options.validateType) {\n\t if (!_this.typeIsValid(attribute, value)) {\n\t return;\n\t }\n\t }\n\t if (_this.checkIfAttributeChanged(attribute, value)) {\n\t _this.attributes[attribute] = value;\n\t anythingChanged = true;\n\t if (options == null || !options.silent) {\n\t _this.attributeHasChangedEvent(attribute);\n\t }\n\t }\n\t });\n\t if (anythingChanged && (options == null || !options.silent)) {\n\t this.attributesHasChangedEvent();\n\t this.anyEvent();\n\t }\n\t };\n\t /**\n\t * Sets a new default value to a single specific attribute.
\n\t * Note: specifying a new attribute default value does not set the attribute to that value. This can be done using the {@link setDefault} method.\n\t * @param attribute\n\t * the specific attribute whose default value is to be changed.\n\t * @param value\n\t * the new intended default value.\n\t * @param options\n\t * if the `customAttribute` option is set to `true`, the method will not validate whether the attribute is registered or not.\n\t */\n\t Model.prototype.setNewDefault = function (attribute, value, options) {\n\t if (!options || !options.customAttribute) {\n\t this.checkIfAttributeExists(attribute);\n\t }\n\t this.defaultAttributes[attribute] = value;\n\t };\n\t /**\n\t * Sets a single specific attribute to its default value.
\n\t * Note: this method calls the {@link setMultiple} method without specifying any option.\n\t * @param attribute\n\t * the specific attribute whose value is to be set to its default value.\n\t */\n\t Model.prototype.setDefault = function (attribute) {\n\t this.set(attribute, this.defaultAttributes[attribute]);\n\t };\n\t /**\n\t * Gets the value of a single specific attribute.
\n\t * If no attribute is specified, the method instead returns an object containing all registered attribute key-values.\n\t * @param attribute\n\t * the specific attribute whose value should be returned.\n\t * @returns {any}\n\t */\n\t Model.prototype.get = function (attribute) {\n\t if (attribute == undefined) {\n\t return this.attributes;\n\t }\n\t else {\n\t return this.attributes[attribute];\n\t }\n\t };\n\t /**\n\t * Gets the default value of a single specific attribute.
\n\t * If no attribute is specified, the method instead returns an object containing all registered attribute key-default values.\n\t * @param attribute\n\t * the specific attribute whose default value should be returned.\n\t * @returns {any}\n\t */\n\t Model.prototype.getDefault = function (attribute) {\n\t if (attribute == undefined) {\n\t return this.defaultAttributes;\n\t }\n\t else {\n\t return this.defaultAttributes[attribute];\n\t }\n\t };\n\t /**\n\t * Resets each registered attribute to its default value.
\n\t * Note: this method calls the {@link setMultiple} method without specifying any options.
\n\t * After the `setMultiple` call has returned, this method triggers the `reset` event.\n\t */\n\t Model.prototype.reset = function () {\n\t this.setMultiple(this.defaultAttributes);\n\t this.modelWasResetEvent();\n\t };\n\t /**\n\t * Registers a new attribute key-value.\n\t * @param attribute\n\t * the name of the new attribute to register.\n\t * @param defaultValue\n\t * the newly registered attribute default value.\n\t */\n\t Model.prototype.registerNewAttribute = function (attribute, defaultValue) {\n\t this.defaultAttributes[attribute] = defaultValue;\n\t this.attributes[attribute] = defaultValue;\n\t };\n\t /**\n\t * Gets a string displaying the event namespace followed by the specific event name. The returned string is formatted thus:
\n\t * `[eventNameSpace]:[eventName]`\n\t * @example `getEventName(\"reset\");` could return `\"state:reset\"`.\n\t * @param event\n\t * the event name.\n\t * @returns {string}\n\t */\n\t Model.prototype.getEventName = function (event) {\n\t return this.eventNameSpace + ':' + event;\n\t };\n\t Model.prototype.attributesHasChangedEvent = function () {\n\t Dom_1.$$(this.element).trigger(this.getEventName(Model.eventTypes.change), this.createAttributesChangedArgument());\n\t };\n\t Model.prototype.attributeHasChangedEvent = function (attr) {\n\t Dom_1.$$(this.element).trigger(this.getEventName(Model.eventTypes.changeOne) + attr, this.createAttributeChangedArgument(attr));\n\t };\n\t Model.prototype.preprocessEvent = function (attributes) {\n\t Dom_1.$$(this.element).trigger(this.getEventName(Model.eventTypes.preprocess), attributes);\n\t };\n\t Model.prototype.modelWasResetEvent = function () {\n\t Dom_1.$$(this.element).trigger(this.getEventName(Model.eventTypes.reset), this.createModelChangedArgument());\n\t };\n\t Model.prototype.anyEvent = function () {\n\t Dom_1.$$(this.element).trigger(this.getEventName(Model.eventTypes.all), this.createModelChangedArgument());\n\t };\n\t Model.prototype.createAttributeChangedArgument = function (attribute) {\n\t return { attribute: attribute, value: this.attributes[attribute] };\n\t };\n\t Model.prototype.createAttributesChangedArgument = function () {\n\t return { attributes: this.attributes };\n\t };\n\t Model.prototype.createModelChangedArgument = function () {\n\t return { model: this };\n\t };\n\t Model.prototype.checkIfAttributeExists = function (attribute) {\n\t Assert_1.Assert.check(_.has(this.attributes, attribute));\n\t };\n\t Model.prototype.typeIsValid = function (attribute, value) {\n\t if (!Utils_1.Utils.isNullOrUndefined(this.attributes[attribute]) && !Utils_1.Utils.isUndefined(value)) {\n\t if (_.isNumber(this.attributes[attribute])) {\n\t return this.validateNumber(attribute, value);\n\t }\n\t else if (_.isBoolean(this.attributes[attribute])) {\n\t return this.validateBoolean(attribute, value);\n\t }\n\t else {\n\t return this.validateOther(attribute, value);\n\t }\n\t }\n\t return true;\n\t };\n\t Model.prototype.validateNumber = function (attribute, value) {\n\t if (!_.isNumber(value) || isNaN(value)) {\n\t this.logger.error(\"Non-matching type for \" + attribute + \". Expected number and got \" + value);\n\t return false;\n\t }\n\t return true;\n\t };\n\t Model.prototype.validateBoolean = function (attribute, value) {\n\t if (!_.isBoolean(value) && !Utils_1.Utils.parseBooleanIfNotUndefined(value) !== undefined) {\n\t this.logger.error(\"Non matching type for \" + attribute + \". Expected boolean and got \" + value);\n\t return false;\n\t }\n\t return true;\n\t };\n\t Model.prototype.validateOther = function (attribute, value) {\n\t if (!Utils_1.Utils.isNullOrUndefined(this.defaultAttributes[attribute])) {\n\t if (typeof value !== typeof this.defaultAttributes[attribute]) {\n\t this.logger.error(\"Non-matching type for \" + attribute + \". Expected \" + typeof this.defaultAttributes[attribute] + \" and got \" + value);\n\t return false;\n\t }\n\t }\n\t return true;\n\t };\n\t Model.prototype.parseToCorrectType = function (attribute, value) {\n\t if (_.isNumber(this.attributes[attribute])) {\n\t return parseInt(value, 10);\n\t }\n\t else if (_.isBoolean(this.attributes[attribute])) {\n\t if (_.isBoolean(value)) {\n\t return value;\n\t }\n\t else {\n\t return Utils_1.Utils.parseBooleanIfNotUndefined(value);\n\t }\n\t }\n\t return value;\n\t };\n\t Model.prototype.checkIfAttributeChanged = function (attribute, newValue) {\n\t var oldValue = this.attributes[attribute];\n\t if (_.isNumber(oldValue) || _.isString(oldValue) || _.isBoolean(oldValue)) {\n\t return oldValue !== newValue;\n\t }\n\t if (_.isArray(oldValue)) {\n\t return !Utils_1.Utils.arrayEqual(oldValue, newValue);\n\t }\n\t if (_.isObject(oldValue)) {\n\t return !Utils_1.Utils.objectEqual(oldValue, newValue);\n\t }\n\t return true;\n\t };\n\t Model.prototype.debugInfo = function () {\n\t return null;\n\t };\n\t return Model;\n\t}(BaseComponent_1.BaseComponent));\n\t/**\n\t * The event types that can be triggered:
\n\t * • `preprocess`: triggered before a value is set on an attribute. This allows the value to be modified before it is set.
\n\t * • `changeOne`: triggered when a single value changes.
\n\t * • `change`: triggered when one or many values change.
\n\t * • `reset`: triggered when all attributes are reset to their default values.
\n\t * • `all`: triggered after the `change` event.
\n\t * @type {{preprocess: string, changeOne: string, change: string, reset: string, all: string}}\n\t */\n\tModel.eventTypes = {\n\t preprocess: 'preprocess',\n\t changeOne: 'change:',\n\t change: 'change',\n\t reset: 'reset',\n\t all: 'all'\n\t};\n\texports.Model = Model;\n\n\n/***/ },\n/* 101 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar LocalStorageUtils_1 = __webpack_require__(71);\n\tvar Model_1 = __webpack_require__(100);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar RootComponent_1 = __webpack_require__(77);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * This component acts like the {@link HistoryController} excepts that is saves the {@link QueryStateModel} in the local storage.
\n\t * This will not allow 'back' and 'forward' navigation in the history, like the standard {@link HistoryController} allows. Instead, it load the query state only on page load.
\n\t * To enable this component, you should set the {@link SearchInterface.options.useLocalStorageForHistory} as well as the {@link SearchInterface.options.enableHistory} options to true.\n\t */\n\tvar LocalStorageHistoryController = (function (_super) {\n\t __extends(LocalStorageHistoryController, _super);\n\t /**\n\t * Create a new LocalStorageHistoryController instance\n\t * @param element\n\t * @param windoh For mock purpose\n\t * @param model\n\t * @param queryController\n\t */\n\t function LocalStorageHistoryController(element, windoh, model, queryController) {\n\t var _this = _super.call(this, element, LocalStorageHistoryController.ID) || this;\n\t _this.windoh = windoh;\n\t _this.model = model;\n\t _this.queryController = queryController;\n\t _this.omit = [];\n\t if (!windoh['localStorage']) {\n\t new Logger_1.Logger(element).info('No local storage available in current browser. LocalStorageHistoryController cannot initialize itself', _this);\n\t }\n\t else {\n\t _this.storage = new LocalStorageUtils_1.LocalStorageUtils(LocalStorageHistoryController.ID);\n\t Assert_1.Assert.exists(_this.model);\n\t Assert_1.Assert.exists(_this.queryController);\n\t Dom_1.$$(_this.element).on(InitializationEvents_1.InitializationEvents.restoreHistoryState, function () { return _this.updateModelFromLocalStorage(); });\n\t Dom_1.$$(_this.element).on(_this.model.getEventName(Model_1.Model.eventTypes.all), function () { return _this.updateLocalStorageFromModel(); });\n\t }\n\t return _this;\n\t }\n\t /**\n\t * Specifies an array of attributes from the query state model that should not be persisted in the local storage\n\t * @param attributes\n\t */\n\t LocalStorageHistoryController.prototype.withoutThoseAttribute = function (attributes) {\n\t this.omit = attributes;\n\t };\n\t LocalStorageHistoryController.prototype.updateLocalStorageFromModel = function () {\n\t var attributes = _.omit(this.model.getAttributes(), this.omit);\n\t this.setStorageValues(attributes);\n\t this.logger.debug('Saving state to localstorage', attributes);\n\t };\n\t LocalStorageHistoryController.prototype.updateModelFromLocalStorage = function () {\n\t var _this = this;\n\t var toSet = {};\n\t var loadedFromStorage = this.storage.load();\n\t _.each(this.model.attributes, function (value, key, obj) {\n\t var valToSet = loadedFromStorage ? loadedFromStorage[key] : undefined;\n\t if (valToSet == undefined) {\n\t valToSet = _this.model.defaultAttributes[key];\n\t }\n\t toSet[key] = valToSet;\n\t });\n\t this.model.setMultiple(toSet);\n\t };\n\t LocalStorageHistoryController.prototype.setStorageValues = function (values) {\n\t this.storage.save(values);\n\t };\n\t return LocalStorageHistoryController;\n\t}(RootComponent_1.RootComponent));\n\tLocalStorageHistoryController.ID = 'LocalStorageHistoryController';\n\texports.LocalStorageHistoryController = LocalStorageHistoryController;\n\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Model_1 = __webpack_require__(100);\n\texports.Model = Model_1.Model;\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\texports.QueryStateModel = QueryStateModel_1.QueryStateModel;\n\tvar ComponentOptionsModel_1 = __webpack_require__(104);\n\texports.ComponentOptionsModel = ComponentOptionsModel_1.ComponentOptionsModel;\n\tvar ComponentStateModel_1 = __webpack_require__(105);\n\texports.ComponentStateModel = ComponentStateModel_1.ComponentStateModel;\n\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Model_1 = __webpack_require__(100);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\texports.QUERY_STATE_ATTRIBUTES = {\n\t Q: 'q',\n\t FIRST: 'first',\n\t T: 't',\n\t TG: 'tg',\n\t SORT: 'sort',\n\t LAYOUT: 'layout',\n\t HD: 'hd',\n\t HQ: 'hq',\n\t QUICKVIEW: 'quickview'\n\t};\n\t/**\n\t * The QueryStateModel is a key->value store of the state of every component that can affect a query.
\n\t * Component set values in this key -> value store, and listen to event triggered to react accordingly.
\n\t * For example, when a query is launched, the searchbox will set the 'q' attribute, the pager will set the 'first' attribute, etc.
\n\t * At the same time, this class will trigger the associated event when a value is modified.
\n\t * eg : The user change the content of the searchbox, and submit a query. This will trigger the following events :
\n\t * -- state:change:q (because the value of 'q' changed)
\n\t * -- state:change (because at least one value changed in the query state)
\n\t * Component or external code could hook handler on those events : document.addEventListener('state:change:q', handler);
\n\t * See : {@link Model}, as all the relevant method are exposed in the base class.
\n\t * Optionally, the state can be persisted to the query string to allow browser history management : See {@link HistoryController}\n\t */\n\tvar QueryStateModel = (function (_super) {\n\t __extends(QueryStateModel, _super);\n\t /**\n\t * Create a new QueryState\n\t * @param element\n\t * @param attributes\n\t * @param bindings\n\t */\n\t function QueryStateModel(element, attributes) {\n\t var _this = this;\n\t var merged = _.extend({}, QueryStateModel.defaultAttributes, attributes);\n\t _this = _super.call(this, element, QueryStateModel.ID, merged) || this;\n\t return _this;\n\t }\n\t QueryStateModel.getFacetId = function (id, include) {\n\t if (include === void 0) { include = true; }\n\t return 'f:' + id + (include ? '' : ':not');\n\t };\n\t QueryStateModel.getFacetOperator = function (id) {\n\t return 'f:' + id + ':operator';\n\t };\n\t QueryStateModel.getFacetLookupValue = function (id) {\n\t return QueryStateModel.getFacetId(id) + ':lookupvalues';\n\t };\n\t /**\n\t * Determine if at least one facet is currently active in the interface (this means that a facet has selected or excluded values)\n\t * @returns {boolean}\n\t */\n\t QueryStateModel.prototype.atLeastOneFacetIsActive = function () {\n\t return !_.isUndefined(_.find(this.attributes, function (value, key) {\n\t return key.indexOf('f:') == 0 && Utils_1.Utils.isNonEmptyArray(value);\n\t }));\n\t };\n\t QueryStateModel.prototype.set = function (attribute, value, options) {\n\t this.validate(attribute, value);\n\t _super.prototype.set.call(this, attribute, value, options);\n\t };\n\t QueryStateModel.prototype.validate = function (attribute, value) {\n\t if (attribute == QueryStateModel.attributesEnum.first) {\n\t Assert_1.Assert.isNumber(value);\n\t Assert_1.Assert.isLargerOrEqualsThan(0, value);\n\t }\n\t };\n\t return QueryStateModel;\n\t}(Model_1.Model));\n\tQueryStateModel.ID = 'state';\n\tQueryStateModel.defaultAttributes = {\n\t q: '',\n\t first: 0,\n\t t: '',\n\t hd: '',\n\t hq: '',\n\t sort: '',\n\t layout: 'list',\n\t tg: '',\n\t quickview: ''\n\t};\n\tQueryStateModel.attributesEnum = {\n\t q: 'q',\n\t first: 'first',\n\t t: 't',\n\t sort: 'sort',\n\t layout: 'layout',\n\t hd: 'hd',\n\t hq: 'hq',\n\t tg: 'tg',\n\t quickview: 'quickview'\n\t};\n\texports.QueryStateModel = QueryStateModel;\n\tfunction setState(model, args) {\n\t Assert_1.Assert.exists(model);\n\t if (args.length == 0 || args[0] == undefined) {\n\t // No args means return the model\n\t return model;\n\t }\n\t else if (args.length == 1 && Utils_1.Utils.isNonEmptyString(args[0])) {\n\t // One string arg means retrieve value from model\n\t return model.get(args[0]);\n\t }\n\t else if (_.isObject(args[0])) {\n\t // One dictionary means set multiple values\n\t var toSet = args[0];\n\t var options = _.extend({ customAttribute: true }, args[1]);\n\t return model.setMultiple(toSet, options);\n\t }\n\t else if (args.length > 1) {\n\t // Otherwise we're setting a value\n\t var name_1 = args[0];\n\t var value = args[1];\n\t var options = _.extend({ customAttribute: true }, args[2]);\n\t Assert_1.Assert.isNonEmptyString(name_1);\n\t return model.set(name_1, value, options);\n\t }\n\t}\n\texports.setState = setState;\n\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Model_1 = __webpack_require__(100);\n\tvar _ = __webpack_require__(16);\n\tvar ComponentOptionsModel = (function (_super) {\n\t __extends(ComponentOptionsModel, _super);\n\t function ComponentOptionsModel(element, attributes) {\n\t var _this = this;\n\t var merged = _.extend({}, ComponentOptionsModel.defaultAttributes, attributes);\n\t _this = _super.call(this, element, ComponentOptionsModel.ID, merged) || this;\n\t return _this;\n\t }\n\t return ComponentOptionsModel;\n\t}(Model_1.Model));\n\tComponentOptionsModel.ID = 'ComponentOptions';\n\tComponentOptionsModel.defaultAttributes = {\n\t resultLink: undefined,\n\t searchHub: undefined\n\t};\n\tComponentOptionsModel.attributesEnum = {\n\t resultLink: 'resultLink',\n\t searchHub: 'searchHub'\n\t};\n\texports.ComponentOptionsModel = ComponentOptionsModel;\n\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Model_1 = __webpack_require__(100);\n\tvar ComponentStateModel = (function (_super) {\n\t __extends(ComponentStateModel, _super);\n\t function ComponentStateModel(element) {\n\t return _super.call(this, element, ComponentStateModel.ID, {}) || this;\n\t }\n\t ComponentStateModel.prototype.registerComponent = function (componentId, component) {\n\t var currentAttribute = this.attributes[componentId];\n\t if (currentAttribute == undefined) {\n\t this.attributes[componentId] = [component];\n\t }\n\t else {\n\t this.attributes[componentId].push(component);\n\t }\n\t };\n\t return ComponentStateModel;\n\t}(Model_1.Model));\n\tComponentStateModel.ID = 'ComponentState';\n\texports.ComponentStateModel = ComponentStateModel;\n\n\n/***/ },\n/* 106 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tfunction __export(m) {\n\t for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n\t}\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t__export(__webpack_require__(107));\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\texports.ComponentOptions = ComponentOptions_1.ComponentOptions;\n\texports.ComponentOptionsType = ComponentOptions_1.ComponentOptionsType;\n\tvar Component_1 = __webpack_require__(109);\n\texports.Component = Component_1.Component;\n\tvar BaseComponent_1 = __webpack_require__(78);\n\texports.BaseComponent = BaseComponent_1.BaseComponent;\n\tvar RootComponent_1 = __webpack_require__(77);\n\texports.RootComponent = RootComponent_1.RootComponent;\n\tvar QueryBuilder_1 = __webpack_require__(79);\n\texports.QueryBuilder = QueryBuilder_1.QueryBuilder;\n\tvar ExpressionBuilder_1 = __webpack_require__(80);\n\texports.ExpressionBuilder = ExpressionBuilder_1.ExpressionBuilder;\n\t// Export Initialization under both name, for legacy reason and old code in the wild that\n\t// reference the old CoveoJQuery module\n\tvar Initialization_1 = __webpack_require__(108);\n\texports.Initialization = Initialization_1.Initialization;\n\tvar Initialization_2 = __webpack_require__(108);\n\texports.CoveoJQuery = Initialization_2.Initialization;\n\tvar CoveoJQuery_1 = __webpack_require__(175);\n\texports.initCoveoJQuery = CoveoJQuery_1.initCoveoJQuery;\n\n\n/***/ },\n/* 107 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryController_1 = __webpack_require__(76);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar Analytics_1 = __webpack_require__(128);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Component_1 = __webpack_require__(109);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * Initialize the framework with a basic search interface. Calls {@link Initialization.initSearchInterface}.
\n\t * If using the jQuery extension, this is called using $('#root').coveo('init');.\n\t * @param element The root of the interface to initialize.\n\t * @param options JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType : true}}).\n\t */\n\tfunction init(element, options) {\n\t if (options === void 0) { options = {}; }\n\t Initialization_1.Initialization.initializeFramework(element, options, function () {\n\t Initialization_1.Initialization.initSearchInterface(element, options);\n\t });\n\t}\n\texports.init = init;\n\tInitialization_1.Initialization.registerNamedMethod('init', function (element, options) {\n\t if (options === void 0) { options = {}; }\n\t init(element, options);\n\t});\n\t/**\n\t * Initialize the framework with a standalone search box. Calls {@link Initialize.initStandaloneSearchInterface}.
\n\t * If using the jQuery extension, this is called using $('#root').coveo('initSearchbox');.\n\t * @param element The root of the interface to initialize.\n\t * @param searchPageUri The search page on which to redirect when there is a query.\n\t * @param options JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType : true}}).\n\t */\n\tfunction initSearchbox(element, searchPageUri, options) {\n\t if (options === void 0) { options = {}; }\n\t Assert_1.Assert.isNonEmptyString(searchPageUri);\n\t var searchInterfaceOptions = {};\n\t searchInterfaceOptions.searchPageUri = searchPageUri;\n\t searchInterfaceOptions.autoTriggerQuery = false;\n\t searchInterfaceOptions.hideUntilFirstQuery = false;\n\t searchInterfaceOptions.enableHistory = false;\n\t options = _.extend({}, options, { StandaloneSearchInterface: searchInterfaceOptions });\n\t Initialization_1.Initialization.initializeFramework(element, options, function () {\n\t Initialization_1.Initialization.initStandaloneSearchInterface(element, options);\n\t });\n\t}\n\texports.initSearchbox = initSearchbox;\n\tInitialization_1.Initialization.registerNamedMethod('initSearchbox', function (element, searchPageUri, options) {\n\t if (options === void 0) { options = {}; }\n\t initSearchbox(element, searchPageUri, options);\n\t});\n\t/**\n\t * Initialize the framework with a recommendation interface. Calls {@link Initialization.initRecommendationInterface}.
\n\t * If using the jQuery extension, this is called using $('#root').coveo('initRecommendation');.\n\t * @param element The root of the interface to initialize.\n\t * @param mainSearchInterface The search interface to link with the recommendation interface (see {@link Recommendation}).\n\t * @param userContext The user context to pass with the query generated in the recommendation interface (see {@link Recommendation}).\n\t * @param options JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType: true}}).\n\t */\n\tfunction initRecommendation(element, mainSearchInterface, userContext, options) {\n\t if (options === void 0) { options = {}; }\n\t var recommendationOptions = {};\n\t recommendationOptions.mainSearchInterface = mainSearchInterface;\n\t recommendationOptions.userContext = JSON.stringify(userContext);\n\t recommendationOptions.enableHistory = false;\n\t options = _.extend({}, options, { Recommendation: recommendationOptions });\n\t Initialization_1.Initialization.initializeFramework(element, options, function () {\n\t Initialization_1.Initialization.initRecommendationInterface(element, options);\n\t });\n\t}\n\texports.initRecommendation = initRecommendation;\n\tInitialization_1.Initialization.registerNamedMethod('initRecommendation', function (element, mainSearchInterface, userContext, options) {\n\t if (userContext === void 0) { userContext = {}; }\n\t if (options === void 0) { options = {}; }\n\t initRecommendation(element, mainSearchInterface, userContext, options);\n\t});\n\t/**\n\t * Execute a standard query. Active component in the interface will react to events/ push data in the query / handle the query success or failure as needed.
\n\t * It triggers a standard query flow for which the standard component will perform their expected behavior.
\n\t * If you wish to only perform a query on the index to retrieve results (without the component reacting), look into {@link SearchInterface} instead.
\n\t * Calling this method is the same as calling {@link QueryController.executeQuery}.\n\t * @param element The root of the interface to initialize.\n\t */\n\tfunction executeQuery(element) {\n\t Assert_1.Assert.exists(element);\n\t var queryController = Component_1.Component.resolveBinding(element, QueryController_1.QueryController);\n\t Assert_1.Assert.exists(queryController);\n\t return queryController.executeQuery();\n\t}\n\texports.executeQuery = executeQuery;\n\tInitialization_1.Initialization.registerNamedMethod('executeQuery', function (element) {\n\t return executeQuery(element);\n\t});\n\t/**\n\t * Perform operation on the state ({@link QueryStateModel} of the interface.
\n\t * Get the complete {@link QueryStateModel} object: Coveo.state(element)
.\n\t * Get an attribute from the {@link QueryStateModel}: Coveo.state(element, 'q') Can be any attribute.
\n\t * Set an attribute on the {@link QueryStateModel}: Coveo.state(element, 'q', 'foobar'). Can be any attribute.
\n\t * Set multiple attribute on the {@link QueryStateModel}: Coveo.state(element, {'q' : 'foobar' , sort : 'relevancy'}). Can be any attribute.
\n\t * If using the jQuery extension, this is called using $('#root').coveo('state');.\n\t * @param element The root of the interface for which to access the {@link QueryStateModel}.\n\t * @param args\n\t * @returns {any}\n\t */\n\tfunction state(element) {\n\t var args = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\t Assert_1.Assert.exists(element);\n\t var model = Component_1.Component.resolveBinding(element, QueryStateModel_1.QueryStateModel);\n\t return QueryStateModel_1.setState(model, args);\n\t}\n\texports.state = state;\n\tInitialization_1.Initialization.registerNamedMethod('state', function (element) {\n\t var args = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\t if (args.length != 0) {\n\t return state.apply(undefined, [element].concat(args));\n\t }\n\t else {\n\t return state.apply(undefined, [element]);\n\t }\n\t});\n\t/**\n\t * Get the component bound on the given `HTMLElement`.\n\t * @param element The `HTMLElement` for which to get the component instance.\n\t * @param componentClass If multiple components are bound to a single `HTMLElement`, you need to specify which components you wish to get.\n\t * @param noThrow By default, the GET method will throw if there is no component bound, or if there are multiple component and no `componentClass` is specified. This deletes the error if set to true.\n\t * @returns {Component}\n\t */\n\tfunction get(element, componentClass, noThrow) {\n\t Assert_1.Assert.exists(element);\n\t return Component_1.Component.get(element, componentClass, noThrow);\n\t}\n\texports.get = get;\n\tInitialization_1.Initialization.registerNamedMethod('get', function (element, componentClass, noThrow) {\n\t return get(element, componentClass, noThrow);\n\t});\n\tfunction result(element, noThrow) {\n\t Assert_1.Assert.exists(element);\n\t return Component_1.Component.getResult(element, noThrow);\n\t}\n\texports.result = result;\n\tInitialization_1.Initialization.registerNamedMethod('result', function (element, noThrow) {\n\t return result(element, noThrow);\n\t});\n\tfunction getCoveoAnalyticsClient(element) {\n\t var analytics = getCoveoAnalytics(element);\n\t if (analytics) {\n\t return analytics.client;\n\t }\n\t else {\n\t return undefined;\n\t }\n\t}\n\tfunction getCoveoAnalytics(element) {\n\t var analyticsElement = Dom_1.$$(element).find('.' + Component_1.Component.computeCssClassName(Analytics_1.Analytics));\n\t if (analyticsElement) {\n\t return Component_1.Component.get(analyticsElement);\n\t }\n\t else {\n\t return undefined;\n\t }\n\t}\n\t/**\n\t * Log a custom event on the Coveo Usage Analytics service.\n\t * @param element The root of the interface for which to log analytics events.\n\t * @param customEventCause The cause of the event.\n\t * @param metadata The metadata associated with the event (JSON key value).\n\t */\n\tfunction logCustomEvent(element, customEventCause, metadata) {\n\t var client = getCoveoAnalyticsClient(element);\n\t if (client) {\n\t client.logCustomEvent(customEventCause, metadata, element);\n\t }\n\t}\n\texports.logCustomEvent = logCustomEvent;\n\tInitialization_1.Initialization.registerNamedMethod('logCustomEvent', function (element, customEventCause, metadata) {\n\t logCustomEvent(element, customEventCause, metadata);\n\t});\n\t/**\n\t * Log a `SearchEvent` on the Coveo Usage Analytics service.\n\t * @param element The root of the interface for which to log analytics events.\n\t * @param searchEventCause The cause of the event.\n\t * @param metadata The metadata associated with the event (JSON key value).\n\t */\n\tfunction logSearchEvent(element, searchEventCause, metadata) {\n\t var client = getCoveoAnalyticsClient(element);\n\t if (client) {\n\t client.logSearchEvent(searchEventCause, metadata);\n\t }\n\t}\n\texports.logSearchEvent = logSearchEvent;\n\tInitialization_1.Initialization.registerNamedMethod('logSearchEvent', function (element, searchEventCause, metadata) {\n\t logSearchEvent(element, searchEventCause, metadata);\n\t});\n\t/**\n\t * Log a `SearchAsYouTypeEvent` on the Coveo Usage Analytics service.
\n\t * It is a bit different from a standard search event, as it will wait 5 seconds before sending the final `SearchAsYouType` event.\n\t * @param element The root of the interface for which to log analytics events.\n\t * @param searchAsYouTypeEventCause The cause of the event.\n\t * @param metadata The metadata associated with the event (JSON key value).\n\t */\n\tfunction logSearchAsYouTypeEvent(element, searchAsYouTypeEventCause, metadata) {\n\t var client = getCoveoAnalyticsClient(element);\n\t if (client) {\n\t client.logSearchAsYouType(searchAsYouTypeEventCause, metadata);\n\t }\n\t}\n\texports.logSearchAsYouTypeEvent = logSearchAsYouTypeEvent;\n\tInitialization_1.Initialization.registerNamedMethod('logSearchAsYouTypeEvent', function (element, searchAsYouTypeEventCause, metadata) {\n\t logSearchAsYouTypeEvent(element, searchAsYouTypeEventCause, metadata);\n\t});\n\t/**\n\t * Log a `ClickEvent` on the Coveo Usage Analytics service.\n\t * @param element The root of the interface for which to log analytics events.\n\t * @param clickEventCause The cause of the event.\n\t * @param metadata The metadata associated with the event (JSON key value).\n\t * @param result The result that was clicked.\n\t */\n\tfunction logClickEvent(element, clickEventCause, metadata, result) {\n\t var client = getCoveoAnalyticsClient(element);\n\t if (client) {\n\t client.logClickEvent(clickEventCause, metadata, result, element);\n\t }\n\t}\n\texports.logClickEvent = logClickEvent;\n\tInitialization_1.Initialization.registerNamedMethod('logClickEvent', function (element, clickEventCause, metadata, result) {\n\t logClickEvent(element, clickEventCause, metadata, result);\n\t});\n\t/**\n\t * Pass options to the framework, before it is initialized ({@link init}).
\n\t * All the options passed with this calls will be merged together on initialization.\n\t * @param element The root of the interface for which you wish to set options.\n\t * @param optionsToSet JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType: true}}).\n\t */\n\tfunction options(element, optionsToSet) {\n\t if (optionsToSet === void 0) { optionsToSet = {}; }\n\t Initialization_1.Initialization.registerDefaultOptions(element, optionsToSet);\n\t}\n\texports.options = options;\n\tInitialization_1.Initialization.registerNamedMethod('options', function (element, optionsToSet) {\n\t if (optionsToSet === void 0) { optionsToSet = {}; }\n\t options(element, optionsToSet);\n\t});\n\t/**\n\t * Patch the given `methodName` on an instance of a component bound to an `HTMLElement` with a new handler.\n\t * @param element\n\t * @param methodName\n\t * @param handler\n\t */\n\tfunction patch(element, methodName, handler) {\n\t Initialization_1.Initialization.monkeyPatchComponentMethod(methodName, element, handler);\n\t}\n\texports.patch = patch;\n\tInitialization_1.Initialization.registerNamedMethod('patch', function (element, methodName, handler) {\n\t patch(element, methodName, handler);\n\t});\n\tfunction initBox(element) {\n\t var args = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\t var type, options = {}, injectMarkup;\n\t // This means : initBox, no type (no injection) and no options\n\t if (args.length == 0) {\n\t type = 'Standard';\n\t injectMarkup = false;\n\t }\n\t else if (args.length == 1) {\n\t // This mean a type (with injection) and no options\n\t if (typeof args[0] == 'string') {\n\t type = args[0];\n\t injectMarkup = true;\n\t }\n\t else if (typeof args[0] == 'object') {\n\t type = 'Standard';\n\t injectMarkup = false;\n\t options = args[0];\n\t }\n\t else {\n\t Assert_1.Assert.fail('Invalid parameters to init a box');\n\t }\n\t }\n\t else if (args.length == 2) {\n\t type = args[0];\n\t options = args[1];\n\t injectMarkup = true;\n\t }\n\t var merged = {};\n\t merged[type || 'Container'] = _.extend({}, options.SearchInterface, options[type]);\n\t options = _.extend({}, options, merged);\n\t Initialization_1.Initialization.initializeFramework(element, options, function () {\n\t Initialization_1.Initialization.initBoxInterface(element, options, type, injectMarkup);\n\t });\n\t}\n\texports.initBox = initBox;\n\tInitialization_1.Initialization.registerNamedMethod('initBox', function (element) {\n\t var args = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\t initBox(element, args);\n\t});\n\tfunction nuke(element) {\n\t Dom_1.$$(element).trigger(InitializationEvents_1.InitializationEvents.nuke);\n\t}\n\texports.nuke = nuke;\n\tInitialization_1.Initialization.registerNamedMethod('nuke', function (element) {\n\t nuke(element);\n\t});\n\n\n/***/ },\n/* 108 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Component_1 = __webpack_require__(109);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar QueryController_1 = __webpack_require__(76);\n\tvar HashUtils_1 = __webpack_require__(67);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar ComponentStateModel_1 = __webpack_require__(105);\n\tvar ComponentOptionsModel_1 = __webpack_require__(104);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar JQueryutils_1 = __webpack_require__(20);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The main purpose of this class is to initialize the framework (a.k.a the code executed when calling `Coveo.init`).
\n\t * It's also in charge or registering the available components, as well as the method that we expost to the global Coveo scope.
\n\t * For example, the `Coveo.executeQuery` function will be registed in this class by the {@link QueryController}.\n\t */\n\tvar Initialization = (function () {\n\t function Initialization() {\n\t }\n\t /**\n\t * Register a new set of options for a given element.
\n\t * When the element is eventually initialized as a component, those options will be used / merged to create the final option set to use for this component.
\n\t * Note that this function should not normally be called directly, but instead using the global `Coveo.options` function\n\t * @param element\n\t * @param options\n\t */\n\t Initialization.registerDefaultOptions = function (element, options) {\n\t var existing = element['CoveoDefaultOptions'] || {};\n\t var updated = Utils_1.Utils.extendDeep(existing, options);\n\t element['CoveoDefaultOptions'] = updated;\n\t };\n\t Initialization.resolveDefaultOptions = function (element, options) {\n\t var optionsForThisElement = element['CoveoDefaultOptions'];\n\t var optionsSoFar;\n\t if (Utils_1.Utils.exists(optionsForThisElement)) {\n\t optionsSoFar = Utils_1.Utils.extendDeep(optionsForThisElement, options);\n\t }\n\t else {\n\t optionsSoFar = options;\n\t }\n\t if (element.parentElement) {\n\t return Initialization.resolveDefaultOptions(element.parentElement, optionsSoFar);\n\t }\n\t else {\n\t return optionsSoFar;\n\t }\n\t };\n\t /**\n\t * Register a new Component to be recognized by the framework.
\n\t * This essentially mean that when we call `Coveo.init`, the Initialization class will scan the DOM for known component (which have registed themselves with this call) and create a new component on each element.\n\t * @param componentClass\n\t */\n\t Initialization.registerAutoCreateComponent = function (componentClass) {\n\t Assert_1.Assert.exists(componentClass);\n\t Assert_1.Assert.exists(componentClass.ID);\n\t Assert_1.Assert.doesNotExists(Initialization.autoCreateComponents[componentClass.ID]);\n\t Assert_1.Assert.doesNotExists(Initialization.namedMethods[componentClass.ID]);\n\t Initialization.autoCreateComponents[componentClass.ID] = componentClass;\n\t };\n\t /**\n\t * Check if a component is already registed, using it's ID (e.g. : 'Facet').\n\t * @param componentClassId\n\t * @returns {boolean}\n\t */\n\t Initialization.isComponentClassIdRegistered = function (componentClassId) {\n\t return Utils_1.Utils.exists(Initialization.autoCreateComponents[componentClassId]);\n\t };\n\t /**\n\t * Return the list of all known components (the list of ID for each component).\n\t * @returns {string[]}\n\t */\n\t Initialization.getListOfRegisteredComponents = function () {\n\t return _.keys(Initialization.autoCreateComponents);\n\t };\n\t /**\n\t * Return the component class definition, using it's ID (e.g. : 'CoveoFacet').\n\t * @param name\n\t * @returns {IComponentDefinition}\n\t */\n\t Initialization.getRegisteredComponent = function (name) {\n\t return Initialization.autoCreateComponents[name];\n\t };\n\t /**\n\t * Initialize the framework. Note that this function should not normally be called directly, but instead using a globally registered function (e.g.: Coveo.init), or {@link Initialization.initSearchInterface} or {@link Initialization.initStandaloneSearchInterface}
\n\t * (e.g. : `Coveo.init` or `Coveo.initSearchbox`).\n\t * @param element The element on which to initialize the interface.\n\t * @param options The options for all components (eg: {Searchbox : {enableSearchAsYouType : true}}).\n\t * @param initSearchInterfaceFunction The function to execute to create the {@link SearchInterface} component. Different init call will create different {@link SearchInterface}.\n\t */\n\t Initialization.initializeFramework = function (element, options, initSearchInterfaceFunction) {\n\t Assert_1.Assert.exists(element);\n\t var alreadyInitialized = Component_1.Component.get(element, QueryController_1.QueryController, true);\n\t if (alreadyInitialized) {\n\t this.logger.error('This DOM element has already been initialized as a search interface, skipping initialization', element);\n\t return;\n\t }\n\t options = Initialization.resolveDefaultOptions(element, options);\n\t Initialization.performInitFunctionsOption(options, InitializationEvents_1.InitializationEvents.beforeInitialization);\n\t Dom_1.$$(element).trigger(InitializationEvents_1.InitializationEvents.beforeInitialization);\n\t initSearchInterfaceFunction(element, options);\n\t Initialization.initExternalComponents(element, options);\n\t Initialization.performInitFunctionsOption(options, InitializationEvents_1.InitializationEvents.afterComponentsInitialization);\n\t Dom_1.$$(element).trigger(InitializationEvents_1.InitializationEvents.afterComponentsInitialization);\n\t Dom_1.$$(element).trigger(InitializationEvents_1.InitializationEvents.restoreHistoryState);\n\t Initialization.performInitFunctionsOption(options, InitializationEvents_1.InitializationEvents.afterInitialization);\n\t Dom_1.$$(element).trigger(InitializationEvents_1.InitializationEvents.afterInitialization);\n\t var searchInterface = Component_1.Component.get(element, SearchInterface_1.SearchInterface);\n\t // Elements that have the coveo-hide-until-loaded class are hidden by default.\n\t // Now that we're loaded (and before the first query returns), we can remove\n\t // the class. Also, we add a class that gives the opportunity for an animation\n\t // to apply at startup, such as a fade-in that comes in by default.\n\t var elemsHidden = Dom_1.$$(element).findAll('.coveo-hide-until-loaded');\n\t _.each(elemsHidden, function (e) {\n\t Dom_1.$$(e).removeClass('coveo-hide-until-loaded');\n\t Dom_1.$$(e).addClass('coveo-show-after-loaded');\n\t });\n\t if (searchInterface.options.autoTriggerQuery) {\n\t Initialization.logFirstQueryCause(searchInterface);\n\t var shouldLogInActionHistory = true;\n\t // We should not log an action history if the interface is a standalone recommendation component.\n\t if (Coveo['Recommendation']) {\n\t shouldLogInActionHistory = !(searchInterface instanceof Coveo['Recommendation']);\n\t }\n\t Component_1.Component.get(element, QueryController_1.QueryController).executeQuery({\n\t logInActionsHistory: shouldLogInActionHistory,\n\t isFirstQuery: true\n\t });\n\t }\n\t };\n\t /**\n\t * Create a new standard search interface. This is the function executed when calling `Coveo.init`.\n\t * @param element\n\t * @param options\n\t */\n\t Initialization.initSearchInterface = function (element, options) {\n\t if (options === void 0) { options = {}; }\n\t options = Initialization.resolveDefaultOptions(element, options);\n\t var searchInterface = new SearchInterface_1.SearchInterface(element, options.SearchInterface, options.Analytics);\n\t searchInterface.options.originalOptionsObject = options;\n\t var initParameters = { options: options, bindings: searchInterface.getBindings() };\n\t Initialization.automaticallyCreateComponentsInside(element, initParameters, ['Recommendation']);\n\t };\n\t /**\n\t * Create a new standalone search interface (standalone search box). This is the function executed when calling `Coveo.initSearchbox`.\n\t * @param element\n\t * @param options\n\t */\n\t Initialization.initStandaloneSearchInterface = function (element, options) {\n\t if (options === void 0) { options = {}; }\n\t options = Initialization.resolveDefaultOptions(element, options);\n\t // Set trigger query on clear to false for standalone search interface automatically\n\t // Take care of not overriding any options that could have been set by external code.\n\t if (!options.Querybox) {\n\t options.Querybox = {};\n\t }\n\t if (!options.Omnibox) {\n\t options.Omnibox = {};\n\t }\n\t if (!options.Searchbox) {\n\t options.Searchbox = {};\n\t }\n\t if (!options.Querybox.triggerQueryOnClear || !options.Omnibox.triggerQueryOnClear || !options.Searchbox.triggerOnQueryClear) {\n\t options.Querybox.triggerQueryOnClear = false;\n\t options.Omnibox.triggerQueryOnClear = false;\n\t options.Searchbox.triggerQueryOnClear = false;\n\t }\n\t var searchInterface = new SearchInterface_1.StandaloneSearchInterface(element, options.StandaloneSearchInterface, options.Analytics);\n\t searchInterface.options.originalOptionsObject = options;\n\t var initParameters = { options: options, bindings: searchInterface.getBindings() };\n\t Initialization.automaticallyCreateComponentsInside(element, initParameters);\n\t };\n\t /**\n\t * Create a new recommendation search interface. This is the function executed when calling `Coveo.initRecommendation`.\n\t * @param element\n\t * @param options\n\t */\n\t Initialization.initRecommendationInterface = function (element, options) {\n\t if (options === void 0) { options = {}; }\n\t options = Initialization.resolveDefaultOptions(element, options);\n\t // Since a recommendation interface inherits from a search interface, we need to merge those if passed on init\n\t var optionsForRecommendation = _.extend({}, options.SearchInterface, options.Recommendation);\n\t // If there is a main search interface, modify the loading animation for the recommendation interface to a \"noop\" element\n\t // We don't want 2 animation overlapping\n\t if (optionsForRecommendation.mainSearchInterface) {\n\t optionsForRecommendation.firstLoadingAnimation = Dom_1.$$('span').el;\n\t }\n\t var recommendation = new window['Coveo']['Recommendation'](element, optionsForRecommendation, options.Analytics);\n\t recommendation.options.originalOptionsObject = options;\n\t var initParameters = { options: options, bindings: recommendation.getBindings() };\n\t Initialization.automaticallyCreateComponentsInside(element, initParameters);\n\t };\n\t /**\n\t * Scan the element and all its children for known components. Initialize every known component found.\n\t * @param element The element for which to scan it's children.\n\t * @param initParameters Needed parameters to initialize all the children components.\n\t * @param ignore An optional list of component ID to ignore and skip when scanning for known components.\n\t */\n\t Initialization.automaticallyCreateComponentsInside = function (element, initParameters, ignore) {\n\t Assert_1.Assert.exists(element);\n\t var codeToExecute = [];\n\t var htmlElementsToIgnore = [];\n\t // Scan for elements to ignore which can be a container component (with other component inside)\n\t // When a component is ignored, all it's children component should be ignored too.\n\t // Add them to the array of html elements that should be skipped.\n\t _.each(ignore, function (toIgnore) {\n\t var rootToIgnore = Dom_1.$$(element).find(\".\" + Component_1.Component.computeCssClassNameForType(toIgnore));\n\t if (rootToIgnore) {\n\t var childsElementsToIgnore = Dom_1.$$(rootToIgnore).findAll('*');\n\t htmlElementsToIgnore = htmlElementsToIgnore.concat(childsElementsToIgnore);\n\t }\n\t });\n\t for (var componentClassId in Initialization.autoCreateComponents) {\n\t if (!_.contains(ignore, componentClassId)) {\n\t var componentClass = Initialization.autoCreateComponents[componentClassId];\n\t var classname = Component_1.Component.computeCssClassName(componentClass);\n\t var elements = Dom_1.$$(element).findAll('.' + classname);\n\t // From all the component we found which match the current className, remove those that should be ignored\n\t elements = _.difference(elements, htmlElementsToIgnore);\n\t if (Dom_1.$$(element).hasClass(classname) && !_.contains(htmlElementsToIgnore, element)) {\n\t elements.push(element);\n\t }\n\t if (elements.length != 0) {\n\t // Queue the code that will scan the now resolved selector to after we've\n\t // finished evaluating all selectors. This ensures that if a component\n\t // constructor adds child components under his tags, those won't get auto-\n\t // initialize by this invocation of this method. Components inserting child\n\t // components are responsible of invoking this method again if they want\n\t // child components to be auto-initialized.\n\t //\n\t // Explanation: If we don't do that, child components for which selector have\n\t // already been evaluated won't be initialized, whereas those that are next\n\t // in the list will be.\n\t codeToExecute.push(Initialization.createFunctionThatInitializesComponentOnElements(elements, componentClassId, componentClass, initParameters));\n\t }\n\t }\n\t }\n\t // Now that all selectors are executed, let's really initialize the components.\n\t _.each(codeToExecute, function (code) { return code(); });\n\t };\n\t /**\n\t * Create a new component on the given element.\n\t * @param componentClassId The ID of the component to initialize (e.g. : 'CoveoFacet').\n\t * @param element The HTMLElement on which to initialize.\n\t * @param initParameters Needed parameters to initialize the component.\n\t * @returns {Component}\n\t */\n\t Initialization.createComponentOfThisClassOnElement = function (componentClassId, element, initParameters) {\n\t Assert_1.Assert.isNonEmptyString(componentClassId);\n\t Assert_1.Assert.exists(element);\n\t var componentClass = Initialization.autoCreateComponents[componentClassId];\n\t Assert_1.Assert.exists(componentClass);\n\t var bindings = {};\n\t var options = {};\n\t var result = undefined;\n\t if (initParameters != undefined) {\n\t _.each(initParameters.bindings, function (value, key) {\n\t bindings[key] = value;\n\t });\n\t options = initParameters.options;\n\t result = initParameters.result;\n\t }\n\t Initialization.logger.trace('Creating component of class ' + componentClassId, element, options);\n\t return new componentClass(element, options, bindings, result);\n\t };\n\t /**\n\t * Register a new globally available method in the Coveo namespace (e.g.: `Coveo.init`).\n\t * @param methodName The method name to register.\n\t * @param handler The function to execute when the method is called.\n\t */\n\t Initialization.registerNamedMethod = function (methodName, handler) {\n\t Assert_1.Assert.isNonEmptyString(methodName);\n\t Assert_1.Assert.doesNotExists(Initialization.autoCreateComponents[methodName]);\n\t Assert_1.Assert.doesNotExists(Initialization.namedMethods[methodName]);\n\t Assert_1.Assert.exists(handler);\n\t Initialization.namedMethods[methodName] = handler;\n\t };\n\t /**\n\t * Check if the method is already registed.\n\t * @param methodName\n\t * @returns {boolean}\n\t */\n\t Initialization.isNamedMethodRegistered = function (methodName) {\n\t return Utils_1.Utils.exists(Initialization.namedMethods[methodName]);\n\t };\n\t /**\n\t * 'Monkey patch' (replace the function with a new one) a given method on a component instance.\n\t * @param methodName\n\t * @param element\n\t * @param handler\n\t */\n\t Initialization.monkeyPatchComponentMethod = function (methodName, element, handler) {\n\t Assert_1.Assert.isNonEmptyString(methodName);\n\t Assert_1.Assert.exists(handler);\n\t var componentClass;\n\t if (methodName.indexOf('.') > 0) {\n\t var splitArg = methodName.split('.');\n\t Assert_1.Assert.check(splitArg.length == 2, 'Invalid method name, correct syntax is CoveoComponent.methodName.');\n\t componentClass = splitArg[0];\n\t methodName = splitArg[1];\n\t }\n\t var boundComponent = Component_1.Component.get(element, componentClass);\n\t Assert_1.Assert.exists(boundComponent);\n\t Assert_1.Assert.exists(boundComponent[methodName]);\n\t var originalMethodName = '__' + methodName;\n\t if (!Utils_1.Utils.exists(boundComponent[originalMethodName])) {\n\t boundComponent[originalMethodName] = boundComponent[methodName];\n\t }\n\t boundComponent[methodName] = handler;\n\t };\n\t Initialization.initBoxInterface = function (element, options, type, injectMarkup) {\n\t if (options === void 0) { options = {}; }\n\t if (type === void 0) { type = 'Standard'; }\n\t if (injectMarkup === void 0) { injectMarkup = true; }\n\t options = Initialization.resolveDefaultOptions(element, options);\n\t var fromInitTypeToBoxReference = 'Box';\n\t if (type != 'Standard') {\n\t fromInitTypeToBoxReference += 'For' + type;\n\t }\n\t var boxRef = Component_1.Component.getComponentRef(fromInitTypeToBoxReference);\n\t if (boxRef) {\n\t new Logger_1.Logger(element).info('Initializing box of type ' + fromInitTypeToBoxReference);\n\t var injectFunction = injectMarkup ? boxRef.getInjection : function () {\n\t };\n\t var box = new boxRef(element, options[fromInitTypeToBoxReference], options.Analytics, injectFunction, options);\n\t box.options.originalOptionsObject = options;\n\t var initParameters = { options: options, bindings: box.getBindings() };\n\t Initialization.automaticallyCreateComponentsInside(element, initParameters);\n\t }\n\t else {\n\t new Logger_1.Logger(element).error('Trying to initialize box of type : ' + fromInitTypeToBoxReference + ' but not found in code (not compiled)!');\n\t Assert_1.Assert.fail('Cannot initialize unknown type of box');\n\t }\n\t };\n\t Initialization.dispatchNamedMethodCall = function (methodName, element, args) {\n\t Assert_1.Assert.isNonEmptyString(methodName);\n\t Assert_1.Assert.exists(element);\n\t var namedMethodHandler = Initialization.namedMethods[methodName];\n\t Assert_1.Assert.exists(namedMethodHandler);\n\t Initialization.logger.trace('Dispatching named method call of ' + methodName, element, args);\n\t if (args.length != 0) {\n\t return namedMethodHandler.apply(null, [element].concat(args));\n\t }\n\t else {\n\t return namedMethodHandler.apply(null, [element]);\n\t }\n\t };\n\t Initialization.dispatchNamedMethodCallOrComponentCreation = function (token, element, args) {\n\t Assert_1.Assert.isNonEmptyString(token);\n\t Assert_1.Assert.exists(element);\n\t if (Initialization.isNamedMethodRegistered(token)) {\n\t return Initialization.dispatchNamedMethodCall(token, element, args);\n\t }\n\t else if (Initialization.isComponentClassIdRegistered(token)) {\n\t return Initialization.createComponentOfThisClassOnElement(token, element, args[0]);\n\t }\n\t else if (Initialization.isThereASingleComponentBoundToThisElement(element)) {\n\t return Initialization.dispatchMethodCallOnBoundComponent(token, element, args);\n\t }\n\t else {\n\t Assert_1.Assert.fail('No method or component named ' + token + ' are registered.');\n\t }\n\t };\n\t Initialization.isSearchFromLink = function (searchInterface) {\n\t return Utils_1.Utils.isNonEmptyString(searchInterface.getBindings().queryStateModel.get('q'));\n\t };\n\t Initialization.isThereASingleComponentBoundToThisElement = function (element) {\n\t Assert_1.Assert.exists(element);\n\t return Utils_1.Utils.exists(Component_1.Component.get(element));\n\t };\n\t Initialization.dispatchMethodCallOnBoundComponent = function (methodName, element, args) {\n\t Assert_1.Assert.isNonEmptyString(methodName);\n\t Assert_1.Assert.exists(element);\n\t var boundComponent = Component_1.Component.get(element);\n\t Assert_1.Assert.exists(boundComponent);\n\t var method = boundComponent[methodName];\n\t if (Utils_1.Utils.exists(method)) {\n\t return method.apply(boundComponent, args);\n\t }\n\t else {\n\t Assert_1.Assert.fail('No method named ' + methodName + ' exist on component ' + boundComponent.type);\n\t }\n\t };\n\t Initialization.logFirstQueryCause = function (searchInterface) {\n\t var firstQueryCause = HashUtils_1.HashUtils.getValue('firstQueryCause', HashUtils_1.HashUtils.getHash());\n\t if (firstQueryCause != null) {\n\t var meta = HashUtils_1.HashUtils.getValue('firstQueryMeta', HashUtils_1.HashUtils.getHash()) || {};\n\t searchInterface.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList[firstQueryCause], meta);\n\t }\n\t else {\n\t if (Initialization.isSearchFromLink(searchInterface)) {\n\t searchInterface.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.searchFromLink, {});\n\t }\n\t else {\n\t searchInterface.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.interfaceLoad, {});\n\t }\n\t }\n\t };\n\t Initialization.performInitFunctionsOption = function (options, event) {\n\t if (Utils_1.Utils.exists(options)) {\n\t Initialization.performFunctions(options[event]);\n\t }\n\t };\n\t Initialization.performFunctions = function (option) {\n\t if (Utils_1.Utils.exists(option)) {\n\t _.each(option, function (func) {\n\t if (typeof func == 'function') {\n\t func();\n\t }\n\t });\n\t }\n\t };\n\t Initialization.initExternalComponents = function (element, options) {\n\t if (options && options['externalComponents']) {\n\t var searchInterface = Component_1.Component.get(element, SearchInterface_1.SearchInterface);\n\t var queryStateModel = Component_1.Component.get(element, QueryStateModel_1.QueryStateModel);\n\t var componentStateModel = Component_1.Component.get(element, ComponentStateModel_1.ComponentStateModel);\n\t var queryController = Component_1.Component.get(element, QueryController_1.QueryController);\n\t var componentOptionsModel = Component_1.Component.get(element, ComponentOptionsModel_1.ComponentOptionsModel);\n\t var usageAnalytics = searchInterface.usageAnalytics;\n\t Assert_1.Assert.exists(searchInterface);\n\t Assert_1.Assert.exists(queryStateModel);\n\t Assert_1.Assert.exists(queryController);\n\t Assert_1.Assert.exists(componentStateModel);\n\t Assert_1.Assert.exists(usageAnalytics);\n\t var initParameters_1 = {\n\t options: options,\n\t bindings: {\n\t searchInterface: searchInterface,\n\t queryStateModel: queryStateModel,\n\t queryController: queryController,\n\t usageAnalytics: usageAnalytics,\n\t componentStateModel: componentStateModel,\n\t componentOptionsModel: componentOptionsModel,\n\t root: element\n\t }\n\t };\n\t _.each(options['externalComponents'], function (externalComponent) {\n\t var elementToInstantiate = externalComponent;\n\t if (Utils_1.Utils.isHtmlElement(elementToInstantiate)) {\n\t Initialization.automaticallyCreateComponentsInside(elementToInstantiate, initParameters_1);\n\t }\n\t else if (JQueryutils_1.JQueryUtils.isInstanceOfJQuery(elementToInstantiate)) {\n\t Initialization.automaticallyCreateComponentsInside((elementToInstantiate.get(0)), initParameters_1);\n\t }\n\t });\n\t }\n\t };\n\t Initialization.createFunctionThatInitializesComponentOnElements = function (elements, componentClassId, componentClass, initParameters) {\n\t return function () {\n\t _.each(elements, function (matchingElement) {\n\t if (Component_1.Component.get(matchingElement, componentClassId) == null) {\n\t // If options were provided, lookup options for this component class and\n\t // also for the element id. Merge them and pass those to the factory method.\n\t var optionsToUse = undefined;\n\t if (Utils_1.Utils.exists(initParameters.options)) {\n\t var optionsForComponentClass = initParameters.options[componentClassId];\n\t var optionsForElementId = initParameters.options[matchingElement.id];\n\t var initOptions = initParameters.options['initOptions'] ? initParameters.options['initOptions'][componentClassId] : {};\n\t optionsToUse = Utils_1.Utils.extendDeep(optionsForElementId, initOptions);\n\t optionsToUse = Utils_1.Utils.extendDeep(optionsForComponentClass, optionsToUse);\n\t }\n\t var initParamToUse = _.extend({}, initParameters, { options: optionsToUse });\n\t Initialization.createComponentOfThisClassOnElement(componentClass['ID'], matchingElement, initParamToUse);\n\t }\n\t });\n\t };\n\t };\n\t return Initialization;\n\t}());\n\tInitialization.logger = new Logger_1.Logger('Initialization');\n\tInitialization.autoCreateComponents = {};\n\tInitialization.namedMethods = {};\n\texports.Initialization = Initialization;\n\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar JQueryutils_1 = __webpack_require__(20);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar ComponentStateModel_1 = __webpack_require__(105);\n\tvar ComponentOptionsModel_1 = __webpack_require__(104);\n\tvar QueryController_1 = __webpack_require__(76);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar NoopAnalyticsClient_1 = __webpack_require__(121);\n\tvar BaseComponent_1 = __webpack_require__(78);\n\tvar DebugEvents_1 = __webpack_require__(45);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The base class for every component in the framework.\n\t */\n\tvar Component = (function (_super) {\n\t __extends(Component, _super);\n\t /**\n\t * Create a new Component. Resolve all {@link IComponentBindings} if not provided.
\n\t * Create a new Logger for this component.\n\t * Attach the component to the {@link SearchInterface}.
\n\t * @param element The HTMLElement on which to create the component. Used to bind data on the element.\n\t * @param type The unique identifier for this component. See : {@link IComponentDefinition.ID}. Used to generate the unique Coveo CSS class associated with every component.\n\t * @param bindings The environment for every component. Optional, but omitting to provide one will impact performance.\n\t */\n\t function Component(element, type, bindings) {\n\t if (bindings === void 0) { bindings = {}; }\n\t var _this = _super.call(this, element, type) || this;\n\t _this.element = element;\n\t _this.type = type;\n\t /**\n\t * Allows the component to bind events and execute them only when it is enabled.\n\t * @type {Coveo.ComponentEvents}\n\t */\n\t _this.bind = new ComponentEvents(_this);\n\t _this.root = bindings.root || _this.resolveRoot();\n\t _this.queryStateModel = bindings.queryStateModel || _this.resolveQueryStateModel();\n\t _this.componentStateModel = bindings.componentStateModel || _this.resolveComponentStateModel();\n\t _this.queryController = bindings.queryController || _this.resolveQueryController();\n\t _this.searchInterface = bindings.searchInterface || _this.resolveSearchInterface();\n\t _this.usageAnalytics = bindings.usageAnalytics || _this.resolveUA();\n\t _this.componentOptionsModel = bindings.componentOptionsModel || _this.resolveComponentOptionsModel();\n\t _this.ensureDom = _.once(function () { return _this.createDom(); });\n\t if (_this.searchInterface != null) {\n\t _this.searchInterface.attachComponent(type, _this);\n\t }\n\t _this.initDebugInfo();\n\t return _this;\n\t }\n\t /**\n\t * Return the bindings, or environment, for the current component.\n\t * @returns {IComponentBindings}\n\t */\n\t Component.prototype.getBindings = function () {\n\t return {\n\t root: this.root,\n\t queryStateModel: this.queryStateModel,\n\t queryController: this.queryController,\n\t searchInterface: this.searchInterface,\n\t componentStateModel: this.componentStateModel,\n\t componentOptionsModel: this.componentOptionsModel,\n\t usageAnalytics: this.usageAnalytics\n\t };\n\t };\n\t Component.prototype.createDom = function () {\n\t // By default we do nothing\n\t };\n\t Component.prototype.resolveSearchInterface = function () {\n\t return Component.resolveBinding(this.element, SearchInterface_1.SearchInterface);\n\t };\n\t Component.prototype.resolveRoot = function () {\n\t var resolvedSearchInterface = Component.resolveBinding(this.element, SearchInterface_1.SearchInterface);\n\t return resolvedSearchInterface ? resolvedSearchInterface.element : undefined;\n\t };\n\t Component.prototype.resolveQueryController = function () {\n\t return Component.resolveBinding(this.element, QueryController_1.QueryController);\n\t };\n\t Component.prototype.resolveComponentStateModel = function () {\n\t return Component.resolveBinding(this.element, ComponentStateModel_1.ComponentStateModel);\n\t };\n\t Component.prototype.resolveQueryStateModel = function () {\n\t return Component.resolveBinding(this.element, QueryStateModel_1.QueryStateModel);\n\t };\n\t Component.prototype.resolveComponentOptionsModel = function () {\n\t return Component.resolveBinding(this.element, ComponentOptionsModel_1.ComponentOptionsModel);\n\t };\n\t Component.prototype.resolveUA = function () {\n\t var searchInterface = this.resolveSearchInterface();\n\t return (searchInterface && searchInterface.usageAnalytics) ? searchInterface.usageAnalytics : new NoopAnalyticsClient_1.NoopAnalyticsClient();\n\t };\n\t Component.prototype.resolveResult = function () {\n\t return Component.getResult(this.element);\n\t };\n\t Component.prototype.initDebugInfo = function () {\n\t var _this = this;\n\t Dom_1.$$(this.element).on('dblclick', function (e) {\n\t if (e.altKey) {\n\t var debugInfo = _this.debugInfo();\n\t if (debugInfo != null) {\n\t Dom_1.$$(_this.root).trigger(DebugEvents_1.DebugEvents.showDebugPanel, _this.debugInfo());\n\t }\n\t }\n\t });\n\t };\n\t /**\n\t * Get the bound component to the given HTMLElement. Throws an assert if the HTMLElement has no component bound, unless using the noThrow argument.
\n\t * If there is multiple component bound to the current HTMLElement, you must specify the component class.\n\t * @param element HTMLElement for which to get the bound component.\n\t * @param componentClass Optional component class. If the HTMLElement has multiple components bound, you must specify which one you are targeting.\n\t * @param noThrow Boolean option to tell the method to not throw on error.\n\t * @returns {Component}\n\t */\n\t Component.get = function (element, componentClass, noThrow) {\n\t Assert_1.Assert.exists(element);\n\t if (_.isString(componentClass)) {\n\t return element[Component.computeCssClassNameForType(componentClass)];\n\t }\n\t else if (Utils_1.Utils.exists(componentClass)) {\n\t Assert_1.Assert.exists(componentClass.ID);\n\t return element[Component.computeCssClassNameForType(componentClass.ID)];\n\t }\n\t else {\n\t // No class specified, but we support returning the bound component\n\t // if there is exactly one.\n\t var boundComponents = BaseComponent_1.BaseComponent.getBoundComponentsForElement(element);\n\t if (!noThrow) {\n\t Assert_1.Assert.check(boundComponents.length <= 1, 'More than one component is bound to this element. You need to specify the component type.');\n\t }\n\t return boundComponents[0];\n\t }\n\t };\n\t Component.getResult = function (element, noThrow) {\n\t if (noThrow === void 0) { noThrow = false; }\n\t var resultElement = Dom_1.$$(element).closest('.CoveoResult');\n\t Assert_1.Assert.check(noThrow || resultElement != undefined);\n\t return resultElement['CoveoResult'];\n\t };\n\t Component.bindResultToElement = function (element, result) {\n\t Assert_1.Assert.exists(element);\n\t Assert_1.Assert.exists(result);\n\t Dom_1.$$(element).addClass('CoveoResult');\n\t element['CoveoResult'] = result;\n\t var jQuery = JQueryutils_1.JQueryUtils.getJQuery();\n\t if (jQuery) {\n\t jQuery(element).data(result);\n\t }\n\t };\n\t Component.resolveBinding = function (element, componentClass) {\n\t Assert_1.Assert.exists(element);\n\t Assert_1.Assert.exists(componentClass);\n\t Assert_1.Assert.exists(componentClass.ID);\n\t // first, look down\n\t var found;\n\t if (Dom_1.$$(element).is('.' + Component.computeCssClassNameForType(componentClass.ID))) {\n\t found = element;\n\t }\n\t else {\n\t var findDown = Dom_1.$$(element).findClass(Component.computeCssClassNameForType(componentClass.ID));\n\t if (!findDown || findDown.length == 0) {\n\t var findUp = Dom_1.$$(element).closest(Component.computeCssClassNameForType(componentClass.ID));\n\t if (findUp) {\n\t found = findUp;\n\t }\n\t }\n\t else {\n\t found = findDown;\n\t }\n\t }\n\t if (found) {\n\t return found[Component.computeCssClassNameForType(componentClass.ID)];\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t Component.pointElementsToDummyForm = function (element) {\n\t var inputs = Dom_1.$$(element).is('input') ? [element] : [];\n\t inputs = inputs.concat(Dom_1.$$(element).findAll('input'));\n\t _.each(_.compact(inputs), function (input) {\n\t input.setAttribute('form', 'coveo-dummy-form');\n\t });\n\t };\n\t return Component;\n\t}(BaseComponent_1.BaseComponent));\n\texports.Component = Component;\n\t/**\n\t * Used by the various Coveo Component to trigger and bind event.
\n\t * It adds a small logic to execute handler or triggers only when the component is \"enabled\".
\n\t * A component is disabled by calling {Component.disable}
\n\t * Typically, a component is disabled when it is not active in the current {Tab}.
\n\t * It can also be disabled by external code.
\n\t * The class serves as a way to not execute handler on component that are invisible and inactive in the query.\n\t */\n\tvar ComponentEvents = (function () {\n\t /**\n\t * Create a new `ComponentEvents` for the given {@link Component}.\n\t * @param owner The {@link Component} which owns those events handler and trigger.\n\t */\n\t function ComponentEvents(owner) {\n\t this.owner = owner;\n\t Assert_1.Assert.exists(owner);\n\t }\n\t ComponentEvents.prototype.on = function (arg, event, handler) {\n\t if (!JQueryutils_1.JQueryUtils.getJQuery() || !JQueryutils_1.JQueryUtils.isInstanceOfJQuery(arg)) {\n\t var htmlEl = arg;\n\t Dom_1.$$(htmlEl).on(event, this.wrapToCallIfEnabled(handler));\n\t }\n\t else {\n\t var jq = arg;\n\t jq.on(event, this.wrapToCallIfEnabled(handler));\n\t }\n\t };\n\t ComponentEvents.prototype.one = function (arg, event, handler) {\n\t if (arg instanceof HTMLElement) {\n\t var htmlEl = arg;\n\t Dom_1.$$(htmlEl).one(event, this.wrapToCallIfEnabled(handler));\n\t }\n\t else {\n\t var jq = arg;\n\t jq.one(event, this.wrapToCallIfEnabled(handler));\n\t }\n\t };\n\t /**\n\t * Bind on the \"root\" of the Component. The root is typically the {@link SearchInterface}.
\n\t * Bind an event using native javascript code.\n\t * @param event The event for which to register an handler.\n\t * @param handler The function to execute when the event is triggered.\n\t */\n\t ComponentEvents.prototype.onRootElement = function (event, handler) {\n\t this.on(this.owner.root, event, handler);\n\t };\n\t /**\n\t * Bind on the \"root\" of the Component. The root is typically the {@link SearchInterface}.
\n\t * Bind an event using native javascript code.\n\t * The handler will execute only ONE time.\n\t * @param event The event for which to register an handler.\n\t * @param handler The function to execute when the event is triggered.\n\t */\n\t ComponentEvents.prototype.oneRootElement = function (event, handler) {\n\t this.one(this.owner.root, event, handler);\n\t };\n\t /**\n\t * Bind an event related specially to the query state model.
\n\t * This will build the correct string event and execute the handler only if the component is activated.\n\t * @param eventType The event type for which to register an event.\n\t * @param attribute The attribute for which to register an event.\n\t * @param handler The handler to execute when the query state event is triggered.\n\t */\n\t ComponentEvents.prototype.onQueryState = function (eventType, attribute, handler) {\n\t this.onRootElement(this.getQueryStateEventName(eventType, attribute), handler);\n\t };\n\t /**\n\t * Bind an event related specially to the query state model.
\n\t * This will build the correct string event and execute the handler only if the component is activated.
\n\t * Will execute only once.\n\t * @param eventType The event type for which to register an event.\n\t * @param attribute The attribute for which to register an event.\n\t * @param handler The handler to execute when the query state event is triggered.\n\t */\n\t ComponentEvents.prototype.oneQueryState = function (eventType, attribute, handler) {\n\t this.oneRootElement(this.getQueryStateEventName(eventType, attribute), handler);\n\t };\n\t ComponentEvents.prototype.trigger = function (arg, event, args) {\n\t this.wrapToCallIfEnabled(function () {\n\t if (arg instanceof HTMLElement) {\n\t var htmlEl = arg;\n\t Dom_1.$$(htmlEl).trigger(event, args);\n\t }\n\t else {\n\t var jq = arg;\n\t jq.trigger(event, args);\n\t }\n\t })(args);\n\t };\n\t /**\n\t * Execute the function only if the component is enabled.\n\t * @param func The function to execute if the component is enabled.\n\t * @returns {function(...[any]): *}\n\t */\n\t ComponentEvents.prototype.wrapToCallIfEnabled = function (func) {\n\t var _this = this;\n\t return function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t if (!_this.owner.disabled) {\n\t if (args && args[0] instanceof CustomEvent) {\n\t if (args[0].detail) {\n\t args = [args[0].detail];\n\t }\n\t }\n\t else if (args && JQueryutils_1.JQueryUtils.isInstanceOfJqueryEvent(args[0])) {\n\t if (args[1] != undefined) {\n\t args = [args[1]];\n\t }\n\t else {\n\t args = [];\n\t }\n\t }\n\t return func.apply(_this.owner, args);\n\t }\n\t };\n\t };\n\t ComponentEvents.prototype.getQueryStateEventName = function (eventType, attribute) {\n\t var evtName;\n\t if (eventType && attribute) {\n\t evtName = this.owner.queryStateModel.getEventName(eventType + attribute);\n\t }\n\t else {\n\t evtName = this.owner.queryStateModel.getEventName(eventType);\n\t }\n\t return evtName;\n\t };\n\t return ComponentEvents;\n\t}());\n\texports.ComponentEvents = ComponentEvents;\n\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar SearchEndpoint_1 = __webpack_require__(11);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar DomUtils_1 = __webpack_require__(62);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar ComponentStateModel_1 = __webpack_require__(105);\n\tvar ComponentOptionsModel_1 = __webpack_require__(104);\n\tvar QueryController_1 = __webpack_require__(76);\n\tvar Model_1 = __webpack_require__(100);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar StandaloneSearchInterfaceEvents_1 = __webpack_require__(56);\n\tvar HistoryController_1 = __webpack_require__(99);\n\tvar LocalStorageHistoryController_1 = __webpack_require__(101);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar NoopAnalyticsClient_1 = __webpack_require__(121);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar RootComponent_1 = __webpack_require__(77);\n\tvar BaseComponent_1 = __webpack_require__(78);\n\tvar Debug_1 = __webpack_require__(122);\n\tvar HashUtils_1 = __webpack_require__(67);\n\tvar fastclick = __webpack_require__(123);\n\tvar jstz = __webpack_require__(124);\n\tvar SentryLogger_1 = __webpack_require__(126);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar ResponsiveComponents_1 = __webpack_require__(19);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The SearchInterface component is the root and main component of your Coveo search interface. You should place all\n\t * other Coveo components inside the SearchInterface component.\n\t *\n\t * It is also on the HTMLElement of the SearchInterface component that you call the {@link init} function.\n\t *\n\t * It is advisable to specify a unique HTML `id` attribute for the SearchInterface component in order to be able to\n\t * reference it easily.\n\t *\n\t * **Example:**\n\t *\n\t * ```html\n\t * \n\t *\n\t * [ ... ]\n\t *\n\t * \n\t *\n\t * [ ... ]\n\t * \n\t *\n\t * \n\t * \n\t *\n\t * [ ... ]\n\t *\n\t * \n\t *\n\t * [ ... ]\n\t *\n\t * \n\t * ```\n\t */\n\tvar SearchInterface = (function (_super) {\n\t __extends(SearchInterface, _super);\n\t /**\n\t * Creates a new SearchInterface. Initialize various singletons for the interface (e.g., usage analytics, query\n\t * controller, state model, etc.). Binds events related to the query. Hides and shows the loading animation, if\n\t * activated (see the [hideUntilFirstQuery]{@link SearchInterface.options.hideUntilFirstQuery} option).\n\t * @param element The HTMLElement on which to instantiate the component. This cannot be an `HTMLInputElement` for\n\t * technical reasons.\n\t * @param options The options for the SearchInterface.\n\t * @param analyticsOptions The options for the {@link Analytics} component. Since the Analytics component is normally\n\t * global, it needs to be passed at initialization of the whole interface.\n\t * @param _window The window object for the search interface. Used for unit tests, which can pass a mock. Default is\n\t * the global window object.\n\t */\n\t function SearchInterface(element, options, analyticsOptions, _window) {\n\t if (_window === void 0) { _window = window; }\n\t var _this = _super.call(this, element, SearchInterface.ID) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.analyticsOptions = analyticsOptions;\n\t _this.isNewDesignAttribute = false;\n\t if (DeviceUtils_1.DeviceUtils.isMobileDevice()) {\n\t Dom_1.$$(document.body).addClass('coveo-mobile-device');\n\t }\n\t // The definition file for fastclick does not match the way that fast click gets loaded (AMD)\n\t if (fastclick.attach) {\n\t fastclick.attach(element);\n\t }\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, SearchInterface, options);\n\t Assert_1.Assert.exists(element);\n\t Assert_1.Assert.exists(_this.options);\n\t if (_this.options.hideUntilFirstQuery) {\n\t _this.showAndHideFirstQueryAnimation();\n\t }\n\t _this.root = element;\n\t _this.queryStateModel = new QueryStateModel_1.QueryStateModel(element);\n\t _this.componentStateModel = new ComponentStateModel_1.ComponentStateModel(element);\n\t _this.componentOptionsModel = new ComponentOptionsModel_1.ComponentOptionsModel(element);\n\t _this.usageAnalytics = _this.initializeAnalytics();\n\t _this.queryController = new QueryController_1.QueryController(element, _this.options, _this.usageAnalytics, _this);\n\t new SentryLogger_1.SentryLogger(_this.queryController);\n\t var eventName = _this.queryStateModel.getEventName(Model_1.Model.eventTypes.preprocess);\n\t Dom_1.$$(_this.element).on(eventName, function (e, args) { return _this.handlePreprocessQueryStateModel(args); });\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.buildingQuery, function (e, args) { return _this.handleBuildingQuery(args); });\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.querySuccess, function (e, args) { return _this.handleQuerySuccess(args); });\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.queryError, function (e, args) { return _this.handleQueryError(args); });\n\t if (_this.options.enableHistory) {\n\t if (!_this.options.useLocalStorageForHistory) {\n\t new HistoryController_1.HistoryController(element, _window, _this.queryStateModel, _this.queryController);\n\t }\n\t else {\n\t new LocalStorageHistoryController_1.LocalStorageHistoryController(element, _window, _this.queryStateModel, _this.queryController);\n\t }\n\t }\n\t else {\n\t Dom_1.$$(_this.element).on(InitializationEvents_1.InitializationEvents.restoreHistoryState, function () { return _this.queryStateModel.setMultiple(_this.queryStateModel.defaultAttributes); });\n\t }\n\t var eventNameQuickview = _this.queryStateModel.getEventName(Model_1.Model.eventTypes.changeOne + QueryStateModel_1.QueryStateModel.attributesEnum.quickview);\n\t Dom_1.$$(_this.element).on(eventNameQuickview, function (e, args) { return _this.handleQuickviewChanged(args); });\n\t // shows the UI, since it's been hidden while loading\n\t _this.element.style.display = element.style.display || 'block';\n\t _this.setupDebugInfo();\n\t _this.isNewDesignAttribute = _this.root.getAttribute('data-design') == 'new';\n\t _this.responsiveComponents = new ResponsiveComponents_1.ResponsiveComponents();\n\t return _this;\n\t }\n\t /**\n\t * Displays the first query animation (see the\n\t * [firstLoadingAnimation]{@link SearchInterface.options.firstLoadingAnimation} option).\n\t *\n\t * By default, this is the Coveo logo with a CSS animation (which can be customized with options or CSS).\n\t */\n\t SearchInterface.prototype.showWaitAnimation = function () {\n\t Dom_1.$$(this.options.firstLoadingAnimation).detach();\n\t Dom_1.$$(this.element).addClass('coveo-waiting-for-first-query');\n\t this.element.appendChild(this.options.firstLoadingAnimation);\n\t };\n\t /**\n\t * Hides the first query animation (see the\n\t * [firstLoadingAnimation]{@link SearchInterface.options.firstLoadingAnimation} option).\n\t *\n\t * By default, this is the Coveo logo with a CSS animation (which can be customized with options or CSS).\n\t */\n\t SearchInterface.prototype.hideWaitAnimation = function () {\n\t Dom_1.$$(this.options.firstLoadingAnimation).detach();\n\t Dom_1.$$(this.element).removeClass('coveo-waiting-for-first-query');\n\t };\n\t /**\n\t * Attaches a component to the search interface. This allows the search interface to easily list and iterate over its\n\t * components.\n\t * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n\t * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n\t * @param component The component instance to attach.\n\t */\n\t SearchInterface.prototype.attachComponent = function (type, component) {\n\t this.getComponents(type).push(component);\n\t };\n\t /**\n\t * Detaches a component from the search interface.\n\t * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n\t * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n\t * @param component The component instance to detach.\n\t */\n\t SearchInterface.prototype.detachComponent = function (type, component) {\n\t var components = this.getComponents(type);\n\t var index = _.indexOf(components, component);\n\t if (index > -1) {\n\t components.splice(index, 1);\n\t }\n\t };\n\t /**\n\t * Returns the bindings, or environment, for the current component.\n\t * @returns {IComponentBindings}\n\t */\n\t SearchInterface.prototype.getBindings = function () {\n\t return {\n\t root: this.root,\n\t queryStateModel: this.queryStateModel,\n\t queryController: this.queryController,\n\t searchInterface: this,\n\t componentStateModel: this.componentStateModel,\n\t componentOptionsModel: this.componentOptionsModel,\n\t usageAnalytics: this.usageAnalytics\n\t };\n\t };\n\t /**\n\t * Gets all the components of a given type.\n\t * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n\t * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n\t */\n\t SearchInterface.prototype.getComponents = function (type) {\n\t if (this.attachedComponents == null) {\n\t this.attachedComponents = {};\n\t }\n\t if (!(type in this.attachedComponents)) {\n\t this.attachedComponents[type] = [];\n\t }\n\t return this.attachedComponents[type];\n\t };\n\t /**\n\t * Indicates whether the search interface is using the new design.\n\t * This changes the rendering of multiple components.\n\t */\n\t SearchInterface.prototype.isNewDesign = function () {\n\t return this.isNewDesignAttribute;\n\t };\n\t SearchInterface.prototype.initializeAnalytics = function () {\n\t var analyticsRef = BaseComponent_1.BaseComponent.getComponentRef('Analytics');\n\t if (analyticsRef) {\n\t return analyticsRef.create(this.element, this.analyticsOptions);\n\t }\n\t return new NoopAnalyticsClient_1.NoopAnalyticsClient();\n\t };\n\t SearchInterface.prototype.setupDebugInfo = function () {\n\t var _this = this;\n\t if (this.options.enableDebugInfo) {\n\t setTimeout(function () { return new Debug_1.Debug(_this.element, _this.queryController); });\n\t }\n\t };\n\t SearchInterface.prototype.showAndHideFirstQueryAnimation = function () {\n\t var _this = this;\n\t this.showWaitAnimation();\n\t // On first query success or error, wait for call stack to finish, then remove the animation\n\t Dom_1.$$(this.element).one(QueryEvents_1.QueryEvents.querySuccess, function () {\n\t _.defer(function () { return _this.hideWaitAnimation(); });\n\t });\n\t Dom_1.$$(this.element).one(QueryEvents_1.QueryEvents.queryError, function () {\n\t _.defer(function () { return _this.hideWaitAnimation(); });\n\t });\n\t };\n\t SearchInterface.prototype.handlePreprocessQueryStateModel = function (args) {\n\t var tgFromModel = this.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.tg);\n\t var tFromModel = this.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.t);\n\t var tg = tgFromModel;\n\t var t = tFromModel;\n\t // if you want to set the tab group\n\t if (args.tg !== undefined) {\n\t args.tg = this.getTabGroupId(args.tg);\n\t if (tg != args.tg) {\n\t args.t = args.t || QueryStateModel_1.QueryStateModel.defaultAttributes.t;\n\t args.sort = args.sort || QueryStateModel_1.QueryStateModel.defaultAttributes.sort;\n\t tg = args.tg;\n\t }\n\t }\n\t if (args.t !== undefined) {\n\t args.t = this.getTabId(tg, args.t);\n\t if (t != args.t) {\n\t args.sort = args.sort || QueryStateModel_1.QueryStateModel.defaultAttributes.sort;\n\t t = args.t;\n\t }\n\t }\n\t if (args.sort !== undefined) {\n\t args.sort = this.getSort(t, args.sort);\n\t }\n\t if (args.quickview !== undefined) {\n\t args.quickview = this.getQuickview(args.quickview);\n\t }\n\t };\n\t SearchInterface.prototype.getTabGroupId = function (tabGroupId) {\n\t var tabGroupRef = BaseComponent_1.BaseComponent.getComponentRef('TabGroup');\n\t if (tabGroupRef) {\n\t var tabGroups = this.getComponents(tabGroupRef.ID);\n\t // check if the tabgroup is correct\n\t if (tabGroupId != QueryStateModel_1.QueryStateModel.defaultAttributes.tg && _.any(tabGroups, function (tabGroup) { return !tabGroup.disabled && tabGroupId == tabGroup.options.id; })) {\n\t return tabGroupId;\n\t }\n\t // select the first tabGroup\n\t if (tabGroups.length > 0) {\n\t return tabGroups[0].options.id;\n\t }\n\t }\n\t return QueryStateModel_1.QueryStateModel.defaultAttributes.tg;\n\t };\n\t SearchInterface.prototype.getTabId = function (tabGroupId, tabId) {\n\t var tabRef = BaseComponent_1.BaseComponent.getComponentRef('Tab');\n\t var tabGroupRef = BaseComponent_1.BaseComponent.getComponentRef('TabGroup');\n\t if (tabRef) {\n\t var tabs = this.getComponents(tabRef.ID);\n\t if (tabGroupRef) {\n\t // if has a tabGroup\n\t if (tabGroupId != QueryStateModel_1.QueryStateModel.defaultAttributes.tg) {\n\t var tabGroups = this.getComponents(tabGroupRef.ID);\n\t var tabGroup_1 = _.find(tabGroups, function (tabGroup) { return tabGroupId == tabGroup.options.id; });\n\t // check if the tabgroup contain this tab\n\t if (tabId != QueryStateModel_1.QueryStateModel.defaultAttributes.t && _.any(tabs, function (tab) { return tabId == tab.options.id && tabGroup_1.isElementIncludedInTabGroup(tab.element); })) {\n\t return tabId;\n\t }\n\t // select the first tab in the tabGroup\n\t var tab = _.find(tabs, function (tab) { return tabGroup_1.isElementIncludedInTabGroup(tab.element); });\n\t if (tab != null) {\n\t return tab.options.id;\n\t }\n\t return QueryStateModel_1.QueryStateModel.defaultAttributes.t;\n\t }\n\t }\n\t // check if the tab is correct\n\t if (tabId != QueryStateModel_1.QueryStateModel.defaultAttributes.t && _.any(tabs, function (tab) { return tabId == tab.options.id; })) {\n\t return tabId;\n\t }\n\t // select the first tab\n\t if (tabs.length > 0) {\n\t return tabs[0].options.id;\n\t }\n\t }\n\t return QueryStateModel_1.QueryStateModel.defaultAttributes.t;\n\t };\n\t SearchInterface.prototype.getSort = function (tabId, sortId) {\n\t var sortRef = BaseComponent_1.BaseComponent.getComponentRef('Sort');\n\t if (sortRef) {\n\t var sorts = this.getComponents(sortRef.ID);\n\t // if has a selected tab\n\t var tabRef = BaseComponent_1.BaseComponent.getComponentRef('Tab');\n\t if (tabRef) {\n\t if (tabId != QueryStateModel_1.QueryStateModel.defaultAttributes.t) {\n\t var tabs = this.getComponents(tabRef.ID);\n\t var tab_1 = _.find(tabs, function (tab) { return tabId == tab.options.id; });\n\t var sortCriteria = tab_1.options.sort;\n\t // check if the tab contain this sort\n\t if (sortId != QueryStateModel_1.QueryStateModel.defaultAttributes.sort && _.any(sorts, function (sort) { return tab_1.isElementIncludedInTab(sort.element) && sort.match(sortId); })) {\n\t return sortId;\n\t }\n\t else if (sortCriteria != null) {\n\t // if not and tab.options.sort is set apply it\n\t return sortCriteria.toString();\n\t }\n\t // select the first sort in the tab\n\t var sort = _.find(sorts, function (sort) { return tab_1.isElementIncludedInTab(sort.element); });\n\t if (sort != null) {\n\t return sort.options.sortCriteria[0].toString();\n\t }\n\t return QueryStateModel_1.QueryStateModel.defaultAttributes.sort;\n\t }\n\t }\n\t // check if the sort is correct\n\t if (sortId != QueryStateModel_1.QueryStateModel.defaultAttributes.sort && _.any(sorts, function (sort) { return sort.match(sortId); })) {\n\t return sortId;\n\t }\n\t // select the first sort\n\t if (sorts.length > 0) {\n\t return sorts[0].options.sortCriteria[0].toString();\n\t }\n\t }\n\t return QueryStateModel_1.QueryStateModel.defaultAttributes.sort;\n\t };\n\t SearchInterface.prototype.getQuickview = function (quickviewId) {\n\t var quickviewRef = BaseComponent_1.BaseComponent.getComponentRef('Quickview');\n\t if (quickviewRef) {\n\t var quickviews = this.getComponents(quickviewRef.ID);\n\t if (_.any(quickviews, function (quickview) { return quickview.getHashId() == quickviewId; })) {\n\t return quickviewId;\n\t }\n\t }\n\t return QueryStateModel_1.QueryStateModel.defaultAttributes.quickview;\n\t };\n\t SearchInterface.prototype.handleQuickviewChanged = function (args) {\n\t var quickviewRef = BaseComponent_1.BaseComponent.getComponentRef('Quickview');\n\t if (quickviewRef) {\n\t var quickviews = this.getComponents(quickviewRef.ID);\n\t if (args.value != '') {\n\t var quickviewsPartition = _.partition(quickviews, function (quickview) { return quickview.getHashId() == args.value; });\n\t if (quickviewsPartition[0].length != 0) {\n\t _.first(quickviewsPartition[0]).open();\n\t _.forEach(_.tail(quickviewsPartition[0]), function (quickview) { return quickview.close(); });\n\t }\n\t _.forEach(quickviewsPartition[1], function (quickview) { return quickview.close(); });\n\t }\n\t else {\n\t _.forEach(quickviews, function (quickview) {\n\t quickview.close();\n\t });\n\t }\n\t }\n\t };\n\t SearchInterface.prototype.handleBuildingQuery = function (data) {\n\t if (this.options.enableDuplicateFiltering) {\n\t data.queryBuilder.enableDuplicateFiltering = true;\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(this.options.pipeline)) {\n\t data.queryBuilder.pipeline = this.options.pipeline;\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(this.options.maximumAge)) {\n\t data.queryBuilder.maximumAge = this.options.maximumAge;\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(this.options.resultsPerPage)) {\n\t data.queryBuilder.numberOfResults = this.options.resultsPerPage;\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(this.options.excerptLength)) {\n\t data.queryBuilder.excerptLength = this.options.excerptLength;\n\t }\n\t if (Utils_1.Utils.isNonEmptyString(this.options.expression)) {\n\t data.queryBuilder.constantExpression.add(this.options.expression);\n\t }\n\t if (Utils_1.Utils.isNonEmptyString(this.options.filterField)) {\n\t data.queryBuilder.filterField = this.options.filterField;\n\t }\n\t if (Utils_1.Utils.isNonEmptyString(this.options.timezone)) {\n\t data.queryBuilder.timezone = this.options.timezone;\n\t }\n\t data.queryBuilder.enableCollaborativeRating = this.options.enableCollaborativeRating;\n\t data.queryBuilder.enableDuplicateFiltering = this.options.enableDuplicateFiltering;\n\t };\n\t SearchInterface.prototype.handleQuerySuccess = function (data) {\n\t var noResults = data.results.results.length == 0;\n\t this.toggleSectionState('coveo-no-results', noResults);\n\t var resultsHeader = Dom_1.$$(this.element).find('.coveo-results-header');\n\t if (resultsHeader) {\n\t Dom_1.$$(resultsHeader).removeClass('coveo-query-error');\n\t }\n\t };\n\t SearchInterface.prototype.handleQueryError = function (data) {\n\t this.toggleSectionState('coveo-no-results');\n\t var resultsHeader = Dom_1.$$(this.element).find('.coveo-results-header');\n\t if (resultsHeader) {\n\t Dom_1.$$(resultsHeader).addClass('coveo-query-error');\n\t }\n\t };\n\t SearchInterface.prototype.toggleSectionState = function (cssClass, toggle) {\n\t var _this = this;\n\t if (toggle === void 0) { toggle = true; }\n\t var facetSection = Dom_1.$$(this.element).find('.coveo-facet-column');\n\t var resultsSection = Dom_1.$$(this.element).find('.coveo-results-column');\n\t var resultsHeader = Dom_1.$$(this.element).find('.coveo-results-header');\n\t var facetSearchs = Dom_1.$$(this.element).findAll('.coveo-facet-search-results');\n\t if (facetSection) {\n\t Dom_1.$$(facetSection).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n\t }\n\t if (resultsSection) {\n\t Dom_1.$$(resultsSection).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n\t }\n\t if (resultsHeader) {\n\t Dom_1.$$(resultsHeader).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n\t }\n\t if (facetSearchs && facetSearchs.length > 0) {\n\t _.each(facetSearchs, function (facetSearch) {\n\t Dom_1.$$(facetSearch).toggleClass(cssClass, toggle && !_this.queryStateModel.atLeastOneFacetIsActive());\n\t });\n\t }\n\t };\n\t return SearchInterface;\n\t}(RootComponent_1.RootComponent));\n\tSearchInterface.ID = 'SearchInterface';\n\t/**\n\t * The options for the search interface\n\t * @componentOptions\n\t */\n\tSearchInterface.options = {\n\t /**\n\t * Specifies whether to allow the end user to navigate search history using the **Back** and **Forward** buttons\n\t * of the browser.\n\t *\n\t * If this options is `true`, the SearchInterface component saves the state of the current query in the hash portion\n\t * of the URL when the user submits the query.\n\t *\n\t * **Example:**\n\t * > If the `enableHistory` option is `true` and the current query is `foobar`, the SearchInterface component\n\t * > saves `q=foobar` in the URL hash when the user submits the query.\n\t *\n\t * Default value is `false`.\n\t */\n\t enableHistory: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies whether to enable automatic responsive mode (i.e., automatically placing {@link Facet} and {@link Tab}\n\t * components in dropdown menus under the search box when the width of the SearchInterface HTML element reaches or\n\t * falls behind a certain pixel threshold).\n\t *\n\t * You might want to set this option to `false` if automatic responsive mode does not suit the specific design needs\n\t * of your implementation.\n\t *\n\t * **Note:**\n\t *\n\t * > If this option is `true`, you can also specify whether to enable responsive mode for Facet components (see\n\t * > {@link Facet.options.enableResponsiveMode}) and for Tab components (see\n\t * > {@link Tab.options.enableResponsiveMode}).\n\t * >\n\t * > In addition, you can specify the label you wish to display on the dropdown buttons (see\n\t * > {@link Facet.options.dropdownHeaderLabel} and {@link Tab.options.dropdownHeaderLabel}).\n\t *\n\t * Default value is `true`.\n\t */\n\t enableAutomaticResponsiveMode: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies whether to save the interface state in the local storage of the browser.\n\t *\n\t * You might want to set this option to `true` for reasons specifically important for your implementation.\n\t *\n\t * Default value is `false`.\n\t */\n\t useLocalStorageForHistory: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies the number of results to display on each page.\n\t *\n\t * For more advanced features, see the {@link ResultsPerPage} component.\n\t *\n\t * Default value is `10`. Minimum value is `0`.\n\t */\n\t resultsPerPage: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 10, min: 0 }),\n\t /**\n\t * Specifies the number of characters to get at query time to create an excerpt of the result.\n\t *\n\t * This setting is global and cannot be modified on a per-result basis.\n\t *\n\t * See also the {@link Excerpt} component.\n\t *\n\t * Default value is `200`. Minimum value is `0`.\n\t */\n\t excerptLength: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 200, min: 0 }),\n\t /**\n\t * Specifies an expression to add to each query.\n\t *\n\t * You might want to use this options to add a global filter to your entire search interface that applies for all\n\t * tabs.\n\t *\n\t * You should not use this option to address security concerns (it is JavaScript, after all).\n\t *\n\t * **Note:**\n\t *\n\t * > It also is possible to set this option separately for each {@link Tab} component\n\t * > (see {@link Tab.options.expression}).\n\t *\n\t * Default value is `''`.\n\t */\n\t expression: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: '' }),\n\t /**\n\t * Specifies the name of a field to use as a custom filter when executing the query (also referred to as\n\t * \"folding\").\n\t *\n\t * Setting a value for this option causes the index to return only one result having any particular value inside the\n\t * filter field. Any other matching result is \"folded\" inside the childResults member of each JSON query result.\n\t *\n\t * This feature is typically useful with threaded conversations to include only one top-level result per\n\t * conversation. Thus, the field you specify for this option will typically be value unique to each thread that is\n\t * shared by all items (e.g., posts, emails, etc) in the thread.\n\t *\n\t * For more advanced features, see the {@link Folding} component.\n\t *\n\t * Default value is the empty string (`''`).\n\t */\n\t filterField: ComponentOptions_1.ComponentOptions.buildFieldOption({ defaultValue: '' }),\n\t /**\n\t * Specifies whether to display a loading animation before the first query successfully returns.\n\t *\n\t * **Note:**\n\t *\n\t * > If you do not set this options to `false`, the loading animation will still run until the first query\n\t * > successfully returns even if the [autoTriggerQuery]{@link SearchInterface.options.autoTriggerQuery} option is\n\t * `false`.\n\t *\n\t * See also the [firstLoadingAnimation]{@link SearchInterface.options.firstLoadingAnimation} option.\n\t *\n\t * Default value is `true`.\n\t */\n\t hideUntilFirstQuery: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies the animation that you wish to display while your interface is loading.\n\t *\n\t * You can either specify the CSS selector of an HTML element that matches the default CSS class\n\t * (`coveo-first-loading-animation`), or add `-selector` to the markup attribute of this option to specify the CSS\n\t * selector of an HTML element that matches any CSS class.\n\t *\n\t * See also the [hideUntilFirstQuery]{@link SearchInterface.options.hideUntilFirstQuery} option.\n\t *\n\t * **Examples:**\n\t *\n\t * In this first case, the SearchInterface uses the HTML element whose `id` attribute is `MyAnimation` as the\n\t * loading animation only if the `class` attribute of this element also matches `coveo-first-loading-animation`.\n\t * Default loading animation CSS, which you can customize as you see fit, applies to this HTML element.\n\t * ```html\n\t *
\n\t *
\n\t * \n\t *
\n\t * \n\t *
\n\t * ```\n\t *\n\t * In this second case, the SearchInterface uses the HTML element whose `id` attribute is `MyAnimation` as the\n\t * loading animation no matter what CSS class it matches. However, if the `class` attribute of the HTML element does\n\t * not match `coveo-first-loading-animation`, no default loading animation CSS applies to this HTML element.\n\t * Normally, you should only use `data-first-loading-animation-selector` if you want to completely override the\n\t * default loading animation CSS.\n\t * ```html\n\t *
\n\t *
\n\t * \n\t *
\n\t * \n\t *
\n\t * ```\n\t *\n\t * See [Branding Customization](https://developers.coveo.com/x/EoGfAQ).\n\t *\n\t * By default, the loading animation is a Coveo CSS animation (which you can customize with CSS).\n\t */\n\t firstLoadingAnimation: ComponentOptions_1.ComponentOptions.buildChildHtmlElementOption({\n\t childSelector: '.coveo-first-loading-animation',\n\t defaultFunction: function () { return DomUtils_1.DomUtils.getBasicLoadingAnimation(); }\n\t }),\n\t /**\n\t * Specifies whether to trigger the first query automatically when the page finishes loading.\n\t *\n\t *\n\t * **Note:**\n\t *\n\t * > If you set this option to `false` while the\n\t * > [hideUntilFirstQuery]{@link SearchInterface.options.hideUntilFirstQuery} option is `true`, the loading\n\t * > animation will still run until the first query successfully returns.\n\t *\n\t * Default value is `true`.\n\t */\n\t autoTriggerQuery: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t endpoint: ComponentOptions_1.ComponentOptions.buildCustomOption(function (endpoint) { return endpoint != null && endpoint in SearchEndpoint_1.SearchEndpoint.endpoints ? SearchEndpoint_1.SearchEndpoint.endpoints[endpoint] : null; }, { defaultFunction: function () { return SearchEndpoint_1.SearchEndpoint.endpoints['default']; } }),\n\t /**\n\t * Specifies the timezone in which the search interface is loaded. This allows the index to recognize some special\n\t * query syntax.\n\t *\n\t * This option must have a valid IANA zone info key (AKA the Olson time zone database) as its value.\n\t *\n\t * **Example:** `America/New_York`.\n\t *\n\t * By default, the search interface allows a library to try to detect the timezone automatically.\n\t */\n\t timezone: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultFunction: function () { return jstz.determine().name(); } }),\n\t /**\n\t * Specifies whether to enable the feature that allows the end user to ALT + double click any result to open a debug\n\t * page with detailed information about all properties and fields for that result.\n\t *\n\t * Enabling this feature causes no security concern; the entire debug information is always visible to the end user\n\t * through the browser developer console or by calling the Coveo API directly.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableDebugInfo: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies whether to enable the collaborative rating for the index and to include user ratings on each results\n\t * in addition to the normal index ranking.\n\t *\n\t * If you set this option to `true`, you can leverage it with the {@link ResultRating} component.\n\t *\n\t * Default value is `false`.\n\t */\n\t enableCollaborativeRating: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies whether to filter duplicates in the search results.\n\t *\n\t * Setting this option to `true` forces duplicates to not appear in search results. However, {@link Facet} counts\n\t * still include the duplicates, which can be confusing for the end user. This is a limitation of the index.\n\t *\n\t * **Example:**\n\t *\n\t * > The end user narrows a query down to a single document that has a duplicate. If the enableDuplicateFiltering\n\t * > option is `true`, then only one document appears in the search results while the Facet count is still 2.\n\t *\n\t * **Note:**\n\t *\n\t * > It also is possible to set this option separately for each {@link Tab} component\n\t * > (see {@link Tab.options.enableDuplicateFiltering}).\n\t *\n\t * Default value is `false`.\n\t */\n\t enableDuplicateFiltering: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies the name of the query pipeline to use for the queries.\n\t *\n\t * You can specify a value for this option if your index is in a Coveo Cloud organization in which pipelines have\n\t * been created (see [Managing Query Pipelines](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=128)).\n\t *\n\t * **Note:**\n\t *\n\t * > It also is possible to set this option separately for each {@link Tab} component\n\t * > (see {@link Tab.options.pipeline}).\n\t *\n\t * Default value is `undefined`, which means that the search interface uses the default pipeline.\n\t */\n\t pipeline: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the maximum age (in milliseconds) that cached query results can have to still be usable as results\n\t * instead of performing a new query on the index. The cache is located in the Coveo Search API (which resides\n\t * between the index and the search interface).\n\t *\n\t * If cached results that are older than the age you specify in this option are available, the framework will not\n\t * use these results; it will rather perform a new query on the index.\n\t *\n\t * On high-volume public web sites, specifying a higher value for this option can greatly improve query response\n\t * time at the cost of result freshness.\n\t *\n\t * **Note:**\n\t *\n\t * > It also is possible to set this option separately for each {@link Tab} component\n\t * > (see {@link Tab.options.maximumAge}).\n\t *\n\t * Default value is `undefined`, which means that the search interface lets the Coveo Search API determine the\n\t * maximum cache age. This is typically equivalent to 30 minutes (see\n\t * [Query Parameters - maximumAge](https://developers.coveo.com/x/iwEv#QueryParameters-maximumAge)).\n\t */\n\t maximumAge: ComponentOptions_1.ComponentOptions.buildNumberOption(),\n\t /**\n\t * Specifies the search page you wish to navigate to when instantiating a standalone search box interface.\n\t *\n\t * Default value is `undefined`, which means that the search interface does not redirect.\n\t */\n\t searchPageUri: ComponentOptions_1.ComponentOptions.buildStringOption()\n\t};\n\tSearchInterface.SMALL_INTERFACE_CLASS_NAME = 'coveo-small-search-interface';\n\texports.SearchInterface = SearchInterface;\n\tvar StandaloneSearchInterface = (function (_super) {\n\t __extends(StandaloneSearchInterface, _super);\n\t function StandaloneSearchInterface(element, options, analyticsOptions, _window) {\n\t if (_window === void 0) { _window = window; }\n\t var _this = _super.call(this, element, ComponentOptions_1.ComponentOptions.initComponentOptions(element, StandaloneSearchInterface, options), analyticsOptions, _window) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.analyticsOptions = analyticsOptions;\n\t _this._window = _window;\n\t Dom_1.$$(_this.root).on(QueryEvents_1.QueryEvents.newQuery, function (e, args) { return _this.handleRedirect(e, args); });\n\t return _this;\n\t }\n\t StandaloneSearchInterface.prototype.handleRedirect = function (e, data) {\n\t var dataToSendOnBeforeRedirect = {\n\t searchPageUri: this.options.searchPageUri,\n\t cancel: false\n\t };\n\t Dom_1.$$(this.root).trigger(StandaloneSearchInterfaceEvents_1.StandaloneSearchInterfaceEvents.beforeRedirect, dataToSendOnBeforeRedirect);\n\t if (dataToSendOnBeforeRedirect.cancel) {\n\t return;\n\t }\n\t data.cancel = true;\n\t if (!this.searchboxIsEmpty() || this.options.redirectIfEmpty) {\n\t this.redirectToSearchPage(dataToSendOnBeforeRedirect.searchPageUri);\n\t }\n\t };\n\t StandaloneSearchInterface.prototype.redirectToSearchPage = function (searchPage) {\n\t var _this = this;\n\t var stateValues = this.queryStateModel.getAttributes();\n\t var uaCausedBy = this.usageAnalytics.getCurrentEventCause();\n\t if (uaCausedBy != null) {\n\t // for legacy reason, searchbox submit were always logged a search from link in an external search box.\n\t // transform them if that's what we hit.\n\t if (uaCausedBy == AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxSubmit.name) {\n\t uaCausedBy = AnalyticsActionListMeta_1.analyticsActionCauseList.searchFromLink.name;\n\t }\n\t stateValues['firstQueryCause'] = uaCausedBy;\n\t }\n\t var uaMeta = this.usageAnalytics.getCurrentEventMeta();\n\t if (uaMeta != null) {\n\t stateValues['firstQueryMeta'] = uaMeta;\n\t }\n\t var link = document.createElement('a');\n\t link.href = searchPage;\n\t link.href = link.href; // IE11 needs this to correctly fill the properties that are used below.\n\t var pathname = link.pathname.indexOf('/') == 0 ? link.pathname : '/' + link.pathname; // IE11 does not add a leading slash to this property.\n\t var hash = link.hash ? link.hash + '&' : '#';\n\t // By using a setTimeout, we allow other possible code related to the search box / magic box time to complete.\n\t // eg: onblur of the magic box.\n\t setTimeout(function () {\n\t _this._window.location.href = link.protocol + \"//\" + link.host + pathname + link.search + hash + HashUtils_1.HashUtils.encodeValues(stateValues);\n\t }, 0);\n\t };\n\t StandaloneSearchInterface.prototype.searchboxIsEmpty = function () {\n\t return Utils_1.Utils.isEmptyString(this.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.q));\n\t };\n\t return StandaloneSearchInterface;\n\t}(SearchInterface));\n\tStandaloneSearchInterface.ID = 'StandaloneSearchInterface';\n\tStandaloneSearchInterface.options = {\n\t redirectIfEmpty: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true })\n\t};\n\texports.StandaloneSearchInterface = StandaloneSearchInterface;\n\n\n/***/ },\n/* 111 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar TemplateCache_1 = __webpack_require__(112);\n\tvar TemplateList_1 = __webpack_require__(120);\n\tvar UnderscoreTemplate_1 = __webpack_require__(116);\n\tvar HtmlTemplate_1 = __webpack_require__(119);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar _ = __webpack_require__(16);\n\t;\n\tvar ComponentOptionsType;\n\t(function (ComponentOptionsType) {\n\t ComponentOptionsType[ComponentOptionsType[\"BOOLEAN\"] = 0] = \"BOOLEAN\";\n\t ComponentOptionsType[ComponentOptionsType[\"NUMBER\"] = 1] = \"NUMBER\";\n\t ComponentOptionsType[ComponentOptionsType[\"STRING\"] = 2] = \"STRING\";\n\t ComponentOptionsType[ComponentOptionsType[\"LOCALIZED_STRING\"] = 3] = \"LOCALIZED_STRING\";\n\t ComponentOptionsType[ComponentOptionsType[\"LIST\"] = 4] = \"LIST\";\n\t ComponentOptionsType[ComponentOptionsType[\"SELECTOR\"] = 5] = \"SELECTOR\";\n\t ComponentOptionsType[ComponentOptionsType[\"CHILD_HTML_ELEMENT\"] = 6] = \"CHILD_HTML_ELEMENT\";\n\t ComponentOptionsType[ComponentOptionsType[\"TEMPLATE\"] = 7] = \"TEMPLATE\";\n\t ComponentOptionsType[ComponentOptionsType[\"FIELD\"] = 8] = \"FIELD\";\n\t ComponentOptionsType[ComponentOptionsType[\"FIELDS\"] = 9] = \"FIELDS\";\n\t ComponentOptionsType[ComponentOptionsType[\"ICON\"] = 10] = \"ICON\";\n\t ComponentOptionsType[ComponentOptionsType[\"COLOR\"] = 11] = \"COLOR\";\n\t ComponentOptionsType[ComponentOptionsType[\"OBJECT\"] = 12] = \"OBJECT\";\n\t ComponentOptionsType[ComponentOptionsType[\"QUERY\"] = 13] = \"QUERY\";\n\t ComponentOptionsType[ComponentOptionsType[\"HELPER\"] = 14] = \"HELPER\";\n\t ComponentOptionsType[ComponentOptionsType[\"LONG_STRING\"] = 15] = \"LONG_STRING\";\n\t ComponentOptionsType[ComponentOptionsType[\"JSON\"] = 16] = \"JSON\";\n\t ComponentOptionsType[ComponentOptionsType[\"JAVASCRIPT\"] = 17] = \"JAVASCRIPT\";\n\t ComponentOptionsType[ComponentOptionsType[\"NONE\"] = 18] = \"NONE\";\n\t})(ComponentOptionsType = exports.ComponentOptionsType || (exports.ComponentOptionsType = {}));\n\tvar camelCaseToHyphenRegex = /([A-Z])|\\W+(\\w)/g;\n\tvar fieldsSeperator = /\\s*,\\s*/;\n\tvar localizer = /([a-zA-Z\\-]+)\\s*:\\s*(([^,]|,\\s*(?!([a-zA-Z\\-]+)\\s*:))+)/g;\n\t/**\n\t * This static class is used to initialize component options.\n\t *\n\t * Typically, each {@link Component} that exposes a set of options will contains a static `options` property,\n\t *\n\t * This property will \"build\" the options based on their type.\n\t */\n\tvar ComponentOptions = (function () {\n\t function ComponentOptions() {\n\t }\n\t /**\n\t * Build a boolean option.\n\t *\n\t * A boolean option can be \"true\" or \"false\" in the markup.\n\t *\n\t * `data-foo=\"true\"` or `data-foo=\"false\"`.\n\t * @param optionArgs\n\t * @returns {boolean}\n\t */\n\t ComponentOptions.buildBooleanOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.BOOLEAN, ComponentOptions.loadBooleanOption, optionArgs);\n\t };\n\t /**\n\t * Build a number option.\n\t *\n\t * A number option can be an integer or a float in the markup.\n\t *\n\t * `data-foo=\"1\"` or `data-foo=\"1.5\"`.\n\t */\n\t ComponentOptions.buildNumberOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.NUMBER, ComponentOptions.loadNumberOption, optionArgs);\n\t };\n\t /**\n\t * Build a string option.\n\t *\n\t * A string option can be any arbitrary string in the markup.\n\t *\n\t * `data-foo=\"bar\"`.\n\t */\n\t ComponentOptions.buildStringOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.STRING, ComponentOptions.loadStringOption, optionArgs);\n\t };\n\t /**\n\t * Build an icon option.\n\t *\n\t * Normally, this only means that it will build a string that matches a CSS class for an icon.\n\t *\n\t * In the markup, this has no advantage over a plain string. This is mostly useful for the interface editor.\n\t *\n\t * `data-foo=\"coveo-sprites-user\"` or `data-foo=\"coveo-sprites-database\"`.\n\t */\n\t ComponentOptions.buildIconOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.ICON, ComponentOptions.loadStringOption, optionArgs);\n\t };\n\t /**\n\t * Build a color option.\n\t *\n\t * Normally, this only means that it will build a string that matches a CSS color.\n\t *\n\t * In the markup, this has no advantage over a plain string. This is mostly useful for the interface editor.\n\t *\n\t * `data-foo=\"coveo-sprites-user\"` or `data-foo=\"coveo-sprites-database\"`.\n\t */\n\t ComponentOptions.buildColorOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.COLOR, ComponentOptions.loadStringOption, optionArgs);\n\t };\n\t /**\n\t * Build a helper option.\n\t *\n\t * Normally, this only means that it will build a string that matches the name of a template helper.\n\t *\n\t * In the markup, this has no advantage over a plain string. This is mostly useful for the interface editor.\n\t *\n\t * `data-foo=\"date\"` or `data-foo=\"dateTime\"`.\n\t */\n\t ComponentOptions.buildHelperOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.HELPER, ComponentOptions.loadStringOption, optionArgs);\n\t };\n\t /**\n\t * Build a JSON option.\n\t *\n\t * Normally, this only means that it will build a stringified JSON.\n\t *\n\t * In the markup, this has no advantage over a plain string. This is mostly useful for the interface editor.\n\t *\n\t * `data-foo='{\"bar\" : \"baz\"}'`.\n\t */\n\t ComponentOptions.buildJsonOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.JSON, ComponentOptions.loadStringOption, optionArgs);\n\t };\n\t /**\n\t * Build a localized string option.\n\t *\n\t * A localized string option can be any arbitrary string.\n\t *\n\t * The framework, when parsing the value, will try to load the localization for that word if it is available.\n\t *\n\t * If it is not available, it will return the non-localized option.\n\t *\n\t * This should be used for options that will be rendered directly to the end users.\n\t *\n\t * `data-foo=\"bar\"`.\n\t */\n\t ComponentOptions.buildLocalizedStringOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.LOCALIZED_STRING, ComponentOptions.loadLocalizedStringOption, optionArgs);\n\t };\n\t /**\n\t * Build a field option.\n\t *\n\t * A field option will validate that the field has a valid name. This means that the string has to start with @.\n\t *\n\t * `data-foo=\"@bar\"`.\n\t */\n\t ComponentOptions.buildFieldOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.FIELD, ComponentOptions.loadFieldOption, optionArgs);\n\t };\n\t /**\n\t * Build an array of field option.\n\t *\n\t * As with all options that expect an array, you should use commas to delimit the different values.\n\t *\n\t * `data-foo=\"@bar,@baz\"`.\n\t */\n\t ComponentOptions.buildFieldsOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.FIELDS, ComponentOptions.loadFieldsOption, optionArgs);\n\t };\n\t /**\n\t * Build an array of string option.\n\t *\n\t * As with all options that expect an array, you should use commas to delimit the different values.\n\t *\n\t * `data-foo=\"bar,baz\"`.\n\t */\n\t ComponentOptions.buildListOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.LIST, ComponentOptions.loadListOption, optionArgs);\n\t };\n\t /**\n\t * Build an option that allow to select an HTMLElement.\n\t *\n\t * The option accept a CSS selector that will allow to find the required HTMLElement.\n\t *\n\t * It can be a class selector or an ID selector.\n\t *\n\t * `data-foo-selector=\".bar\" or data-foo-selector=\"#bar\"`.\n\t */\n\t ComponentOptions.buildSelectorOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.SELECTOR, ComponentOptions.loadSelectorOption, optionArgs);\n\t };\n\t ComponentOptions.buildChildHtmlElementOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.CHILD_HTML_ELEMENT, ComponentOptions.loadChildHtmlElementOption, optionArgs);\n\t };\n\t ComponentOptions.buildTemplateOption = function (optionArgs) {\n\t return ComponentOptions.buildOption(ComponentOptionsType.TEMPLATE, ComponentOptions.loadTemplateOption, optionArgs);\n\t };\n\t ComponentOptions.buildCustomOption = function (converter, optionArgs) {\n\t var loadOption = function (element, name, option) {\n\t var stringvalue = ComponentOptions.loadStringOption(element, name, option);\n\t if (!Utils_1.Utils.isNullOrEmptyString(stringvalue)) {\n\t return converter(stringvalue);\n\t }\n\t };\n\t return ComponentOptions.buildOption(ComponentOptionsType.STRING, loadOption, optionArgs);\n\t };\n\t ComponentOptions.buildCustomListOption = function (converter, optionArgs) {\n\t var loadOption = function (element, name, option) {\n\t var stringvalue = ComponentOptions.loadListOption(element, name, option);\n\t return converter(stringvalue);\n\t };\n\t return ComponentOptions.buildOption(ComponentOptionsType.LIST, loadOption, optionArgs);\n\t };\n\t ComponentOptions.buildObjectOption = function (optionArgs) {\n\t var loadOption = function (element, name, option) {\n\t var keys = _.keys(optionArgs.subOptions);\n\t var scopedOptions = {};\n\t var scopedValues = {};\n\t for (var i = 0; i < keys.length; i++) {\n\t var key = keys[i];\n\t var scopedkey = ComponentOptions.mergeCamelCase(name, key);\n\t scopedOptions[scopedkey] = optionArgs.subOptions[key];\n\t }\n\t ComponentOptions.initOptions(element, scopedOptions, scopedValues);\n\t var resultValues = {};\n\t var resultFound = false;\n\t for (var i = 0; i < keys.length; i++) {\n\t var key = keys[i];\n\t var scopedkey = ComponentOptions.mergeCamelCase(name, key);\n\t if (scopedValues[scopedkey] != null) {\n\t resultValues[key] = scopedValues[scopedkey];\n\t resultFound = true;\n\t }\n\t }\n\t return resultFound ? resultValues : null;\n\t };\n\t return ComponentOptions.buildOption(ComponentOptionsType.OBJECT, loadOption, optionArgs);\n\t };\n\t ComponentOptions.buildOption = function (type, load, optionArg) {\n\t if (optionArg === void 0) { optionArg = {}; }\n\t var option = optionArg;\n\t option.type = type;\n\t option.load = load;\n\t return option;\n\t };\n\t ComponentOptions.attrNameFromName = function (name, optionArgs) {\n\t if (optionArgs && optionArgs.attrName) {\n\t return optionArgs.attrName;\n\t }\n\t if (name) {\n\t return 'data-' + ComponentOptions.camelCaseToHyphen(name);\n\t }\n\t return name;\n\t };\n\t ComponentOptions.camelCaseToHyphen = function (name) {\n\t return name.replace(camelCaseToHyphenRegex, '-$1$2').toLowerCase();\n\t };\n\t ComponentOptions.mergeCamelCase = function (parent, name) {\n\t return parent + name.substr(0, 1).toUpperCase() + name.substr(1);\n\t };\n\t /**\n\t * The main function that will load and parse the options for the current given element.\n\t *\n\t * Every component will call this function in their constructor.\n\t * @param element The element on which the options should be parsed\n\t * @param component The component class for which the options should be parsed. For example : Searchbox, Facet, etc.\n\t * @param values The optional options which should be merged with the options set in the markup.\n\t */\n\t ComponentOptions.initComponentOptions = function (element, component, values) {\n\t return ComponentOptions.initOptions(element, component.options, values, component.ID);\n\t };\n\t ComponentOptions.initOptions = function (element, options, values, componentID) {\n\t var logger = new Logger_1.Logger(this);\n\t if (values == null) {\n\t values = {};\n\t }\n\t var names = _.keys(options);\n\t for (var i = 0; i < names.length; i++) {\n\t var name_1 = names[i];\n\t var optionDefinition = options[name_1];\n\t var value = void 0;\n\t var loadFromAttribute = optionDefinition.load;\n\t if (loadFromAttribute != null) {\n\t value = loadFromAttribute(element, name_1, optionDefinition);\n\t if (value && optionDefinition.deprecated) {\n\t logger.warn(componentID + '.' + name_1 + ' : ' + optionDefinition.deprecated);\n\t }\n\t }\n\t if (Utils_1.Utils.isNullOrUndefined(value) && values[name_1] != undefined) {\n\t value = values[name_1];\n\t }\n\t if (value == null && values[name_1] == undefined) {\n\t if (optionDefinition.defaultValue != null) {\n\t if (optionDefinition.type == ComponentOptionsType.LIST) {\n\t value = _.extend([], optionDefinition.defaultValue);\n\t }\n\t else if (optionDefinition.type == ComponentOptionsType.OBJECT) {\n\t value = _.extend({}, optionDefinition.defaultValue);\n\t }\n\t else {\n\t value = optionDefinition.defaultValue;\n\t }\n\t }\n\t else if (optionDefinition.defaultFunction != null) {\n\t value = optionDefinition.defaultFunction(element);\n\t }\n\t }\n\t if (value != null) {\n\t if (optionDefinition.validator) {\n\t var isValid = optionDefinition.validator(value);\n\t if (!isValid) {\n\t logger.warn(componentID + \" .\" + name_1 + \" has invalid value : \" + value);\n\t if (optionDefinition.required) {\n\t logger.error(componentID + \" .\" + name_1 + \" is required and has an invalid value : \" + value + \". ***THIS COMPONENT WILL NOT WORK***\");\n\t }\n\t delete values[name_1];\n\t continue;\n\t }\n\t }\n\t if (optionDefinition.type == ComponentOptionsType.OBJECT && values[name_1] != null) {\n\t values[name_1] = _.extend(values[name_1], value);\n\t }\n\t else if (optionDefinition.type == ComponentOptionsType.LOCALIZED_STRING) {\n\t values[name_1] = Strings_1.l(value);\n\t }\n\t else {\n\t values[name_1] = value;\n\t }\n\t }\n\t }\n\t for (var i = 0; i < names.length; i++) {\n\t var name_2 = names[i];\n\t var optionDefinition = options[name_2];\n\t if (optionDefinition.postProcessing) {\n\t values[name_2] = optionDefinition.postProcessing(values[name_2], values);\n\t }\n\t }\n\t return values;\n\t };\n\t ComponentOptions.loadStringOption = function (element, name, option) {\n\t return element.getAttribute(ComponentOptions.attrNameFromName(name, option)) || ComponentOptions.getAttributeFromAlias(element, option);\n\t };\n\t ComponentOptions.loadFieldOption = function (element, name, option) {\n\t var field = ComponentOptions.loadStringOption(element, name, option);\n\t Assert_1.Assert.check(!Utils_1.Utils.isNonEmptyString(field) || Utils_1.Utils.isCoveoField(field), field + ' is not a valid field');\n\t return field;\n\t };\n\t ComponentOptions.loadFieldsOption = function (element, name, option) {\n\t var fieldsAttr = ComponentOptions.loadStringOption(element, name, option);\n\t if (fieldsAttr == null) {\n\t return null;\n\t }\n\t var fields = fieldsAttr.split(fieldsSeperator);\n\t _.each(fields, function (field) {\n\t Assert_1.Assert.check(Utils_1.Utils.isCoveoField(field), field + ' is not a valid field');\n\t });\n\t return fields;\n\t };\n\t ComponentOptions.loadLocalizedStringOption = function (element, name, option) {\n\t var attributeValue = ComponentOptions.loadStringOption(element, name, option);\n\t var locale = String['locale'] || String['defaultLocale'];\n\t if (locale != null && attributeValue != null) {\n\t var localeParts_1 = locale.toLowerCase().split('-');\n\t var locales = _.map(localeParts_1, function (part, i) { return localeParts_1.slice(0, i + 1).join('-'); });\n\t var localizers = attributeValue.match(localizer);\n\t if (localizers != null) {\n\t for (var i = 0; i < localizers.length; i++) {\n\t var groups = localizer.exec(localizers[i]);\n\t if (groups != null) {\n\t var lang = groups[1].toLowerCase();\n\t if (_.contains(locales, lang)) {\n\t return groups[2].replace(/^\\s+|\\s+$/g, '');\n\t }\n\t }\n\t }\n\t }\n\t return attributeValue != null ? attributeValue.toLocaleString() : null;\n\t }\n\t return attributeValue;\n\t };\n\t ComponentOptions.loadNumberOption = function (element, name, option) {\n\t var attributeValue = ComponentOptions.loadStringOption(element, name, option);\n\t if (attributeValue == null) {\n\t return null;\n\t }\n\t var numberValue = option.float === true ? Utils_1.Utils.parseFloatIfNotUndefined(attributeValue) : Utils_1.Utils.parseIntIfNotUndefined(attributeValue);\n\t if (option.min != null && option.min > numberValue) {\n\t new Logger_1.Logger(element).info(\"Value for option \" + name + \" is less than the possible minimum (Value is \" + numberValue + \", minimum is \" + option.min + \"). It has been forced to it's minimum value.\", option);\n\t numberValue = option.min;\n\t }\n\t if (option.max != null && option.max < numberValue) {\n\t new Logger_1.Logger(element).info(\"Value for option \" + name + \" is higher than the possible maximum (Value is \" + numberValue + \", maximum is \" + option.max + \"). It has been forced to it's maximum value.\", option);\n\t numberValue = option.max;\n\t }\n\t return numberValue;\n\t };\n\t ComponentOptions.loadBooleanOption = function (element, name, option) {\n\t return Utils_1.Utils.parseBooleanIfNotUndefined(ComponentOptions.loadStringOption(element, name, option));\n\t };\n\t ComponentOptions.loadListOption = function (element, name, option) {\n\t var separator = option.separator || /\\s*,\\s*/;\n\t var attributeValue = ComponentOptions.loadStringOption(element, name, option);\n\t return Utils_1.Utils.isNonEmptyString(attributeValue) ? attributeValue.split(separator) : null;\n\t };\n\t ComponentOptions.loadEnumOption = function (element, name, option, _enum) {\n\t var enumAsString = ComponentOptions.loadStringOption(element, name, option);\n\t return enumAsString != null ? _enum[enumAsString] : null;\n\t };\n\t ComponentOptions.loadSelectorOption = function (element, name, option, doc) {\n\t if (doc === void 0) { doc = document; }\n\t var attributeValue = ComponentOptions.loadStringOption(element, name, option);\n\t return Utils_1.Utils.isNonEmptyString(attributeValue) ? doc.querySelector(attributeValue) : null;\n\t };\n\t ComponentOptions.loadChildHtmlElementOption = function (element, name, option, doc) {\n\t if (doc === void 0) { doc = document; }\n\t var htmlElement;\n\t // Attribute: selector\n\t var selectorAttr = option.selectorAttr || ComponentOptions.attrNameFromName(name, option) + '-selector';\n\t var selector = element.getAttribute(selectorAttr) || ComponentOptions.getAttributeFromAlias(element, option);\n\t if (selector != null) {\n\t htmlElement = doc.body.querySelector(selector);\n\t }\n\t // Child\n\t if (htmlElement == null) {\n\t var childSelector = option.childSelector;\n\t if (childSelector == null) {\n\t childSelector = '.' + name;\n\t }\n\t htmlElement = ComponentOptions.loadChildHtmlElementFromSelector(element, childSelector);\n\t }\n\t return htmlElement;\n\t };\n\t ComponentOptions.loadChildHtmlElementFromSelector = function (element, selector) {\n\t Assert_1.Assert.isNonEmptyString(selector);\n\t if (Dom_1.$$(element).is(selector)) {\n\t return element;\n\t }\n\t return Dom_1.$$(element).find(selector);\n\t };\n\t ComponentOptions.loadChildrenHtmlElementFromSelector = function (element, selector) {\n\t Assert_1.Assert.isNonEmptyString(selector);\n\t return Dom_1.$$(element).findAll(selector);\n\t };\n\t ComponentOptions.loadTemplateOption = function (element, name, option, doc) {\n\t if (doc === void 0) { doc = document; }\n\t var template;\n\t // Attribute: template selector\n\t var selectorAttr = option.selectorAttr || ComponentOptions.attrNameFromName(name, option) + '-selector';\n\t var selector = element.getAttribute(selectorAttr) || ComponentOptions.getAttributeFromAlias(element, option);\n\t if (selector != null) {\n\t var templateElement = doc.querySelector(selector);\n\t if (templateElement != null) {\n\t template = ComponentOptions.createResultTemplateFromElement(templateElement);\n\t }\n\t }\n\t // Attribute: template id\n\t if (template == null) {\n\t var idAttr = option.idAttr || ComponentOptions.attrNameFromName(name, option) + '-id';\n\t var id = element.getAttribute(idAttr) || ComponentOptions.getAttributeFromAlias(element, option);\n\t if (id != null) {\n\t template = ComponentOptions.loadResultTemplateFromId(id);\n\t }\n\t }\n\t // Child\n\t if (template == null) {\n\t var childSelector = option.childSelector;\n\t if (childSelector == null) {\n\t childSelector = '.' + name.replace(/([A-Z])/g, '-$1').toLowerCase();\n\t }\n\t template = ComponentOptions.loadChildrenResultTemplateFromSelector(element, childSelector);\n\t }\n\t return template;\n\t };\n\t ComponentOptions.loadResultTemplateFromId = function (templateId) {\n\t return Utils_1.Utils.isNonEmptyString(templateId) ? TemplateCache_1.TemplateCache.getTemplate(templateId) : null;\n\t };\n\t ComponentOptions.loadChildrenResultTemplateFromSelector = function (element, selector) {\n\t var foundElements = ComponentOptions.loadChildrenHtmlElementFromSelector(element, selector);\n\t if (foundElements.length > 0) {\n\t return new TemplateList_1.TemplateList(_.compact(_.map(foundElements, function (element) { return ComponentOptions.createResultTemplateFromElement(element); })));\n\t }\n\t return null;\n\t };\n\t ComponentOptions.findParentScrolling = function (element, doc) {\n\t if (doc === void 0) { doc = document; }\n\t while (element != doc && element != null) {\n\t if (ComponentOptions.isElementScrollable(element)) {\n\t if (element.tagName.toLowerCase() !== 'body') {\n\t return element;\n\t }\n\t return window;\n\t }\n\t element = element.parentElement;\n\t }\n\t return window;\n\t };\n\t ComponentOptions.isElementScrollable = function (element) {\n\t return Dom_1.$$(element).css('overflow-y') == 'scroll' || element.style.overflowY == 'scroll';\n\t };\n\t ComponentOptions.getAttributeFromAlias = function (element, option) {\n\t if (option.alias) {\n\t return element.getAttribute(ComponentOptions.attrNameFromName(option.alias));\n\t }\n\t };\n\t ComponentOptions.createResultTemplateFromElement = function (element) {\n\t Assert_1.Assert.exists(element);\n\t var type = element.getAttribute('type');\n\t var mimeTypes = 'You must specify the type of template. Valid values are :' +\n\t ' ' + UnderscoreTemplate_1.UnderscoreTemplate.mimeTypes.toString() +\n\t ' ' + HtmlTemplate_1.HtmlTemplate.mimeTypes.toString();\n\t Assert_1.Assert.check(Utils_1.Utils.isNonEmptyString(type), mimeTypes);\n\t if (_.indexOf(UnderscoreTemplate_1.UnderscoreTemplate.mimeTypes, type.toLowerCase()) != -1) {\n\t return UnderscoreTemplate_1.UnderscoreTemplate.create(element);\n\t }\n\t else if (_.indexOf(HtmlTemplate_1.HtmlTemplate.mimeTypes, type.toLowerCase()) != -1) {\n\t return new HtmlTemplate_1.HtmlTemplate(element);\n\t }\n\t else {\n\t Assert_1.Assert.fail('Cannot guess template type from attribute: ' + type + '. Valid values are ' + mimeTypes);\n\t return undefined;\n\t }\n\t };\n\t return ComponentOptions;\n\t}());\n\texports.ComponentOptions = ComponentOptions;\n\n\n/***/ },\n/* 112 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Template_1 = __webpack_require__(113);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar UnderscoreTemplate_1 = __webpack_require__(116);\n\tvar HtmlTemplate_1 = __webpack_require__(119);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * Holds a reference to all template available in the framework\n\t */\n\tvar TemplateCache = (function () {\n\t function TemplateCache() {\n\t }\n\t /**\n\t * Register a new template in the framework, which will be available to render any results.\n\t * @param name\n\t * @param template\n\t * @param publicTemplate\n\t * @param defaultTemplate\n\t * @param pageTemplate\n\t */\n\t TemplateCache.registerTemplate = function (name, template, publicTemplate, defaultTemplate, resultListTemplate) {\n\t if (publicTemplate === void 0) { publicTemplate = true; }\n\t if (defaultTemplate === void 0) { defaultTemplate = false; }\n\t if (resultListTemplate === void 0) { resultListTemplate = false; }\n\t Assert_1.Assert.isNonEmptyString(name);\n\t Assert_1.Assert.exists(template);\n\t if (!(template instanceof Template_1.Template)) {\n\t template = new Template_1.Template(template);\n\t }\n\t if (template.name == null) {\n\t template.name = name;\n\t }\n\t TemplateCache.templates[name] = template;\n\t if (publicTemplate && !_.contains(TemplateCache.templateNames, name)) {\n\t TemplateCache.templateNames.push(name);\n\t }\n\t if (resultListTemplate && !_.contains(TemplateCache.resultListTemplateNames, name)) {\n\t TemplateCache.resultListTemplateNames.push(name);\n\t }\n\t if (defaultTemplate) {\n\t TemplateCache.defaultTemplates[name] = template;\n\t }\n\t };\n\t /**\n\t * Remove the given template from the cache.\n\t * @param name\n\t * @param string\n\t */\n\t TemplateCache.unregisterTemplate = function (name) {\n\t Assert_1.Assert.isNonEmptyString(name);\n\t if (TemplateCache.templates[name] != undefined) {\n\t delete TemplateCache.templates[name];\n\t }\n\t if (TemplateCache.defaultTemplates[name] != undefined) {\n\t delete TemplateCache.defaultTemplates[name];\n\t }\n\t };\n\t /**\n\t * Return a template by its name/ID.\n\t * @param name\n\t * @returns {Template}\n\t */\n\t TemplateCache.getTemplate = function (name) {\n\t // In some scenarios, the template we're trying to load might be somewhere in the page\n\t // but we could not load it \"normally\" on page load (eg : UI was loaded with require js)\n\t // Try a last ditch effort to scan the needed templates.\n\t if (!TemplateCache.templates[name]) {\n\t TemplateCache.scanAndRegisterTemplates();\n\t }\n\t Assert_1.Assert.exists(TemplateCache.templates[name]);\n\t return TemplateCache.templates[name];\n\t };\n\t /**\n\t * Get all templates currently registered in the framework.\n\t * @returns {{}}\n\t */\n\t TemplateCache.getTemplates = function () {\n\t return TemplateCache.templates;\n\t };\n\t /**\n\t * Get all templates name currently registered in the framework.\n\t * @returns {string[]}\n\t */\n\t TemplateCache.getTemplateNames = function () {\n\t return TemplateCache.templateNames;\n\t };\n\t /**\n\t * Get all page templates name currently registered in the framework.\n\t * @returns {string[]}\n\t */\n\t TemplateCache.getResultListTemplateNames = function () {\n\t return TemplateCache.resultListTemplateNames;\n\t };\n\t /**\n\t * Get all the \"default\" templates in the framework.\n\t * @returns {string[]}\n\t */\n\t TemplateCache.getDefaultTemplates = function () {\n\t return _.keys(TemplateCache.defaultTemplates);\n\t };\n\t /**\n\t * Get a default template by name.\n\t * @param name The name of the queried template\n\t */\n\t TemplateCache.getDefaultTemplate = function (name) {\n\t Assert_1.Assert.exists(TemplateCache.defaultTemplates[name]);\n\t return TemplateCache.defaultTemplates[name];\n\t };\n\t TemplateCache.scanAndRegisterTemplates = function () {\n\t // Here we take care not to scan for templates for which the base library\n\t // is not available. Case in point: someone was using the JS UI on a page\n\t // that was also using Handlebars, but our code was initialized before\n\t // the Handlebars library (loaded through AMD).\n\t if (UnderscoreTemplate_1.UnderscoreTemplate.isLibraryAvailable()) {\n\t TemplateCache.scanAndRegisterUnderscoreTemplates();\n\t }\n\t TemplateCache.scanAndRegisterHtmlTemplates();\n\t };\n\t TemplateCache.scanAndRegisterUnderscoreTemplates = function () {\n\t _.each(UnderscoreTemplate_1.UnderscoreTemplate.mimeTypes, function (type) {\n\t var scriptList = document.querySelectorAll(\"script[id][type='\" + type + \"']\");\n\t var i = scriptList.length;\n\t var arr = new Array(i);\n\t while (i--) {\n\t arr[i] = scriptList.item(i);\n\t }\n\t _.each(arr, function (elem) {\n\t var template = new UnderscoreTemplate_1.UnderscoreTemplate(elem);\n\t TemplateCache.registerTemplate(elem.getAttribute('id'), template);\n\t });\n\t });\n\t };\n\t TemplateCache.scanAndRegisterHtmlTemplates = function () {\n\t _.each(HtmlTemplate_1.HtmlTemplate.mimeTypes, function (type) {\n\t var scriptList = document.querySelectorAll(\"script[id][type='\" + type + \"']\");\n\t var i = scriptList.length;\n\t var arr = new Array(i);\n\t while (i--) {\n\t arr[i] = scriptList.item(i);\n\t }\n\t _.each(arr, function (elem) {\n\t var template = new HtmlTemplate_1.HtmlTemplate(elem);\n\t TemplateCache.registerTemplate(elem.getAttribute('id'), template);\n\t });\n\t });\n\t };\n\t return TemplateCache;\n\t}());\n\tTemplateCache.templates = {};\n\tTemplateCache.templateNames = [];\n\tTemplateCache.resultListTemplateNames = [];\n\tTemplateCache.defaultTemplates = {};\n\texports.TemplateCache = TemplateCache;\n\tdocument.addEventListener('DOMContentLoaded', function () {\n\t TemplateCache.scanAndRegisterTemplates();\n\t});\n\n\n/***/ },\n/* 113 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar TemplateConditionEvaluator_1 = __webpack_require__(114);\n\tvar TemplateFieldsEvaluator_1 = __webpack_require__(115);\n\tvar ResponsiveComponents_1 = __webpack_require__(19);\n\tvar _ = __webpack_require__(16);\n\tvar DefaultInstantiateTemplateOptions = (function () {\n\t function DefaultInstantiateTemplateOptions() {\n\t this.currentLayout = null;\n\t this.checkCondition = true;\n\t this.wrapInDiv = true;\n\t this.responsiveComponents = new ResponsiveComponents_1.ResponsiveComponents();\n\t }\n\t DefaultInstantiateTemplateOptions.prototype.get = function () {\n\t return {\n\t currentLayout: this.currentLayout,\n\t checkCondition: this.checkCondition,\n\t wrapInDiv: this.wrapInDiv,\n\t responsiveComponents: this.responsiveComponents\n\t };\n\t };\n\t DefaultInstantiateTemplateOptions.prototype.merge = function (other) {\n\t if (other) {\n\t return _.extend(this.get(), other);\n\t }\n\t return this.get();\n\t };\n\t return DefaultInstantiateTemplateOptions;\n\t}());\n\texports.DefaultInstantiateTemplateOptions = DefaultInstantiateTemplateOptions;\n\tvar Template = (function () {\n\t function Template(dataToString) {\n\t this.dataToString = dataToString;\n\t this.logger = new Logger_1.Logger(this);\n\t }\n\t Template.prototype.instantiateToString = function (object, instantiateOptions) {\n\t if (instantiateOptions === void 0) { instantiateOptions = new DefaultInstantiateTemplateOptions(); }\n\t if (this.dataToString) {\n\t if (instantiateOptions.checkCondition === false) {\n\t return this.dataToString(object);\n\t }\n\t // Should not happen but...\n\t // Normally, top level call from sub-class will have already created a DefaultInstantiateTemplateOptions\n\t // and merged down\n\t if (instantiateOptions.responsiveComponents == null) {\n\t instantiateOptions.responsiveComponents = new ResponsiveComponents_1.ResponsiveComponents();\n\t }\n\t // Mobile/tablet/desktop checks are only for \"hard\" set value (triple equal)\n\t // If it's undefined, we skip those checks, and we assume the template works correctly for any given screen size\n\t if (this.mobile === true && !instantiateOptions.responsiveComponents.isSmallScreenWidth()) {\n\t this.logger.trace('Template was skipped because it is optimized for small screen width', this);\n\t return null;\n\t }\n\t else if (this.mobile === false && instantiateOptions.responsiveComponents.isSmallScreenWidth()) {\n\t this.logger.trace('Template was skipped because it is not optimized for small screen width', this);\n\t return null;\n\t }\n\t if (this.tablet === true && !instantiateOptions.responsiveComponents.isMediumScreenWidth()) {\n\t this.logger.trace('Template was skipped because it is optimized for medium screen width', this);\n\t return null;\n\t }\n\t else if (this.tablet === false && instantiateOptions.responsiveComponents.isMediumScreenWidth()) {\n\t this.logger.trace('Template was skipped because it is not optimized for medium screen width', this);\n\t return null;\n\t }\n\t if (this.desktop === true && !instantiateOptions.responsiveComponents.isLargeScreenWidth()) {\n\t this.logger.trace('Template was skipped because it is optimized for large screen width', this);\n\t return null;\n\t }\n\t else if (this.desktop === false && instantiateOptions.responsiveComponents.isLargeScreenWidth()) {\n\t this.logger.trace('Template was skipped because it is not optimized for large screen width', this);\n\t return null;\n\t }\n\t if (this.layout != null && instantiateOptions.currentLayout != null && instantiateOptions.currentLayout !== this.layout) {\n\t this.logger.trace('Template was skipped because layout does not match', this, this.layout);\n\t return null;\n\t }\n\t this.logger.trace('Evaluating template ...');\n\t // Condition (as a function) is eval'ed, first\n\t if (this.condition != null && this.condition(object)) {\n\t this.logger.trace('Template was loaded because condition was :', this.condition, object);\n\t return this.dataToString(object);\n\t }\n\t // Condition (as a string) is parsed, if available.\n\t if (this.conditionToParse != null && TemplateConditionEvaluator_1.TemplateConditionEvaluator.evaluateCondition(this.conditionToParse, object, instantiateOptions.responsiveComponents)) {\n\t this.logger.trace('Template was loaded because condition was :', this.conditionToParse, object);\n\t return this.dataToString(object);\n\t }\n\t // fieldsToMatch is yet another fallback that allows to specify if a template should be loaded.\n\t if (this.fieldsToMatch != null && TemplateFieldsEvaluator_1.TemplateFieldsEvaluator.evaluateFieldsToMatch(this.fieldsToMatch, object)) {\n\t this.logger.trace('Template was loaded because condition was :', this.fieldsToMatch, object);\n\t return this.dataToString(object);\n\t }\n\t // If there is no condition at all, this means \"true\"\n\t if (this.condition == null && this.conditionToParse == null && this.fieldsToMatch == null) {\n\t this.logger.trace('Template was loaded because there was *NO* condition', this.condition, object);\n\t return this.dataToString(object);\n\t }\n\t }\n\t this.logger.trace('Template was skipped because it did not match any condition', this);\n\t return null;\n\t };\n\t Template.prototype.instantiateToElement = function (object, instantiateTemplateOptions) {\n\t if (instantiateTemplateOptions === void 0) { instantiateTemplateOptions = {}; }\n\t var merged = new DefaultInstantiateTemplateOptions().merge(instantiateTemplateOptions);\n\t var html = this.instantiateToString(object, merged);\n\t if (html != null) {\n\t var element = Dom_1.$$('div', {}, html).el;\n\t if (!merged.wrapInDiv && element.children.length === 1) {\n\t element = element.children.item(0);\n\t }\n\t if (this.layout) {\n\t Dom_1.$$(element).addClass(\"coveo-\" + this.layout + \"-layout\");\n\t }\n\t this.logger.trace('Instantiated result template', object, element);\n\t element['template'] = this;\n\t return element;\n\t }\n\t return null;\n\t };\n\t Template.prototype.toHtmlElement = function () {\n\t return null;\n\t };\n\t Template.prototype.getFields = function () {\n\t return this.fields || [];\n\t };\n\t Template.prototype.getType = function () {\n\t return 'Template';\n\t };\n\t Template.prototype.setConditionWithFallback = function (condition) {\n\t // In some circumstances (eg: locker service in SF), with strict Content-Security-Policy, eval / new Function are not allowed by the browser.\n\t // Try to use the eval method, if possible. Otherwise fallback to a mechanism where we will try to parse/evaluate the condition as a simple string.\n\t try {\n\t this.condition = new Function('obj', 'with(obj||{}){return ' + condition + '}');\n\t }\n\t catch (e) {\n\t this.conditionToParse = condition;\n\t }\n\t };\n\t return Template;\n\t}());\n\texports.Template = Template;\n\n\n/***/ },\n/* 114 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar BaseComponent_1 = __webpack_require__(78);\n\tvar ResponsiveComponents_1 = __webpack_require__(19);\n\tvar _ = __webpack_require__(16);\n\tvar TemplateConditionEvaluator = (function () {\n\t function TemplateConditionEvaluator() {\n\t }\n\t TemplateConditionEvaluator.getFieldFromString = function (text) {\n\t var fields = _.map(StringUtils_1.StringUtils.match(text, /(?:(?!\\b@)@([a-z0-9]+(?:\\.[a-z0-9]+)*\\b))|\\braw.([a-z0-9]+)|\\braw\\['([^']+)'\\]|\\braw\\[\"([^\"]+)\"\\]/gi), function (field) {\n\t return field[1] || field[2] || field[3] || field[4] || null;\n\t });\n\t _.each(Initialization_1.Initialization.getListOfRegisteredComponents(), function (componentId) {\n\t var componentFields = Initialization_1.Initialization.getRegisteredComponent(componentId).fields;\n\t if (componentFields != null && text.indexOf(BaseComponent_1.BaseComponent.computeCssClassNameForType(componentId)) != -1) {\n\t fields = fields.concat(componentFields);\n\t }\n\t });\n\t return fields;\n\t };\n\t TemplateConditionEvaluator.evaluateCondition = function (condition, result, responsiveComponents) {\n\t if (responsiveComponents === void 0) { responsiveComponents = new ResponsiveComponents_1.ResponsiveComponents(); }\n\t var templateShouldBeLoaded = true;\n\t var fieldsInCondition = TemplateConditionEvaluator.getFieldFromString(condition);\n\t _.each(fieldsInCondition, function (fieldInCondition) {\n\t var matchingFieldValues = TemplateConditionEvaluator.evaluateMatchingFieldValues(fieldInCondition, condition);\n\t var fieldShouldNotBeNull = matchingFieldValues.length != 0 || TemplateConditionEvaluator.evaluateFieldShouldNotBeNull(fieldInCondition, condition);\n\t if (fieldShouldNotBeNull) {\n\t templateShouldBeLoaded = templateShouldBeLoaded && result.raw[fieldInCondition] != null;\n\t }\n\t if (templateShouldBeLoaded) {\n\t _.each(matchingFieldValues, function (fieldValue) {\n\t templateShouldBeLoaded = templateShouldBeLoaded && result.raw[fieldInCondition].toLowerCase() == fieldValue.toLowerCase();\n\t });\n\t }\n\t });\n\t if (templateShouldBeLoaded) {\n\t if (TemplateConditionEvaluator.evaluateShouldUseSmallScreen(condition)) {\n\t templateShouldBeLoaded = templateShouldBeLoaded && responsiveComponents.isSmallScreenWidth();\n\t }\n\t }\n\t return templateShouldBeLoaded;\n\t };\n\t TemplateConditionEvaluator.evaluateMatchingFieldValues = function (field, condition) {\n\t var foundForCurrentField = [];\n\t // try to get the field value in the format raw.filetype == \"YouTubeVideo\"\n\t var firstRegexToGetValue = new RegExp(\"raw.\" + field + \"\\\\s*=+\\\\s*[\\\"|']([a-zA-Z]+)[\\\"|']\", 'gi');\n\t // try to get the field value in the format raw['filetype'] == \"YouTubeVideo\"\n\t var secondRegexToGetValue = new RegExp(\"raw[[\\\"|']\" + field + \"[\\\"|']]\\\\s*=+\\\\s*[\\\"|']([a-zA-Z]+)[\\\"|']\", 'gi');\n\t var matches = StringUtils_1.StringUtils.match(condition, firstRegexToGetValue).concat(StringUtils_1.StringUtils.match(condition, secondRegexToGetValue));\n\t matches.forEach(function (match) {\n\t foundForCurrentField = foundForCurrentField.concat(match[1]);\n\t });\n\t return _.unique(foundForCurrentField);\n\t };\n\t TemplateConditionEvaluator.evaluateFieldShouldNotBeNull = function (field, condition) {\n\t var firstRegexToMatchNonNull = new RegExp(\"raw.\" + field + \"\\\\s*!=\\\\s*(?=null|undefined)\", 'gi');\n\t var secondRegexToMatchNonNull = new RegExp(\"raw[[\\\"|']\" + field + \"[\\\"|']]\\\\s*!=\\\\s*(?=null|undefined)\", 'gi');\n\t return condition.match(firstRegexToMatchNonNull) != null || condition.match(secondRegexToMatchNonNull) != null;\n\t };\n\t TemplateConditionEvaluator.evaluateShouldUseSmallScreen = function (condition) {\n\t return condition.match(/Coveo\\.DeviceUtils\\.isSmallScreenWidth/gi);\n\t };\n\t return TemplateConditionEvaluator;\n\t}());\n\texports.TemplateConditionEvaluator = TemplateConditionEvaluator;\n\n\n/***/ },\n/* 115 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar TemplateFieldsEvaluator = (function () {\n\t function TemplateFieldsEvaluator() {\n\t }\n\t TemplateFieldsEvaluator.evaluateFieldsToMatch = function (toMatches, result) {\n\t var templateShouldBeLoaded = true;\n\t _.each(toMatches, function (toMatch) {\n\t var matchAtLeastOnce = false;\n\t if (!toMatch.values) {\n\t matchAtLeastOnce = result.raw[toMatch.field] != null;\n\t }\n\t else {\n\t _.each(toMatch.values, function (value) {\n\t if (!matchAtLeastOnce) {\n\t matchAtLeastOnce = result.raw[toMatch.field] && result.raw[toMatch.field].toLowerCase() == value.toLowerCase();\n\t }\n\t });\n\t }\n\t templateShouldBeLoaded = templateShouldBeLoaded && matchAtLeastOnce;\n\t });\n\t return templateShouldBeLoaded;\n\t };\n\t return TemplateFieldsEvaluator;\n\t}());\n\texports.TemplateFieldsEvaluator = TemplateFieldsEvaluator;\n\n\n/***/ },\n/* 116 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Template_1 = __webpack_require__(113);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar TemplateFromAScriptTag_1 = __webpack_require__(117);\n\tvar DefaultResultTemplate_1 = __webpack_require__(118);\n\tvar _ = __webpack_require__(16);\n\t_.templateSettings = {\n\t evaluate: /(?:<%|{{)([\\s\\S]+?)(?:%>|}})/g,\n\t interpolate: /(?:<%|{{)=([\\s\\S]+?)(?:%>|}})/g,\n\t escape: /(?:<%|{{)-([\\s\\S]+?)(?:%>|}})/g\n\t};\n\tvar UnderscoreTemplate = (function (_super) {\n\t __extends(UnderscoreTemplate, _super);\n\t function UnderscoreTemplate(element) {\n\t var _this = _super.call(this) || this;\n\t _this.element = element;\n\t Assert_1.Assert.exists(element);\n\t var templateString = element.innerHTML;\n\t try {\n\t _this.template = _.template(templateString);\n\t }\n\t catch (e) {\n\t new Logger_1.Logger(_this).error('Cannot instantiate underscore template. Might be caused by strict Content-Security-Policy. Will fallback on a default template...', e);\n\t }\n\t _this.templateFromAScriptTag = new TemplateFromAScriptTag_1.TemplateFromAScriptTag(_this, _this.element);\n\t _this.dataToString = function (object) {\n\t var extended = _.extend({}, object, UnderscoreTemplate.templateHelpers);\n\t if (_this.template) {\n\t return _this.template(extended);\n\t }\n\t else {\n\t return new DefaultResultTemplate_1.DefaultResultTemplate().getFallbackTemplate();\n\t }\n\t };\n\t return _this;\n\t }\n\t UnderscoreTemplate.prototype.toHtmlElement = function () {\n\t var script = this.templateFromAScriptTag.toHtmlElement();\n\t script.setAttribute('type', _.first(UnderscoreTemplate.mimeTypes));\n\t return script;\n\t };\n\t UnderscoreTemplate.prototype.getType = function () {\n\t return 'UnderscoreTemplate';\n\t };\n\t UnderscoreTemplate.prototype.getFields = function () {\n\t return this.fields;\n\t };\n\t UnderscoreTemplate.registerTemplateHelper = function (helperName, helper) {\n\t UnderscoreTemplate.templateHelpers[helperName] = helper;\n\t };\n\t UnderscoreTemplate.isLibraryAvailable = function () {\n\t return Utils_1.Utils.exists(window['_']);\n\t };\n\t UnderscoreTemplate.fromString = function (template, properties) {\n\t var script = TemplateFromAScriptTag_1.TemplateFromAScriptTag.fromString(template, properties);\n\t script.setAttribute('type', UnderscoreTemplate.mimeTypes[0]);\n\t return new UnderscoreTemplate(script);\n\t };\n\t UnderscoreTemplate.create = function (element) {\n\t Assert_1.Assert.exists(element);\n\t return new UnderscoreTemplate(element);\n\t };\n\t return UnderscoreTemplate;\n\t}(Template_1.Template));\n\tUnderscoreTemplate.templateHelpers = {};\n\tUnderscoreTemplate.mimeTypes = [\n\t 'text/underscore',\n\t 'text/underscore-template',\n\t 'text/x-underscore',\n\t 'text/x-underscore-template'\n\t];\n\texports.UnderscoreTemplate = UnderscoreTemplate;\n\n\n/***/ },\n/* 117 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Utils_1 = __webpack_require__(15);\n\tvar TemplateConditionEvaluator_1 = __webpack_require__(114);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\tvar TemplateFromAScriptTag = (function () {\n\t function TemplateFromAScriptTag(template, scriptTag) {\n\t this.template = template;\n\t this.scriptTag = scriptTag;\n\t var condition = scriptTag.getAttribute('data-condition');\n\t if (condition != null) {\n\t // Allows to add quotes in data-condition on the templates\n\t condition = condition.toString().replace(/"/g, '\"');\n\t template.setConditionWithFallback(condition);\n\t }\n\t else {\n\t var parsedFieldsAttributes = this.parseFieldsAttributes();\n\t if (parsedFieldsAttributes && Utils_1.Utils.isNonEmptyArray(parsedFieldsAttributes)) {\n\t this.template.fieldsToMatch = parsedFieldsAttributes;\n\t }\n\t }\n\t this.template.layout = this.parseLayout();\n\t this.template.mobile = this.parseScreenSize('data-mobile');\n\t this.template.tablet = this.parseScreenSize('data-tablet');\n\t this.template.desktop = this.parseScreenSize('data-desktop');\n\t this.template.fields = TemplateConditionEvaluator_1.TemplateConditionEvaluator.getFieldFromString(scriptTag.innerHTML + \" \" + (condition ? condition : ''));\n\t var additionalFields = ComponentOptions_1.ComponentOptions.loadFieldsOption(scriptTag, 'fields', { includeInResults: true });\n\t if (additionalFields != null) {\n\t // remove the @\n\t this.template.fields = this.template.fields.concat(_.map(additionalFields, function (field) { return field.substr(1); }));\n\t }\n\t this.template.fields = this.template.fields.concat(_.map(this.template.fieldsToMatch, function (toMatch) {\n\t return toMatch.field;\n\t }));\n\t }\n\t TemplateFromAScriptTag.prototype.toHtmlElement = function () {\n\t var script = Dom_1.$$('code');\n\t var condition = Dom_1.$$(this.scriptTag).getAttribute('data-condition');\n\t if (condition) {\n\t script.setAttribute('data-condition', condition);\n\t }\n\t script.setHtml(this.scriptTag.innerHTML);\n\t return script.el;\n\t };\n\t TemplateFromAScriptTag.prototype.parseFieldsAttributes = function () {\n\t var dataSet = this.scriptTag.dataset;\n\t return _.chain(dataSet)\n\t .map(function (value, key) {\n\t var match = key.match(/field([a-z0-9]*)/i);\n\t if (match) {\n\t var values = void 0;\n\t if (value != null && value != 'null' && value != '') {\n\t values = value.split(',');\n\t }\n\t return {\n\t field: match[1].toLowerCase(),\n\t values: values\n\t };\n\t }\n\t else {\n\t return undefined;\n\t }\n\t })\n\t .compact()\n\t .value();\n\t };\n\t TemplateFromAScriptTag.prototype.parseScreenSize = function (attribute) {\n\t return Utils_1.Utils.parseBooleanIfNotUndefined(this.scriptTag.getAttribute(attribute));\n\t };\n\t TemplateFromAScriptTag.prototype.parseLayout = function () {\n\t var layout = this.scriptTag.getAttribute('data-layout');\n\t return layout;\n\t };\n\t TemplateFromAScriptTag.fromString = function (template, properties) {\n\t if (properties === void 0) { properties = {}; }\n\t var script = document.createElement('code');\n\t script.innerHTML = template;\n\t if (properties.condition != null) {\n\t script.setAttribute('data-condition', properties.condition);\n\t }\n\t if (properties.layout != null) {\n\t script.setAttribute('data-layout', properties.layout);\n\t }\n\t else {\n\t script.setAttribute('data-layout', 'list');\n\t }\n\t if (properties.mobile != null) {\n\t script.setAttribute('data-mobile', properties.mobile.toString());\n\t }\n\t if (properties.tablet != null) {\n\t script.setAttribute('data-tablet', properties.tablet.toString());\n\t }\n\t if (properties.desktop != null) {\n\t script.setAttribute('data-desktop', properties.desktop.toString());\n\t }\n\t if (properties.fieldsToMatch != null) {\n\t _.each(properties.fieldsToMatch, function (fieldToMatch) {\n\t if (fieldToMatch.values) {\n\t script.setAttribute(\"data-field-\" + fieldToMatch.field.toLowerCase(), fieldToMatch.values.join(','));\n\t }\n\t else {\n\t script.setAttribute(\"data-field-\" + fieldToMatch.field.toLowerCase(), null);\n\t }\n\t });\n\t }\n\t return script;\n\t };\n\t return TemplateFromAScriptTag;\n\t}());\n\texports.TemplateFromAScriptTag = TemplateFromAScriptTag;\n\n\n/***/ },\n/* 118 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Template_1 = __webpack_require__(113);\n\tvar UnderscoreTemplate_1 = __webpack_require__(116);\n\tvar TemplateCache_1 = __webpack_require__(112);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\t/*\n\t * This renders the appropriate result template, found in TemplateCache,\n\t * according to its condition.\n\t *\n\t * For example, a result with a filetype of `YoutubeVideo` will get rendered\n\t * with the `YoutubeVideo` template, because the latter is registered with a\n\t * `condition` of `raw.filetype == 'YoutubeVideo'`.\n\t */\n\tvar DefaultResultTemplate = (function (_super) {\n\t __extends(DefaultResultTemplate, _super);\n\t function DefaultResultTemplate() {\n\t return _super.call(this) || this;\n\t }\n\t DefaultResultTemplate.prototype.instantiateToString = function (queryResult, instantiateOptions) {\n\t if (instantiateOptions === void 0) { instantiateOptions = {}; }\n\t Assert_1.Assert.exists(queryResult);\n\t var merged = new Template_1.DefaultInstantiateTemplateOptions().merge(instantiateOptions);\n\t queryResult = _.extend({}, queryResult, UnderscoreTemplate_1.UnderscoreTemplate.templateHelpers);\n\t // Put templates with conditions first\n\t var templates = _.chain(TemplateCache_1.TemplateCache.getDefaultTemplates())\n\t .map(function (name) { return TemplateCache_1.TemplateCache.getTemplate(name); })\n\t .sortBy(function (template) { return template.condition == null; })\n\t .sortBy(function (template) { return template.fieldsToMatch == null; })\n\t .value();\n\t // For the DefaultResultTemplate, we want to display card only in mobile\n\t // The default list template are not adapted to mobile.\n\t if (merged.responsiveComponents.isSmallScreenWidth()) {\n\t templates = _.filter(templates, function (tmpl) { return tmpl.layout == 'card'; });\n\t merged.currentLayout = 'card';\n\t this.layout = 'card';\n\t }\n\t else {\n\t this.layout = merged.currentLayout;\n\t }\n\t for (var i = 0; i < templates.length; i++) {\n\t var result = templates[i].instantiateToString(queryResult, merged);\n\t if (result != null) {\n\t return result;\n\t }\n\t }\n\t return this.getFallbackTemplate();\n\t };\n\t DefaultResultTemplate.prototype.getFields = function () {\n\t var defaultTemplates = _.map(TemplateCache_1.TemplateCache.getDefaultTemplates(), function (name) { return TemplateCache_1.TemplateCache.getTemplate(name); });\n\t return _.flatten(_.map(defaultTemplates, function (template) { return template.getFields(); }));\n\t };\n\t DefaultResultTemplate.prototype.getType = function () {\n\t return 'DefaultResultTemplate';\n\t };\n\t DefaultResultTemplate.prototype.getFallbackTemplate = function () {\n\t var titleContainer = Dom_1.$$('div', {\n\t className: 'coveo-title'\n\t });\n\t var resultLink = Dom_1.$$('a', {\n\t className: 'CoveoResultLink'\n\t });\n\t titleContainer.append(resultLink.el);\n\t var excerpt = Dom_1.$$('div', {\n\t className: 'CoveoExcerpt'\n\t });\n\t var resultContainer = Dom_1.$$('div');\n\t resultContainer.append(titleContainer.el);\n\t resultContainer.append(excerpt.el);\n\t return resultContainer.el.outerHTML;\n\t };\n\t return DefaultResultTemplate;\n\t}(Template_1.Template));\n\texports.DefaultResultTemplate = DefaultResultTemplate;\n\n\n/***/ },\n/* 119 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Template_1 = __webpack_require__(113);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar TemplateFromAScriptTag_1 = __webpack_require__(117);\n\tvar HtmlTemplate = (function (_super) {\n\t __extends(HtmlTemplate, _super);\n\t function HtmlTemplate(element) {\n\t var _this = _super.call(this, function () { return element.innerHTML; }) || this;\n\t _this.element = element;\n\t _this.templateFromAScriptTag = new TemplateFromAScriptTag_1.TemplateFromAScriptTag(_this, _this.element);\n\t return _this;\n\t }\n\t HtmlTemplate.prototype.toHtmlElement = function () {\n\t var script = this.templateFromAScriptTag.toHtmlElement();\n\t // We don't set the type attribute for 2 reasons:\n\t // 1) LockerService doesn't like when we set it.\n\t // 2) The HTML Template is the default one.\n\t return script;\n\t };\n\t HtmlTemplate.prototype.getType = function () {\n\t return 'HtmlTemplate';\n\t };\n\t HtmlTemplate.prototype.getFields = function () {\n\t return this.fields;\n\t };\n\t HtmlTemplate.create = function (element) {\n\t Assert_1.Assert.exists(element);\n\t return new HtmlTemplate(element);\n\t };\n\t HtmlTemplate.fromString = function (template, properties) {\n\t var script = TemplateFromAScriptTag_1.TemplateFromAScriptTag.fromString(template, properties);\n\t // We don't set the type attribute for 2 reasons:\n\t // 1) LockerService doesn't like when we set it.\n\t // 2) The HTML Template is the default one.\n\t return new HtmlTemplate(script);\n\t };\n\t return HtmlTemplate;\n\t}(Template_1.Template));\n\tHtmlTemplate.mimeTypes = [\n\t 'text/html',\n\t 'text/HTML'\n\t];\n\texports.HtmlTemplate = HtmlTemplate;\n\n\n/***/ },\n/* 120 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Template_1 = __webpack_require__(113);\n\tvar DefaultResultTemplate_1 = __webpack_require__(118);\n\tvar _ = __webpack_require__(16);\n\tvar TemplateList = (function (_super) {\n\t __extends(TemplateList, _super);\n\t function TemplateList(templates) {\n\t var _this = _super.call(this) || this;\n\t _this.templates = templates;\n\t return _this;\n\t }\n\t TemplateList.prototype.instantiateToString = function (object, instantiateOptions) {\n\t if (instantiateOptions === void 0) { instantiateOptions = {}; }\n\t var merged = new Template_1.DefaultInstantiateTemplateOptions().merge(instantiateOptions);\n\t for (var i = 0; i < this.templates.length; i++) {\n\t var result = this.templates[i].instantiateToString(object, merged);\n\t if (result != null) {\n\t return result;\n\t }\n\t }\n\t return new DefaultResultTemplate_1.DefaultResultTemplate().instantiateToString(object, instantiateOptions);\n\t };\n\t TemplateList.prototype.instantiateToElement = function (object, instantiateOptions) {\n\t if (instantiateOptions === void 0) { instantiateOptions = {}; }\n\t var merged = new Template_1.DefaultInstantiateTemplateOptions().merge(instantiateOptions);\n\t for (var i = 0; i < this.templates.length; i++) {\n\t var element = this.templates[i].instantiateToElement(object, merged);\n\t if (element != null) {\n\t return element;\n\t }\n\t }\n\t return new DefaultResultTemplate_1.DefaultResultTemplate().instantiateToElement(object, merged);\n\t };\n\t TemplateList.prototype.getFields = function () {\n\t return _.reduce(this.templates, function (fields, template) { return fields.concat(template.getFields()); }, []);\n\t };\n\t TemplateList.prototype.getType = function () {\n\t return 'TemplateList';\n\t };\n\t return TemplateList;\n\t}(Template_1.Template));\n\texports.TemplateList = TemplateList;\n\n\n/***/ },\n/* 121 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar NoopAnalyticsClient = (function () {\n\t function NoopAnalyticsClient() {\n\t this.isContextual = false;\n\t }\n\t NoopAnalyticsClient.prototype.isActivated = function () {\n\t return false;\n\t };\n\t NoopAnalyticsClient.prototype.getCurrentEventCause = function () {\n\t return this.currentEventCause;\n\t };\n\t NoopAnalyticsClient.prototype.getCurrentEventMeta = function () {\n\t return this.currentEventMeta;\n\t };\n\t NoopAnalyticsClient.prototype.logSearchEvent = function (actionCause, meta) {\n\t this.setNoopCauseAndMeta(actionCause.name, meta);\n\t };\n\t NoopAnalyticsClient.prototype.logSearchAsYouType = function (actionCause, meta) {\n\t this.setNoopCauseAndMeta(actionCause.name, meta);\n\t };\n\t NoopAnalyticsClient.prototype.logClickEvent = function (actionCause, meta, result, element) {\n\t this.setNoopCauseAndMeta(actionCause.name, meta);\n\t return Promise.resolve(null);\n\t };\n\t NoopAnalyticsClient.prototype.logCustomEvent = function (actionCause, meta, element) {\n\t this.setNoopCauseAndMeta(actionCause.name, meta);\n\t return Promise.resolve(null);\n\t };\n\t NoopAnalyticsClient.prototype.getTopQueries = function (params) {\n\t return new Promise(function (resolve, reject) {\n\t resolve([]);\n\t });\n\t };\n\t NoopAnalyticsClient.prototype.getCurrentVisitIdPromise = function () {\n\t return new Promise(function (resolve, reject) {\n\t resolve(null);\n\t });\n\t };\n\t NoopAnalyticsClient.prototype.getCurrentVisitId = function () {\n\t return null;\n\t };\n\t NoopAnalyticsClient.prototype.sendAllPendingEvents = function () {\n\t };\n\t NoopAnalyticsClient.prototype.cancelAllPendingEvents = function () {\n\t };\n\t NoopAnalyticsClient.prototype.warnAboutSearchEvent = function () {\n\t };\n\t NoopAnalyticsClient.prototype.getPendingSearchEvent = function () {\n\t return null;\n\t };\n\t NoopAnalyticsClient.prototype.setOriginContext = function (originContext) {\n\t };\n\t NoopAnalyticsClient.prototype.setNoopCauseAndMeta = function (cause, meta) {\n\t this.currentEventCause = cause;\n\t this.currentEventMeta = meta;\n\t };\n\t return NoopAnalyticsClient;\n\t}());\n\texports.NoopAnalyticsClient = NoopAnalyticsClient;\n\n\n/***/ },\n/* 122 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar LocalStorageUtils_1 = __webpack_require__(71);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar ResultListEvents_1 = __webpack_require__(51);\n\tvar DebugEvents_1 = __webpack_require__(45);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar SearchEndpoint_1 = __webpack_require__(11);\n\tvar Template_1 = __webpack_require__(113);\n\tvar RootComponent_1 = __webpack_require__(77);\n\tvar BaseComponent_1 = __webpack_require__(78);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar Globalize = __webpack_require__(30);\n\tvar KeyboardUtils_1 = __webpack_require__(70);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar _ = __webpack_require__(16);\n\tvar Debug = (function (_super) {\n\t __extends(Debug, _super);\n\t function Debug(element, queryController, options, modalBox) {\n\t if (modalBox === void 0) { modalBox = ExternalModulesShim_1.ModalBox; }\n\t var _this = _super.call(this, element, Debug.ID) || this;\n\t _this.element = element;\n\t _this.queryController = queryController;\n\t _this.options = options;\n\t _this.modalBox = modalBox;\n\t _this.debug = false;\n\t _this.highlightRecommendation = false;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Debug, options);\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.buildingQuery, function (e, args) {\n\t args.queryBuilder.enableDebug = _this.debug || args.queryBuilder.enableDebug;\n\t });\n\t Dom_1.$$(_this.element).on(ResultListEvents_1.ResultListEvents.newResultDisplayed, function (e, args) { return _this.handleNewResultDisplayed(args); });\n\t Dom_1.$$(_this.element).on(DebugEvents_1.DebugEvents.showDebugPanel, function (e, args) {\n\t _this.handleShowDebugPanel(args);\n\t });\n\t Dom_1.$$(_this.element).on(InitializationEvents_1.InitializationEvents.nuke, function () {\n\t _this.unbindEscapeEvent();\n\t });\n\t _this.localStorageDebug = new LocalStorageUtils_1.LocalStorageUtils('DebugPanel');\n\t _this.collapsedSections = _this.localStorageDebug.load() || [];\n\t return _this;\n\t }\n\t Debug.prototype.buildFieldsSection = function (result) {\n\t return this.fetchFields()\n\t .then(function (fieldDescriptions) {\n\t var fields = {};\n\t _.each(result.raw, function (value, key) {\n\t var fieldDescription = fieldDescriptions['@' + key];\n\t if (fieldDescription == null && key.match(/^sys/)) {\n\t fieldDescription = fieldDescriptions['@' + key.substr(3)];\n\t }\n\t if (fieldDescription == null) {\n\t fields['@' + key] = value;\n\t }\n\t else if (fieldDescription.fieldType == 'Date') {\n\t fields['@' + key] = new Date(value);\n\t }\n\t else if (fieldDescription.splitGroupByField && _.isString(value)) {\n\t fields['@' + key] = value.split(/\\s*;\\s*/);\n\t }\n\t else {\n\t fields['@' + key] = value;\n\t }\n\t });\n\t return fields;\n\t });\n\t };\n\t Debug.prototype.parseRankingInfo = function (value) {\n\t var _this = this;\n\t var rankingInfo = {};\n\t if (value) {\n\t var documentWeights = /Document weights:\\n((?:.)*?)\\n+/g.exec(value);\n\t var termsWeight = /Terms weights:\\n((?:.|\\n)*)\\n+/g.exec(value);\n\t var totalWeight = /Total weight: ([0-9]+)/g.exec(value);\n\t if (documentWeights && documentWeights[1]) {\n\t rankingInfo['Document weights'] = this.parseWeights(documentWeights[1]);\n\t }\n\t if (totalWeight && totalWeight[1]) {\n\t rankingInfo['Total weight'] = Number(totalWeight[1]);\n\t }\n\t if (termsWeight && termsWeight[1]) {\n\t var terms = StringUtils_1.StringUtils.match(termsWeight[1], /((?:[^:]+: [0-9]+, [0-9]+; )+)\\n((?:\\w+: [0-9]+; )+)/g);\n\t rankingInfo['Terms weights'] = _.object(_.map(terms, function (term) {\n\t var words = _.object(_.map(StringUtils_1.StringUtils.match(term[1], /([^:]+): ([0-9]+), ([0-9]+); /g), function (word) {\n\t return [\n\t word[1],\n\t {\n\t Correlation: Number(word[2]),\n\t 'TF-IDF': Number(word[3]),\n\t }\n\t ];\n\t }));\n\t var weights = _this.parseWeights(term[2]);\n\t return [\n\t _.keys(words).join(', '),\n\t {\n\t terms: words,\n\t Weights: weights\n\t }\n\t ];\n\t }));\n\t }\n\t }\n\t return rankingInfo;\n\t };\n\t Debug.prototype.buildStackPanel = function (stackDebug, results) {\n\t var _this = this;\n\t var body = Dom_1.Dom.createElement('div', { className: 'coveo-debug' });\n\t var keys = _.pairs(_.keys(stackDebug));\n\t keys = keys.sort(function (a, b) {\n\t var indexA = _.indexOf(Debug.customOrder, a[1]);\n\t var indexB = _.indexOf(Debug.customOrder, b[1]);\n\t if (indexA != -1 && indexB != -1) {\n\t return indexA - indexB;\n\t }\n\t if (indexA != -1) {\n\t return -1;\n\t }\n\t if (indexB != -1) {\n\t return 1;\n\t }\n\t return a[0] - b[0];\n\t });\n\t var json = {};\n\t _.forEach(keys, function (key) {\n\t var section = _this.buildSection(key[1]);\n\t var build = _this.buildStackPanelSection(stackDebug[key[1]], results);\n\t section.container.appendChild(build.section);\n\t if (build.json != null) {\n\t json[key[1]] = build.json;\n\t }\n\t body.appendChild(section.dom);\n\t });\n\t return { body: body, json: json };\n\t };\n\t Debug.prototype.debugInfo = function () {\n\t return null;\n\t };\n\t Debug.prototype.showDebugPanel = function (builder) {\n\t var _this = this;\n\t var build = builder();\n\t var modalbox = this.modalBox.open(build.body, {\n\t title: '',\n\t className: 'coveo-debug',\n\t titleClose: true,\n\t overlayClose: true,\n\t validation: function () {\n\t _this.unbindEscapeEvent();\n\t return true;\n\t }\n\t });\n\t this.bindEscapeEvent();\n\t var title = Dom_1.$$(modalbox.wrapper).find('.coveo-title');\n\t var search = this.buildSearchBox(build.body);\n\t var downloadLink = Dom_1.$$('a', { download: 'debug.json', 'href': this.downloadHref(build.json) }, 'Download');\n\t var bodyBuilder = function (results) {\n\t var build = builder(results);\n\t downloadLink.el.setAttribute('href', _this.downloadHref(build.json));\n\t return build.body;\n\t };\n\t title.appendChild(this.buildEnabledHighlightRecommendation());\n\t title.appendChild(this.buildEnableDebugCheckbox(build.body, search, bodyBuilder));\n\t title.appendChild(search);\n\t title.appendChild(downloadLink.el);\n\t };\n\t Debug.prototype.handleEscapeEvent = function (e) {\n\t if (e.keyCode == KeyboardUtils_1.KEYBOARD.ESCAPE) {\n\t if (this.modalBox) {\n\t this.modalBox.close();\n\t }\n\t }\n\t };\n\t Debug.prototype.bindEscapeEvent = function () {\n\t this.boundEscapeKey = this.handleEscapeEvent.bind(this);\n\t Dom_1.$$(document.body).on('keyup', this.boundEscapeKey);\n\t };\n\t Debug.prototype.unbindEscapeEvent = function () {\n\t if (this.boundEscapeKey) {\n\t Dom_1.$$(document.body).off('keyup', this.boundEscapeKey);\n\t }\n\t this.boundEscapeKey = null;\n\t };\n\t Debug.prototype.handleShowDebugPanel = function (info) {\n\t var _this = this;\n\t if (this.stackDebug == null) {\n\t setTimeout(function () {\n\t var stackDebug = _this.stackDebug;\n\t _this.showDebugPanel(function (results) { return _this.buildStackPanel(stackDebug, results); });\n\t _this.stackDebug = null;\n\t });\n\t this.stackDebug = {};\n\t }\n\t _.extend(this.stackDebug, info);\n\t };\n\t Debug.prototype.handleNewResultDisplayed = function (args) {\n\t var _this = this;\n\t if (args.item != null) {\n\t if (this.highlightRecommendation && args.result.isRecommendation) {\n\t Dom_1.$$(args.item).addClass('coveo-is-recommendation');\n\t }\n\t Dom_1.$$(args.item).on('dblclick', function (e) {\n\t _this.handleResultDoubleClick(e, args);\n\t });\n\t }\n\t };\n\t Debug.prototype.handleResultDoubleClick = function (e, args) {\n\t var _this = this;\n\t if (e.altKey) {\n\t var index_1 = args.result.index;\n\t var findResult_1 = function (results) { return results != null ? _.find(results.results, function (result) { return result.index == index_1; }) : args.result; };\n\t var template = args.item['template'];\n\t var debugPanel = {\n\t result: findResult_1,\n\t fields: function (results) { return _this.buildFieldsSection(findResult_1(results)); },\n\t rankingInfo: function (results) { return _this.buildRankingInfoSection(findResult_1(results)); },\n\t template: this.templateToJson(template),\n\t };\n\t this.handleShowDebugPanel(debugPanel);\n\t }\n\t };\n\t Debug.prototype.downloadHref = function (info) {\n\t return 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(info));\n\t };\n\t Debug.prototype.buildStackPanelSection = function (value, results) {\n\t if (value instanceof HTMLElement) {\n\t return { section: value };\n\t }\n\t else if (_.isFunction(value)) {\n\t return this.buildStackPanelSection(value(results), results);\n\t }\n\t var json = this.toJson(value);\n\t return { section: this.buildProperty(json), json: json };\n\t };\n\t Debug.prototype.buildSearchBox = function (body) {\n\t var _this = this;\n\t var dom = Dom_1.Dom.createElement('div', { className: 'coveo-debug-search' }, '');\n\t dom.onclick = function (e) {\n\t e.stopPropagation();\n\t };\n\t var lastSearch = '';\n\t var input = dom.querySelector('input');\n\t input.setAttribute('placeholder', 'Search in debug');\n\t input.onkeyup = function (e) {\n\t if (e == null || e.keyCode == 13) {\n\t var value = input.value.toLowerCase();\n\t if (lastSearch != value) {\n\t lastSearch = value;\n\t _this.search(value, body);\n\t }\n\t }\n\t };\n\t input.onchange = function () {\n\t var value = input.value.toLowerCase();\n\t if (lastSearch != value) {\n\t lastSearch = value;\n\t _this.search(value, body);\n\t }\n\t };\n\t return dom;\n\t };\n\t Debug.prototype.search = function (value, body) {\n\t var _this = this;\n\t if (_.isEmpty(value)) {\n\t Dom_1.$$(body).findAll('.coveo-search-match, .coveo-search-submatch').forEach(function (el) {\n\t Dom_1.$$(el).removeClass('coveo-search-match, coveo-search-submatch');\n\t });\n\t Dom_1.$$(body).removeClass('coveo-searching');\n\t }\n\t else {\n\t Dom_1.$$(body).addClass('coveo-searching-loading');\n\t setTimeout(function () {\n\t var rootProperties = Dom_1.$$(body).findAll('.coveo-section .coveo-section-container > .coveo-property');\n\t _.each(rootProperties, function (element) {\n\t _this.findInProperty(element, value);\n\t });\n\t Dom_1.$$(body).addClass('coveo-searching');\n\t Dom_1.$$(body).removeClass('coveo-searching-loading');\n\t });\n\t }\n\t };\n\t Debug.prototype.findInProperty = function (element, value) {\n\t var _this = this;\n\t var jElement = Dom_1.$$(element);\n\t var match = element['label'].indexOf(value) != -1;\n\t if (match) {\n\t this.highlightSearch(element['labelDom'], value);\n\t }\n\t else {\n\t this.removeHighlightSearch(element['labelDom']);\n\t }\n\t if (jElement.hasClass('coveo-property-object')) {\n\t jElement.toggleClass('coveo-search-match', match);\n\t var children = element['buildKeys']();\n\t var submatch_1 = false;\n\t _.each(children, function (child) {\n\t submatch_1 = _this.findInProperty(child, value) || submatch_1;\n\t });\n\t jElement.toggleClass('coveo-search-submatch', submatch_1);\n\t return match || submatch_1;\n\t }\n\t else {\n\t if (element['values'].indexOf(value) != -1) {\n\t this.highlightSearch(element['valueDom'], value);\n\t match = true;\n\t }\n\t else {\n\t this.removeHighlightSearch(element['valueDom']);\n\t }\n\t jElement.toggleClass('coveo-search-match', match);\n\t }\n\t return match;\n\t };\n\t Debug.prototype.buildEnableDebugCheckbox = function (body, search, bodyBuilder) {\n\t var _this = this;\n\t var dom = Dom_1.Dom.createElement('div', { className: 'coveo-enabled-debug' }, '');\n\t Dom_1.$$(dom).on('click', function (e) {\n\t e.stopPropagation();\n\t });\n\t var checkbox = Dom_1.$$(dom).find('input');\n\t if (this.debug) {\n\t checkbox.setAttribute('checked', 'checked');\n\t }\n\t checkbox.onchange = function () {\n\t _this.debug = !_this.debug;\n\t Dom_1.$$(_this.element).one([QueryEvents_1.QueryEvents.querySuccess, QueryEvents_1.QueryEvents.queryError], function (e, args) {\n\t Dom_1.$$(body).removeClass('coveo-debug-loading');\n\t Dom_1.$$(body).empty();\n\t Dom_1.$$(bodyBuilder(args.results)).children().forEach(function (child) {\n\t body.appendChild(child);\n\t });\n\t });\n\t _this.queryController.executeQuery({ closeModalBox: false });\n\t Dom_1.$$(body).addClass('coveo-debug-loading');\n\t var input = search.querySelector('input');\n\t input.value = '';\n\t input.onkeyup(null);\n\t };\n\t return dom;\n\t };\n\t Debug.prototype.buildEnabledHighlightRecommendation = function () {\n\t var _this = this;\n\t var dom = Dom_1.Dom.createElement('div', { className: 'coveo-enabled-highlight-recommendation' }, '');\n\t dom.onclick = function (e) {\n\t e.stopPropagation();\n\t };\n\t var checkbox = Dom_1.$$(dom).find('input');\n\t if (this.highlightRecommendation) {\n\t checkbox.setAttribute('checked', 'checked');\n\t }\n\t checkbox.onchange = function () {\n\t _this.highlightRecommendation = !_this.highlightRecommendation;\n\t _this.queryController.executeQuery({ closeModalBox: false });\n\t };\n\t return dom;\n\t };\n\t Debug.prototype.buildSection = function (id) {\n\t var _this = this;\n\t var dom = Dom_1.Dom.createElement('div', { className: 'coveo-section coveo-' + id + '-section' });\n\t var header = Dom_1.Dom.createElement('div', { className: 'coveo-section-header' });\n\t Dom_1.$$(header).text(id);\n\t dom.appendChild(header);\n\t var container = Dom_1.Dom.createElement('div', { className: 'coveo-section-container' });\n\t dom.appendChild(container);\n\t if (_.contains(this.collapsedSections, id)) {\n\t Dom_1.$$(dom).addClass('coveo-debug-collapsed');\n\t }\n\t header.onclick = function () {\n\t Dom_1.$$(dom).toggleClass('coveo-debug-collapsed');\n\t if (_.contains(_this.collapsedSections, id)) {\n\t _this.collapsedSections = _.without(_this.collapsedSections, id);\n\t }\n\t else {\n\t _this.collapsedSections.push(id);\n\t }\n\t _this.localStorageDebug.save(_this.collapsedSections);\n\t };\n\t return {\n\t dom: dom,\n\t header: header,\n\t container: container\n\t };\n\t };\n\t Debug.prototype.fetchFields = function () {\n\t var _this = this;\n\t if (this.fields == null) {\n\t return this.queryController.getEndpoint().listFields().then(function (fields) {\n\t _this.fields = {};\n\t fields.forEach(function (field) {\n\t _this.fields[field.name] = field;\n\t });\n\t return _this.fields;\n\t });\n\t }\n\t else {\n\t return Promise.resolve(this.fields);\n\t }\n\t };\n\t Debug.prototype.buildRankingInfoSection = function (result) {\n\t return result.rankingInfo && this.parseRankingInfo(result.rankingInfo);\n\t };\n\t Debug.prototype.parseWeights = function (value) {\n\t var listOfWeight = value.match(/(\\w+(?:\\s\\w+)*): ([-0-9]+)/g);\n\t return _.object(_.map(listOfWeight, function (weight) {\n\t var weightGroup = weight.match(/^(\\w+(?:\\s\\w+)*): ([-0-9]+)$/);\n\t return [weightGroup[1], Number(weightGroup[2])];\n\t }));\n\t };\n\t Debug.prototype.buildProperty = function (value, label) {\n\t if (value instanceof Promise) {\n\t return this.buildPromise(value, label);\n\t }\n\t else if ((_.isArray(value) || (_.isObject(value))) && !_.isString(value)) {\n\t return this.buildObjectProperty(value, label);\n\t }\n\t else {\n\t return this.buildBasicProperty(value, label);\n\t }\n\t };\n\t Debug.prototype.buildPromise = function (promise, label) {\n\t var _this = this;\n\t var dom = document.createElement('div');\n\t dom.className = 'coveo-property coveo-property-promise';\n\t promise.then(function (value) {\n\t var resolvedDom = _this.buildProperty(value, label);\n\t Dom_1.$$(dom).replaceWith(resolvedDom);\n\t });\n\t return dom;\n\t };\n\t Debug.prototype.buildObjectProperty = function (object, label) {\n\t var _this = this;\n\t var dom = document.createElement('div');\n\t dom.className = 'coveo-property coveo-property-object';\n\t var valueContainer = document.createElement('div');\n\t valueContainer.className = 'coveo-property-value';\n\t var keys = _.keys(object);\n\t if (!_.isArray(object)) {\n\t keys.sort();\n\t }\n\t var children;\n\t var buildKeys = function () {\n\t if (children == null) {\n\t children = [];\n\t _.each(keys, function (key) {\n\t var property = _this.buildProperty(object[key], key);\n\t if (property != null) {\n\t children.push(property);\n\t valueContainer.appendChild(property);\n\t }\n\t });\n\t }\n\t return children;\n\t };\n\t dom['buildKeys'] = buildKeys;\n\t if (label != null) {\n\t var labelDom = document.createElement('div');\n\t labelDom.className = 'coveo-property-label';\n\t labelDom.appendChild(document.createTextNode(label));\n\t dom['labelDom'] = labelDom;\n\t dom.appendChild(labelDom);\n\t if (keys.length != 0) {\n\t dom.className += ' coveo-collapsible';\n\t labelDom.onclick = function () {\n\t buildKeys();\n\t var className = dom.className.split(/\\s+/);\n\t if (_.contains(className, 'coveo-expanded')) {\n\t className = _.without(className, 'coveo-expanded');\n\t }\n\t else {\n\t className.push('coveo-expanded');\n\t }\n\t dom.className = className.join(' ');\n\t };\n\t }\n\t }\n\t else {\n\t buildKeys();\n\t }\n\t if (keys.length == 0) {\n\t var className = _.without(dom.className.split(/\\s+/), 'coveo-property-object');\n\t className.push('coveo-property-basic');\n\t dom.className = className.join(' ');\n\t if (_.isArray(object)) {\n\t valueContainer.innerHTML = '[]';\n\t }\n\t else {\n\t valueContainer.innerHTML = '{}';\n\t }\n\t dom['values'] = '';\n\t }\n\t dom['label'] = label != null ? label.toLowerCase() : '';\n\t dom.appendChild(valueContainer);\n\t return dom;\n\t };\n\t Debug.prototype.buildBasicProperty = function (value, label) {\n\t var _this = this;\n\t var dom = document.createElement('div');\n\t dom.className = 'coveo-property coveo-property-basic';\n\t if (label != null) {\n\t var labelDom = document.createElement('div');\n\t labelDom.className = 'coveo-property-label';\n\t labelDom.appendChild(document.createTextNode(label));\n\t dom.appendChild(labelDom);\n\t dom['labelDom'] = labelDom;\n\t }\n\t var stringValue = value != null ? value.toString() : String(value);\n\t if (value != null && value['ref'] != null) {\n\t value = value['ref'];\n\t }\n\t var valueDom = document.createElement('div');\n\t valueDom.appendChild(document.createTextNode(stringValue));\n\t valueDom.ondblclick = function () {\n\t _this.selectElementText(valueDom);\n\t };\n\t dom.appendChild(valueDom);\n\t dom['valueDom'] = valueDom;\n\t var className = ['coveo-property-value'];\n\t if (_.isString(value)) {\n\t className.push('coveo-property-value-string');\n\t }\n\t if (_.isNull(value) || _.isUndefined(value)) {\n\t className.push('coveo-property-value-null');\n\t }\n\t if (_.isNumber(value)) {\n\t className.push('coveo-property-value-number');\n\t }\n\t if (_.isBoolean(value)) {\n\t className.push('coveo-property-value-boolean');\n\t }\n\t if (_.isDate(value)) {\n\t className.push('coveo-property-value-date');\n\t }\n\t if (_.isObject(value)) {\n\t className.push('coveo-property-value-object');\n\t }\n\t if (_.isArray(value)) {\n\t className.push('coveo-property-value-array');\n\t }\n\t valueDom.className = className.join(' ');\n\t dom['label'] = label != null ? label.toLowerCase() : '';\n\t dom['values'] = stringValue.toLowerCase();\n\t return dom;\n\t };\n\t Debug.prototype.toJson = function (value, depth, done) {\n\t var _this = this;\n\t if (depth === void 0) { depth = 0; }\n\t if (done === void 0) { done = []; }\n\t if (value instanceof BaseComponent_1.BaseComponent || value instanceof SearchEndpoint_1.SearchEndpoint) {\n\t return this.componentToJson(value, depth);\n\t }\n\t if (value instanceof HTMLElement) {\n\t return this.htmlToJson(value);\n\t }\n\t if (value instanceof Template_1.Template) {\n\t return this.templateToJson(value);\n\t }\n\t if (value instanceof Promise) {\n\t return value.then(function (value) {\n\t return _this.toJson(value, depth, done);\n\t });\n\t }\n\t if (value == window) {\n\t return this.toJsonRef(value);\n\t }\n\t if (_.isArray(value) || _.isObject(value)) {\n\t if (_.contains(done, value)) {\n\t return this.toJsonRef(value, '< RECURSIVE >');\n\t }\n\t else if (depth >= Debug.maxDepth) {\n\t return this.toJsonRef(value);\n\t }\n\t else if (_.isArray(value)) {\n\t return _.map(value, function (subValue, key) { return _this.toJson(subValue, depth + 1, done.concat([value])); });\n\t }\n\t else if (_.isDate(value)) {\n\t return this.toJsonRef(value, Globalize.format(value, 'F'));\n\t }\n\t else {\n\t var result_1 = {};\n\t _.each(value, function (subValue, key) {\n\t result_1[key] = _this.toJson(subValue, depth + 1, done.concat([value]));\n\t });\n\t result_1['ref'];\n\t return result_1;\n\t }\n\t }\n\t return value;\n\t };\n\t Debug.prototype.toJsonRef = function (value, stringValue) {\n\t stringValue = new String(stringValue || value);\n\t stringValue['ref'] = value;\n\t return stringValue;\n\t };\n\t Debug.prototype.componentToJson = function (value, depth) {\n\t if (depth === void 0) { depth = 0; }\n\t var options = _.keys(value['options']);\n\t if (options.length > 0) {\n\t return this.toJson(value['options'], depth);\n\t }\n\t else {\n\t return this.toJsonRef(value['options'], new String('No options'));\n\t }\n\t };\n\t Debug.prototype.htmlToJson = function (value) {\n\t if (value == null) {\n\t return undefined;\n\t }\n\t return {\n\t tagName: value.tagName,\n\t id: value.id,\n\t classList: value.className.split(/\\s+/)\n\t };\n\t };\n\t Debug.prototype.templateToJson = function (template) {\n\t if (template == null) {\n\t return null;\n\t }\n\t var element = template['element'];\n\t var templateObject = {\n\t type: template.getType(),\n\t };\n\t if (element != null) {\n\t templateObject.id = element.id;\n\t templateObject.condition = element.attributes['data-condition'];\n\t templateObject.content = element.innerText;\n\t }\n\t return templateObject;\n\t };\n\t Debug.prototype.selectElementText = function (el) {\n\t if (window.getSelection && document.createRange) {\n\t var selection = window.getSelection();\n\t var range = document.createRange();\n\t range.selectNodeContents(el);\n\t selection.removeAllRanges();\n\t selection.addRange(range);\n\t }\n\t else if ('createTextRange' in document.body) {\n\t var textRange = document.body['createTextRange']();\n\t textRange.moveToElementText(el);\n\t textRange.select();\n\t }\n\t };\n\t Debug.prototype.highlightSearch = function (element, search) {\n\t if (element != null) {\n\t var match = element.innerText.split(new RegExp('(?=' + StringUtils_1.StringUtils.regexEncode(search) + ')', 'gi'));\n\t element.innerHTML = '';\n\t match.forEach(function (value) {\n\t var regex = new RegExp('(' + StringUtils_1.StringUtils.regexEncode(search) + ')', 'i');\n\t var group = value.match(regex);\n\t var span;\n\t if (group != null) {\n\t span = Dom_1.Dom.createElement('span', { className: 'coveo-debug-highlight' });\n\t span.appendChild(document.createTextNode(group[1]));\n\t element.appendChild(span);\n\t span = Dom_1.Dom.createElement('span');\n\t span.appendChild(document.createTextNode(value.substr(group[1].length)));\n\t element.appendChild(span);\n\t }\n\t else {\n\t span = Dom_1.Dom.createElement('span');\n\t span.appendChild(document.createTextNode(value));\n\t element.appendChild(span);\n\t }\n\t });\n\t }\n\t };\n\t Debug.prototype.removeHighlightSearch = function (element) {\n\t if (element != null) {\n\t element.innerHTML = element.innerText;\n\t }\n\t };\n\t return Debug;\n\t}(RootComponent_1.RootComponent));\n\tDebug.ID = 'Debug';\n\tDebug.options = {\n\t enableDebug: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false })\n\t};\n\tDebug.customOrder = ['error', 'queryDuration', 'result', 'fields', 'rankingInfo', 'template', 'query', 'results', 'state'];\n\tDebug.durationKeys = ['indexDuration', 'proxyDuration', 'clientDuration', 'duration'];\n\tDebug.maxDepth = 10;\n\texports.Debug = Debug;\n\n\n/***/ },\n/* 123 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;;(function () {\n\t\t'use strict';\n\t\n\t\t/**\n\t\t * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.\n\t\t *\n\t\t * @codingstandard ftlabs-jsv2\n\t\t * @copyright The Financial Times Limited [All Rights Reserved]\n\t\t * @license MIT License (see LICENSE.txt)\n\t\t */\n\t\n\t\t/*jslint browser:true, node:true*/\n\t\t/*global define, Event, Node*/\n\t\n\t\n\t\t/**\n\t\t * Instantiate fast-clicking listeners on the specified layer.\n\t\t *\n\t\t * @constructor\n\t\t * @param {Element} layer The layer to listen on\n\t\t * @param {Object} [options={}] The options to override the defaults\n\t\t */\n\t\tfunction FastClick(layer, options) {\n\t\t\tvar oldOnClick;\n\t\n\t\t\toptions = options || {};\n\t\n\t\t\t/**\n\t\t\t * Whether a click is currently being tracked.\n\t\t\t *\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\tthis.trackingClick = false;\n\t\n\t\n\t\t\t/**\n\t\t\t * Timestamp for when click tracking started.\n\t\t\t *\n\t\t\t * @type number\n\t\t\t */\n\t\t\tthis.trackingClickStart = 0;\n\t\n\t\n\t\t\t/**\n\t\t\t * The element being tracked for a click.\n\t\t\t *\n\t\t\t * @type EventTarget\n\t\t\t */\n\t\t\tthis.targetElement = null;\n\t\n\t\n\t\t\t/**\n\t\t\t * X-coordinate of touch start event.\n\t\t\t *\n\t\t\t * @type number\n\t\t\t */\n\t\t\tthis.touchStartX = 0;\n\t\n\t\n\t\t\t/**\n\t\t\t * Y-coordinate of touch start event.\n\t\t\t *\n\t\t\t * @type number\n\t\t\t */\n\t\t\tthis.touchStartY = 0;\n\t\n\t\n\t\t\t/**\n\t\t\t * ID of the last touch, retrieved from Touch.identifier.\n\t\t\t *\n\t\t\t * @type number\n\t\t\t */\n\t\t\tthis.lastTouchIdentifier = 0;\n\t\n\t\n\t\t\t/**\n\t\t\t * Touchmove boundary, beyond which a click will be cancelled.\n\t\t\t *\n\t\t\t * @type number\n\t\t\t */\n\t\t\tthis.touchBoundary = options.touchBoundary || 10;\n\t\n\t\n\t\t\t/**\n\t\t\t * The FastClick layer.\n\t\t\t *\n\t\t\t * @type Element\n\t\t\t */\n\t\t\tthis.layer = layer;\n\t\n\t\t\t/**\n\t\t\t * The minimum time between tap(touchstart and touchend) events\n\t\t\t *\n\t\t\t * @type number\n\t\t\t */\n\t\t\tthis.tapDelay = options.tapDelay || 200;\n\t\n\t\t\t/**\n\t\t\t * The maximum time for a tap\n\t\t\t *\n\t\t\t * @type number\n\t\t\t */\n\t\t\tthis.tapTimeout = options.tapTimeout || 700;\n\t\n\t\t\tif (FastClick.notNeeded(layer)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Some old versions of Android don't have Function.prototype.bind\n\t\t\tfunction bind(method, context) {\n\t\t\t\treturn function() { return method.apply(context, arguments); };\n\t\t\t}\n\t\n\t\n\t\t\tvar methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];\n\t\t\tvar context = this;\n\t\t\tfor (var i = 0, l = methods.length; i < l; i++) {\n\t\t\t\tcontext[methods[i]] = bind(context[methods[i]], context);\n\t\t\t}\n\t\n\t\t\t// Set up event handlers as required\n\t\t\tif (deviceIsAndroid) {\n\t\t\t\tlayer.addEventListener('mouseover', this.onMouse, true);\n\t\t\t\tlayer.addEventListener('mousedown', this.onMouse, true);\n\t\t\t\tlayer.addEventListener('mouseup', this.onMouse, true);\n\t\t\t}\n\t\n\t\t\tlayer.addEventListener('click', this.onClick, true);\n\t\t\tlayer.addEventListener('touchstart', this.onTouchStart, false);\n\t\t\tlayer.addEventListener('touchmove', this.onTouchMove, false);\n\t\t\tlayer.addEventListener('touchend', this.onTouchEnd, false);\n\t\t\tlayer.addEventListener('touchcancel', this.onTouchCancel, false);\n\t\n\t\t\t// Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)\n\t\t\t// which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick\n\t\t\t// layer when they are cancelled.\n\t\t\tif (!Event.prototype.stopImmediatePropagation) {\n\t\t\t\tlayer.removeEventListener = function(type, callback, capture) {\n\t\t\t\t\tvar rmv = Node.prototype.removeEventListener;\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\trmv.call(layer, type, callback.hijacked || callback, capture);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trmv.call(layer, type, callback, capture);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\tlayer.addEventListener = function(type, callback, capture) {\n\t\t\t\t\tvar adv = Node.prototype.addEventListener;\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\tadv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) {\n\t\t\t\t\t\t\tif (!event.propagationStopped) {\n\t\t\t\t\t\t\t\tcallback(event);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}), capture);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadv.call(layer, type, callback, capture);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\n\t\t\t// If a handler is already declared in the element's onclick attribute, it will be fired before\n\t\t\t// FastClick's onClick handler. Fix this by pulling out the user-defined handler function and\n\t\t\t// adding it as listener.\n\t\t\tif (typeof layer.onclick === 'function') {\n\t\n\t\t\t\t// Android browser on at least 3.2 requires a new reference to the function in layer.onclick\n\t\t\t\t// - the old one won't work if passed to addEventListener directly.\n\t\t\t\toldOnClick = layer.onclick;\n\t\t\t\tlayer.addEventListener('click', function(event) {\n\t\t\t\t\toldOnClick(event);\n\t\t\t\t}, false);\n\t\t\t\tlayer.onclick = null;\n\t\t\t}\n\t\t}\n\t\n\t\t/**\n\t\t* Windows Phone 8.1 fakes user agent string to look like Android and iPhone.\n\t\t*\n\t\t* @type boolean\n\t\t*/\n\t\tvar deviceIsWindowsPhone = navigator.userAgent.indexOf(\"Windows Phone\") >= 0;\n\t\n\t\t/**\n\t\t * Android requires exceptions.\n\t\t *\n\t\t * @type boolean\n\t\t */\n\t\tvar deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone;\n\t\n\t\n\t\t/**\n\t\t * iOS requires exceptions.\n\t\t *\n\t\t * @type boolean\n\t\t */\n\t\tvar deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;\n\t\n\t\n\t\t/**\n\t\t * iOS 4 requires an exception for select elements.\n\t\t *\n\t\t * @type boolean\n\t\t */\n\t\tvar deviceIsIOS4 = deviceIsIOS && (/OS 4_\\d(_\\d)?/).test(navigator.userAgent);\n\t\n\t\n\t\t/**\n\t\t * iOS 6.0-7.* requires the target element to be manually derived\n\t\t *\n\t\t * @type boolean\n\t\t */\n\t\tvar deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\\d/).test(navigator.userAgent);\n\t\n\t\t/**\n\t\t * BlackBerry requires exceptions.\n\t\t *\n\t\t * @type boolean\n\t\t */\n\t\tvar deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0;\n\t\n\t\t/**\n\t\t * Determine whether a given element requires a native click.\n\t\t *\n\t\t * @param {EventTarget|Element} target Target DOM element\n\t\t * @returns {boolean} Returns true if the element needs a native click\n\t\t */\n\t\tFastClick.prototype.needsClick = function(target) {\n\t\t\tswitch (target.nodeName.toLowerCase()) {\n\t\n\t\t\t// Don't send a synthetic click to disabled inputs (issue #62)\n\t\t\tcase 'button':\n\t\t\tcase 'select':\n\t\t\tcase 'textarea':\n\t\t\t\tif (target.disabled) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\n\t\t\t\tbreak;\n\t\t\tcase 'input':\n\t\n\t\t\t\t// File inputs need real clicks on iOS 6 due to a browser bug (issue #68)\n\t\t\t\tif ((deviceIsIOS && target.type === 'file') || target.disabled) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\n\t\t\t\tbreak;\n\t\t\tcase 'label':\n\t\t\tcase 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames\n\t\t\tcase 'video':\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\treturn (/\\bneedsclick\\b/).test(target.className);\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Determine whether a given element requires a call to focus to simulate click into element.\n\t\t *\n\t\t * @param {EventTarget|Element} target Target DOM element\n\t\t * @returns {boolean} Returns true if the element requires a call to focus to simulate native click.\n\t\t */\n\t\tFastClick.prototype.needsFocus = function(target) {\n\t\t\tswitch (target.nodeName.toLowerCase()) {\n\t\t\tcase 'textarea':\n\t\t\t\treturn true;\n\t\t\tcase 'select':\n\t\t\t\treturn !deviceIsAndroid;\n\t\t\tcase 'input':\n\t\t\t\tswitch (target.type) {\n\t\t\t\tcase 'button':\n\t\t\t\tcase 'checkbox':\n\t\t\t\tcase 'file':\n\t\t\t\tcase 'image':\n\t\t\t\tcase 'radio':\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\t// No point in attempting to focus disabled inputs\n\t\t\t\treturn !target.disabled && !target.readOnly;\n\t\t\tdefault:\n\t\t\t\treturn (/\\bneedsfocus\\b/).test(target.className);\n\t\t\t}\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Send a click event to the specified element.\n\t\t *\n\t\t * @param {EventTarget|Element} targetElement\n\t\t * @param {Event} event\n\t\t */\n\t\tFastClick.prototype.sendClick = function(targetElement, event) {\n\t\t\tvar clickEvent, touch;\n\t\n\t\t\t// On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24)\n\t\t\tif (document.activeElement && document.activeElement !== targetElement) {\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\t\n\t\t\ttouch = event.changedTouches[0];\n\t\n\t\t\t// Synthesise a click event, with an extra attribute so it can be tracked\n\t\t\tclickEvent = document.createEvent('MouseEvents');\n\t\t\tclickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n\t\t\tclickEvent.forwardedTouchEvent = true;\n\t\t\ttargetElement.dispatchEvent(clickEvent);\n\t\t};\n\t\n\t\tFastClick.prototype.determineEventType = function(targetElement) {\n\t\n\t\t\t//Issue #159: Android Chrome Select Box does not open with a synthetic click event\n\t\t\tif (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') {\n\t\t\t\treturn 'mousedown';\n\t\t\t}\n\t\n\t\t\treturn 'click';\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * @param {EventTarget|Element} targetElement\n\t\t */\n\t\tFastClick.prototype.focus = function(targetElement) {\n\t\t\tvar length;\n\t\n\t\t\t// Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.\n\t\t\tif (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {\n\t\t\t\tlength = targetElement.value.length;\n\t\t\t\ttargetElement.setSelectionRange(length, length);\n\t\t\t} else {\n\t\t\t\ttargetElement.focus();\n\t\t\t}\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it.\n\t\t *\n\t\t * @param {EventTarget|Element} targetElement\n\t\t */\n\t\tFastClick.prototype.updateScrollParent = function(targetElement) {\n\t\t\tvar scrollParent, parentElement;\n\t\n\t\t\tscrollParent = targetElement.fastClickScrollParent;\n\t\n\t\t\t// Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the\n\t\t\t// target element was moved to another parent.\n\t\t\tif (!scrollParent || !scrollParent.contains(targetElement)) {\n\t\t\t\tparentElement = targetElement;\n\t\t\t\tdo {\n\t\t\t\t\tif (parentElement.scrollHeight > parentElement.offsetHeight) {\n\t\t\t\t\t\tscrollParent = parentElement;\n\t\t\t\t\t\ttargetElement.fastClickScrollParent = parentElement;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tparentElement = parentElement.parentElement;\n\t\t\t\t} while (parentElement);\n\t\t\t}\n\t\n\t\t\t// Always update the scroll top tracker if possible.\n\t\t\tif (scrollParent) {\n\t\t\t\tscrollParent.fastClickLastScrollTop = scrollParent.scrollTop;\n\t\t\t}\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * @param {EventTarget} targetElement\n\t\t * @returns {Element|EventTarget}\n\t\t */\n\t\tFastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) {\n\t\n\t\t\t// On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node.\n\t\t\tif (eventTarget.nodeType === Node.TEXT_NODE) {\n\t\t\t\treturn eventTarget.parentNode;\n\t\t\t}\n\t\n\t\t\treturn eventTarget;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * On touch start, record the position and scroll offset.\n\t\t *\n\t\t * @param {Event} event\n\t\t * @returns {boolean}\n\t\t */\n\t\tFastClick.prototype.onTouchStart = function(event) {\n\t\t\tvar targetElement, touch, selection;\n\t\n\t\t\t// Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111).\n\t\t\tif (event.targetTouches.length > 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\ttargetElement = this.getTargetElementFromEventTarget(event.target);\n\t\t\ttouch = event.targetTouches[0];\n\t\n\t\t\tif (deviceIsIOS) {\n\t\n\t\t\t\t// Only trusted events will deselect text on iOS (issue #49)\n\t\t\t\tselection = window.getSelection();\n\t\t\t\tif (selection.rangeCount && !selection.isCollapsed) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\n\t\t\t\tif (!deviceIsIOS4) {\n\t\n\t\t\t\t\t// Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23):\n\t\t\t\t\t// when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched\n\t\t\t\t\t// with the same identifier as the touch event that previously triggered the click that triggered the alert.\n\t\t\t\t\t// Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an\n\t\t\t\t\t// immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.\n\t\t\t\t\t// Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string,\n\t\t\t\t\t// which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long,\n\t\t\t\t\t// random integers, it's safe to to continue if the identifier is 0 here.\n\t\t\t\t\tif (touch.identifier && touch.identifier === this.lastTouchIdentifier) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tthis.lastTouchIdentifier = touch.identifier;\n\t\n\t\t\t\t\t// If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and:\n\t\t\t\t\t// 1) the user does a fling scroll on the scrollable layer\n\t\t\t\t\t// 2) the user stops the fling scroll with another tap\n\t\t\t\t\t// then the event.target of the last 'touchend' event will be the element that was under the user's finger\n\t\t\t\t\t// when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check\n\t\t\t\t\t// is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42).\n\t\t\t\t\tthis.updateScrollParent(targetElement);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.trackingClick = true;\n\t\t\tthis.trackingClickStart = event.timeStamp;\n\t\t\tthis.targetElement = targetElement;\n\t\n\t\t\tthis.touchStartX = touch.pageX;\n\t\t\tthis.touchStartY = touch.pageY;\n\t\n\t\t\t// Prevent phantom clicks on fast double-tap (issue #36)\n\t\t\tif ((event.timeStamp - this.lastClickTime) < this.tapDelay) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Based on a touchmove event object, check whether the touch has moved past a boundary since it started.\n\t\t *\n\t\t * @param {Event} event\n\t\t * @returns {boolean}\n\t\t */\n\t\tFastClick.prototype.touchHasMoved = function(event) {\n\t\t\tvar touch = event.changedTouches[0], boundary = this.touchBoundary;\n\t\n\t\t\tif (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\treturn false;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Update the last position.\n\t\t *\n\t\t * @param {Event} event\n\t\t * @returns {boolean}\n\t\t */\n\t\tFastClick.prototype.onTouchMove = function(event) {\n\t\t\tif (!this.trackingClick) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// If the touch has moved, cancel the click tracking\n\t\t\tif (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) {\n\t\t\t\tthis.trackingClick = false;\n\t\t\t\tthis.targetElement = null;\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Attempt to find the labelled control for the given label element.\n\t\t *\n\t\t * @param {EventTarget|HTMLLabelElement} labelElement\n\t\t * @returns {Element|null}\n\t\t */\n\t\tFastClick.prototype.findControl = function(labelElement) {\n\t\n\t\t\t// Fast path for newer browsers supporting the HTML5 control attribute\n\t\t\tif (labelElement.control !== undefined) {\n\t\t\t\treturn labelElement.control;\n\t\t\t}\n\t\n\t\t\t// All browsers under test that support touch events also support the HTML5 htmlFor attribute\n\t\t\tif (labelElement.htmlFor) {\n\t\t\t\treturn document.getElementById(labelElement.htmlFor);\n\t\t\t}\n\t\n\t\t\t// If no for attribute exists, attempt to retrieve the first labellable descendant element\n\t\t\t// the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label\n\t\t\treturn labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea');\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * On touch end, determine whether to send a click event at once.\n\t\t *\n\t\t * @param {Event} event\n\t\t * @returns {boolean}\n\t\t */\n\t\tFastClick.prototype.onTouchEnd = function(event) {\n\t\t\tvar forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement;\n\t\n\t\t\tif (!this.trackingClick) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// Prevent phantom clicks on fast double-tap (issue #36)\n\t\t\tif ((event.timeStamp - this.lastClickTime) < this.tapDelay) {\n\t\t\t\tthis.cancelNextClick = true;\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\tif ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// Reset to prevent wrong click cancel on input (issue #156).\n\t\t\tthis.cancelNextClick = false;\n\t\n\t\t\tthis.lastClickTime = event.timeStamp;\n\t\n\t\t\ttrackingClickStart = this.trackingClickStart;\n\t\t\tthis.trackingClick = false;\n\t\t\tthis.trackingClickStart = 0;\n\t\n\t\t\t// On some iOS devices, the targetElement supplied with the event is invalid if the layer\n\t\t\t// is performing a transition or scroll, and has to be re-detected manually. Note that\n\t\t\t// for this to function correctly, it must be called *after* the event target is checked!\n\t\t\t// See issue #57; also filed as rdar://13048589 .\n\t\t\tif (deviceIsIOSWithBadTarget) {\n\t\t\t\ttouch = event.changedTouches[0];\n\t\n\t\t\t\t// In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null\n\t\t\t\ttargetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement;\n\t\t\t\ttargetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent;\n\t\t\t}\n\t\n\t\t\ttargetTagName = targetElement.tagName.toLowerCase();\n\t\t\tif (targetTagName === 'label') {\n\t\t\t\tforElement = this.findControl(targetElement);\n\t\t\t\tif (forElement) {\n\t\t\t\t\tthis.focus(targetElement);\n\t\t\t\t\tif (deviceIsAndroid) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ttargetElement = forElement;\n\t\t\t\t}\n\t\t\t} else if (this.needsFocus(targetElement)) {\n\t\n\t\t\t\t// Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through.\n\t\t\t\t// Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37).\n\t\t\t\tif ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {\n\t\t\t\t\tthis.targetElement = null;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\tthis.focus(targetElement);\n\t\t\t\tthis.sendClick(targetElement, event);\n\t\n\t\t\t\t// Select elements need the event to go through on iOS 4, otherwise the selector menu won't open.\n\t\t\t\t// Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others)\n\t\t\t\tif (!deviceIsIOS || targetTagName !== 'select') {\n\t\t\t\t\tthis.targetElement = null;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tif (deviceIsIOS && !deviceIsIOS4) {\n\t\n\t\t\t\t// Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled\n\t\t\t\t// and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42).\n\t\t\t\tscrollParent = targetElement.fastClickScrollParent;\n\t\t\t\tif (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Prevent the actual click from going though - unless the target node is marked as requiring\n\t\t\t// real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted.\n\t\t\tif (!this.needsClick(targetElement)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.sendClick(targetElement, event);\n\t\t\t}\n\t\n\t\t\treturn false;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * On touch cancel, stop tracking the click.\n\t\t *\n\t\t * @returns {void}\n\t\t */\n\t\tFastClick.prototype.onTouchCancel = function() {\n\t\t\tthis.trackingClick = false;\n\t\t\tthis.targetElement = null;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Determine mouse events which should be permitted.\n\t\t *\n\t\t * @param {Event} event\n\t\t * @returns {boolean}\n\t\t */\n\t\tFastClick.prototype.onMouse = function(event) {\n\t\n\t\t\t// If a target element was never set (because a touch event was never fired) allow the event\n\t\t\tif (!this.targetElement) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\tif (event.forwardedTouchEvent) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// Programmatically generated events targeting a specific element should be permitted\n\t\t\tif (!event.cancelable) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// Derive and check the target element to see whether the mouse event needs to be permitted;\n\t\t\t// unless explicitly enabled, prevent non-touch click events from triggering actions,\n\t\t\t// to prevent ghost/doubleclicks.\n\t\t\tif (!this.needsClick(this.targetElement) || this.cancelNextClick) {\n\t\n\t\t\t\t// Prevent any user-added listeners declared on FastClick element from being fired.\n\t\t\t\tif (event.stopImmediatePropagation) {\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t} else {\n\t\n\t\t\t\t\t// Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)\n\t\t\t\t\tevent.propagationStopped = true;\n\t\t\t\t}\n\t\n\t\t\t\t// Cancel the event\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// If the mouse event is permitted, return true for the action to go through.\n\t\t\treturn true;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * On actual clicks, determine whether this is a touch-generated click, a click action occurring\n\t\t * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or\n\t\t * an actual click which should be permitted.\n\t\t *\n\t\t * @param {Event} event\n\t\t * @returns {boolean}\n\t\t */\n\t\tFastClick.prototype.onClick = function(event) {\n\t\t\tvar permitted;\n\t\n\t\t\t// It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early.\n\t\t\tif (this.trackingClick) {\n\t\t\t\tthis.targetElement = null;\n\t\t\t\tthis.trackingClick = false;\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target.\n\t\t\tif (event.target.type === 'submit' && event.detail === 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\tpermitted = this.onMouse(event);\n\t\n\t\t\t// Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through.\n\t\t\tif (!permitted) {\n\t\t\t\tthis.targetElement = null;\n\t\t\t}\n\t\n\t\t\t// If clicks are permitted, return true for the action to go through.\n\t\t\treturn permitted;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Remove all FastClick's event listeners.\n\t\t *\n\t\t * @returns {void}\n\t\t */\n\t\tFastClick.prototype.destroy = function() {\n\t\t\tvar layer = this.layer;\n\t\n\t\t\tif (deviceIsAndroid) {\n\t\t\t\tlayer.removeEventListener('mouseover', this.onMouse, true);\n\t\t\t\tlayer.removeEventListener('mousedown', this.onMouse, true);\n\t\t\t\tlayer.removeEventListener('mouseup', this.onMouse, true);\n\t\t\t}\n\t\n\t\t\tlayer.removeEventListener('click', this.onClick, true);\n\t\t\tlayer.removeEventListener('touchstart', this.onTouchStart, false);\n\t\t\tlayer.removeEventListener('touchmove', this.onTouchMove, false);\n\t\t\tlayer.removeEventListener('touchend', this.onTouchEnd, false);\n\t\t\tlayer.removeEventListener('touchcancel', this.onTouchCancel, false);\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Check whether FastClick is needed.\n\t\t *\n\t\t * @param {Element} layer The layer to listen on\n\t\t */\n\t\tFastClick.notNeeded = function(layer) {\n\t\t\tvar metaViewport;\n\t\t\tvar chromeVersion;\n\t\t\tvar blackberryVersion;\n\t\t\tvar firefoxVersion;\n\t\n\t\t\t// Devices that don't support touch don't need FastClick\n\t\t\tif (typeof window.ontouchstart === 'undefined') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// Chrome version - zero for other browsers\n\t\t\tchromeVersion = +(/Chrome\\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];\n\t\n\t\t\tif (chromeVersion) {\n\t\n\t\t\t\tif (deviceIsAndroid) {\n\t\t\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\t\n\t\t\t\t\tif (metaViewport) {\n\t\t\t\t\t\t// Chrome on Android with user-scalable=\"no\" doesn't need FastClick (issue #89)\n\t\t\t\t\t\tif (metaViewport.content.indexOf('user-scalable=no') !== -1) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Chrome 32 and above with width=device-width or less don't need FastClick\n\t\t\t\t\t\tif (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t// Chrome desktop doesn't need FastClick (issue #15)\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (deviceIsBlackBerry10) {\n\t\t\t\tblackberryVersion = navigator.userAgent.match(/Version\\/([0-9]*)\\.([0-9]*)/);\n\t\n\t\t\t\t// BlackBerry 10.3+ does not require Fastclick library.\n\t\t\t\t// https://github.com/ftlabs/fastclick/issues/251\n\t\t\t\tif (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {\n\t\t\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\t\n\t\t\t\t\tif (metaViewport) {\n\t\t\t\t\t\t// user-scalable=no eliminates click delay.\n\t\t\t\t\t\tif (metaViewport.content.indexOf('user-scalable=no') !== -1) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// width=device-width (or less than device-width) eliminates click delay.\n\t\t\t\t\t\tif (document.documentElement.scrollWidth <= window.outerWidth) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97)\n\t\t\tif (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\t// Firefox version - zero for other browsers\n\t\t\tfirefoxVersion = +(/Firefox\\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];\n\t\n\t\t\tif (firefoxVersion >= 27) {\n\t\t\t\t// Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896\n\t\n\t\t\t\tmetaViewport = document.querySelector('meta[name=viewport]');\n\t\t\t\tif (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version\n\t\t\t// http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx\n\t\t\tif (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\treturn false;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Factory method for creating a FastClick object\n\t\t *\n\t\t * @param {Element} layer The layer to listen on\n\t\t * @param {Object} [options={}] The options to override the defaults\n\t\t */\n\t\tFastClick.attach = function(layer, options) {\n\t\t\treturn new FastClick(layer, options);\n\t\t};\n\t\n\t\n\t\tif (true) {\n\t\n\t\t\t// AMD. Register as an anonymous module.\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\t\treturn FastClick;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\t\tmodule.exports = FastClick.attach;\n\t\t\tmodule.exports.FastClick = FastClick;\n\t\t} else {\n\t\t\twindow.FastClick = FastClick;\n\t\t}\n\t}());\n\n\n/***/ },\n/* 124 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root) {/*global exports, Intl*/\n\t/**\n\t * This script gives you the zone info key representing your device's time zone setting.\n\t *\n\t * @name jsTimezoneDetect\n\t * @version 1.0.6\n\t * @author Jon Nylander\n\t * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt\n\t *\n\t * For usage and examples, visit:\n\t * http://pellepim.bitbucket.org/jstz/\n\t *\n\t * Copyright (c) Jon Nylander\n\t */\n\t\n\t\n\t/**\n\t * Namespace to hold all the code for timezone detection.\n\t */\n\tvar jstz = (function () {\n\t 'use strict';\n\t var HEMISPHERE_SOUTH = 's',\n\t\n\t consts = {\n\t DAY: 86400000,\n\t HOUR: 3600000,\n\t MINUTE: 60000,\n\t SECOND: 1000,\n\t BASELINE_YEAR: 2014,\n\t MAX_SCORE: 864000000, // 10 days\n\t AMBIGUITIES: {\n\t 'America/Denver': ['America/Mazatlan'],\n\t 'Europe/London': ['Africa/Casablanca'],\n\t 'America/Chicago': ['America/Mexico_City'],\n\t 'America/Asuncion': ['America/Campo_Grande', 'America/Santiago'],\n\t 'America/Montevideo': ['America/Sao_Paulo', 'America/Santiago'],\n\t // Europe/Minsk should not be in this list... but Windows.\n\t 'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'],\n\t 'Pacific/Auckland': ['Pacific/Fiji'],\n\t 'America/Los_Angeles': ['America/Santa_Isabel'],\n\t 'America/New_York': ['America/Havana'],\n\t 'America/Halifax': ['America/Goose_Bay'],\n\t 'America/Godthab': ['America/Miquelon'],\n\t 'Asia/Dubai': ['Asia/Yerevan'],\n\t 'Asia/Jakarta': ['Asia/Krasnoyarsk'],\n\t 'Asia/Shanghai': ['Asia/Irkutsk', 'Australia/Perth'],\n\t 'Australia/Sydney': ['Australia/Lord_Howe'],\n\t 'Asia/Tokyo': ['Asia/Yakutsk'],\n\t 'Asia/Dhaka': ['Asia/Omsk'],\n\t // In the real world Yerevan is not ambigous for Baku... but Windows.\n\t 'Asia/Baku': ['Asia/Yerevan'],\n\t 'Australia/Brisbane': ['Asia/Vladivostok'],\n\t 'Pacific/Noumea': ['Asia/Vladivostok'],\n\t 'Pacific/Majuro': ['Asia/Kamchatka', 'Pacific/Fiji'],\n\t 'Pacific/Tongatapu': ['Pacific/Apia'],\n\t 'Asia/Baghdad': ['Europe/Minsk', 'Europe/Moscow'],\n\t 'Asia/Karachi': ['Asia/Yekaterinburg'],\n\t 'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo']\n\t }\n\t },\n\t\n\t /**\n\t * Gets the offset in minutes from UTC for a certain date.\n\t * @param {Date} date\n\t * @returns {Number}\n\t */\n\t get_date_offset = function get_date_offset(date) {\n\t var offset = -date.getTimezoneOffset();\n\t return (offset !== null ? offset : 0);\n\t },\n\t\n\t /**\n\t * This function does some basic calculations to create information about\n\t * the user's timezone. It uses REFERENCE_YEAR as a solid year for which\n\t * the script has been tested rather than depend on the year set by the\n\t * client device.\n\t *\n\t * Returns a key that can be used to do lookups in jstz.olson.timezones.\n\t * eg: \"720,1,2\".\n\t *\n\t * @returns {String}\n\t */\n\t lookup_key = function lookup_key() {\n\t var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)),\n\t june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)),\n\t diff = january_offset - june_offset;\n\t\n\t if (diff < 0) {\n\t return january_offset + \",1\";\n\t } else if (diff > 0) {\n\t return june_offset + \",1,\" + HEMISPHERE_SOUTH;\n\t }\n\t\n\t return january_offset + \",0\";\n\t },\n\t\n\t\n\t /**\n\t * Tries to get the time zone key directly from the operating system for those\n\t * environments that support the ECMAScript Internationalization API.\n\t */\n\t get_from_internationalization_api = function get_from_internationalization_api() {\n\t var format, timezone;\n\t if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n\t return;\n\t }\n\t\n\t format = Intl.DateTimeFormat();\n\t\n\t if (typeof format === \"undefined\" || typeof format.resolvedOptions === \"undefined\") {\n\t return;\n\t }\n\t\n\t timezone = format.resolvedOptions().timeZone;\n\t\n\t if (timezone && (timezone.indexOf(\"/\") > -1 || timezone === 'UTC')) {\n\t return timezone;\n\t }\n\t\n\t },\n\t\n\t /**\n\t * Starting point for getting all the DST rules for a specific year\n\t * for the current timezone (as described by the client system).\n\t *\n\t * Returns an object with start and end attributes, or false if no\n\t * DST rules were found for the year.\n\t *\n\t * @param year\n\t * @returns {Object} || {Boolean}\n\t */\n\t dst_dates = function dst_dates(year) {\n\t var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime();\n\t var yearend = new Date(year, 12, 31, 23, 59, 59).getTime();\n\t var current = yearstart;\n\t var offset = (new Date(current)).getTimezoneOffset();\n\t var dst_start = null;\n\t var dst_end = null;\n\t\n\t while (current < yearend - 86400000) {\n\t var dateToCheck = new Date(current);\n\t var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\t\n\t if (dateToCheckOffset !== offset) {\n\t if (dateToCheckOffset < offset) {\n\t dst_start = dateToCheck;\n\t }\n\t if (dateToCheckOffset > offset) {\n\t dst_end = dateToCheck;\n\t }\n\t offset = dateToCheckOffset;\n\t }\n\t\n\t current += 86400000;\n\t }\n\t\n\t if (dst_start && dst_end) {\n\t return {\n\t s: find_dst_fold(dst_start).getTime(),\n\t e: find_dst_fold(dst_end).getTime()\n\t };\n\t }\n\t\n\t return false;\n\t },\n\t\n\t /**\n\t * Probably completely unnecessary function that recursively finds the\n\t * exact (to the second) time when a DST rule was changed.\n\t *\n\t * @param a_date - The candidate Date.\n\t * @param padding - integer specifying the padding to allow around the candidate\n\t * date for finding the fold.\n\t * @param iterator - integer specifying how many milliseconds to iterate while\n\t * searching for the fold.\n\t *\n\t * @returns {Date}\n\t */\n\t find_dst_fold = function find_dst_fold(a_date, padding, iterator) {\n\t if (typeof padding === 'undefined') {\n\t padding = consts.DAY;\n\t iterator = consts.HOUR;\n\t }\n\t\n\t var date_start = new Date(a_date.getTime() - padding).getTime();\n\t var date_end = a_date.getTime() + padding;\n\t var offset = new Date(date_start).getTimezoneOffset();\n\t\n\t var current = date_start;\n\t\n\t var dst_change = null;\n\t while (current < date_end - iterator) {\n\t var dateToCheck = new Date(current);\n\t var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\t\n\t if (dateToCheckOffset !== offset) {\n\t dst_change = dateToCheck;\n\t break;\n\t }\n\t current += iterator;\n\t }\n\t\n\t if (padding === consts.DAY) {\n\t return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE);\n\t }\n\t\n\t if (padding === consts.HOUR) {\n\t return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND);\n\t }\n\t\n\t return dst_change;\n\t },\n\t\n\t windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) {\n\t if (score !== 'N/A') {\n\t return score;\n\t }\n\t if (preliminary_timezone === 'Asia/Beirut') {\n\t if (sample.name === 'Africa/Cairo') {\n\t if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) {\n\t return 0;\n\t }\n\t }\n\t if (sample.name === 'Asia/Jerusalem') {\n\t if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) {\n\t return 0;\n\t }\n\t }\n\t } else if (preliminary_timezone === 'America/Santiago') {\n\t if (sample.name === 'America/Asuncion') {\n\t if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) {\n\t return 0;\n\t }\n\t }\n\t if (sample.name === 'America/Campo_Grande') {\n\t if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) {\n\t return 0;\n\t }\n\t }\n\t } else if (preliminary_timezone === 'America/Montevideo') {\n\t if (sample.name === 'America/Sao_Paulo') {\n\t if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) {\n\t return 0;\n\t }\n\t }\n\t } else if (preliminary_timezone === 'Pacific/Auckland') {\n\t if (sample.name === 'Pacific/Fiji') {\n\t if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) {\n\t return 0;\n\t }\n\t }\n\t }\n\t\n\t return score;\n\t },\n\t\n\t /**\n\t * Takes the DST rules for the current timezone, and proceeds to find matches\n\t * in the jstz.olson.dst_rules.zones array.\n\t *\n\t * Compares samples to the current timezone on a scoring basis.\n\t *\n\t * Candidates are ruled immediately if either the candidate or the current zone\n\t * has a DST rule where the other does not.\n\t *\n\t * Candidates are ruled out immediately if the current zone has a rule that is\n\t * outside the DST scope of the candidate.\n\t *\n\t * Candidates are included for scoring if the current zones rules fall within the\n\t * span of the samples rules.\n\t *\n\t * Low score is best, the score is calculated by summing up the differences in DST\n\t * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out.\n\t *\n\t * Yah follow? :)\n\t *\n\t * @param rule_list\n\t * @param preliminary_timezone\n\t * @returns {*}\n\t */\n\t best_dst_match = function best_dst_match(rule_list, preliminary_timezone) {\n\t var score_sample = function score_sample(sample) {\n\t var score = 0;\n\t\n\t for (var j = 0; j < rule_list.length; j++) {\n\t\n\t // Both sample and current time zone report DST during the year.\n\t if (!!sample.rules[j] && !!rule_list[j]) {\n\t\n\t // The current time zone's DST rules are inside the sample's. Include.\n\t if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) {\n\t score = 0;\n\t score += Math.abs(rule_list[j].s - sample.rules[j].s);\n\t score += Math.abs(sample.rules[j].e - rule_list[j].e);\n\t\n\t // The current time zone's DST rules are outside the sample's. Discard.\n\t } else {\n\t score = 'N/A';\n\t break;\n\t }\n\t\n\t // The max score has been reached. Discard.\n\t if (score > consts.MAX_SCORE) {\n\t score = 'N/A';\n\t break;\n\t }\n\t }\n\t }\n\t\n\t score = windows7_adaptations(rule_list, preliminary_timezone, score, sample);\n\t\n\t return score;\n\t };\n\t var scoreboard = {};\n\t var dst_zones = jstz.olson.dst_rules.zones;\n\t var dst_zones_length = dst_zones.length;\n\t var ambiguities = consts.AMBIGUITIES[preliminary_timezone];\n\t\n\t for (var i = 0; i < dst_zones_length; i++) {\n\t var sample = dst_zones[i];\n\t var score = score_sample(dst_zones[i]);\n\t\n\t if (score !== 'N/A') {\n\t scoreboard[sample.name] = score;\n\t }\n\t }\n\t\n\t for (var tz in scoreboard) {\n\t if (scoreboard.hasOwnProperty(tz)) {\n\t for (var j = 0; j < ambiguities.length; j++) {\n\t if (ambiguities[j] === tz) {\n\t return tz;\n\t }\n\t }\n\t }\n\t }\n\t\n\t return preliminary_timezone;\n\t },\n\t\n\t /**\n\t * Takes the preliminary_timezone as detected by lookup_key().\n\t *\n\t * Builds up the current timezones DST rules for the years defined\n\t * in the jstz.olson.dst_rules.years array.\n\t *\n\t * If there are no DST occurences for those years, immediately returns\n\t * the preliminary timezone. Otherwise proceeds and tries to solve\n\t * ambiguities.\n\t *\n\t * @param preliminary_timezone\n\t * @returns {String} timezone_name\n\t */\n\t get_by_dst = function get_by_dst(preliminary_timezone) {\n\t var get_rules = function get_rules() {\n\t var rule_list = [];\n\t for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) {\n\t var year_rules = dst_dates(jstz.olson.dst_rules.years[i]);\n\t rule_list.push(year_rules);\n\t }\n\t return rule_list;\n\t };\n\t var check_has_dst = function check_has_dst(rules) {\n\t for (var i = 0; i < rules.length; i++) {\n\t if (rules[i] !== false) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t };\n\t var rules = get_rules();\n\t var has_dst = check_has_dst(rules);\n\t\n\t if (has_dst) {\n\t return best_dst_match(rules, preliminary_timezone);\n\t }\n\t\n\t return preliminary_timezone;\n\t },\n\t\n\t /**\n\t * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.\n\t *\n\t * Returns an object with one function \".name()\"\n\t *\n\t * @returns Object\n\t */\n\t determine = function determine() {\n\t var preliminary_tz = get_from_internationalization_api();\n\t\n\t if (!preliminary_tz) {\n\t preliminary_tz = jstz.olson.timezones[lookup_key()];\n\t\n\t if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') {\n\t preliminary_tz = get_by_dst(preliminary_tz);\n\t }\n\t }\n\t\n\t return {\n\t name: function () {\n\t return preliminary_tz;\n\t }\n\t };\n\t };\n\t\n\t return {\n\t determine: determine\n\t };\n\t}());\n\t\n\t\n\tjstz.olson = jstz.olson || {};\n\t\n\t/**\n\t * The keys in this dictionary are comma separated as such:\n\t *\n\t * First the offset compared to UTC time in minutes.\n\t *\n\t * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it\n\t * does.\n\t *\n\t * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,\n\t * only interesting for timezones with DST.\n\t *\n\t * The mapped arrays is used for constructing the jstz.TimeZone object from within\n\t * jstz.determine();\n\t */\n\tjstz.olson.timezones = {\n\t '-720,0': 'Etc/GMT+12',\n\t '-660,0': 'Pacific/Pago_Pago',\n\t '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry!\n\t '-600,1': 'America/Adak',\n\t '-600,0': 'Pacific/Honolulu',\n\t '-570,0': 'Pacific/Marquesas',\n\t '-540,0': 'Pacific/Gambier',\n\t '-540,1': 'America/Anchorage',\n\t '-480,1': 'America/Los_Angeles',\n\t '-480,0': 'Pacific/Pitcairn',\n\t '-420,0': 'America/Phoenix',\n\t '-420,1': 'America/Denver',\n\t '-360,0': 'America/Guatemala',\n\t '-360,1': 'America/Chicago',\n\t '-360,1,s': 'Pacific/Easter',\n\t '-300,0': 'America/Bogota',\n\t '-300,1': 'America/New_York',\n\t '-270,0': 'America/Caracas',\n\t '-240,1': 'America/Halifax',\n\t '-240,0': 'America/Santo_Domingo',\n\t '-240,1,s': 'America/Asuncion',\n\t '-210,1': 'America/St_Johns',\n\t '-180,1': 'America/Godthab',\n\t '-180,0': 'America/Argentina/Buenos_Aires',\n\t '-180,1,s': 'America/Montevideo',\n\t '-120,0': 'America/Noronha',\n\t '-120,1': 'America/Noronha',\n\t '-60,1': 'Atlantic/Azores',\n\t '-60,0': 'Atlantic/Cape_Verde',\n\t '0,0': 'UTC',\n\t '0,1': 'Europe/London',\n\t '60,1': 'Europe/Berlin',\n\t '60,0': 'Africa/Lagos',\n\t '60,1,s': 'Africa/Windhoek',\n\t '120,1': 'Asia/Beirut',\n\t '120,0': 'Africa/Johannesburg',\n\t '180,0': 'Asia/Baghdad',\n\t '180,1': 'Europe/Moscow',\n\t '210,1': 'Asia/Tehran',\n\t '240,0': 'Asia/Dubai',\n\t '240,1': 'Asia/Baku',\n\t '270,0': 'Asia/Kabul',\n\t '300,1': 'Asia/Yekaterinburg',\n\t '300,0': 'Asia/Karachi',\n\t '330,0': 'Asia/Kolkata',\n\t '345,0': 'Asia/Kathmandu',\n\t '360,0': 'Asia/Dhaka',\n\t '360,1': 'Asia/Omsk',\n\t '390,0': 'Asia/Rangoon',\n\t '420,1': 'Asia/Krasnoyarsk',\n\t '420,0': 'Asia/Jakarta',\n\t '480,0': 'Asia/Shanghai',\n\t '480,1': 'Asia/Irkutsk',\n\t '525,0': 'Australia/Eucla',\n\t '525,1,s': 'Australia/Eucla',\n\t '540,1': 'Asia/Yakutsk',\n\t '540,0': 'Asia/Tokyo',\n\t '570,0': 'Australia/Darwin',\n\t '570,1,s': 'Australia/Adelaide',\n\t '600,0': 'Australia/Brisbane',\n\t '600,1': 'Asia/Vladivostok',\n\t '600,1,s': 'Australia/Sydney',\n\t '630,1,s': 'Australia/Lord_Howe',\n\t '660,1': 'Asia/Kamchatka',\n\t '660,0': 'Pacific/Noumea',\n\t '690,0': 'Pacific/Norfolk',\n\t '720,1,s': 'Pacific/Auckland',\n\t '720,0': 'Pacific/Majuro',\n\t '765,1,s': 'Pacific/Chatham',\n\t '780,0': 'Pacific/Tongatapu',\n\t '780,1,s': 'Pacific/Apia',\n\t '840,0': 'Pacific/Kiritimati'\n\t};\n\t\n\t/* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */\n\tjstz.olson.dst_rules = {\n\t \"years\": [\n\t 2008,\n\t 2009,\n\t 2010,\n\t 2011,\n\t 2012,\n\t 2013,\n\t 2014\n\t ],\n\t \"zones\": [\n\t {\n\t \"name\": \"Africa/Cairo\",\n\t \"rules\": [\n\t {\n\t \"e\": 1219957200000,\n\t \"s\": 1209074400000\n\t },\n\t {\n\t \"e\": 1250802000000,\n\t \"s\": 1240524000000\n\t },\n\t {\n\t \"e\": 1285880400000,\n\t \"s\": 1284069600000\n\t },\n\t false,\n\t false,\n\t false,\n\t {\n\t \"e\": 1411678800000,\n\t \"s\": 1406844000000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Africa/Casablanca\",\n\t \"rules\": [\n\t {\n\t \"e\": 1220223600000,\n\t \"s\": 1212278400000\n\t },\n\t {\n\t \"e\": 1250809200000,\n\t \"s\": 1243814400000\n\t },\n\t {\n\t \"e\": 1281222000000,\n\t \"s\": 1272758400000\n\t },\n\t {\n\t \"e\": 1312066800000,\n\t \"s\": 1301788800000\n\t },\n\t {\n\t \"e\": 1348970400000,\n\t \"s\": 1345428000000\n\t },\n\t {\n\t \"e\": 1382839200000,\n\t \"s\": 1376100000000\n\t },\n\t {\n\t \"e\": 1414288800000,\n\t \"s\": 1406944800000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Asuncion\",\n\t \"rules\": [\n\t {\n\t \"e\": 1205031600000,\n\t \"s\": 1224388800000\n\t },\n\t {\n\t \"e\": 1236481200000,\n\t \"s\": 1255838400000\n\t },\n\t {\n\t \"e\": 1270954800000,\n\t \"s\": 1286078400000\n\t },\n\t {\n\t \"e\": 1302404400000,\n\t \"s\": 1317528000000\n\t },\n\t {\n\t \"e\": 1333854000000,\n\t \"s\": 1349582400000\n\t },\n\t {\n\t \"e\": 1364094000000,\n\t \"s\": 1381032000000\n\t },\n\t {\n\t \"e\": 1395543600000,\n\t \"s\": 1412481600000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Campo_Grande\",\n\t \"rules\": [\n\t {\n\t \"e\": 1203217200000,\n\t \"s\": 1224388800000\n\t },\n\t {\n\t \"e\": 1234666800000,\n\t \"s\": 1255838400000\n\t },\n\t {\n\t \"e\": 1266721200000,\n\t \"s\": 1287288000000\n\t },\n\t {\n\t \"e\": 1298170800000,\n\t \"s\": 1318737600000\n\t },\n\t {\n\t \"e\": 1330225200000,\n\t \"s\": 1350792000000\n\t },\n\t {\n\t \"e\": 1361070000000,\n\t \"s\": 1382241600000\n\t },\n\t {\n\t \"e\": 1392519600000,\n\t \"s\": 1413691200000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Goose_Bay\",\n\t \"rules\": [\n\t {\n\t \"e\": 1225594860000,\n\t \"s\": 1205035260000\n\t },\n\t {\n\t \"e\": 1257044460000,\n\t \"s\": 1236484860000\n\t },\n\t {\n\t \"e\": 1289098860000,\n\t \"s\": 1268539260000\n\t },\n\t {\n\t \"e\": 1320555600000,\n\t \"s\": 1299988860000\n\t },\n\t {\n\t \"e\": 1352005200000,\n\t \"s\": 1331445600000\n\t },\n\t {\n\t \"e\": 1383454800000,\n\t \"s\": 1362895200000\n\t },\n\t {\n\t \"e\": 1414904400000,\n\t \"s\": 1394344800000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Havana\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224997200000,\n\t \"s\": 1205643600000\n\t },\n\t {\n\t \"e\": 1256446800000,\n\t \"s\": 1236488400000\n\t },\n\t {\n\t \"e\": 1288501200000,\n\t \"s\": 1268542800000\n\t },\n\t {\n\t \"e\": 1321160400000,\n\t \"s\": 1300597200000\n\t },\n\t {\n\t \"e\": 1352005200000,\n\t \"s\": 1333256400000\n\t },\n\t {\n\t \"e\": 1383454800000,\n\t \"s\": 1362891600000\n\t },\n\t {\n\t \"e\": 1414904400000,\n\t \"s\": 1394341200000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Mazatlan\",\n\t \"rules\": [\n\t {\n\t \"e\": 1225008000000,\n\t \"s\": 1207472400000\n\t },\n\t {\n\t \"e\": 1256457600000,\n\t \"s\": 1238922000000\n\t },\n\t {\n\t \"e\": 1288512000000,\n\t \"s\": 1270371600000\n\t },\n\t {\n\t \"e\": 1319961600000,\n\t \"s\": 1301821200000\n\t },\n\t {\n\t \"e\": 1351411200000,\n\t \"s\": 1333270800000\n\t },\n\t {\n\t \"e\": 1382860800000,\n\t \"s\": 1365325200000\n\t },\n\t {\n\t \"e\": 1414310400000,\n\t \"s\": 1396774800000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Mexico_City\",\n\t \"rules\": [\n\t {\n\t \"e\": 1225004400000,\n\t \"s\": 1207468800000\n\t },\n\t {\n\t \"e\": 1256454000000,\n\t \"s\": 1238918400000\n\t },\n\t {\n\t \"e\": 1288508400000,\n\t \"s\": 1270368000000\n\t },\n\t {\n\t \"e\": 1319958000000,\n\t \"s\": 1301817600000\n\t },\n\t {\n\t \"e\": 1351407600000,\n\t \"s\": 1333267200000\n\t },\n\t {\n\t \"e\": 1382857200000,\n\t \"s\": 1365321600000\n\t },\n\t {\n\t \"e\": 1414306800000,\n\t \"s\": 1396771200000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Miquelon\",\n\t \"rules\": [\n\t {\n\t \"e\": 1225598400000,\n\t \"s\": 1205038800000\n\t },\n\t {\n\t \"e\": 1257048000000,\n\t \"s\": 1236488400000\n\t },\n\t {\n\t \"e\": 1289102400000,\n\t \"s\": 1268542800000\n\t },\n\t {\n\t \"e\": 1320552000000,\n\t \"s\": 1299992400000\n\t },\n\t {\n\t \"e\": 1352001600000,\n\t \"s\": 1331442000000\n\t },\n\t {\n\t \"e\": 1383451200000,\n\t \"s\": 1362891600000\n\t },\n\t {\n\t \"e\": 1414900800000,\n\t \"s\": 1394341200000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Santa_Isabel\",\n\t \"rules\": [\n\t {\n\t \"e\": 1225011600000,\n\t \"s\": 1207476000000\n\t },\n\t {\n\t \"e\": 1256461200000,\n\t \"s\": 1238925600000\n\t },\n\t {\n\t \"e\": 1288515600000,\n\t \"s\": 1270375200000\n\t },\n\t {\n\t \"e\": 1319965200000,\n\t \"s\": 1301824800000\n\t },\n\t {\n\t \"e\": 1351414800000,\n\t \"s\": 1333274400000\n\t },\n\t {\n\t \"e\": 1382864400000,\n\t \"s\": 1365328800000\n\t },\n\t {\n\t \"e\": 1414314000000,\n\t \"s\": 1396778400000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Santiago\",\n\t \"rules\": [\n\t {\n\t \"e\": 1206846000000,\n\t \"s\": 1223784000000\n\t },\n\t {\n\t \"e\": 1237086000000,\n\t \"s\": 1255233600000\n\t },\n\t {\n\t \"e\": 1270350000000,\n\t \"s\": 1286683200000\n\t },\n\t {\n\t \"e\": 1304823600000,\n\t \"s\": 1313899200000\n\t },\n\t {\n\t \"e\": 1335668400000,\n\t \"s\": 1346558400000\n\t },\n\t {\n\t \"e\": 1367118000000,\n\t \"s\": 1378612800000\n\t },\n\t {\n\t \"e\": 1398567600000,\n\t \"s\": 1410062400000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"America/Sao_Paulo\",\n\t \"rules\": [\n\t {\n\t \"e\": 1203213600000,\n\t \"s\": 1224385200000\n\t },\n\t {\n\t \"e\": 1234663200000,\n\t \"s\": 1255834800000\n\t },\n\t {\n\t \"e\": 1266717600000,\n\t \"s\": 1287284400000\n\t },\n\t {\n\t \"e\": 1298167200000,\n\t \"s\": 1318734000000\n\t },\n\t {\n\t \"e\": 1330221600000,\n\t \"s\": 1350788400000\n\t },\n\t {\n\t \"e\": 1361066400000,\n\t \"s\": 1382238000000\n\t },\n\t {\n\t \"e\": 1392516000000,\n\t \"s\": 1413687600000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Amman\",\n\t \"rules\": [\n\t {\n\t \"e\": 1225404000000,\n\t \"s\": 1206655200000\n\t },\n\t {\n\t \"e\": 1256853600000,\n\t \"s\": 1238104800000\n\t },\n\t {\n\t \"e\": 1288303200000,\n\t \"s\": 1269554400000\n\t },\n\t {\n\t \"e\": 1319752800000,\n\t \"s\": 1301608800000\n\t },\n\t false,\n\t false,\n\t {\n\t \"e\": 1414706400000,\n\t \"s\": 1395957600000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Damascus\",\n\t \"rules\": [\n\t {\n\t \"e\": 1225486800000,\n\t \"s\": 1207260000000\n\t },\n\t {\n\t \"e\": 1256850000000,\n\t \"s\": 1238104800000\n\t },\n\t {\n\t \"e\": 1288299600000,\n\t \"s\": 1270159200000\n\t },\n\t {\n\t \"e\": 1319749200000,\n\t \"s\": 1301608800000\n\t },\n\t {\n\t \"e\": 1351198800000,\n\t \"s\": 1333058400000\n\t },\n\t {\n\t \"e\": 1382648400000,\n\t \"s\": 1364508000000\n\t },\n\t {\n\t \"e\": 1414702800000,\n\t \"s\": 1395957600000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Dubai\",\n\t \"rules\": [\n\t false,\n\t false,\n\t false,\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Gaza\",\n\t \"rules\": [\n\t {\n\t \"e\": 1219957200000,\n\t \"s\": 1206655200000\n\t },\n\t {\n\t \"e\": 1252015200000,\n\t \"s\": 1238104800000\n\t },\n\t {\n\t \"e\": 1281474000000,\n\t \"s\": 1269640860000\n\t },\n\t {\n\t \"e\": 1312146000000,\n\t \"s\": 1301608860000\n\t },\n\t {\n\t \"e\": 1348178400000,\n\t \"s\": 1333058400000\n\t },\n\t {\n\t \"e\": 1380229200000,\n\t \"s\": 1364508000000\n\t },\n\t {\n\t \"e\": 1414098000000,\n\t \"s\": 1395957600000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Irkutsk\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224957600000,\n\t \"s\": 1206813600000\n\t },\n\t {\n\t \"e\": 1256407200000,\n\t \"s\": 1238263200000\n\t },\n\t {\n\t \"e\": 1288461600000,\n\t \"s\": 1269712800000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Jerusalem\",\n\t \"rules\": [\n\t {\n\t \"e\": 1223161200000,\n\t \"s\": 1206662400000\n\t },\n\t {\n\t \"e\": 1254006000000,\n\t \"s\": 1238112000000\n\t },\n\t {\n\t \"e\": 1284246000000,\n\t \"s\": 1269561600000\n\t },\n\t {\n\t \"e\": 1317510000000,\n\t \"s\": 1301616000000\n\t },\n\t {\n\t \"e\": 1348354800000,\n\t \"s\": 1333065600000\n\t },\n\t {\n\t \"e\": 1382828400000,\n\t \"s\": 1364515200000\n\t },\n\t {\n\t \"e\": 1414278000000,\n\t \"s\": 1395964800000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Kamchatka\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224943200000,\n\t \"s\": 1206799200000\n\t },\n\t {\n\t \"e\": 1256392800000,\n\t \"s\": 1238248800000\n\t },\n\t {\n\t \"e\": 1288450800000,\n\t \"s\": 1269698400000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Krasnoyarsk\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224961200000,\n\t \"s\": 1206817200000\n\t },\n\t {\n\t \"e\": 1256410800000,\n\t \"s\": 1238266800000\n\t },\n\t {\n\t \"e\": 1288465200000,\n\t \"s\": 1269716400000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Omsk\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224964800000,\n\t \"s\": 1206820800000\n\t },\n\t {\n\t \"e\": 1256414400000,\n\t \"s\": 1238270400000\n\t },\n\t {\n\t \"e\": 1288468800000,\n\t \"s\": 1269720000000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Vladivostok\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224950400000,\n\t \"s\": 1206806400000\n\t },\n\t {\n\t \"e\": 1256400000000,\n\t \"s\": 1238256000000\n\t },\n\t {\n\t \"e\": 1288454400000,\n\t \"s\": 1269705600000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Yakutsk\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224954000000,\n\t \"s\": 1206810000000\n\t },\n\t {\n\t \"e\": 1256403600000,\n\t \"s\": 1238259600000\n\t },\n\t {\n\t \"e\": 1288458000000,\n\t \"s\": 1269709200000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Yekaterinburg\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224968400000,\n\t \"s\": 1206824400000\n\t },\n\t {\n\t \"e\": 1256418000000,\n\t \"s\": 1238274000000\n\t },\n\t {\n\t \"e\": 1288472400000,\n\t \"s\": 1269723600000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Asia/Yerevan\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224972000000,\n\t \"s\": 1206828000000\n\t },\n\t {\n\t \"e\": 1256421600000,\n\t \"s\": 1238277600000\n\t },\n\t {\n\t \"e\": 1288476000000,\n\t \"s\": 1269727200000\n\t },\n\t {\n\t \"e\": 1319925600000,\n\t \"s\": 1301176800000\n\t },\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Australia/Lord_Howe\",\n\t \"rules\": [\n\t {\n\t \"e\": 1207407600000,\n\t \"s\": 1223134200000\n\t },\n\t {\n\t \"e\": 1238857200000,\n\t \"s\": 1254583800000\n\t },\n\t {\n\t \"e\": 1270306800000,\n\t \"s\": 1286033400000\n\t },\n\t {\n\t \"e\": 1301756400000,\n\t \"s\": 1317483000000\n\t },\n\t {\n\t \"e\": 1333206000000,\n\t \"s\": 1349537400000\n\t },\n\t {\n\t \"e\": 1365260400000,\n\t \"s\": 1380987000000\n\t },\n\t {\n\t \"e\": 1396710000000,\n\t \"s\": 1412436600000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Australia/Perth\",\n\t \"rules\": [\n\t {\n\t \"e\": 1206813600000,\n\t \"s\": 1224957600000\n\t },\n\t false,\n\t false,\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Europe/Helsinki\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224982800000,\n\t \"s\": 1206838800000\n\t },\n\t {\n\t \"e\": 1256432400000,\n\t \"s\": 1238288400000\n\t },\n\t {\n\t \"e\": 1288486800000,\n\t \"s\": 1269738000000\n\t },\n\t {\n\t \"e\": 1319936400000,\n\t \"s\": 1301187600000\n\t },\n\t {\n\t \"e\": 1351386000000,\n\t \"s\": 1332637200000\n\t },\n\t {\n\t \"e\": 1382835600000,\n\t \"s\": 1364691600000\n\t },\n\t {\n\t \"e\": 1414285200000,\n\t \"s\": 1396141200000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Europe/Minsk\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224979200000,\n\t \"s\": 1206835200000\n\t },\n\t {\n\t \"e\": 1256428800000,\n\t \"s\": 1238284800000\n\t },\n\t {\n\t \"e\": 1288483200000,\n\t \"s\": 1269734400000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Europe/Moscow\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224975600000,\n\t \"s\": 1206831600000\n\t },\n\t {\n\t \"e\": 1256425200000,\n\t \"s\": 1238281200000\n\t },\n\t {\n\t \"e\": 1288479600000,\n\t \"s\": 1269730800000\n\t },\n\t false,\n\t false,\n\t false,\n\t false\n\t ]\n\t },\n\t {\n\t \"name\": \"Pacific/Apia\",\n\t \"rules\": [\n\t false,\n\t false,\n\t false,\n\t {\n\t \"e\": 1301752800000,\n\t \"s\": 1316872800000\n\t },\n\t {\n\t \"e\": 1333202400000,\n\t \"s\": 1348927200000\n\t },\n\t {\n\t \"e\": 1365256800000,\n\t \"s\": 1380376800000\n\t },\n\t {\n\t \"e\": 1396706400000,\n\t \"s\": 1411826400000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Pacific/Fiji\",\n\t \"rules\": [\n\t false,\n\t false,\n\t {\n\t \"e\": 1269698400000,\n\t \"s\": 1287842400000\n\t },\n\t {\n\t \"e\": 1327154400000,\n\t \"s\": 1319292000000\n\t },\n\t {\n\t \"e\": 1358604000000,\n\t \"s\": 1350741600000\n\t },\n\t {\n\t \"e\": 1390050000000,\n\t \"s\": 1382796000000\n\t },\n\t {\n\t \"e\": 1421503200000,\n\t \"s\": 1414850400000\n\t }\n\t ]\n\t },\n\t {\n\t \"name\": \"Europe/London\",\n\t \"rules\": [\n\t {\n\t \"e\": 1224982800000,\n\t \"s\": 1206838800000\n\t },\n\t {\n\t \"e\": 1256432400000,\n\t \"s\": 1238288400000\n\t },\n\t {\n\t \"e\": 1288486800000,\n\t \"s\": 1269738000000\n\t },\n\t {\n\t \"e\": 1319936400000,\n\t \"s\": 1301187600000\n\t },\n\t {\n\t \"e\": 1351386000000,\n\t \"s\": 1332637200000\n\t },\n\t {\n\t \"e\": 1382835600000,\n\t \"s\": 1364691600000\n\t },\n\t {\n\t \"e\": 1414285200000,\n\t \"s\": 1396141200000\n\t }\n\t ]\n\t }\n\t ]\n\t};\n\tif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n\t module.exports = jstz;\n\t} else if ((\"function\" !== 'undefined' && __webpack_require__(6) !== null) && (__webpack_require__(125) != null)) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t return jstz;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t if (typeof root === 'undefined') {\n\t window.jstz = jstz;\n\t } else {\n\t root.jstz = jstz;\n\t }\n\t}\n\t}());\n\n\n/***/ },\n/* 125 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__;\r\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, {}))\n\n/***/ },\n/* 126 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Logger_1 = __webpack_require__(13);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar _ = __webpack_require__(16);\n\tvar SentryLogger = (function () {\n\t function SentryLogger(queryController, windoh) {\n\t if (windoh === void 0) { windoh = window; }\n\t this.queryController = queryController;\n\t this.windoh = windoh;\n\t this.logger = new Logger_1.Logger(this);\n\t this.bindErrorHandler();\n\t }\n\t SentryLogger.prototype.bindErrorHandler = function () {\n\t var _this = this;\n\t // take care of not overriding any existing onerror handler that might be already present in the page.\n\t var oldHandler = this.windoh.onerror;\n\t if (_.isFunction(oldHandler)) {\n\t this.windoh.onerror = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t oldHandler.apply(oldHandler, args);\n\t _this.handleError.apply(_this, args);\n\t };\n\t }\n\t else {\n\t this.windoh.onerror = this.handleError.bind(this);\n\t }\n\t };\n\t SentryLogger.prototype.handleError = function (message, filename, lineno, colno, error) {\n\t // try not to log irrelevant errors ...\n\t if (!filename.toLowerCase().match(/coveo/) || this.windoh.location.host.toLowerCase().match(/localhost/)) {\n\t return;\n\t }\n\t var errorInfo = {\n\t message: message,\n\t filename: filename,\n\t line: lineno,\n\t column: colno,\n\t error: error.toString(),\n\t errorStack: error['stack'],\n\t device: DeviceUtils_1.DeviceUtils.getDeviceName()\n\t };\n\t var sentryLog = {\n\t level: 'DEBUG',\n\t title: this.windoh.location.href,\n\t message: JSON.stringify(errorInfo)\n\t };\n\t this.queryController.getEndpoint().logError(sentryLog);\n\t };\n\t return SentryLogger;\n\t}());\n\texports.SentryLogger = SentryLogger;\n\n\n/***/ },\n/* 127 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.analyticsActionCauseList = {\n\t interfaceLoad: {\n\t name: 'interfaceLoad',\n\t type: 'interface'\n\t },\n\t interfaceChange: {\n\t name: 'interfaceChange',\n\t type: 'interface',\n\t metaMap: { interfaceChangeTo: 1 }\n\t },\n\t contextRemove: {\n\t name: 'contextRemove',\n\t type: 'misc',\n\t metaMap: { contextName: 1 }\n\t },\n\t didyoumeanAutomatic: {\n\t name: 'didyoumeanAutomatic',\n\t type: 'misc'\n\t },\n\t didyoumeanClick: {\n\t name: 'didyoumeanClick',\n\t type: 'misc'\n\t },\n\t resultsSort: {\n\t name: 'resultsSort',\n\t type: 'misc',\n\t metaMap: { resultsSortBy: 1 }\n\t },\n\t searchboxSubmit: {\n\t name: 'searchboxSubmit',\n\t type: 'search box'\n\t },\n\t searchboxClear: {\n\t name: 'searchboxClear',\n\t type: 'search box'\n\t },\n\t searchboxAsYouType: {\n\t name: 'searchboxAsYouType',\n\t type: 'search box'\n\t },\n\t breadcrumbFacet: {\n\t name: 'breadcrumbFacet',\n\t type: 'breadcrumb',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t breadcrumbResetAll: {\n\t name: 'breadcrumbResetAll',\n\t type: 'breadcrumb',\n\t },\n\t documentTag: {\n\t name: 'documentTag',\n\t type: 'document',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t documentField: {\n\t name: 'documentField',\n\t type: 'document',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t documentQuickview: {\n\t name: 'documentQuickview',\n\t type: 'document',\n\t metaMap: { documentTitle: 1, documentURL: 2 }\n\t },\n\t documentOpen: {\n\t name: 'documentOpen',\n\t type: 'document',\n\t metaMap: { documentTitle: 1, documentURL: 2 }\n\t },\n\t omniboxFacetSelect: {\n\t name: 'omniboxFacetSelect',\n\t type: 'omnibox',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t omniboxFacetExclude: {\n\t name: 'omniboxFacetExclude',\n\t type: 'omnibox',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t omniboxFacetDeselect: {\n\t name: 'omniboxFacetDeselect',\n\t type: 'omnibox',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t omniboxFacetUnexclude: {\n\t name: 'omniboxFacetUnexclude',\n\t type: 'omnibox',\n\t metaMap: { faceId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t omniboxAnalytics: {\n\t name: 'omniboxAnalytics',\n\t type: 'omnibox',\n\t metaMap: {\n\t partialQuery: 1,\n\t suggestionRanking: 2,\n\t partialQueries: 3,\n\t suggestions: 4\n\t }\n\t },\n\t omniboxFromLink: {\n\t name: 'omniboxFromLink',\n\t type: 'omnibox',\n\t metaMap: {\n\t partialQuery: 1,\n\t suggestionRanking: 2,\n\t partialQueries: 3,\n\t suggestions: 4\n\t }\n\t },\n\t omniboxField: {\n\t name: 'omniboxField',\n\t type: 'omnibox'\n\t },\n\t facetClearAll: {\n\t name: 'facetClearAll',\n\t type: 'facet',\n\t metaMap: { facetId: 1 }\n\t },\n\t facetSearch: {\n\t name: 'facetSearch',\n\t type: 'facet',\n\t metaMap: { facetId: 1 }\n\t },\n\t facetToggle: {\n\t name: 'facetToggle',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetOperatorBefore: 2, facetOperatorAfter: 3 }\n\t },\n\t facetRangeSlider: {\n\t name: 'facetRangeSlider',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetRangeStart: 2, facetRangeEnd: 3 }\n\t },\n\t facetRangeGraph: {\n\t name: 'facetRangeGraph',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetRangeStart: 2, facetRangeEnd: 3 }\n\t },\n\t facetSelect: {\n\t name: 'facetSelect',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t facetSelectAll: {\n\t name: 'facetSelectAll',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t facetDeselect: {\n\t name: 'facetDeselect',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t facetExclude: {\n\t name: 'facetExclude',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t facetUnexclude: {\n\t name: 'facetUnexclude',\n\t type: 'facet',\n\t metaMap: { facetId: 1, facetValue: 2, facetTitle: 3 }\n\t },\n\t errorBack: {\n\t name: 'errorBack',\n\t type: 'errors'\n\t },\n\t errorClearQuery: {\n\t name: 'errorClearQuery',\n\t type: 'errors'\n\t },\n\t errorRetry: {\n\t name: 'errorRetry',\n\t type: 'errors'\n\t },\n\t noResultsBack: {\n\t name: 'noResultsBack',\n\t type: 'noResults'\n\t },\n\t expandToFullUI: {\n\t name: 'expandToFullUI',\n\t type: 'interface'\n\t },\n\t caseCreationInputChange: {\n\t name: 'inputChange',\n\t type: 'caseCreation'\n\t },\n\t caseCreationSubmitButton: {\n\t name: 'submitButton',\n\t type: 'caseCreation'\n\t },\n\t caseCreationCancelButton: {\n\t name: 'cancelButton',\n\t type: 'caseCreation'\n\t },\n\t caseCreationUnloadPage: {\n\t name: 'unloadPage',\n\t type: 'caseCreation'\n\t },\n\t casecontextAdd: {\n\t name: 'casecontextAdd',\n\t type: 'casecontext',\n\t metaMap: { caseID: 5 }\n\t },\n\t casecontextRemove: {\n\t name: 'casecontextRemove',\n\t type: 'casecontext',\n\t metaMap: { caseID: 5 }\n\t },\n\t preferencesChange: {\n\t name: 'preferencesChange',\n\t type: 'preferences',\n\t metaMap: { preferenceName: 1, preferenceType: 2 }\n\t },\n\t getUserHistory: {\n\t name: 'getUserHistory',\n\t type: 'userHistory'\n\t },\n\t userActionDocumentClick: {\n\t name: 'userActionDocumentClick',\n\t type: 'userHistory'\n\t },\n\t caseAttach: {\n\t name: 'caseAttach',\n\t type: 'case',\n\t metaMap: { documentTitle: 1, resultUriHash: 3, articleID: 4, caseID: 5 }\n\t },\n\t caseDetach: {\n\t name: 'caseDetach',\n\t type: 'case',\n\t metaMap: { documentTitle: 1, resultUriHash: 3, articleID: 4, caseID: 5 }\n\t },\n\t customfiltersChange: {\n\t name: 'customfiltersChange',\n\t type: 'customfilters',\n\t metaMap: { customFilterName: 1, customFilterType: 2, customFilterExpression: 3 }\n\t },\n\t pagerNumber: {\n\t name: 'pagerNumber',\n\t type: 'getMoreResults',\n\t metaMap: { 'pagerNumber': 1 }\n\t },\n\t pagerNext: {\n\t name: 'pagerNext',\n\t type: 'getMoreResults',\n\t metaMap: { 'pagerNumber': 1 }\n\t },\n\t pagerPrevious: {\n\t name: 'pagerPrevious',\n\t type: 'getMoreResults',\n\t metaMap: { 'pagerNumber': 1 }\n\t },\n\t pagerScrolling: {\n\t name: 'pagerScrolling',\n\t type: 'getMoreResults'\n\t },\n\t pagerResize: {\n\t name: 'pagerResize',\n\t type: 'getMoreResults'\n\t },\n\t searchFromLink: {\n\t name: 'searchFromLink',\n\t type: 'interface'\n\t },\n\t triggerNotify: {\n\t name: 'notify',\n\t type: 'queryPipelineTriggers'\n\t },\n\t triggerExecute: {\n\t name: 'execute',\n\t type: 'queryPipelineTriggers'\n\t },\n\t triggerQuery: {\n\t name: 'query',\n\t type: 'queryPipelineTriggers'\n\t },\n\t triggerRedirect: {\n\t name: 'redirect',\n\t type: 'queryPipelineTriggers'\n\t },\n\t queryError: {\n\t name: 'query',\n\t type: 'errors',\n\t metaMap: { 'query': 1, 'aq': 2, 'cq': 3, 'dq': 4, 'errorType': 5, 'errorMessage': 6 }\n\t },\n\t exportToExcel: {\n\t name: 'exportToExcel',\n\t type: 'misc'\n\t },\n\t recommendation: {\n\t name: 'recommendation',\n\t type: 'recommendation'\n\t },\n\t recommendationInterfaceLoad: {\n\t name: 'recommendationInterfaceLoad',\n\t type: 'recommendation'\n\t },\n\t recommendationOpen: {\n\t name: 'recommendationOpen',\n\t type: 'recommendation'\n\t },\n\t advancedSearch: {\n\t name: 'advancedSearch',\n\t type: 'advancedSearch'\n\t },\n\t searchAlertsFollowDocument: {\n\t name: 'followDocument',\n\t type: 'searchAlerts'\n\t },\n\t searchAlertsFollowQuery: {\n\t name: 'followQuery',\n\t type: 'searchAlerts'\n\t },\n\t searchAlertsUpdateSubscription: {\n\t name: 'updateSubscription',\n\t type: 'searchAlerts'\n\t },\n\t searchAlertsDeleteSubscription: {\n\t name: 'deleteSubscription',\n\t type: 'searchAlerts'\n\t },\n\t searchAlertsUnfollowDocument: {\n\t name: 'unfollowDocument',\n\t type: 'searchAlerts'\n\t },\n\t searchAlertsUnfollowQuery: {\n\t name: 'unfollowQuery',\n\t type: 'searchAlerts'\n\t },\n\t resultsLayoutChange: {\n\t name: 'changeResultsLayout',\n\t type: 'resultsLayout'\n\t }\n\t};\n\n\n/***/ },\n/* 128 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar AnalyticsEndpoint_1 = __webpack_require__(39);\n\tvar SearchEndpoint_1 = __webpack_require__(11);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar ComponentOptionsModel_1 = __webpack_require__(104);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Model_1 = __webpack_require__(100);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar NoopAnalyticsClient_1 = __webpack_require__(121);\n\tvar LiveAnalyticsClient_1 = __webpack_require__(129);\n\tvar MultiAnalyticsClient_1 = __webpack_require__(133);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar Recommendation_1 = __webpack_require__(134);\n\tvar RecommendationAnalyticsClient_1 = __webpack_require__(174);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The Analytics component logs user actions performed in the search interface and sends them to a REST web service\n\t * exposed through the Coveo Cloud Platform.\n\t *\n\t * You can use analytics data to evaluate how users are interacting with your search interface, improve relevance and\n\t * produce analytics dashboards within the Coveo Cloud Platform.\n\t *\n\t * See [Step 7 - Usage Analytics](https://developers.coveo.com/x/EYskAg) of the Getting Started with the JavaScript\n\t * Search Framework V1 tutorial for an introduction to usage analytics.\n\t *\n\t * See also [Sending Custom Analytics Events](https://developers.coveo.com/x/KoGfAQ) for more advanced use cases.\n\t */\n\tvar Analytics = (function (_super) {\n\t __extends(Analytics, _super);\n\t /**\n\t * Creates a new Analytics component. Creates the {@link IAnalyticsClient}.\n\t * @param element The HTMLElement on which the component will be instantiated.\n\t * @param options The options for the Analytics component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function Analytics(element, options, bindings) {\n\t if (options === void 0) { options = {}; }\n\t var _this = _super.call(this, element, Analytics.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.bindings = bindings;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Analytics, options);\n\t _this.retrieveInfoFromDefaultSearchEndpoint();\n\t _this.initializeAnalyticsClient();\n\t Assert_1.Assert.exists(_this.client);\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (data) { return _this.handleBuildingQuery(data); });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.queryError, function (data) { return _this.handleQueryError(data); });\n\t // Analytics component is a bit special: It can be higher in the dom tree than the search interface\n\t // Need to resolve down to find the componentOptionsModel if we need to.\n\t if (!_this.componentOptionsModel) {\n\t var cmpOptionElement = Dom_1.$$(element).find('.' + Component_1.Component.computeCssClassName(ComponentOptionsModel_1.ComponentOptionsModel));\n\t if (cmpOptionElement) {\n\t _this.componentOptionsModel = cmpOptionElement[Component_1.Component.computeCssClassName(ComponentOptionsModel_1.ComponentOptionsModel)];\n\t }\n\t }\n\t if (_this.componentOptionsModel) {\n\t _this.componentOptionsModel.set(ComponentOptionsModel_1.ComponentOptionsModel.attributesEnum.searchHub, _this.options.searchHub);\n\t var event_1 = _this.componentOptionsModel.getEventName(Model_1.Model.eventTypes.changeOne + ComponentOptionsModel_1.ComponentOptionsModel.attributesEnum.searchHub);\n\t _this.bind.onRootElement(event_1, function (args) { return _this.handleSearchHubChanged(args); });\n\t }\n\t return _this;\n\t }\n\t /**\n\t * Logs a Search event on the service, using an [AnalyticsActionCause]({@link IAnalyticsActionCause}) and a meta\n\t * object.\n\t *\n\t * Note that the search event is only sent to the service when the query successfully returns, not immediately after\n\t * calling this method. Therefore, it is important to call this method before executing the query. Otherwise the\n\t * service will log no Search event and you will get a warning message in the console.\n\t *\n\t * See [Sending Custom Analytics Events](https://developers.coveo.com/x/KoGfAQ).\n\t *\n\t * @param actionCause Describes the cause of the event.\n\t * @param meta The metadata which you want to use to create custom dimensions. Metadata can contain as many key-value\n\t * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n\t * API automatically converts white spaces to underscores and uppercase characters to lowercase characters in key\n\t * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n\t * ( `{}` ).\n\t */\n\t Analytics.prototype.logSearchEvent = function (actionCause, meta) {\n\t this.client.logSearchEvent(actionCause, meta);\n\t };\n\t /**\n\t * Logs a SearchAsYouType event on the service, using an {@link IAnalyticsActionCause} and a meta object.\n\t *\n\t * This method is very similar to the {@link logSearchEvent} method, except that logSearchAsYouType is, by definition,\n\t * more frequently called.\n\t *\n\t * The `PendingSearchAsYouTypeEvent` takes care of logging only the \"relevant\" last event: an event that occurs after\n\t * 5 seconds elapse without any event being logged, or an event that occurs after another part of the interface\n\t * triggers a search event. This avoids logging every single partial query, which would make the reporting very\n\t * confusing.\n\t *\n\t * It is important to call this method before executing the query. Otherwise the service will log no SearchAsYouType\n\t * event and you will get a warning message in the console.\n\t *\n\t * See [Sending Custom Analytics Events](https://developers.coveo.com/x/KoGfAQ).\n\t *\n\t * @param actionCause Describes the cause of the event.\n\t * @param meta The metadata which you want to use to create custom dimensions. Metadata can contain as many key-value\n\t * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n\t * API automatically converts white spaces to underscores and uppercase characters to lowercase characters in key\n\t * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n\t * ( `{}` ).\n\t */\n\t Analytics.prototype.logSearchAsYouType = function (actionCause, meta) {\n\t this.client.logSearchAsYouType(actionCause, meta);\n\t };\n\t /**\n\t * Logs a Custom event on the service. You can use custom events to create custom reports, or to track events\n\t * that are not queries or document views.\n\t *\n\t * @param actionCause Describes the cause of the event.\n\t * @param meta The metadata which you want to use to create custom dimensions. Metadata can contain as many key-value\n\t * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n\t * API automatically converts white spaces to underscores and uppercase characters to lowercase characters in key\n\t * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n\t * ( `{}` ).\n\t * @param element The HTMLElement that the user has interacted with for this custom event.\n\t */\n\t Analytics.prototype.logCustomEvent = function (actionCause, meta, element) {\n\t if (element === void 0) { element = this.element; }\n\t this.client.logCustomEvent(actionCause, meta, element);\n\t };\n\t /**\n\t * Logs a Click event. You can understand click events as document views (e.g., clicking on a {@link ResultLink} or\n\t * opening a {@link Quickview}).\n\t *\n\t * This event is logged immediately on the service.\n\t *\n\t * @param actionCause Describes the cause of the event.\n\t * @param meta The metadata which you want to use to create custom dimensions. Metadata can contain as many key-value\n\t * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n\t * API automatically converts uppercase characters to lowercase characters in key names. Each value must be a simple\n\t * string. You do not have to pass an {@link IAnalyticsDocumentViewMeta} as meta when logging a custom Click event.\n\t * You can actually send any arbitrary meta. If you do not need to log metadata, you can simply pass an empty JSON\n\t * ( `{}` ).\n\t * @param result The result that the user has clicked.\n\t * @param element The HTMLElement that the user has clicked in the interface.\n\t */\n\t Analytics.prototype.logClickEvent = function (actionCause, meta, result, element) {\n\t if (element === void 0) { element = this.element; }\n\t this.client.logClickEvent(actionCause, meta, result, element);\n\t };\n\t /**\n\t * Sets the Origin Context dimension on the analytic events.\n\t *\n\t * You can use this dimension to specify the context of your application.\n\t * Suggested values are \"Search\", \"InternalSearch\" and \"CommunitySearch\"\n\t *\n\t * Default value is `Search`.\n\t *\n\t * @param originContext The origin context value\n\t */\n\t Analytics.prototype.setOriginContext = function (originContext) {\n\t this.client.setOriginContext(originContext);\n\t };\n\t Analytics.prototype.initializeAnalyticsEndpoint = function () {\n\t return new AnalyticsEndpoint_1.AnalyticsEndpoint({\n\t token: this.options.token,\n\t serviceUrl: this.options.endpoint,\n\t organization: this.options.organization\n\t });\n\t };\n\t Analytics.prototype.initializeAnalyticsClient = function () {\n\t if (Utils_1.Utils.isNonEmptyString(this.options.endpoint)) {\n\t var endpoint = this.initializeAnalyticsEndpoint();\n\t var elementToInitializeClient = void 0;\n\t if (this.root && this.element) {\n\t if (this.root.contains(this.element)) {\n\t elementToInitializeClient = this.root;\n\t }\n\t else {\n\t elementToInitializeClient = this.element;\n\t }\n\t }\n\t var isRecommendation = Dom_1.$$(this.root).hasClass(Component_1.Component.computeCssClassName(Recommendation_1.Recommendation));\n\t this.instantiateAnalyticsClient(endpoint, elementToInitializeClient, isRecommendation);\n\t }\n\t else {\n\t this.client = new NoopAnalyticsClient_1.NoopAnalyticsClient();\n\t }\n\t };\n\t Analytics.prototype.instantiateAnalyticsClient = function (endpoint, elementToInitializeClient, isRecommendation) {\n\t if (isRecommendation) {\n\t this.client = new RecommendationAnalyticsClient_1.RecommendationAnalyticsClient(endpoint, elementToInitializeClient, this.options.user, this.options.userDisplayName, this.options.anonymous, this.options.splitTestRunName, this.options.splitTestRunVersion, this.options.searchHub, this.options.sendToCloud, this.getBindings());\n\t }\n\t else {\n\t this.client = new LiveAnalyticsClient_1.LiveAnalyticsClient(endpoint, elementToInitializeClient, this.options.user, this.options.userDisplayName, this.options.anonymous, this.options.splitTestRunName, this.options.splitTestRunVersion, this.options.searchHub, this.options.sendToCloud);\n\t }\n\t };\n\t Analytics.prototype.retrieveInfoFromDefaultSearchEndpoint = function () {\n\t var defaultEndpoint = SearchEndpoint_1.SearchEndpoint.endpoints['default'];\n\t if (this.options.token == null && defaultEndpoint) {\n\t this.options.token = defaultEndpoint.options.accessToken;\n\t }\n\t if (!this.options.organization && defaultEndpoint) {\n\t this.options.organization = defaultEndpoint.options.queryStringArguments['workgroup'];\n\t }\n\t };\n\t Analytics.prototype.handleBuildingQuery = function (data) {\n\t Assert_1.Assert.exists(data);\n\t data.queryBuilder.searchHub = this.options.searchHub;\n\t };\n\t Analytics.prototype.handleSearchHubChanged = function (data) {\n\t this.options.searchHub = data.value;\n\t };\n\t Analytics.prototype.handleQueryError = function (data) {\n\t Assert_1.Assert.exists(data);\n\t this.client.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.queryError, {\n\t query: data.query.q,\n\t aq: data.query.aq,\n\t cq: data.query.cq,\n\t dq: data.query.dq,\n\t errorType: data.error.type,\n\t errorMessage: data.error.message\n\t }, this.element);\n\t };\n\t Analytics.create = function (element, options, bindings) {\n\t var selector = Component_1.Component.computeSelectorForType(Analytics.ID);\n\t var found = [];\n\t found = found.concat(Dom_1.$$(element).findAll(selector));\n\t if (!(Component_1.Component.get(element, SearchInterface_1.SearchInterface) instanceof Recommendation_1.Recommendation)) {\n\t found = this.ignoreElementsInsideRecommendationInterface(found);\n\t }\n\t found.push(Dom_1.$$(element).closest(Component_1.Component.computeCssClassName(Analytics)));\n\t if (Dom_1.$$(element).is(selector)) {\n\t found.push(element);\n\t }\n\t found = _.compact(found);\n\t if (found.length == 1) {\n\t return Analytics.getClient(found[0], options, bindings);\n\t }\n\t else if (found.length > 1) {\n\t return new MultiAnalyticsClient_1.MultiAnalyticsClient(_.map(found, function (el) { return Analytics.getClient(el, options, bindings); }));\n\t }\n\t else {\n\t return new NoopAnalyticsClient_1.NoopAnalyticsClient();\n\t }\n\t };\n\t Analytics.ignoreElementsInsideRecommendationInterface = function (found) {\n\t return _.filter(found, function (element) {\n\t return Dom_1.$$(element).closest(Component_1.Component.computeCssClassName(Recommendation_1.Recommendation)) === undefined;\n\t });\n\t };\n\t Analytics.getClient = function (element, options, bindings) {\n\t // This check if an element is already initialized as an analytics component.\n\t // If that's the case, return the client on that element.\n\t // Otherwise, init and return.\n\t var foundOnElement = Component_1.Component.get(element, Analytics, true);\n\t if (foundOnElement instanceof Analytics) {\n\t return foundOnElement.client;\n\t }\n\t else {\n\t return new Analytics(element, options, bindings).client;\n\t }\n\t };\n\t return Analytics;\n\t}(Component_1.Component));\n\tAnalytics.ID = 'Analytics';\n\t// NOTE: The default values for some of those options (`organization`, `endpoint`, `searchHub`) can be\n\t// overridden by generated code when using hosted search pages.\n\t/**\n\t * Options for the component\n\t * @componentOptions\n\t */\n\tAnalytics.options = {\n\t /**\n\t * Specifies the name of the user for the usage analytics logs.\n\t *\n\t * Default value is `undefined`\n\t */\n\t user: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the user display name for the usage analytics logs.\n\t *\n\t * Default value is `undefined`\n\t */\n\t userDisplayName: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the token to use to access the usage analytics endpoint.\n\t *\n\t * Default value is `undefined`, and the component uses the search token.\n\t */\n\t token: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the URL of the usage analytics logger to cover exceptional cases in which this location could differ\n\t * from the default Coveo Cloud Usage Analytics endpoint (https://usageanalytics.coveo.com).\n\t *\n\t * Default value is `https://usageanalytics.coveo.com`.\n\t */\n\t endpoint: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: AnalyticsEndpoint_1.AnalyticsEndpoint.DEFAULT_ANALYTICS_URI }),\n\t /**\n\t * Specifies whether to convert search user identities to unique hash when logging analytics data, so that\n\t * analytics reviewers and managers will not be able to clearly identify which user is performing which query.\n\t *\n\t * When this option is `true`, the Coveo Usage Analytics Platform can still properly differentiate sessions\n\t * made by anonymous users from sessions made by users authenticated in some way on the site containing the search\n\t * page.\n\t *\n\t * Default value is `false`.\n\t */\n\t anonymous: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Sets the Search Hub dimension on the search events.\n\t *\n\t * The Search Hub dimension is typically a name that refers to a specific search page. For example, you could use\n\t * the `CommunitySite` value to refer to a search page on a company's public community site.\n\t *\n\t * Default value is `default`.\n\t */\n\t searchHub: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: 'default' }),\n\t /**\n\t * Specifies the name of the split test run that the search page is part of.\n\t *\n\t * You can use this dimension to perform A/B testing using different search page layouts and features inside the\n\t * Coveo Query pipeline.\n\t *\n\t * Default value is `undefined` and no split test run name is reported to the Coveo Usage Analytics Platform.\n\t */\n\t splitTestRunName: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the version name for the page when a split test run is active.\n\t *\n\t * When reporting on A/B testing analytics data, this value specifies the test run version name that was\n\t * presented to the user.\n\t *\n\t * Default value is `undefined`\n\t */\n\t splitTestRunVersion: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t sendToCloud: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies the organization bound to the access token. This is necessary when using an access token, because a\n\t * single access token can be associated to more than one organization.\n\t *\n\t * Default value is `undefined`, and the value of this parameter will fallback to the organization used for the\n\t * search endpoint.\n\t */\n\t organization: ComponentOptions_1.ComponentOptions.buildStringOption()\n\t};\n\texports.Analytics = Analytics;\n\n\n/***/ },\n/* 129 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar PendingSearchEvent_1 = __webpack_require__(130);\n\tvar PendingSearchAsYouTypeSearchEvent_1 = __webpack_require__(132);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Defer_1 = __webpack_require__(34);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar AnalyticsEvents_1 = __webpack_require__(43);\n\tvar APIAnalyticsBuilder_1 = __webpack_require__(131);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar Component_1 = __webpack_require__(109);\n\tvar Version_1 = __webpack_require__(10);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar _ = __webpack_require__(16);\n\tvar LiveAnalyticsClient = (function () {\n\t function LiveAnalyticsClient(endpoint, rootElement, userId, userDisplayName, anonymous, splitTestRunName, splitTestRunVersion, originLevel1, sendToCloud) {\n\t this.endpoint = endpoint;\n\t this.rootElement = rootElement;\n\t this.userId = userId;\n\t this.userDisplayName = userDisplayName;\n\t this.anonymous = anonymous;\n\t this.splitTestRunName = splitTestRunName;\n\t this.splitTestRunVersion = splitTestRunVersion;\n\t this.originLevel1 = originLevel1;\n\t this.sendToCloud = sendToCloud;\n\t this.isContextual = false;\n\t this.originContext = 'Search';\n\t this.language = String['locale'];\n\t this.device = DeviceUtils_1.DeviceUtils.getDeviceName();\n\t this.mobile = DeviceUtils_1.DeviceUtils.isMobileDevice();\n\t Assert_1.Assert.exists(endpoint);\n\t Assert_1.Assert.exists(rootElement);\n\t Assert_1.Assert.isNonEmptyString(this.language);\n\t Assert_1.Assert.isNonEmptyString(this.device);\n\t Assert_1.Assert.isNonEmptyString(this.originLevel1);\n\t this.logger = new Logger_1.Logger(this);\n\t }\n\t LiveAnalyticsClient.prototype.isActivated = function () {\n\t return true;\n\t };\n\t LiveAnalyticsClient.prototype.getCurrentVisitId = function () {\n\t return this.endpoint.getCurrentVisitId();\n\t };\n\t LiveAnalyticsClient.prototype.getCurrentVisitIdPromise = function () {\n\t return this.endpoint.getCurrentVisitIdPromise();\n\t };\n\t LiveAnalyticsClient.prototype.getCurrentEventCause = function () {\n\t if (this.pendingSearchEvent != null) {\n\t return this.pendingSearchEvent.getEventCause();\n\t }\n\t if (this.pendingSearchAsYouTypeSearchEvent != null) {\n\t return this.pendingSearchAsYouTypeSearchEvent.getEventCause();\n\t }\n\t return null;\n\t };\n\t LiveAnalyticsClient.prototype.getCurrentEventMeta = function () {\n\t if (this.pendingSearchEvent != null) {\n\t return this.pendingSearchEvent.getEventMeta();\n\t }\n\t if (this.pendingSearchAsYouTypeSearchEvent != null) {\n\t return this.pendingSearchAsYouTypeSearchEvent.getEventMeta();\n\t }\n\t return null;\n\t };\n\t LiveAnalyticsClient.prototype.logSearchEvent = function (actionCause, meta) {\n\t var metaObject = this.buildMetaObject(meta);\n\t this.pushSearchEvent(actionCause, metaObject);\n\t };\n\t LiveAnalyticsClient.prototype.logSearchAsYouType = function (actionCause, meta) {\n\t var metaObject = this.buildMetaObject(meta);\n\t this.pushSearchAsYouTypeEvent(actionCause, metaObject);\n\t };\n\t LiveAnalyticsClient.prototype.logClickEvent = function (actionCause, meta, result, element) {\n\t var metaObject = this.buildMetaObject(meta, result);\n\t return this.pushClickEvent(actionCause, metaObject, result, element);\n\t };\n\t LiveAnalyticsClient.prototype.logCustomEvent = function (actionCause, meta, element) {\n\t var metaObject = this.buildMetaObject(meta);\n\t return this.pushCustomEvent(actionCause, metaObject, element);\n\t };\n\t LiveAnalyticsClient.prototype.getTopQueries = function (params) {\n\t return this.endpoint.getTopQueries(params);\n\t };\n\t LiveAnalyticsClient.prototype.sendAllPendingEvents = function () {\n\t if (this.pendingSearchAsYouTypeSearchEvent) {\n\t this.pendingSearchAsYouTypeSearchEvent.sendRightNow();\n\t }\n\t };\n\t LiveAnalyticsClient.prototype.cancelAllPendingEvents = function () {\n\t if (this.pendingSearchAsYouTypeSearchEvent) {\n\t this.pendingSearchAsYouTypeSearchEvent.cancel();\n\t this.pendingSearchAsYouTypeSearchEvent = null;\n\t }\n\t if (this.pendingSearchEvent) {\n\t this.pendingSearchEvent.cancel();\n\t this.pendingSearchEvent = null;\n\t }\n\t };\n\t LiveAnalyticsClient.prototype.getPendingSearchEvent = function () {\n\t if (this.pendingSearchEvent) {\n\t return this.pendingSearchEvent;\n\t }\n\t else if (this.pendingSearchAsYouTypeSearchEvent) {\n\t return this.pendingSearchAsYouTypeSearchEvent;\n\t }\n\t return null;\n\t };\n\t LiveAnalyticsClient.prototype.warnAboutSearchEvent = function () {\n\t if (_.isUndefined(this.pendingSearchEvent) && _.isUndefined(this.pendingSearchAsYouTypeSearchEvent)) {\n\t this.logger.warn('A search was triggered, but no analytics event was logged. If you wish to have consistent analytics data, consider logging a search event using the methods provided by the framework', 'https://developers.coveo.com/x/TwA5');\n\t if (window['console'] && console.trace) {\n\t console.trace();\n\t }\n\t }\n\t };\n\t LiveAnalyticsClient.prototype.setOriginContext = function (originContext) {\n\t this.originContext = originContext;\n\t };\n\t LiveAnalyticsClient.prototype.pushCustomEvent = function (actionCause, metaObject, element) {\n\t var customEvent = this.buildCustomEvent(actionCause, metaObject, element);\n\t this.triggerChangeAnalyticsCustomData('CustomEvent', metaObject, customEvent);\n\t this.checkToSendAnyPendingSearchAsYouType(actionCause);\n\t Dom_1.$$(this.rootElement).trigger(AnalyticsEvents_1.AnalyticsEvents.customEvent, { customEvent: APIAnalyticsBuilder_1.APIAnalyticsBuilder.convertCustomEventToAPI(customEvent) });\n\t return this.sendToCloud ? this.endpoint.sendCustomEvent(customEvent) : Promise.resolve(null);\n\t };\n\t LiveAnalyticsClient.prototype.pushSearchEvent = function (actionCause, metaObject) {\n\t var _this = this;\n\t Assert_1.Assert.exists(actionCause);\n\t if (this.pendingSearchEvent && this.pendingSearchEvent.getEventCause() !== actionCause.name) {\n\t this.pendingSearchEvent.stopRecording();\n\t this.pendingSearchEvent = null;\n\t }\n\t this.checkToSendAnyPendingSearchAsYouType(actionCause);\n\t if (!this.pendingSearchEvent) {\n\t var searchEvent = this.buildSearchEvent(actionCause, metaObject);\n\t this.triggerChangeAnalyticsCustomData('SearchEvent', metaObject, searchEvent);\n\t var pendingSearchEvent = this.pendingSearchEvent = new PendingSearchEvent_1.PendingSearchEvent(this.rootElement, this.endpoint, searchEvent, this.sendToCloud);\n\t Defer_1.Defer.defer(function () {\n\t // At this point all `duringQuery` events should have been fired, so we can forget\n\t // about the pending search event. It will finish processing automatically when\n\t // all the deferred that were caught terminate.\n\t _this.pendingSearchEvent = undefined;\n\t pendingSearchEvent.stopRecording();\n\t });\n\t }\n\t };\n\t LiveAnalyticsClient.prototype.checkToSendAnyPendingSearchAsYouType = function (actionCause) {\n\t if (this.eventIsNotRelatedToSearchbox(actionCause.name)) {\n\t this.sendAllPendingEvents();\n\t }\n\t else {\n\t this.cancelAnyPendingSearchAsYouTypeEvent();\n\t }\n\t };\n\t LiveAnalyticsClient.prototype.pushSearchAsYouTypeEvent = function (actionCause, metaObject) {\n\t this.cancelAnyPendingSearchAsYouTypeEvent();\n\t var searchEvent = this.buildSearchEvent(actionCause, metaObject);\n\t this.triggerChangeAnalyticsCustomData('SearchEvent', metaObject, searchEvent);\n\t this.pendingSearchAsYouTypeSearchEvent = new PendingSearchAsYouTypeSearchEvent_1.PendingSearchAsYouTypeSearchEvent(this.rootElement, this.endpoint, searchEvent, this.sendToCloud);\n\t };\n\t LiveAnalyticsClient.prototype.pushClickEvent = function (actionCause, metaObject, result, element) {\n\t var event = this.buildClickEvent(actionCause, metaObject, result, element);\n\t this.checkToSendAnyPendingSearchAsYouType(actionCause);\n\t this.triggerChangeAnalyticsCustomData('ClickEvent', metaObject, event, { resultData: result });\n\t Assert_1.Assert.isNonEmptyString(event.searchQueryUid);\n\t Assert_1.Assert.isNonEmptyString(event.collectionName);\n\t Assert_1.Assert.isNonEmptyString(event.sourceName);\n\t Assert_1.Assert.isNumber(event.documentPosition);\n\t Dom_1.$$(this.rootElement).trigger(AnalyticsEvents_1.AnalyticsEvents.documentViewEvent, {\n\t documentViewEvent: APIAnalyticsBuilder_1.APIAnalyticsBuilder.convertDocumentViewToAPI(event)\n\t });\n\t return this.sendToCloud ? this.endpoint.sendDocumentViewEvent(event) : Promise.resolve(null);\n\t };\n\t LiveAnalyticsClient.prototype.buildAnalyticsEvent = function (actionCause, metaObject) {\n\t return {\n\t actionCause: actionCause.name,\n\t actionType: actionCause.type,\n\t username: this.userId,\n\t userDisplayName: this.userDisplayName,\n\t anonymous: this.anonymous,\n\t device: this.device,\n\t mobile: this.mobile,\n\t language: this.language,\n\t responseTime: undefined,\n\t originLevel1: this.originLevel1,\n\t originLevel2: this.getOriginLevel2(this.rootElement),\n\t originLevel3: document.referrer,\n\t originContext: this.originContext,\n\t customData: _.keys(metaObject).length > 0 ? metaObject : undefined,\n\t userAgent: navigator.userAgent\n\t };\n\t };\n\t LiveAnalyticsClient.prototype.buildSearchEvent = function (actionCause, metaObject) {\n\t return this.merge(this.buildAnalyticsEvent(actionCause, metaObject), {\n\t searchQueryUid: undefined,\n\t pipeline: undefined,\n\t splitTestRunName: this.splitTestRunName,\n\t splitTestRunVersion: this.splitTestRunVersion,\n\t queryText: undefined,\n\t advancedQuery: undefined,\n\t results: undefined,\n\t resultsPerPage: undefined,\n\t pageNumber: undefined,\n\t didYouMean: undefined,\n\t facets: undefined,\n\t contextual: this.isContextual\n\t });\n\t };\n\t LiveAnalyticsClient.prototype.buildClickEvent = function (actionCause, metaObject, result, element) {\n\t return this.merge(this.buildAnalyticsEvent(actionCause, metaObject), {\n\t searchQueryUid: result.queryUid,\n\t queryPipeline: result.pipeline,\n\t splitTestRunName: this.splitTestRunName || result.splitTestRun,\n\t splitTestRunVersion: this.splitTestRunVersion || (result.splitTestRun != undefined ? result.pipeline : undefined),\n\t documentUri: result.uri,\n\t documentUriHash: QueryUtils_1.QueryUtils.getUriHash(result),\n\t documentUrl: result.clickUri,\n\t documentTitle: result.title,\n\t documentCategory: QueryUtils_1.QueryUtils.getObjectType(result),\n\t originLevel2: this.getOriginLevel2(element),\n\t collectionName: QueryUtils_1.QueryUtils.getCollection(result),\n\t sourceName: QueryUtils_1.QueryUtils.getSource(result),\n\t documentPosition: result.index + 1,\n\t responseTime: 0,\n\t viewMethod: actionCause.name,\n\t rankingModifier: result.rankingModifier\n\t });\n\t };\n\t LiveAnalyticsClient.prototype.buildCustomEvent = function (actionCause, metaObject, element) {\n\t return this.merge(this.buildAnalyticsEvent(actionCause, metaObject), {\n\t eventType: actionCause.type,\n\t eventValue: actionCause.name,\n\t originLevel2: this.getOriginLevel2(element),\n\t responseTime: 0\n\t });\n\t };\n\t LiveAnalyticsClient.prototype.getOriginLevel2 = function (element) {\n\t return this.resolveActiveTabFromElement(element) || 'default';\n\t };\n\t LiveAnalyticsClient.prototype.buildMetaObject = function (meta, result) {\n\t var modifiedMeta = _.extend({}, meta);\n\t modifiedMeta['JSUIVersion'] = Version_1.version.lib + ';' + Version_1.version.product;\n\t if (result) {\n\t var uniqueId = QueryUtils_1.QueryUtils.getPermanentId(result);\n\t modifiedMeta['contentIDKey'] = uniqueId.fieldUsed;\n\t modifiedMeta['contentIDValue'] = uniqueId.fieldValue;\n\t }\n\t return modifiedMeta;\n\t };\n\t LiveAnalyticsClient.prototype.cancelAnyPendingSearchAsYouTypeEvent = function () {\n\t if (this.pendingSearchAsYouTypeSearchEvent) {\n\t this.pendingSearchAsYouTypeSearchEvent.cancel();\n\t this.pendingSearchAsYouTypeSearchEvent = undefined;\n\t }\n\t };\n\t LiveAnalyticsClient.prototype.resolveActiveTabFromElement = function (element) {\n\t Assert_1.Assert.exists(element);\n\t var queryStateModel = this.resolveQueryStateModel(element);\n\t return (queryStateModel && queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.t));\n\t };\n\t LiveAnalyticsClient.prototype.resolveQueryStateModel = function (rootElement) {\n\t return Component_1.Component.resolveBinding(rootElement, QueryStateModel_1.QueryStateModel);\n\t };\n\t LiveAnalyticsClient.prototype.eventIsNotRelatedToSearchbox = function (event) {\n\t return event !== AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxSubmit.name && event !== AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxClear.name;\n\t };\n\t LiveAnalyticsClient.prototype.triggerChangeAnalyticsCustomData = function (type, metaObject, event, data) {\n\t // This is for backward compatibility. Before the analytics were using either numbered\n\t // metas in `metaDataAsNumber` of later on named metas in `metaDataAsString`. Thus we still\n\t // provide those properties in a deprecated way. Below we are moving any data that put\n\t // in them to the root.\n\t metaObject['metaDataAsString'] = {};\n\t metaObject['metaDataAsNumber'] = {};\n\t var changeableAnalyticsDataObject = {\n\t language: event.language,\n\t originLevel1: event.originLevel1,\n\t originLevel2: event.originLevel2,\n\t originLevel3: event.originLevel3,\n\t metaObject: metaObject\n\t };\n\t var args = _.extend({}, {\n\t type: type,\n\t actionType: event.actionType,\n\t actionCause: event.actionCause\n\t }, changeableAnalyticsDataObject, data);\n\t Dom_1.$$(this.rootElement).trigger(AnalyticsEvents_1.AnalyticsEvents.changeAnalyticsCustomData, args);\n\t event.language = args.language;\n\t event.originLevel1 = args.originLevel1;\n\t event.originLevel2 = args.originLevel2;\n\t event.originLevel3 = args.originLevel3;\n\t event.customData = metaObject;\n\t // This is for backward compatibility. Before the analytics were using either numbered\n\t // metas in `metaDataAsNumber` of later on named metas in `metaDataAsString`. We are now putting\n\t // them all at the root, and if I encounter the older properties I move them to the top\n\t // level after issuing a warning.\n\t var metaDataAsString = event.customData['metaDataAsString'];\n\t if (_.keys(metaDataAsString).length > 0) {\n\t this.logger.warn('Using deprecated \\'metaDataAsString\\' key to log custom analytics data. Custom meta should now be put at the root of the object.');\n\t _.extend(event.customData, metaDataAsString);\n\t }\n\t delete event.customData['metaDataAsString'];\n\t var metaDataAsNumber = event.customData['metaDataAsNumber'];\n\t if (_.keys(metaDataAsNumber).length > 0) {\n\t this.logger.warn('Using deprecated \\'metaDataAsNumber\\' key to log custom analytics data. Custom meta should now be put at the root of the object.');\n\t _.extend(event.customData, metaDataAsNumber);\n\t }\n\t delete event.customData['metaDataAsNumber'];\n\t };\n\t LiveAnalyticsClient.prototype.merge = function (first, second) {\n\t return _.extend({}, first, second);\n\t };\n\t return LiveAnalyticsClient;\n\t}());\n\texports.LiveAnalyticsClient = LiveAnalyticsClient;\n\n\n/***/ },\n/* 130 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar Component_1 = __webpack_require__(109);\n\tvar QueryController_1 = __webpack_require__(76);\n\tvar Defer_1 = __webpack_require__(34);\n\tvar APIAnalyticsBuilder_1 = __webpack_require__(131);\n\tvar AnalyticsEvents_1 = __webpack_require__(43);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar _ = __webpack_require__(16);\n\tvar PendingSearchEvent = (function () {\n\t function PendingSearchEvent(root, endpoint, templateSearchEvent, sendToCloud) {\n\t var _this = this;\n\t this.root = root;\n\t this.endpoint = endpoint;\n\t this.templateSearchEvent = templateSearchEvent;\n\t this.sendToCloud = sendToCloud;\n\t this.searchPromises = [];\n\t this.results = [];\n\t this.cancelled = false;\n\t this.finished = false;\n\t this.searchEvents = [];\n\t Assert_1.Assert.exists(root);\n\t Assert_1.Assert.exists(endpoint);\n\t Assert_1.Assert.exists(templateSearchEvent);\n\t this.handler = function (evt, arg) {\n\t _this.handleDuringQuery(evt, arg);\n\t };\n\t Dom_1.$$(root).on(QueryEvents_1.QueryEvents.duringQuery, this.handler);\n\t }\n\t PendingSearchEvent.prototype.getEventCause = function () {\n\t return this.templateSearchEvent.actionCause;\n\t };\n\t PendingSearchEvent.prototype.getEventMeta = function () {\n\t return this.templateSearchEvent.customData;\n\t };\n\t PendingSearchEvent.prototype.cancel = function () {\n\t this.stopRecording();\n\t this.cancelled = true;\n\t };\n\t PendingSearchEvent.prototype.handleDuringQuery = function (evt, args, queryBoxContentToUse) {\n\t var _this = this;\n\t Assert_1.Assert.check(!this.finished);\n\t Assert_1.Assert.check(!this.cancelled);\n\t // When synchronizing multiple search interfaces under a single search event\n\t // (think Salesforce boxes), we need to collect all search events and send them\n\t // in one single batch. So we gather all events until we idle out and then we\n\t // monitor those before sending the data.\n\t this.searchPromises.push(args.promise);\n\t var eventTarget = evt.target;\n\t var searchInterface = Component_1.Component.get(eventTarget, SearchInterface_1.SearchInterface);\n\t Assert_1.Assert.exists(searchInterface);\n\t // We try to grab ahead of time the content of the search box before the query returns\n\t // This is because it's possible that the content of the search box gets modified when the query returns (for example : DidYouMean)\n\t if (!queryBoxContentToUse) {\n\t queryBoxContentToUse = searchInterface.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.q);\n\t }\n\t var queryController = Component_1.Component.get(eventTarget, QueryController_1.QueryController);\n\t Assert_1.Assert.exists(queryController);\n\t args.promise.then(function (queryResults) {\n\t Assert_1.Assert.exists(queryResults);\n\t Assert_1.Assert.check(!_this.finished);\n\t if (queryResults._reusedSearchUid !== true || _this.templateSearchEvent.actionCause == AnalyticsActionListMeta_1.analyticsActionCauseList.recommendation.name) {\n\t var searchEvent = _.extend({}, _this.templateSearchEvent);\n\t _this.fillSearchEvent(searchEvent, searchInterface, args.query, queryResults, queryBoxContentToUse);\n\t _this.searchEvents.push(searchEvent);\n\t _this.results.push(queryResults);\n\t return queryResults;\n\t }\n\t }).finally(function () {\n\t var index = _.indexOf(_this.searchPromises, args.promise);\n\t _this.searchPromises.splice(index, 1);\n\t if (_this.searchPromises.length == 0) {\n\t _this.flush();\n\t }\n\t });\n\t };\n\t PendingSearchEvent.prototype.stopRecording = function () {\n\t if (this.handler) {\n\t Dom_1.$$(this.root).off(QueryEvents_1.QueryEvents.duringQuery, this.handler);\n\t Dom_1.$$(this.root).off(QueryEvents_1.QueryEvents.duringFetchMoreQuery, this.handler);\n\t this.handler = null;\n\t }\n\t };\n\t PendingSearchEvent.prototype.flush = function () {\n\t var _this = this;\n\t if (!this.cancelled) {\n\t this.stopRecording();\n\t this.finished = true;\n\t Assert_1.Assert.check(this.searchEvents.length == this.results.length);\n\t Defer_1.Defer.defer(function () {\n\t if (_this.sendToCloud) {\n\t _this.endpoint.sendSearchEvents(_this.searchEvents);\n\t }\n\t var apiSearchEvents = _.map(_this.searchEvents, function (searchEvent) {\n\t return APIAnalyticsBuilder_1.APIAnalyticsBuilder.convertSearchEventToAPI(searchEvent);\n\t });\n\t Dom_1.$$(_this.root).trigger(AnalyticsEvents_1.AnalyticsEvents.searchEvent, { searchEvents: apiSearchEvents });\n\t });\n\t }\n\t };\n\t PendingSearchEvent.prototype.fillSearchEvent = function (searchEvent, searchInterface, query, queryResults, queryBoxContentToUse) {\n\t Assert_1.Assert.exists(searchEvent);\n\t Assert_1.Assert.exists(searchInterface);\n\t Assert_1.Assert.exists(query);\n\t Assert_1.Assert.exists(queryResults);\n\t var currentQuery = searchInterface.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.q);\n\t searchEvent.queryPipeline = queryResults.pipeline;\n\t searchEvent.splitTestRunName = searchEvent.splitTestRunName || queryResults.splitTestRun;\n\t searchEvent.splitTestRunVersion = searchEvent.splitTestRunVersion || (queryResults.splitTestRun != undefined ? queryResults.pipeline : undefined);\n\t searchEvent.originLevel2 = searchEvent.originLevel2 || searchInterface.queryStateModel.get('t') || 'default';\n\t searchEvent.queryText = queryBoxContentToUse || currentQuery || query.q || ''; // do not log the query sent to the server if possible; it may contain added syntax depending on options\n\t searchEvent.advancedQuery = query.aq || '';\n\t searchEvent.didYouMean = query.enableDidYouMean;\n\t searchEvent.numberOfResults = queryResults.totalCount;\n\t searchEvent.responseTime = queryResults.duration;\n\t searchEvent.pageNumber = (query.firstResult / query.numberOfResults);\n\t searchEvent.resultsPerPage = query.numberOfResults;\n\t searchEvent.searchQueryUid = queryResults.searchUid;\n\t searchEvent.queryPipeline = queryResults.pipeline;\n\t // The context_${key} format is important for the Analytics backend\n\t // This is what they use to recognize a custom data that will be used internally by other coveo's service.\n\t // In this case, Reveal will be the consumer of this information.\n\t if (query.context != undefined) {\n\t _.each(query.context, function (value, key) {\n\t searchEvent.customData[\"context_\" + key] = value;\n\t });\n\t }\n\t // The refinedKeywords field is important for Reveal in order to learn properly on query\n\t // made based on the long query.\n\t if (queryResults.refinedKeywords != undefined && queryResults.refinedKeywords.length != 0) {\n\t searchEvent.customData['refinedKeywords'] = queryResults.refinedKeywords;\n\t }\n\t };\n\t return PendingSearchEvent;\n\t}());\n\texports.PendingSearchEvent = PendingSearchEvent;\n\n\n/***/ },\n/* 131 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar APIAnalyticsBuilder = (function () {\n\t function APIAnalyticsBuilder() {\n\t }\n\t APIAnalyticsBuilder.convertSearchEventToAPI = function (searchEvent) {\n\t var apiSearchEvent = {\n\t advancedQuery: searchEvent.advancedQuery,\n\t customMetadatas: searchEvent.customData,\n\t device: searchEvent.device,\n\t didYouMean: searchEvent.didYouMean,\n\t language: searchEvent.language,\n\t pageNumber: searchEvent.pageNumber,\n\t queryText: searchEvent.queryText,\n\t responseTime: searchEvent.responseTime,\n\t numberOfResults: searchEvent.numberOfResults,\n\t resultsPerPage: searchEvent.resultsPerPage,\n\t searchHub: searchEvent.originLevel1,\n\t searchInterface: searchEvent.originLevel2,\n\t searchQueryUid: searchEvent.searchQueryUid,\n\t type: searchEvent.actionType,\n\t actionCause: searchEvent.actionCause,\n\t queryPipeline: searchEvent.queryPipeline,\n\t splitTestRunName: searchEvent.splitTestRunName,\n\t splitTestRunVersion: searchEvent.splitTestRunVersion\n\t };\n\t return apiSearchEvent;\n\t };\n\t APIAnalyticsBuilder.convertDocumentViewToAPI = function (documentView) {\n\t var apiDocumentView = {\n\t collectionName: documentView.collectionName,\n\t device: documentView.device,\n\t documentPosition: documentView.documentPosition,\n\t title: documentView.documentTitle,\n\t documentUrl: documentView.documentUrl,\n\t documentUri: documentView.documentUri,\n\t documentUriHash: documentView.documentUriHash,\n\t language: documentView.language,\n\t responseTime: documentView.responseTime,\n\t searchHub: documentView.originLevel1,\n\t searchInterface: documentView.originLevel2,\n\t searchQueryUid: documentView.searchQueryUid,\n\t sourceName: documentView.sourceName,\n\t viewMethod: documentView.viewMethod,\n\t customMetadatas: documentView.customData,\n\t actionCause: documentView.actionCause,\n\t queryPipeline: documentView.queryPipeline,\n\t splitTestRunName: documentView.splitTestRunName,\n\t splitTestRunVersion: documentView.splitTestRunVersion\n\t };\n\t return apiDocumentView;\n\t };\n\t APIAnalyticsBuilder.convertCustomEventToAPI = function (customEvent) {\n\t var apiCustomEvent = {\n\t actionCause: customEvent.actionCause,\n\t actionType: customEvent.actionType,\n\t device: customEvent.device,\n\t language: customEvent.language,\n\t responseTime: customEvent.responseTime,\n\t searchHub: customEvent.originLevel1,\n\t searchInterface: customEvent.originLevel2,\n\t customMetadatas: customEvent.customData\n\t };\n\t return apiCustomEvent;\n\t };\n\t return APIAnalyticsBuilder;\n\t}());\n\texports.APIAnalyticsBuilder = APIAnalyticsBuilder;\n\n\n/***/ },\n/* 132 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar PendingSearchEvent_1 = __webpack_require__(130);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar Component_1 = __webpack_require__(109);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar _ = __webpack_require__(16);\n\tvar PendingSearchAsYouTypeSearchEvent = (function (_super) {\n\t __extends(PendingSearchAsYouTypeSearchEvent, _super);\n\t function PendingSearchAsYouTypeSearchEvent(root, endpoint, templateSearchEvent, sendToCloud) {\n\t var _this = _super.call(this, root, endpoint, templateSearchEvent, sendToCloud) || this;\n\t _this.root = root;\n\t _this.endpoint = endpoint;\n\t _this.templateSearchEvent = templateSearchEvent;\n\t _this.sendToCloud = sendToCloud;\n\t _this.delayBeforeSending = 5000;\n\t _this.armBatchDelay = 50;\n\t _this.beforeUnloadHandler = function () {\n\t _this.onWindowUnload();\n\t };\n\t window.addEventListener('beforeunload', _this.beforeUnloadHandler);\n\t Dom_1.$$(root).on(InitializationEvents_1.InitializationEvents.nuke, function () { return _this.handleNuke(); });\n\t return _this;\n\t }\n\t PendingSearchAsYouTypeSearchEvent.prototype.handleDuringQuery = function (e, args) {\n\t var _this = this;\n\t var event = _.clone(e);\n\t // We need to \"snapshot\" the current query before the delay is applied\n\t // Otherwise, this means that after 5 second, the original query is possibly modified\n\t // For example, DidYouMean would be wrong in that case.\n\t var eventTarget = e.target;\n\t var searchInterface = Component_1.Component.get(eventTarget, SearchInterface_1.SearchInterface);\n\t var currentQueryBeforeDelay = searchInterface.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.q);\n\t this.beforeResolve = new Promise(function (resolve) {\n\t _this.toSendRightNow = function () {\n\t if (!_this.isCancelledOrFinished()) {\n\t resolve(_this);\n\t _super.prototype.handleDuringQuery.call(_this, event, args, currentQueryBeforeDelay);\n\t }\n\t };\n\t _.delay(function () {\n\t _this.toSendRightNow();\n\t }, _this.delayBeforeSending);\n\t });\n\t };\n\t PendingSearchAsYouTypeSearchEvent.prototype.sendRightNow = function () {\n\t if (this.toSendRightNow) {\n\t this.toSendRightNow();\n\t }\n\t };\n\t PendingSearchAsYouTypeSearchEvent.prototype.modifyCustomData = function (key, newData) {\n\t _.each(this.searchEvents, function (searchEvent) {\n\t searchEvent.customData[key] = newData;\n\t });\n\t if (!this.templateSearchEvent.customData) {\n\t this.templateSearchEvent.customData = {};\n\t }\n\t this.templateSearchEvent.customData[key] = newData;\n\t };\n\t PendingSearchAsYouTypeSearchEvent.prototype.modifyEventCause = function (newCause) {\n\t _.each(this.searchEvents, function (searchEvent) {\n\t searchEvent.actionCause = newCause.name;\n\t searchEvent.actionType = newCause.type;\n\t });\n\t this.templateSearchEvent.actionCause = newCause.name;\n\t this.templateSearchEvent.actionType = newCause.type;\n\t };\n\t PendingSearchAsYouTypeSearchEvent.prototype.stopRecording = function () {\n\t _super.prototype.stopRecording.call(this);\n\t if (this.beforeUnloadHandler) {\n\t window.removeEventListener('beforeunload', this.beforeUnloadHandler);\n\t this.beforeUnloadHandler = undefined;\n\t }\n\t };\n\t PendingSearchAsYouTypeSearchEvent.prototype.handleNuke = function () {\n\t window.removeEventListener('beforeunload', this.beforeUnloadHandler);\n\t };\n\t PendingSearchAsYouTypeSearchEvent.prototype.onWindowUnload = function () {\n\t if (!this.isCancelledOrFinished()) {\n\t this.armBatchDelay = 0;\n\t this.sendRightNow();\n\t }\n\t };\n\t PendingSearchAsYouTypeSearchEvent.prototype.isCancelledOrFinished = function () {\n\t if (!this.cancelled) {\n\t if (this.finished) {\n\t this.cancel();\n\t return true;\n\t }\n\t else {\n\t return false;\n\t }\n\t }\n\t else {\n\t return true;\n\t }\n\t };\n\t return PendingSearchAsYouTypeSearchEvent;\n\t}(PendingSearchEvent_1.PendingSearchEvent));\n\texports.PendingSearchAsYouTypeSearchEvent = PendingSearchAsYouTypeSearchEvent;\n\n\n/***/ },\n/* 133 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar MultiAnalyticsClient = (function () {\n\t function MultiAnalyticsClient(analyticsClients) {\n\t if (analyticsClients === void 0) { analyticsClients = []; }\n\t this.analyticsClients = analyticsClients;\n\t this.isContextual = false;\n\t }\n\t MultiAnalyticsClient.prototype.isActivated = function () {\n\t return _.some(this.analyticsClients, function (analyticsClient) { return analyticsClient.isActivated(); });\n\t };\n\t MultiAnalyticsClient.prototype.getCurrentEventCause = function () {\n\t return _.find(_.map(this.analyticsClients, function (analyticsClient) { return analyticsClient.getCurrentEventCause(); }), function (currentEventCause) { return currentEventCause != null; });\n\t };\n\t MultiAnalyticsClient.prototype.getCurrentEventMeta = function () {\n\t return _.find(_.map(this.analyticsClients, function (analyticsClient) { return analyticsClient.getCurrentEventMeta(); }), function (currentEventMeta) { return currentEventMeta != null; });\n\t };\n\t MultiAnalyticsClient.prototype.logSearchEvent = function (actionCause, meta) {\n\t _.each(this.analyticsClients, function (analyticsClient) { return analyticsClient.logSearchEvent(actionCause, meta); });\n\t };\n\t MultiAnalyticsClient.prototype.logSearchAsYouType = function (actionCause, meta) {\n\t _.each(this.analyticsClients, function (analyticsClient) { return analyticsClient.logSearchEvent(actionCause, meta); });\n\t };\n\t MultiAnalyticsClient.prototype.logClickEvent = function (actionCause, meta, result, element) {\n\t return Promise.all(_.map(this.analyticsClients, function (analyticsClient) {\n\t return analyticsClient.logClickEvent(actionCause, meta, result, element);\n\t }));\n\t };\n\t MultiAnalyticsClient.prototype.logCustomEvent = function (actionCause, meta, element) {\n\t return Promise.all(_.map(this.analyticsClients, function (analyticsClient) {\n\t return analyticsClient.logCustomEvent(actionCause, meta, element);\n\t }));\n\t };\n\t MultiAnalyticsClient.prototype.getTopQueries = function (params) {\n\t var _this = this;\n\t return Promise.all(_.map(this.analyticsClients, function (client) {\n\t return client.getTopQueries(params);\n\t }))\n\t .then(function (values) {\n\t return _this.mergeTopQueries(values, params.pageSize);\n\t });\n\t };\n\t MultiAnalyticsClient.prototype.getCurrentVisitIdPromise = function () {\n\t return _.first(this.analyticsClients).getCurrentVisitIdPromise();\n\t };\n\t MultiAnalyticsClient.prototype.getCurrentVisitId = function () {\n\t return _.first(this.analyticsClients).getCurrentVisitId();\n\t };\n\t MultiAnalyticsClient.prototype.sendAllPendingEvents = function () {\n\t _.each(this.analyticsClients, function (analyticsClient) { return analyticsClient.sendAllPendingEvents(); });\n\t };\n\t MultiAnalyticsClient.prototype.warnAboutSearchEvent = function () {\n\t _.each(this.analyticsClients, function (analyticsClient) { return analyticsClient.warnAboutSearchEvent(); });\n\t };\n\t MultiAnalyticsClient.prototype.cancelAllPendingEvents = function () {\n\t _.each(this.analyticsClients, function (analyticsClient) { return analyticsClient.cancelAllPendingEvents(); });\n\t };\n\t MultiAnalyticsClient.prototype.getPendingSearchEvent = function () {\n\t return _.first(this.analyticsClients).getPendingSearchEvent();\n\t };\n\t MultiAnalyticsClient.prototype.setOriginContext = function (originContext) {\n\t _.each(this.analyticsClients, function (analyticsClient) { return analyticsClient.setOriginContext(originContext); });\n\t };\n\t MultiAnalyticsClient.prototype.mergeTopQueries = function (values, pageSize) {\n\t if (pageSize === void 0) { pageSize = 5; }\n\t return _.chain(values)\n\t .flatten()\n\t .first(pageSize)\n\t .value();\n\t };\n\t return MultiAnalyticsClient;\n\t}());\n\texports.MultiAnalyticsClient = MultiAnalyticsClient;\n\n\n/***/ },\n/* 134 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar ResultListEvents_1 = __webpack_require__(51);\n\tvar SettingsEvents_1 = __webpack_require__(54);\n\tvar PreferencesPanelEvents_1 = __webpack_require__(49);\n\tvar AnalyticsEvents_1 = __webpack_require__(43);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar BreadcrumbEvents_1 = __webpack_require__(44);\n\tvar QuickviewEvents_1 = __webpack_require__(135);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar Model_1 = __webpack_require__(100);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar ResponsiveRecommendation_1 = __webpack_require__(136);\n\tvar coveo_analytics_1 = __webpack_require__(82);\n\tvar RegisteredNamedMethods_1 = __webpack_require__(107);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The Recommendation component is a {@link SearchInterface} that displays recommendations typically based on user\n\t * history.\n\t *\n\t * This component usually listens to the main SearchInterface. When the main SearchInterface generates a query, the\n\t * Recommendation component generates another query to get the recommendations at the same time.\n\t *\n\t * To get history-based recommendations, you will likely want to include the `pageview` script in your page (see\n\t * [coveo.analytics.js](https://github.com/coveo/coveo.analytics.js)). However, including this script is not mandatory.\n\t * For instance, you could use the Recommendation component without the Coveo Machine Learning service to create a\n\t * simple \"recommended people\" interface.\n\t *\n\t * It is possible to include this component inside another SearchInterface, but it is also possible to instantiate it as\n\t * a \"standalone\" search interface, without even instantiating a main SearchInterface component. In any case, a\n\t * Recommendation component always acts as a full-fledged search interface. Therefore, you can include any component\n\t * inside the Recommendation component (Searchbox, Facet, Sort, etc.), just as you would inside the main SearchInterface\n\t * component.\n\t */\n\tvar Recommendation = (function (_super) {\n\t __extends(Recommendation, _super);\n\t /**\n\t * Creates a new Recommendation component.\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the Recommendation component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time)\n\t * @param _window\n\t */\n\t function Recommendation(element, options, analyticsOptions, _window) {\n\t if (options === void 0) { options = {}; }\n\t if (analyticsOptions === void 0) { analyticsOptions = {}; }\n\t if (_window === void 0) { _window = window; }\n\t var _this = _super.call(this, element, ComponentOptions_1.ComponentOptions.initComponentOptions(element, Recommendation, options), analyticsOptions, _window) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.analyticsOptions = analyticsOptions;\n\t if (!_this.options.id) {\n\t _this.generateDefaultId();\n\t }\n\t // This is done to allow the component to be included in another search interface without triggering the parent events.\n\t _this.preventEventPropagation();\n\t if (_this.options.mainSearchInterface) {\n\t _this.bindToMainSearchInterface();\n\t }\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.buildingQuery, function (e, args) { return _this.handleRecommendationBuildingQuery(args); });\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.querySuccess, function (e, args) { return _this.handleRecommendationQuerySuccess(args); });\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.noResults, function (e, args) { return _this.handleRecommendationNoResults(); });\n\t Dom_1.$$(_this.element).on(QueryEvents_1.QueryEvents.queryError, function (e, args) { return _this.handleRecommendationQueryError(); });\n\t _this.historyStore = new coveo_analytics_1.history.HistoryStore();\n\t if (!_this.options.mainSearchInterface) {\n\t // When the recommendation component is \"standalone\", we add additional safeguard against bad config.\n\t _this.ensureCurrentPageViewExistsInStore();\n\t }\n\t ResponsiveRecommendation_1.ResponsiveRecommendation.init(_this.root, _this, options);\n\t if (_this.options.hideIfNoResults) {\n\t _this.hide();\n\t }\n\t return _this;\n\t }\n\t Recommendation.prototype.getId = function () {\n\t return this.options.id;\n\t };\n\t Recommendation.prototype.enable = function () {\n\t _super.prototype.enable.call(this);\n\t this.show();\n\t };\n\t Recommendation.prototype.disable = function () {\n\t _super.prototype.disable.call(this);\n\t this.hide();\n\t };\n\t Recommendation.prototype.hide = function () {\n\t if (!this.displayStyle) {\n\t this.displayStyle = this.element.style.display;\n\t }\n\t Dom_1.$$(this.element).hide();\n\t };\n\t Recommendation.prototype.show = function () {\n\t if (!this.displayStyle) {\n\t this.displayStyle = this.element.style.display;\n\t }\n\t this.element.style.display = this.displayStyle;\n\t };\n\t Recommendation.prototype.ensureCurrentPageViewExistsInStore = function () {\n\t // It's not 100% sure that the element will actually be added in the store.\n\t // It's possible that an external script configured by the end user to log the page view already did that.\n\t // So we *could* end up with duplicate values in the store :\n\t // We rely on the fact that the coveo.analytics lib has defensive code against consecutive page view that are identical.\n\t // This is mainly done if the recommendation component is being initialized before the page view could be logged correctly by the coveo.analytics externa lib.\n\t var historyElement = {\n\t name: 'PageView',\n\t value: document.location.toString(),\n\t time: JSON.stringify(new Date()),\n\t title: document.title\n\t };\n\t this.historyStore.addElement(historyElement);\n\t };\n\t Recommendation.prototype.bindToMainSearchInterface = function () {\n\t this.bindComponentOptionsModelToMainSearchInterface();\n\t this.bindQueryEventsToMainSearchInterface();\n\t };\n\t Recommendation.prototype.bindComponentOptionsModelToMainSearchInterface = function () {\n\t var _this = this;\n\t // Try to fetch the componentOptions from the main search interface.\n\t // Since we do not know which interface is init first (recommendation or full search interface)\n\t // add a mechanism that waits for the full search interface to be correctly initialized\n\t // then, set the needed values on the component options model.\n\t var searchInterfaceComponent = RegisteredNamedMethods_1.get(this.options.mainSearchInterface, SearchInterface_1.SearchInterface);\n\t var alreadyInitialized = searchInterfaceComponent != null;\n\t var onceInitialized = function () {\n\t var mainSearchInterfaceOptionsModel = searchInterfaceComponent.getBindings().componentOptionsModel;\n\t _this.componentOptionsModel.setMultiple(mainSearchInterfaceOptionsModel.getAttributes());\n\t Dom_1.$$(_this.options.mainSearchInterface).on(_this.componentOptionsModel.getEventName(Model_1.MODEL_EVENTS.ALL), function () {\n\t _this.componentOptionsModel.setMultiple(mainSearchInterfaceOptionsModel.getAttributes());\n\t });\n\t };\n\t if (alreadyInitialized) {\n\t onceInitialized();\n\t }\n\t else {\n\t Dom_1.$$(this.options.mainSearchInterface).on(InitializationEvents_1.InitializationEvents.afterComponentsInitialization, function () {\n\t searchInterfaceComponent = RegisteredNamedMethods_1.get(_this.options.mainSearchInterface, SearchInterface_1.SearchInterface);\n\t onceInitialized();\n\t });\n\t }\n\t };\n\t Recommendation.prototype.bindQueryEventsToMainSearchInterface = function () {\n\t var _this = this;\n\t // Whenever a query sucessfully returns on the full search interface, refresh the recommendation component.\n\t Dom_1.$$(this.options.mainSearchInterface).on(QueryEvents_1.QueryEvents.querySuccess, function (e, args) {\n\t _this.mainInterfaceQuery = args;\n\t _this.mainQuerySearchUID = args.results.searchUid;\n\t _this.mainQueryPipeline = args.results.pipeline;\n\t _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.recommendation, {});\n\t _this.queryController.executeQuery();\n\t });\n\t };\n\t Recommendation.prototype.handleRecommendationBuildingQuery = function (data) {\n\t if (!this.disabled) {\n\t this.modifyQueryForRecommendation(data);\n\t this.addRecommendationInfoInQuery(data);\n\t }\n\t };\n\t Recommendation.prototype.handleRecommendationQuerySuccess = function (data) {\n\t if (!this.disabled) {\n\t if (this.options.hideIfNoResults) {\n\t if (data.results.totalCount === 0) {\n\t this.hide();\n\t }\n\t else {\n\t this.show();\n\t }\n\t }\n\t }\n\t };\n\t Recommendation.prototype.handleRecommendationNoResults = function () {\n\t if (!this.disabled) {\n\t if (this.options.hideIfNoResults) {\n\t this.hide();\n\t }\n\t }\n\t };\n\t Recommendation.prototype.handleRecommendationQueryError = function () {\n\t if (!this.disabled) {\n\t this.hide();\n\t }\n\t };\n\t Recommendation.prototype.modifyQueryForRecommendation = function (data) {\n\t if (this.mainInterfaceQuery) {\n\t Utils_1.Utils.copyObjectAttributes(data.queryBuilder, this.mainInterfaceQuery.queryBuilder, this.options.optionsToUse);\n\t }\n\t };\n\t Recommendation.prototype.addRecommendationInfoInQuery = function (data) {\n\t if (!_.isEmpty(this.options.userContext)) {\n\t data.queryBuilder.addContext(JSON.parse(this.options.userContext));\n\t }\n\t if (this.options.sendActionsHistory) {\n\t data.queryBuilder.actionsHistory = this.getHistory();\n\t }\n\t data.queryBuilder.recommendation = this.options.id;\n\t };\n\t Recommendation.prototype.getHistory = function () {\n\t var historyFromStore = this.historyStore.getHistory();\n\t if (historyFromStore == null) {\n\t historyFromStore = [];\n\t }\n\t return JSON.stringify(historyFromStore);\n\t };\n\t Recommendation.prototype.preventEventPropagation = function () {\n\t this.preventEventPropagationOn(QueryEvents_1.QueryEvents);\n\t this.preventEventPropagationOn(OmniboxEvents_1.OmniboxEvents);\n\t this.preventEventPropagationOn(ResultListEvents_1.ResultListEvents);\n\t this.preventEventPropagationOn(SettingsEvents_1.SettingsEvents);\n\t this.preventEventPropagationOn(PreferencesPanelEvents_1.PreferencesPanelEvents);\n\t this.preventEventPropagationOn(AnalyticsEvents_1.AnalyticsEvents);\n\t this.preventEventPropagationOn(BreadcrumbEvents_1.BreadcrumbEvents);\n\t this.preventEventPropagationOn(QuickviewEvents_1.QuickviewEvents);\n\t this.preventEventPropagationOn(InitializationEvents_1.InitializationEvents);\n\t this.preventEventPropagationOn(this.getAllModelEvents());\n\t };\n\t Recommendation.prototype.preventEventPropagationOn = function (eventType, eventName) {\n\t if (eventName === void 0) { eventName = function (event) { return event; }; }\n\t for (var event_1 in eventType) {\n\t Dom_1.$$(this.root).on(eventName(event_1), function (e) { return e.stopPropagation(); });\n\t }\n\t };\n\t Recommendation.prototype.getAllModelEvents = function () {\n\t var _this = this;\n\t var events = {};\n\t _.each(_.values(Model_1.Model.eventTypes), function (event) {\n\t _.each(_.values(QueryStateModel_1.QUERY_STATE_ATTRIBUTES), function (attribute) {\n\t var eventName = _this.getBindings().queryStateModel.getEventName(event + attribute);\n\t events[eventName] = eventName;\n\t });\n\t });\n\t return events;\n\t };\n\t Recommendation.prototype.generateDefaultId = function () {\n\t var id = 'Recommendation';\n\t if (Recommendation.NEXT_ID !== 1) {\n\t this.logger.warn('Generating another recommendation default id', 'Consider configuring a human friendly / meaningful id for this interface');\n\t id = id + '_' + Recommendation.NEXT_ID;\n\t }\n\t Recommendation.NEXT_ID++;\n\t this.options.id = id;\n\t };\n\t return Recommendation;\n\t}(SearchInterface_1.SearchInterface));\n\tRecommendation.ID = 'Recommendation';\n\tRecommendation.NEXT_ID = 1;\n\t/**\n\t * The options for the recommendation component\n\t * @componentOptions\n\t */\n\tRecommendation.options = {\n\t /**\n\t * Specifies the main {@link SearchInterface} to listen to.\n\t */\n\t mainSearchInterface: ComponentOptions_1.ComponentOptions.buildSelectorOption(),\n\t /**\n\t * Specifies the user context to send to Coveo usage analytics.\n\t * The component sends this information with the query alongside the user history to get the recommendations.\n\t */\n\t userContext: ComponentOptions_1.ComponentOptions.buildJsonOption(),\n\t /**\n\t * Specifies the ID of the interface.\n\t * The usage analytics use the interface ID to know which recommendation interface was selected.\n\t *\n\t * Default value is `Recommendation` for the first one and `Recommendation_{number}`, where {number} depends on the\n\t * number of Recommendation interfaces with default IDs in the page for the others.\n\t */\n\t id: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies which options from the main {@link QueryBuilder} to use in the triggered query.\n\t *\n\t * Possible values are:\n\t * - `expression`\n\t * - `advancedExpression`\n\t * - `constantExpression`\n\t * - `disjunctionExpression`\n\t *\n\t * **Example:**\n\t *\n\t * Adding the expression (`q`) and the advanced expression (`aq`) parts of the main query in the triggered query:\n\t *\n\t * `data-options-to-use=\"expression,advancedExpression\"`\n\t *\n\t * Default value is `expression`.\n\t */\n\t optionsToUse: ComponentOptions_1.ComponentOptions.buildListOption({ defaultValue: ['expression'] }),\n\t /**\n\t * Specifies whether to send the actions history along with the triggered query.\n\t *\n\t * Setting this option to `false` makes it impossible for this component to get Coveo Machine Learning\n\t * recommendations.\n\t *\n\t * However, setting this option to `false` can be useful to display side results in a search page.\n\t *\n\t * Default value is `true`.\n\t */\n\t sendActionsHistory: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies whether to hide the Recommendations component if no result or recommendation is available.\n\t *\n\t * Default value is `false`.\n\t */\n\t hideIfNoResults: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t autoTriggerQuery: ComponentOptions_1.ComponentOptions.buildBooleanOption({\n\t postProcessing: function (value, options) {\n\t if (options.mainSearchInterface) {\n\t return false;\n\t }\n\t return value;\n\t }\n\t }),\n\t /**\n\t * Specifies whether to enable *responsive mode* for Recommendation components. Setting this options to `false` on\n\t * any Recommendation component in a search interface disables responsive mode for all other Recommendation\n\t * components in the search interface.\n\t *\n\t * Responsive mode displays all Recommendation components under a single dropdown button whenever the width of the\n\t * HTML element which the search interface is bound to reaches or falls behind a certain threshold (see\n\t * {@link Recommendation.options.responsiveBreakpoint}).\n\t *\n\t * See also {@link Recommendation.options.dropdownHeaderLabel}.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableResponsiveMode: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * If {@link Recommendation.options.enableResponsiveMode} is `true` for all Recommendation components, specifies the\n\t * width threshold (in pixels) of the search interface at which Recommendation components go in responsive mode.\n\t *\n\t * Recommendation components go in responsive mode when the width of the search interface is equal to or lower than\n\t * this value.\n\t *\n\t * The `search interface` corresponds to the HTML element with the class `CoveoSearchInterface`.\n\t *\n\t * If more than one Recommendation component in the search interface specifies a value for this option, then the\n\t * framework uses the last occurrence of the option.\n\t *\n\t * Default value is `1000`.\n\t */\n\t responsiveBreakpoint: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 1000 }),\n\t /**\n\t * If {@link Recommendation.options.enableResponsiveMode} is `true` for all Recommendation components, specifies the\n\t * label of the dropdown button that allows to display the Recommendation components when in responsive mode.\n\t *\n\t * If more than one Recommendation component in the search interface specifies a value for this option, then the\n\t * framework uses the first occurrence of the option.\n\t *\n\t * Default value is `Recommendations`.\n\t */\n\t dropdownHeaderLabel: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({ defaultValue: 'Recommendations' })\n\t};\n\texports.Recommendation = Recommendation;\n\t// We do not register the Recommendation component since it is done with .coveo('initRecommendation')\n\n\n/***/ },\n/* 135 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar QuickviewEvents = (function () {\n\t function QuickviewEvents() {\n\t }\n\t return QuickviewEvents;\n\t}());\n\tQuickviewEvents.quickviewLoaded = 'quickviewLoaded';\n\tQuickviewEvents.openQuickview = 'openQuickview';\n\texports.QuickviewEvents = QuickviewEvents;\n\n\n/***/ },\n/* 136 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ResponsiveComponentsManager_1 = __webpack_require__(137);\n\tvar ResponsiveComponentsUtils_1 = __webpack_require__(141);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Recommendation_1 = __webpack_require__(134);\n\tvar RecommendationDropdownContent_1 = __webpack_require__(142);\n\tvar ResponsiveDropdownHeader_1 = __webpack_require__(144);\n\tvar ResponsiveDropdown_1 = __webpack_require__(145);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar FacetSlider_1 = __webpack_require__(146);\n\tvar Facet_1 = __webpack_require__(158);\n\tvar Component_1 = __webpack_require__(109);\n\tvar RegisteredNamedMethods_1 = __webpack_require__(107);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar _ = __webpack_require__(16);\n\tvar ResponsiveRecommendation = (function () {\n\t function ResponsiveRecommendation(coveoRoot, ID, options, responsiveDropdown) {\n\t this.coveoRoot = coveoRoot;\n\t this.ID = ID;\n\t this.responsiveDropdown = responsiveDropdown;\n\t this.recommendationRoot = this.getRecommendationRoot();\n\t this.dropdownHeaderLabel = options.dropdownHeaderLabel;\n\t this.breakpoint = this.defineResponsiveBreakpoint(options);\n\t this.logger = new Logger_1.Logger(this);\n\t this.dropdown = this.buildDropdown(responsiveDropdown);\n\t this.facets = this.getFacets();\n\t this.facetSliders = this.getFacetSliders();\n\t this.registerOnOpenHandler();\n\t this.registerOnCloseHandler();\n\t this.registerQueryEvents();\n\t this.dropdownContainer = Dom_1.$$('div', { className: ResponsiveRecommendation.DROPDOWN_CONTAINER_CSS_CLASS_NAME });\n\t }\n\t ResponsiveRecommendation.init = function (root, component, options) {\n\t var logger = new Logger_1.Logger('ResponsiveRecommendation');\n\t var coveoRoot = this.findParentRootOfRecommendationComponent(root);\n\t if (!coveoRoot) {\n\t logger.info('Recommendation component has no parent interface. Disabling responsive mode for this component.');\n\t return;\n\t }\n\t if (!Dom_1.$$(coveoRoot).find('.coveo-results-column')) {\n\t logger.info('Cannot find element with class coveo-results-column. Disabling responsive mode for this component.');\n\t return;\n\t }\n\t ResponsiveComponentsManager_1.ResponsiveComponentsManager.register(ResponsiveRecommendation, Dom_1.$$(coveoRoot), Recommendation_1.Recommendation.ID, component, options);\n\t };\n\t ResponsiveRecommendation.findParentRootOfRecommendationComponent = function (root) {\n\t var coveoRoot = Dom_1.$$(root).parents(Component_1.Component.computeCssClassName(SearchInterface_1.SearchInterface));\n\t if (coveoRoot[0]) {\n\t return Dom_1.$$(coveoRoot[0]);\n\t }\n\t return null;\n\t };\n\t ResponsiveRecommendation.prototype.handleResizeEvent = function () {\n\t if (this.needSmallMode() && !ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallRecommendationActivated(this.coveoRoot)) {\n\t this.changeToSmallMode();\n\t }\n\t else if (!this.needSmallMode() && ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallRecommendationActivated(this.coveoRoot)) {\n\t this.changeToLargeMode();\n\t }\n\t if (this.dropdown.isOpened) {\n\t this.dropdown.dropdownContent.positionDropdown();\n\t }\n\t };\n\t ResponsiveRecommendation.prototype.needDropdownWrapper = function () {\n\t return this.needSmallMode();\n\t };\n\t ResponsiveRecommendation.prototype.needSmallMode = function () {\n\t return this.coveoRoot.width() <= this.breakpoint;\n\t };\n\t ResponsiveRecommendation.prototype.changeToSmallMode = function () {\n\t this.dropdown.close();\n\t Dom_1.$$(this.coveoRoot.find(\".\" + ResponsiveComponentsManager_1.ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS)).el.appendChild(this.dropdown.dropdownHeader.element.el);\n\t this.disableFacetPreservePosition();\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.activateSmallRecommendation(this.coveoRoot);\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.activateSmallRecommendation(this.recommendationRoot);\n\t };\n\t ResponsiveRecommendation.prototype.changeToLargeMode = function () {\n\t this.enableFacetPreservePosition();\n\t this.dropdown.cleanUp();\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.deactivateSmallRecommendation(this.coveoRoot);\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.deactivateSmallRecommendation(this.recommendationRoot);\n\t };\n\t ResponsiveRecommendation.prototype.buildDropdown = function (responsiveDropdown) {\n\t var dropdownContent = this.buildDropdownContent();\n\t var dropdownHeader = this.buildDropdownHeader();\n\t var dropdown = responsiveDropdown ? responsiveDropdown : new ResponsiveDropdown_1.ResponsiveDropdown(dropdownContent, dropdownHeader, this.coveoRoot);\n\t dropdown.disablePopupBackground();\n\t return dropdown;\n\t };\n\t ResponsiveRecommendation.prototype.buildDropdownHeader = function () {\n\t var dropdownHeaderElement = Dom_1.$$('a');\n\t var content = Dom_1.$$('p');\n\t content.text(Strings_1.l(this.dropdownHeaderLabel));\n\t dropdownHeaderElement.el.appendChild(content.el);\n\t var dropdownHeader = new ResponsiveDropdownHeader_1.ResponsiveDropdownHeader('recommendation', dropdownHeaderElement);\n\t return dropdownHeader;\n\t };\n\t ResponsiveRecommendation.prototype.buildDropdownContent = function () {\n\t var dropdownContentElement;\n\t var recommendationColumn = this.coveoRoot.find('.coveo-recommendation-column');\n\t if (recommendationColumn) {\n\t dropdownContentElement = Dom_1.$$(recommendationColumn);\n\t }\n\t else {\n\t dropdownContentElement = Dom_1.$$(this.coveoRoot.find('.' + Component_1.Component.computeCssClassName(Recommendation_1.Recommendation)));\n\t }\n\t var dropdownContent = new RecommendationDropdownContent_1.RecommendationDropdownContent('recommendation', dropdownContentElement, this.coveoRoot);\n\t return dropdownContent;\n\t };\n\t ResponsiveRecommendation.prototype.defineResponsiveBreakpoint = function (options) {\n\t var breakpoint;\n\t if (Utils_1.Utils.isNullOrUndefined(options.responsiveBreakpoint)) {\n\t breakpoint = ResponsiveRecommendation.RESPONSIVE_BREAKPOINT;\n\t }\n\t else {\n\t breakpoint = options.responsiveBreakpoint;\n\t }\n\t return breakpoint;\n\t };\n\t ResponsiveRecommendation.prototype.getFacetSliders = function () {\n\t var facetSliders = [];\n\t _.each(this.coveoRoot.findAll('.' + Component_1.Component.computeCssClassName(FacetSlider_1.FacetSlider)), function (facetSliderElement) {\n\t var facetSlider = Component_1.Component.get(facetSliderElement, FacetSlider_1.FacetSlider);\n\t if (facetSlider instanceof FacetSlider_1.FacetSlider) {\n\t facetSliders.push(facetSlider);\n\t }\n\t });\n\t return facetSliders;\n\t };\n\t ResponsiveRecommendation.prototype.getFacets = function () {\n\t var facets = [];\n\t _.each(this.coveoRoot.findAll('.' + Component_1.Component.computeCssClassName(Facet_1.Facet)), function (facetElement) {\n\t var facet = Component_1.Component.get(facetElement, Facet_1.Facet);\n\t if (facet instanceof Facet_1.Facet) {\n\t facets.push(facet);\n\t }\n\t });\n\t return facets;\n\t };\n\t ResponsiveRecommendation.prototype.dismissFacetSearches = function () {\n\t _.each(this.facets, function (facet) {\n\t if (facet.facetSearch && facet.facetSearch.currentlyDisplayedResults) {\n\t facet.facetSearch.completelyDismissSearch();\n\t }\n\t });\n\t };\n\t ResponsiveRecommendation.prototype.enableFacetPreservePosition = function () {\n\t _.each(this.facets, function (facet) { return facet.options.preservePosition = true; });\n\t };\n\t ResponsiveRecommendation.prototype.disableFacetPreservePosition = function () {\n\t _.each(this.facets, function (facet) { return facet.options.preservePosition = false; });\n\t };\n\t ResponsiveRecommendation.prototype.drawFacetSliderGraphs = function () {\n\t _.each(this.facetSliders, function (facetSlider) { return facetSlider.drawDelayedGraphData(); });\n\t };\n\t ResponsiveRecommendation.prototype.registerOnOpenHandler = function () {\n\t this.dropdown.registerOnOpenHandler(this.drawFacetSliderGraphs, this);\n\t };\n\t ResponsiveRecommendation.prototype.registerOnCloseHandler = function () {\n\t this.dropdown.registerOnCloseHandler(this.dismissFacetSearches, this);\n\t };\n\t ResponsiveRecommendation.prototype.getRecommendationRoot = function () {\n\t return Dom_1.$$(this.coveoRoot.find('.' + Component_1.Component.computeCssClassName(Recommendation_1.Recommendation)));\n\t };\n\t ResponsiveRecommendation.prototype.registerQueryEvents = function () {\n\t var _this = this;\n\t var recommendationInstance = RegisteredNamedMethods_1.get(this.recommendationRoot.el, SearchInterface_1.SearchInterface);\n\t if (recommendationInstance && recommendationInstance.options.hideIfNoResults) {\n\t this.coveoRoot.on(QueryEvents_1.QueryEvents.querySuccess, function (e, data) { return _this.handleRecommnendationQuerySucess(data); });\n\t this.coveoRoot.on(QueryEvents_1.QueryEvents.noResults, function (e, data) { return _this.handleRecommendationNoResults(); });\n\t }\n\t this.coveoRoot.on(QueryEvents_1.QueryEvents.queryError, function () { return _this.handleRecommendationQueryError(); });\n\t };\n\t ResponsiveRecommendation.prototype.handleRecommnendationQuerySucess = function (data) {\n\t if (data.results.totalCount === 0) {\n\t this.dropdown.close();\n\t this.dropdown.dropdownHeader.hide();\n\t }\n\t else {\n\t this.dropdown.dropdownHeader.show();\n\t }\n\t };\n\t ResponsiveRecommendation.prototype.handleRecommendationNoResults = function () {\n\t this.dropdown.close();\n\t this.dropdown.dropdownHeader.hide();\n\t };\n\t ResponsiveRecommendation.prototype.handleRecommendationQueryError = function () {\n\t this.dropdown.close();\n\t this.dropdown.dropdownHeader.hide();\n\t };\n\t return ResponsiveRecommendation;\n\t}());\n\tResponsiveRecommendation.DROPDOWN_CONTAINER_CSS_CLASS_NAME = 'coveo-recommendation-dropdown-container';\n\tResponsiveRecommendation.RESPONSIVE_BREAKPOINT = 1000;\n\texports.ResponsiveRecommendation = ResponsiveRecommendation;\n\n\n/***/ },\n/* 137 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar Component_1 = __webpack_require__(109);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Tab_1 = __webpack_require__(138);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar _ = __webpack_require__(16);\n\tvar ResponsiveComponentsManager = (function () {\n\t function ResponsiveComponentsManager(root) {\n\t var _this = this;\n\t this.disabledComponents = [];\n\t this.responsiveComponents = [];\n\t this.coveoRoot = root;\n\t this.searchInterface = Component_1.Component.get(this.coveoRoot.el, SearchInterface_1.SearchInterface, false);\n\t this.dropdownHeadersWrapper = Dom_1.$$('div', { className: ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS });\n\t this.searchBoxElement = this.getSearchBoxElement();\n\t this.logger = new Logger_1.Logger(this);\n\t this.resizeListener = _.debounce(function () {\n\t if (_this.coveoRoot.width() != 0) {\n\t _this.addDropdownHeaderWrapperIfNeeded();\n\t if (_this.shouldSwitchToSmallMode()) {\n\t _this.coveoRoot.addClass('coveo-small-interface');\n\t }\n\t else if (!_this.shouldSwitchToSmallMode()) {\n\t _this.coveoRoot.removeClass('coveo-small-interface');\n\t }\n\t _.each(_this.responsiveComponents, function (responsiveComponent) {\n\t responsiveComponent.handleResizeEvent();\n\t });\n\t }\n\t else {\n\t _this.logger.warn(\"The width of the search interface is 0, cannot dispatch resize events to responsive components. This means that the tabs will not\\n automatically fit in the tab section. Also, the facet and recommendation component will not hide in a menu. Could the search\\n interface display property be none? Could its visibility property be set to hidden? Also, if either of these scenarios happen during\\n loading, it could be the cause of this issue.\");\n\t }\n\t }, ResponsiveComponentsManager.RESIZE_DEBOUNCE_DELAY);\n\t window.addEventListener('resize', this.resizeListener);\n\t this.bindNukeEvents();\n\t }\n\t // Register takes a class and will instantiate it after framework initialization has completed.\n\t ResponsiveComponentsManager.register = function (responsiveComponentConstructor, root, ID, component, options) {\n\t var _this = this;\n\t root.on(InitializationEvents_1.InitializationEvents.afterInitialization, function () {\n\t if (_this.shouldEnableResponsiveMode(root)) {\n\t var responsiveComponentsManager = _.find(_this.componentManagers, function (componentManager) { return root.el == componentManager.coveoRoot.el; });\n\t if (!responsiveComponentsManager) {\n\t responsiveComponentsManager = new ResponsiveComponentsManager(root);\n\t _this.componentManagers.push(responsiveComponentsManager);\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(options.enableResponsiveMode) && !options.enableResponsiveMode) {\n\t responsiveComponentsManager.disableComponent(ID);\n\t return;\n\t }\n\t _this.componentInitializations.push({\n\t responsiveComponentsManager: responsiveComponentsManager,\n\t arguments: [responsiveComponentConstructor, root, ID, component, options]\n\t });\n\t }\n\t _this.remainingComponentInitializations--;\n\t if (_this.remainingComponentInitializations == 0) {\n\t _this.instantiateResponsiveComponents(); // necessary to verify if all components are disabled before they are initialized.\n\t if (root.width() == 0) {\n\t var logger = new Logger_1.Logger('ResponsiveComponentsManager');\n\t logger.info(\"Search interface width is 0, cannot dispatch resize events to responsive components. Will try again after first\\n query success.\");\n\t root.one(QueryEvents_1.QueryEvents.querySuccess, function () {\n\t _this.resizeAllComponentsManager();\n\t });\n\t }\n\t else {\n\t _this.resizeAllComponentsManager();\n\t }\n\t }\n\t });\n\t this.remainingComponentInitializations++;\n\t };\n\t ResponsiveComponentsManager.shouldEnableResponsiveMode = function (root) {\n\t var searchInterface = Component_1.Component.get(root.el, SearchInterface_1.SearchInterface, true);\n\t return searchInterface instanceof SearchInterface_1.SearchInterface && searchInterface.options.enableAutomaticResponsiveMode && searchInterface.isNewDesign();\n\t };\n\t ResponsiveComponentsManager.instantiateResponsiveComponents = function () {\n\t _.each(this.componentInitializations, function (componentInitialization) {\n\t var responsiveComponentsManager = componentInitialization.responsiveComponentsManager;\n\t responsiveComponentsManager.register.apply(responsiveComponentsManager, componentInitialization.arguments);\n\t });\n\t };\n\t ResponsiveComponentsManager.resizeAllComponentsManager = function () {\n\t _.each(this.componentManagers, function (componentManager) {\n\t componentManager.resizeListener();\n\t });\n\t };\n\t ResponsiveComponentsManager.prototype.register = function (responsiveComponentConstructor, root, ID, component, options) {\n\t if (this.isDisabled(ID)) {\n\t return;\n\t }\n\t if (!this.isActivated(ID)) {\n\t var responsiveComponent = new responsiveComponentConstructor(root, ID, options);\n\t if (this.isTabs(ID)) {\n\t this.responsiveComponents.push(responsiveComponent);\n\t }\n\t else {\n\t // Tabs need to be rendered last, so any dropdown header(eg: facet) is already there when the responsive tabs check for overflow.\n\t this.responsiveComponents.unshift(responsiveComponent);\n\t }\n\t }\n\t _.each(this.responsiveComponents, function (responsiveComponent) {\n\t if (responsiveComponent.registerComponent != null) {\n\t responsiveComponent.registerComponent(component);\n\t }\n\t });\n\t };\n\t ResponsiveComponentsManager.prototype.disableComponent = function (ID) {\n\t this.disabledComponents.push(ID);\n\t };\n\t ResponsiveComponentsManager.prototype.isDisabled = function (ID) {\n\t return _.indexOf(this.disabledComponents, ID) != -1;\n\t };\n\t ResponsiveComponentsManager.prototype.shouldSwitchToSmallMode = function () {\n\t var aComponentNeedsTabSection = this.needDropdownWrapper();\n\t var reachedBreakpoint = this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getMediumScreenWidth();\n\t return aComponentNeedsTabSection || reachedBreakpoint;\n\t };\n\t ResponsiveComponentsManager.prototype.needDropdownWrapper = function () {\n\t for (var i = 0; i < this.responsiveComponents.length; i++) {\n\t var responsiveComponent = this.responsiveComponents[i];\n\t if (responsiveComponent.needDropdownWrapper && responsiveComponent.needDropdownWrapper()) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t };\n\t ResponsiveComponentsManager.prototype.addDropdownHeaderWrapperIfNeeded = function () {\n\t if (this.needDropdownWrapper()) {\n\t var tabSection = Dom_1.$$(this.coveoRoot).find('.coveo-tab-section');\n\t if (this.searchBoxElement) {\n\t this.dropdownHeadersWrapper.insertAfter(this.searchBoxElement);\n\t }\n\t else if (tabSection) {\n\t this.dropdownHeadersWrapper.insertAfter(tabSection);\n\t }\n\t else {\n\t this.coveoRoot.prepend(this.dropdownHeadersWrapper.el);\n\t }\n\t }\n\t };\n\t ResponsiveComponentsManager.prototype.isTabs = function (ID) {\n\t return ID == Tab_1.Tab.ID;\n\t };\n\t ResponsiveComponentsManager.prototype.isActivated = function (ID) {\n\t return _.find(this.responsiveComponents, function (current) { return current.ID == ID; }) != undefined;\n\t };\n\t ResponsiveComponentsManager.prototype.getSearchBoxElement = function () {\n\t var searchBoxElement = this.coveoRoot.find('.coveo-search-section');\n\t if (searchBoxElement) {\n\t return searchBoxElement;\n\t }\n\t else {\n\t return this.coveoRoot.find('.CoveoSearchbox');\n\t }\n\t };\n\t ResponsiveComponentsManager.prototype.bindNukeEvents = function () {\n\t var _this = this;\n\t Dom_1.$$(this.coveoRoot).on(InitializationEvents_1.InitializationEvents.nuke, function () {\n\t window.removeEventListener('resize', _this.resizeListener);\n\t });\n\t };\n\t return ResponsiveComponentsManager;\n\t}());\n\tResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS = 'coveo-dropdown-header-wrapper';\n\tResponsiveComponentsManager.RESIZE_DEBOUNCE_DELAY = 200;\n\tResponsiveComponentsManager.componentManagers = [];\n\tResponsiveComponentsManager.remainingComponentInitializations = 0;\n\tResponsiveComponentsManager.componentInitializations = [];\n\texports.ResponsiveComponentsManager = ResponsiveComponentsManager;\n\n\n/***/ },\n/* 138 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ResponsiveTabs_ts_1 = __webpack_require__(139);\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar Model_1 = __webpack_require__(100);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar SearchEndpoint_1 = __webpack_require__(11);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar KeyboardUtils_1 = __webpack_require__(70);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The Tab component renders a bar that allows the end user to select a specific search interface.\n\t *\n\t * This component attaches itself to a `div` element. It is in charge of adding an advanced expression to the outgoing\n\t * query in order to refine the results.\n\t *\n\t * The Tab component can also hide and show different parts of the UI. For each individual component in the UI, you can\n\t * specify whether you wish to include or exclude that component when the user selects a certain Tab.\n\t *\n\t * **Including and Excluding Other HTML Components:**\n\t *\n\t * You can hide or show a specific HTML component based on the currently selected Tab by adding one of the following\n\t * attributes to its tag:\n\t *\n\t * - `
`: Only include this element in the Tab with `foobar` as its `data-id`.\n\t * - `
`: Do not include this element in the Tab with `foobar` as its `data-id`.\n\t * - `
`: Only include this element in the Tab with `foobar` as its `data-id` and in\n\t * the Tab with `somethingelse` as its `data-id`.\n\t *\n\t * **Setting a New Endpoint for a Tab:**\n\t *\n\t * A Tab can use a custom endpoint when performing a query. Of course, you need to make sure that the endpoint exists in\n\t * the array of Coveo.SearchEndpoint.endpoints (see {@link SearchEndpoint.endpoints}).\n\t *\n\t * ```\n\t * Coveo.SearchEndpoint.endpoints[\"specialEndpoint\"] = new Coveo.SearchEndpoint({\n\t * restUri : 'https://somewhere.com/rest/search'\n\t * })\n\t *\n\t * [ ... ]\n\t *\n\t *
\n\t *\n\t * ```\n\t */\n\tvar Tab = (function (_super) {\n\t __extends(Tab, _super);\n\t /**\n\t * Creates a new Tab. Binds on buildingQuery event as well as an event on click of the element.\n\t * @param element The HTMLElement on which to instantiate the component. Normally a `div`.\n\t * @param options The options for the Tab component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function Tab(element, options, bindings) {\n\t var _this = _super.call(this, element, Tab.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.isFirstQuery = true;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Tab, options);\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (args) { return _this.handleBuildingQuery(args); });\n\t _this.bind.onQueryState(Model_1.MODEL_EVENTS.CHANGE_ONE, QueryStateModel_1.QUERY_STATE_ATTRIBUTES.T, function (args) { return _this.handleQueryStateChanged(args); });\n\t var clickAction = function () { return _this.handleClick(); };\n\t _this.bind.on(element, 'click', clickAction);\n\t _this.bind.on(element, 'keyup', KeyboardUtils_1.KeyboardUtils.keypressAction(KeyboardUtils_1.KEYBOARD.ENTER, clickAction));\n\t _this.render();\n\t ResponsiveTabs_ts_1.ResponsiveTabs.init(_this.root, _this, _this.options);\n\t return _this;\n\t }\n\t /**\n\t * Selects the current Tab.\n\t *\n\t * Also logs the `interfaceChange` event in the usage analytics with the new current {@link Tab.options.id} as metada\n\t * and triggers a new query.\n\t */\n\t Tab.prototype.select = function () {\n\t if (!this.disabled) {\n\t var currentLayout = this.queryStateModel.get(QueryStateModel_1.QUERY_STATE_ATTRIBUTES.LAYOUT);\n\t this.queryStateModel.setMultiple({\n\t t: this.options.id,\n\t sort: this.options.sort || QueryStateModel_1.QueryStateModel.defaultAttributes.sort,\n\t layout: this.options.layout || currentLayout || QueryStateModel_1.QueryStateModel.defaultAttributes.layout\n\t });\n\t this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.interfaceChange, { interfaceChangeTo: this.options.id });\n\t this.queryController.executeQuery();\n\t }\n\t };\n\t /**\n\t * Indicates whether the HTMLElement argument is included in the Tab. *Included* elements are shown when the Tab is\n\t * selected, whereas *excluded* elements are not.\n\t * @param element The HTMLElement to verify.\n\t * @returns {boolean} `true` if the HTMLElement is included in the Tab; `false` if it is excluded.\n\t */\n\t Tab.prototype.isElementIncludedInTab = function (element) {\n\t Assert_1.Assert.exists(element);\n\t var includedTabs = this.splitListOfTabs(element.getAttribute('data-tab'));\n\t var excludedTabs = this.splitListOfTabs(element.getAttribute('data-tab-not'));\n\t Assert_1.Assert.check(!(includedTabs.length != 0 && excludedTabs.length != 0), 'You cannot both explicitly include and exclude an element from tabs.');\n\t return (includedTabs.length != 0 && _.indexOf(includedTabs, this.options.id) != -1) ||\n\t (excludedTabs.length != 0 && _.indexOf(excludedTabs, this.options.id) == -1) ||\n\t (includedTabs.length == 0 && excludedTabs.length == 0);\n\t };\n\t Tab.prototype.handleClick = function () {\n\t this.select();\n\t };\n\t Tab.prototype.render = function () {\n\t var icon = this.options.icon;\n\t if (Utils_1.Utils.isNonEmptyString(icon)) {\n\t var iconSpan = Dom_1.$$('span').el;\n\t Dom_1.$$(iconSpan).addClass(['coveo-icon', icon]);\n\t this.element.insertBefore(iconSpan, this.element.firstChild);\n\t }\n\t var caption = this.options.caption;\n\t if (Utils_1.Utils.isNonEmptyString(caption)) {\n\t var captionP = document.createElement('p');\n\t Dom_1.$$(captionP).text(caption);\n\t this.element.appendChild(captionP);\n\t }\n\t this.element.setAttribute('tabindex', '0');\n\t };\n\t Tab.prototype.handleBuildingQuery = function (data) {\n\t Assert_1.Assert.exists(data);\n\t this.isFirstQuery = false;\n\t if (!this.disabled && this.isSelected()) {\n\t data.queryBuilder.tab = this.options.id;\n\t if (Utils_1.Utils.isNonEmptyString(this.options.expression)) {\n\t if (this.options.constant) {\n\t data.queryBuilder.constantExpression.add(this.options.expression);\n\t }\n\t else {\n\t data.queryBuilder.advancedExpression.add(this.options.expression);\n\t }\n\t }\n\t if (this.options.enableDuplicateFiltering) {\n\t data.queryBuilder.enableDuplicateFiltering = true;\n\t }\n\t if (this.options.pipeline != null) {\n\t data.queryBuilder.pipeline = this.options.pipeline;\n\t }\n\t if (this.options.maximumAge != null) {\n\t data.queryBuilder.maximumAge = this.options.maximumAge;\n\t }\n\t }\n\t };\n\t Tab.prototype.handleQueryStateChanged = function (data) {\n\t Assert_1.Assert.exists(data);\n\t if (!this.disabled && this.isSelected()) {\n\t Dom_1.$$(this.element).addClass('coveo-selected');\n\t this.queryController.setEndpoint(this.options.endpoint);\n\t this.showAndHideAppropriateElements();\n\t }\n\t else {\n\t Dom_1.$$(this.element).removeClass('coveo-selected');\n\t }\n\t };\n\t Tab.prototype.isSelected = function () {\n\t var activeTab = this.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.t);\n\t return activeTab == this.options.id;\n\t };\n\t Tab.prototype.showAndHideAppropriateElements = function () {\n\t var _this = this;\n\t var showElements = [];\n\t var hideElements = [];\n\t _.each(Dom_1.$$(this.root).findAll('[data-tab],[data-tab-not]'), function (element) {\n\t if (_this.isElementIncludedInTab(element)) {\n\t _this.toggleAllComponentsUnder(element, true);\n\t showElements.push(element);\n\t }\n\t else {\n\t _this.toggleAllComponentsUnder(element, false);\n\t hideElements.push(element);\n\t }\n\t });\n\t Dom_1.$$(this.root).one(QueryEvents_1.QueryEvents.querySuccess, function () {\n\t _.each(showElements, function (elem) { return Dom_1.$$(elem).removeClass('coveo-tab-disabled'); });\n\t _.each(hideElements, function (elem) { return Dom_1.$$(elem).addClass('coveo-tab-disabled'); });\n\t });\n\t };\n\t Tab.prototype.splitListOfTabs = function (value) {\n\t if (Utils_1.Utils.exists(value)) {\n\t return _.map(value.split(','), function (tab) { return Utils_1.Utils.trim(tab); });\n\t }\n\t else {\n\t return [];\n\t }\n\t };\n\t Tab.prototype.toggleAllComponentsUnder = function (element, enable) {\n\t Assert_1.Assert.exists(element);\n\t var togglePossibleComponent = function (possibleComponent) {\n\t var possibleCmp = Component_1.Component.get(possibleComponent, undefined, true);\n\t if (possibleCmp) {\n\t if (enable) {\n\t possibleCmp.enable();\n\t }\n\t else {\n\t possibleCmp.disable();\n\t }\n\t }\n\t };\n\t togglePossibleComponent(element);\n\t _.each(Dom_1.$$(element).findAll('*'), function (el) {\n\t togglePossibleComponent(el);\n\t });\n\t };\n\t Tab.prototype.enable = function () {\n\t _super.prototype.enable.call(this);\n\t this.element.style.display = '';\n\t };\n\t Tab.prototype.disable = function () {\n\t _super.prototype.disable.call(this);\n\t this.element.style.display = 'none';\n\t };\n\t return Tab;\n\t}(Component_1.Component));\n\tTab.ID = 'Tab';\n\t/**\n\t * The options for a Tab\n\t * @componentOptions\n\t */\n\tTab.options = {\n\t /**\n\t * Specifies a unique ID for the Tab.\n\t *\n\t * Specifying a value for this option is necessary for this component to work.\n\t */\n\t id: ComponentOptions_1.ComponentOptions.buildStringOption({ required: true }),\n\t /**\n\t * Specifies the caption of the Tab.\n\t *\n\t * Specifying a value for this option is necessary for this component to work.\n\t */\n\t caption: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({ required: true }),\n\t /**\n\t * Specifies an icon to use for the Tab.\n\t *\n\t * @deprecated This options is mostly kept for legacy reasons. If possible, you should avoid using it.\n\t */\n\t icon: ComponentOptions_1.ComponentOptions.buildIconOption(),\n\t /**\n\t * Specifies an advanced expression or filter that the Tab should add to any outgoing query.\n\t *\n\t * **Example:**\n\t *\n\t * `@objecttype==Message`\n\t *\n\t * Default value is `undefined` and the Tab applies no additional expression or filter to the query.\n\t */\n\t expression: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the {@link SearchEndpoint} to point to when performing queries from within the Tab.\n\t *\n\t * By default, the Tab uses the \"default\" endpoint.\n\t */\n\t endpoint: ComponentOptions_1.ComponentOptions.buildCustomOption(function (endpoint) { return endpoint != null ? SearchEndpoint_1.SearchEndpoint.endpoints[endpoint] : null; }),\n\t /**\n\t * Specifies the default sort criteria to use when selecting the Tab. A {@link Sort} component with the same\n\t * parameter needs to be present in the search interface in order for this option to function properly.\n\t *\n\t * **Examples:**\n\t *\n\t * - `data-sort='relevancy'`\n\t * - `data-sort='date descending'`\n\t *\n\t * Default value is `undefined` and the normal {@link Sort} component behavior applies.\n\t */\n\t sort: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the default layout to display when the user selects the Tab (see {@link ResultList.options.layout} and\n\t * {@link ResultLayout}).\n\t *\n\t * See the {@link ValidLayout} type for the list of possible values.\n\t *\n\t * If not specified, it will default to 'list'.\n\t *\n\t * See also [Result Layouts](https://developers.coveo.com/x/yQUvAg).\n\t *\n\t * Default value is `undefined` and the component selects the first available layout.\n\t */\n\t layout: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies whether to include the {@link Tab.options.expression} in the constant part of the query.\n\t *\n\t * The index specially optimizes the constant part of the query to execute faster. However, you must be careful not\n\t * to include dynamic query expressions, otherwise the cache will lose its efficiency.\n\t *\n\t * Default value is `true`.\n\t */\n\t constant: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies whether to filter duplicates in the search results when the user selects the Tab.\n\t *\n\t * Setting this option to `true` forces duplicates to not appear in the search results. However, {@link Facet}\n\t * counts still include duplicates, which can be confusing for the end user. This is a limitation of the index.\n\t *\n\t * **Example:**\n\t *\n\t * > The end user narrows a query down to one document that has a duplicate. If this options is `true` and the user\n\t * > selects the Tab, only one document appears in the search results while the Facet count is still 2.\n\t *\n\t * **Note:**\n\t *\n\t * > It is also possible to enable duplicate filtering for the entire {@link SearchInterface} rather than for a\n\t * > single Tab (see {@link SearchInterface.options.enableDuplicateFiltering}).\n\t *\n\t * Default value is `false`.\n\t */\n\t enableDuplicateFiltering: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies the name of the query pipeline to use for the queries when the Tab is selected.\n\t *\n\t * You can specify a value for this option if your index is in a Coveo Cloud organization in which pipelines have\n\t * been created (see [Managing Query Pipelines](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=128)).\n\t *\n\t * Default value is `undefined`, which means that pipeline selection conditions defined in the Coveo Cloud\n\t * organization apply.\n\t */\n\t pipeline: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the maximum age (in milliseconds) that cached query results can have to still be usable as results\n\t * instead of performing a new query on the index from within the Tab. The cache is located in the Coveo Search API\n\t * (which resides between the index and the search interface).\n\t *\n\t * If cached results that are older than the age you specify in this option are available, a new query will be\n\t * performed on the index anyhow.\n\t *\n\t * On high-volume public web sites, specifying a higher value for this option can greatly improve query response\n\t * time at the cost of result freshness.\n\t *\n\t * **Note:**\n\t *\n\t * > It is also possible to set a maximum cache age for the entire {@link SearchInterface} rather than for a single\n\t * > Tab (see {@link SearchInterface.options.maximumAge}).\n\t *\n\t * Default value is `undefined` and the Coveo Search API determines the maximum cache age. This is typically\n\t * equivalent to 30 minutes (see [Query Parameters - maximumAge](https://developers.coveo.com/display/SearchREST/Query+Parameters#QueryParameters-maximumAge)).\n\t */\n\t maximumAge: ComponentOptions_1.ComponentOptions.buildNumberOption(),\n\t /**\n\t * Specifies whether to enable responsive mode for tabs. Responsive mode makes overflowing tabs disappear, instead\n\t * making them available using a dropdown button. Responsive tabs are enabled either when tabs overflow or when the\n\t * width of the search interface becomes too small.\n\t *\n\t * Disabling responsive mode for one Tab also disables it for all tabs. Therefore, you only need to set this option\n\t * to `false` on one Tab to disable responsive mode.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableResponsiveMode: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies the label of the button that allows to show the hidden tabs when in responsive mode.\n\t *\n\t * If more than one Tab in the search interface specifies a value for this option, then the framework uses the first\n\t * occurrence of the option.\n\t *\n\t * The default value is `\"More\"`.\n\t */\n\t dropdownHeaderLabel: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption()\n\t};\n\texports.Tab = Tab;\n\tInitialization_1.Initialization.registerAutoCreateComponent(Tab);\n\n\n/***/ },\n/* 139 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar PopupUtils_1 = __webpack_require__(73);\n\tvar EventsUtils_1 = __webpack_require__(140);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Component_1 = __webpack_require__(109);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar Tab_1 = __webpack_require__(138);\n\tvar ResponsiveComponentsManager_1 = __webpack_require__(137);\n\tvar ResponsiveComponentsUtils_1 = __webpack_require__(141);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar ResponsiveComponents_1 = __webpack_require__(19);\n\tvar _ = __webpack_require__(16);\n\tvar ResponsiveTabs = (function () {\n\t function ResponsiveTabs(coveoRoot, ID) {\n\t this.coveoRoot = coveoRoot;\n\t this.ID = ID;\n\t this.dropdownHeaderLabel = this.getDropdownHeaderLabel();\n\t this.searchInterface = Component_1.Component.get(this.coveoRoot.el, SearchInterface_1.SearchInterface, false);\n\t this.searchBoxElement = this.getSearchBoxElement();\n\t this.dropdownContent = this.buildDropdownContent();\n\t this.dropdownHeader = this.buildDropdownHeader();\n\t this.bindDropdownContentEvents();\n\t this.bindDropdownHeaderEvents();\n\t this.tabSection = Dom_1.$$(this.coveoRoot.find('.coveo-tab-section'));\n\t this.manageTabSwapping();\n\t this.saveTabsPosition();\n\t this.bindNukeEvents();\n\t }\n\t ResponsiveTabs.init = function (root, component, options) {\n\t this.logger = new Logger_1.Logger('ResponsiveTabs');\n\t if (!Dom_1.$$(root).find('.coveo-tab-section')) {\n\t this.logger.info('No element with class coveo-tab-section. Responsive tabs cannot be enabled.');\n\t return;\n\t }\n\t ResponsiveComponentsManager_1.ResponsiveComponentsManager.register(ResponsiveTabs, Dom_1.$$(root), Tab_1.Tab.ID, component, options);\n\t };\n\t ResponsiveTabs.prototype.handleResizeEvent = function () {\n\t if (this.needSmallMode() && !ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n\t this.changeToSmallMode();\n\t }\n\t else if (!this.needSmallMode() && ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n\t this.changeToLargeMode();\n\t }\n\t var tabs = this.getTabsInTabSection();\n\t if (this.shouldAddTabsToDropdown()) {\n\t this.addTabsToDropdown(tabs);\n\t }\n\t else if (this.shouldRemoveTabsFromDropdown()) {\n\t this.removeTabsFromDropdown(tabs);\n\t }\n\t if (this.dropdownHeader.hasClass('coveo-dropdown-header-active')) {\n\t this.positionPopup();\n\t }\n\t };\n\t ;\n\t ResponsiveTabs.prototype.needSmallMode = function () {\n\t var mediumWidth = this.searchInterface ? this.searchInterface.responsiveComponents.getMediumScreenWidth() : new ResponsiveComponents_1.ResponsiveComponents().getMediumScreenWidth();\n\t if (this.coveoRoot.width() <= mediumWidth) {\n\t return true;\n\t }\n\t else if (!ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n\t return this.isOverflowing(this.tabSection.el);\n\t }\n\t else {\n\t return this.isLargeFormatOverflowing();\n\t }\n\t };\n\t ResponsiveTabs.prototype.changeToSmallMode = function () {\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.activateSmallTabs(this.coveoRoot);\n\t };\n\t ResponsiveTabs.prototype.changeToLargeMode = function () {\n\t this.emptyDropdown();\n\t this.cleanUpDropdown();\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.deactivateSmallTabs(this.coveoRoot);\n\t };\n\t ResponsiveTabs.prototype.shouldAddTabsToDropdown = function () {\n\t return this.isOverflowing(this.tabSection.el) && ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot);\n\t };\n\t ResponsiveTabs.prototype.addTabsToDropdown = function (tabs) {\n\t var currentTab;\n\t if (!this.tabSection.find('.coveo-tab-dropdown-header')) {\n\t var facetDropdownHeader = this.tabSection.find('.coveo-facet-dropdown-header');\n\t if (facetDropdownHeader) {\n\t this.dropdownHeader.insertBefore(facetDropdownHeader);\n\t }\n\t else {\n\t this.tabSection.el.appendChild(this.dropdownHeader.el);\n\t }\n\t }\n\t for (var i = tabs.length - 1; i >= 0; i--) {\n\t currentTab = tabs[i];\n\t if (Dom_1.$$(currentTab).hasClass('coveo-selected') && i > 0) {\n\t currentTab = tabs[--i];\n\t }\n\t this.addToDropdown(currentTab);\n\t if (!this.isOverflowing(this.tabSection.el)) {\n\t break;\n\t }\n\t }\n\t };\n\t ResponsiveTabs.prototype.shouldRemoveTabsFromDropdown = function () {\n\t return !this.isOverflowing(this.tabSection.el) && ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot) && !this.isDropdownEmpty();\n\t };\n\t ResponsiveTabs.prototype.removeTabsFromDropdown = function (tabs) {\n\t var dropdownTabs = this.dropdownContent.findAll('.coveo-tab-dropdown');\n\t var lastTabInSection, current;\n\t if (tabs) {\n\t lastTabInSection = tabs.pop();\n\t }\n\t while (!this.isOverflowing(this.tabSection.el) && !this.isDropdownEmpty()) {\n\t current = dropdownTabs.shift();\n\t this.removeFromDropdown(current);\n\t this.fromDropdownToTabSection(Dom_1.$$(current), lastTabInSection);\n\t lastTabInSection = _.clone(current);\n\t }\n\t if (this.isOverflowing(this.tabSection.el)) {\n\t var tabs_1 = this.getTabsInTabSection();\n\t this.addToDropdown(tabs_1.pop());\n\t }\n\t if (this.isDropdownEmpty()) {\n\t this.cleanUpDropdown();\n\t }\n\t };\n\t ResponsiveTabs.prototype.emptyDropdown = function () {\n\t if (!this.isDropdownEmpty()) {\n\t var dropdownTabs = this.dropdownContent.findAll('.coveo-tab-dropdown');\n\t var tabs = this.getTabsInTabSection();\n\t var lastTabInSection = void 0;\n\t if (tabs) {\n\t lastTabInSection = tabs.pop();\n\t }\n\t while (!this.isDropdownEmpty()) {\n\t var current = dropdownTabs.shift();\n\t this.removeFromDropdown(current);\n\t Dom_1.$$(current).insertBefore(this.dropdownHeader.el);\n\t this.fromDropdownToTabSection(Dom_1.$$(current), lastTabInSection);\n\t lastTabInSection = _.clone(current);\n\t }\n\t }\n\t };\n\t ResponsiveTabs.prototype.isLargeFormatOverflowing = function () {\n\t var virtualTabSection = Dom_1.$$(this.tabSection.el.cloneNode(true));\n\t var dropdownHeader = virtualTabSection.find('.coveo-tab-dropdown-header');\n\t if (dropdownHeader) {\n\t virtualTabSection.el.removeChild(dropdownHeader);\n\t }\n\t virtualTabSection.el.style.position = 'absolute';\n\t virtualTabSection.el.style.visibility = 'hidden';\n\t if (!this.isDropdownEmpty()) {\n\t _.each(this.dropdownContent.findAll('.CoveoTab'), function (tab) {\n\t virtualTabSection.el.appendChild(tab.cloneNode(true));\n\t });\n\t }\n\t virtualTabSection.insertBefore(this.tabSection.el);\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.deactivateSmallTabs(this.coveoRoot);\n\t var isOverflowing = this.isOverflowing(virtualTabSection.el);\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.activateSmallTabs(this.coveoRoot);\n\t virtualTabSection.detach();\n\t return isOverflowing;\n\t };\n\t ResponsiveTabs.prototype.isOverflowing = function (el) {\n\t return el.clientWidth < el.scrollWidth;\n\t };\n\t ResponsiveTabs.prototype.buildDropdownHeader = function () {\n\t var dropdownHeader = Dom_1.$$('a', { className: 'coveo-dropdown-header coveo-tab-dropdown-header' });\n\t var content = Dom_1.$$('p');\n\t content.text(this.dropdownHeaderLabel);\n\t content.el.appendChild(Dom_1.$$('span', { className: 'coveo-sprites-more-tabs' }).el);\n\t dropdownHeader.el.appendChild(content.el);\n\t return dropdownHeader;\n\t };\n\t ResponsiveTabs.prototype.bindDropdownHeaderEvents = function () {\n\t var _this = this;\n\t this.dropdownHeader.on('click', function () {\n\t if (!_this.dropdownHeader.hasClass('coveo-dropdown-header-active')) {\n\t _this.positionPopup();\n\t _this.dropdownHeader.addClass('coveo-dropdown-header-active');\n\t }\n\t else {\n\t _this.closeDropdown();\n\t }\n\t });\n\t };\n\t ResponsiveTabs.prototype.buildDropdownContent = function () {\n\t var dropdownContent = Dom_1.$$('div', { className: 'coveo-tab-list-container ' + SearchInterface_1.SearchInterface.SMALL_INTERFACE_CLASS_NAME });\n\t var contentList = Dom_1.$$('ol', { className: 'coveo-tab-list' });\n\t dropdownContent.el.appendChild(contentList.el);\n\t return dropdownContent;\n\t };\n\t ResponsiveTabs.prototype.bindDropdownContentEvents = function () {\n\t var _this = this;\n\t this.documentClickListener = function (event) {\n\t if (Utils_1.Utils.isHtmlElement(event.target)) {\n\t var eventTarget = Dom_1.$$(event.target);\n\t if (!eventTarget.closest('coveo-tab-list-container') && !eventTarget.closest('coveo-tab-dropdown-header') && !eventTarget.closest('coveo-tab-dropdown')) {\n\t _this.closeDropdown();\n\t }\n\t }\n\t };\n\t Dom_1.$$(document.documentElement).on('click', this.documentClickListener);\n\t };\n\t ResponsiveTabs.prototype.closeDropdown = function () {\n\t this.dropdownContent.detach();\n\t this.dropdownHeader.removeClass('coveo-dropdown-header-active');\n\t };\n\t ResponsiveTabs.prototype.addToDropdown = function (el) {\n\t if (this.dropdownContent) {\n\t Dom_1.$$(el).addClass('coveo-tab-dropdown');\n\t var list = this.dropdownContent.find('ol');\n\t var listElement = Dom_1.$$('li');\n\t listElement.el.appendChild(el);\n\t Dom_1.$$(list).prepend(listElement.el);\n\t }\n\t };\n\t ResponsiveTabs.prototype.removeFromDropdown = function (el) {\n\t if (this.dropdownContent) {\n\t Dom_1.$$(el).removeClass('coveo-tab-dropdown');\n\t Dom_1.$$(el.parentElement).detach();\n\t }\n\t };\n\t ResponsiveTabs.prototype.cleanUpDropdown = function () {\n\t this.dropdownHeader.removeClass('coveo-dropdown-header-active');\n\t this.dropdownHeader.detach();\n\t this.dropdownContent.detach();\n\t };\n\t ResponsiveTabs.prototype.isDropdownEmpty = function () {\n\t if (this.dropdownContent) {\n\t var tabs = this.dropdownContent.findAll('.CoveoTab');\n\t return tabs.length == 0;\n\t }\n\t return false;\n\t };\n\t ResponsiveTabs.prototype.manageTabSwapping = function () {\n\t var _this = this;\n\t _.each(this.coveoRoot.findAll('.' + Component_1.Component.computeCssClassNameForType(this.ID)), function (tabElement) {\n\t var tab = Dom_1.$$(tabElement);\n\t var fadeOutFadeIn = function (event) {\n\t var tabsInSection = _this.getTabsInTabSection();\n\t var lastTabInSection = tabsInSection.pop();\n\t var lastTabSectionSibling = lastTabInSection.previousSibling;\n\t if (event.propertyName == 'opacity') {\n\t if (tab.el.style.opacity == '0') {\n\t Dom_1.$$(lastTabInSection).addClass('coveo-tab-dropdown');\n\t tab.replaceWith(lastTabInSection);\n\t tab.removeClass('coveo-tab-dropdown');\n\t _this.fromDropdownToTabSection(tab, lastTabSectionSibling);\n\t // Because of the DOM manipulation, sometimes the animation will not trigger. Accessing the computed styles makes sure\n\t // the animation will happen.\n\t window.getComputedStyle(tab.el).opacity;\n\t window.getComputedStyle(lastTabInSection).opacity;\n\t tab.el.style.opacity = lastTabInSection.style.opacity = '1';\n\t }\n\t else if (tab.el.style.opacity == '1') {\n\t _this.closeDropdown();\n\t EventsUtils_1.EventsUtils.removePrefixedEvent(tab.el, 'TransitionEnd', fadeOutFadeIn);\n\t _this.handleResizeEvent();\n\t }\n\t }\n\t };\n\t tab.on('click', function () {\n\t if (tab.hasClass('coveo-tab-dropdown')) {\n\t var tabsInSection = _this.getTabsInTabSection();\n\t var lastTabInSection = tabsInSection.pop();\n\t if (lastTabInSection) {\n\t EventsUtils_1.EventsUtils.addPrefixedEvent(tab.el, 'TransitionEnd', fadeOutFadeIn);\n\t tab.el.style.opacity = lastTabInSection.style.opacity = '0';\n\t }\n\t }\n\t });\n\t });\n\t };\n\t ResponsiveTabs.prototype.getSearchBoxElement = function () {\n\t var searchBoxElement = this.coveoRoot.find('.coveo-search-section');\n\t if (searchBoxElement) {\n\t return searchBoxElement;\n\t }\n\t else {\n\t return this.coveoRoot.find('.CoveoSearchbox');\n\t }\n\t };\n\t ResponsiveTabs.prototype.saveTabsPosition = function () {\n\t this.previousSibling = this.tabSection.el.previousSibling ? Dom_1.$$(this.tabSection.el.previousSibling) : null;\n\t this.parent = Dom_1.$$(this.tabSection.el.parentElement);\n\t };\n\t ResponsiveTabs.prototype.bindNukeEvents = function () {\n\t var _this = this;\n\t Dom_1.$$(this.coveoRoot).on(InitializationEvents_1.InitializationEvents.nuke, function () {\n\t Dom_1.$$(document.documentElement).off('click', _this.documentClickListener);\n\t });\n\t };\n\t ResponsiveTabs.prototype.positionPopup = function () {\n\t PopupUtils_1.PopupUtils.positionPopup(this.dropdownContent.el, this.dropdownHeader.el, this.coveoRoot.el, { horizontal: PopupUtils_1.HorizontalAlignment.INNERRIGHT, vertical: PopupUtils_1.VerticalAlignment.BOTTOM }, this.coveoRoot.el);\n\t };\n\t ResponsiveTabs.prototype.getTabsInTabSection = function () {\n\t var _this = this;\n\t var tabsInSection = [];\n\t _.each(this.tabSection.el.children, function (childElement) {\n\t if (Utils_1.Utils.isHtmlElement(childElement)) {\n\t var child = Dom_1.$$(childElement);\n\t if (!child.hasClass('coveo-tab-dropdown') && child.hasClass(Component_1.Component.computeCssClassNameForType(_this.ID))) {\n\t tabsInSection.push(child.el);\n\t }\n\t }\n\t });\n\t return tabsInSection;\n\t };\n\t ResponsiveTabs.prototype.fromDropdownToTabSection = function (tab, lastTabInTabSection) {\n\t if (lastTabInTabSection) {\n\t tab.insertAfter(lastTabInTabSection);\n\t }\n\t else {\n\t this.tabSection.prepend(tab.el);\n\t }\n\t };\n\t ResponsiveTabs.prototype.getDropdownHeaderLabel = function () {\n\t var dropdownHeaderLabel;\n\t _.each(Dom_1.$$(this.coveoRoot.find('.coveo-tab-section')).findAll('.' + Component_1.Component.computeCssClassName(Tab_1.Tab)), function (tabElement) {\n\t var tab = Component_1.Component.get(tabElement, Tab_1.Tab);\n\t if (!dropdownHeaderLabel && tab.options.dropdownHeaderLabel) {\n\t dropdownHeaderLabel = tab.options.dropdownHeaderLabel;\n\t }\n\t });\n\t if (!dropdownHeaderLabel) {\n\t dropdownHeaderLabel = Strings_1.l(ResponsiveTabs.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE);\n\t }\n\t return dropdownHeaderLabel;\n\t };\n\t return ResponsiveTabs;\n\t}());\n\tResponsiveTabs.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE = 'More';\n\texports.ResponsiveTabs = ResponsiveTabs;\n\n\n/***/ },\n/* 140 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar EventsUtils = (function () {\n\t function EventsUtils() {\n\t }\n\t // eventName must be in PascalCase\n\t EventsUtils.addPrefixedEvent = function (element, pascalCaseEventName, callback) {\n\t _.each(this.prefixes, function (prefix) {\n\t if (prefix == '') {\n\t pascalCaseEventName = pascalCaseEventName.toLowerCase();\n\t }\n\t element.addEventListener(prefix + pascalCaseEventName, callback, false);\n\t });\n\t };\n\t // eventName must be in PascalCase\n\t EventsUtils.removePrefixedEvent = function (element, pascalCaseEventName, callback) {\n\t _.each(this.prefixes, function (prefix) {\n\t if (prefix == '') {\n\t pascalCaseEventName = pascalCaseEventName.toLowerCase();\n\t }\n\t element.removeEventListener(prefix + pascalCaseEventName, callback, false);\n\t });\n\t };\n\t return EventsUtils;\n\t}());\n\tEventsUtils.prefixes = ['webkit', 'moz', 'MS', 'o', ''];\n\texports.EventsUtils = EventsUtils;\n\n\n/***/ },\n/* 141 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ResponsiveComponentsUtils = (function () {\n\t function ResponsiveComponentsUtils() {\n\t }\n\t ResponsiveComponentsUtils.shouldDrawFacetSlider = function (root) {\n\t return !this.isSmallFacetActivated(root) && !this.isSmallRecommendationActivated(root);\n\t };\n\t ResponsiveComponentsUtils.isSmallTabsActivated = function (root) {\n\t return root.hasClass(this.smallTabsClassName);\n\t };\n\t ResponsiveComponentsUtils.isSmallFacetActivated = function (root) {\n\t return root.hasClass(this.smallFacetClassName);\n\t };\n\t ResponsiveComponentsUtils.isSmallRecommendationActivated = function (root) {\n\t return root.hasClass(this.smallRecommendationClassName);\n\t };\n\t ResponsiveComponentsUtils.activateSmallTabs = function (root) {\n\t root.addClass(this.smallTabsClassName);\n\t };\n\t ResponsiveComponentsUtils.deactivateSmallTabs = function (root) {\n\t root.removeClass(this.smallTabsClassName);\n\t };\n\t ResponsiveComponentsUtils.activateSmallFacet = function (root) {\n\t root.addClass(this.smallFacetClassName);\n\t };\n\t ResponsiveComponentsUtils.deactivateSmallFacet = function (root) {\n\t root.removeClass(this.smallFacetClassName);\n\t };\n\t ResponsiveComponentsUtils.activateSmallRecommendation = function (root) {\n\t root.addClass(this.smallRecommendationClassName);\n\t };\n\t ResponsiveComponentsUtils.deactivateSmallRecommendation = function (root) {\n\t root.removeClass(this.smallRecommendationClassName);\n\t };\n\t return ResponsiveComponentsUtils;\n\t}());\n\tResponsiveComponentsUtils.smallTabsClassName = 'coveo-small-tabs';\n\tResponsiveComponentsUtils.smallFacetClassName = 'coveo-small-facets';\n\tResponsiveComponentsUtils.smallRecommendationClassName = 'coveo-small-recommendation';\n\texports.ResponsiveComponentsUtils = ResponsiveComponentsUtils;\n\n\n/***/ },\n/* 142 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ResponsiveDropdownContent_1 = __webpack_require__(143);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar RecommendationDropdownContent = (function () {\n\t function RecommendationDropdownContent(componentName, element, coveoRoot) {\n\t this.element = element;\n\t this.coveoRoot = coveoRoot;\n\t this.cssClassName = \"coveo-\" + componentName + \"-dropdown-content\";\n\t this.element.addClass(this.cssClassName);\n\t this.element.addClass(ResponsiveDropdownContent_1.ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n\t }\n\t RecommendationDropdownContent.prototype.positionDropdown = function () {\n\t this.element.el.style.display = '';\n\t var dropdownContentWrapper = this.coveoRoot.find('.coveo-results-column');\n\t Dom_1.$$(dropdownContentWrapper).prepend(this.element.el);\n\t this.element.addClass(ResponsiveDropdownContent_1.ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n\t this.element.addClass(this.cssClassName);\n\t // forces the browser to reflow the element, so that the transition is applied.\n\t window.getComputedStyle(this.element.el).maxHeight;\n\t this.element.addClass(RecommendationDropdownContent.OPENED_DROPDOWN_CSS_CLASS_NAME);\n\t };\n\t RecommendationDropdownContent.prototype.hideDropdown = function () {\n\t this.element.addClass(ResponsiveDropdownContent_1.ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n\t this.element.addClass(this.cssClassName);\n\t this.element.removeClass(RecommendationDropdownContent.OPENED_DROPDOWN_CSS_CLASS_NAME);\n\t };\n\t RecommendationDropdownContent.prototype.cleanUp = function () {\n\t this.element.removeClass(this.cssClassName);\n\t this.element.removeClass(ResponsiveDropdownContent_1.ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n\t };\n\t return RecommendationDropdownContent;\n\t}());\n\tRecommendationDropdownContent.OPENED_DROPDOWN_CSS_CLASS_NAME = 'coveo-open-dropdown-content';\n\texports.RecommendationDropdownContent = RecommendationDropdownContent;\n\n\n/***/ },\n/* 143 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar PopupUtils_1 = __webpack_require__(73);\n\tvar ResponsiveComponentsManager_1 = __webpack_require__(137);\n\tvar ResponsiveDropdownContent = (function () {\n\t function ResponsiveDropdownContent(componentName, element, coveoRoot, minWidth, widthRatio) {\n\t this.element = element;\n\t this.cssClassName = \"coveo-\" + componentName + \"-dropdown-content\";\n\t this.coveoRoot = coveoRoot;\n\t this.widthRatio = widthRatio;\n\t this.minWidth = minWidth;\n\t }\n\t ResponsiveDropdownContent.prototype.positionDropdown = function () {\n\t this.element.addClass(this.cssClassName);\n\t this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n\t this.element.el.style.display = '';\n\t var width = this.widthRatio * this.coveoRoot.width();\n\t if (width <= this.minWidth) {\n\t width = this.minWidth;\n\t }\n\t this.element.el.style.width = width.toString() + 'px';\n\t PopupUtils_1.PopupUtils.positionPopup(this.element.el, Dom_1.$$(this.coveoRoot.find(\".\" + ResponsiveComponentsManager_1.ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS)).el, this.coveoRoot.el, { horizontal: PopupUtils_1.HorizontalAlignment.INNERRIGHT, vertical: PopupUtils_1.VerticalAlignment.BOTTOM, verticalOffset: 15 }, this.coveoRoot.el);\n\t };\n\t ResponsiveDropdownContent.prototype.hideDropdown = function () {\n\t this.element.el.style.display = 'none';\n\t this.element.removeClass(this.cssClassName);\n\t this.element.removeClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n\t };\n\t ResponsiveDropdownContent.prototype.cleanUp = function () {\n\t this.element.el.removeAttribute('style');\n\t };\n\t return ResponsiveDropdownContent;\n\t}());\n\tResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME = 'coveo-dropdown-content';\n\texports.ResponsiveDropdownContent = ResponsiveDropdownContent;\n\n\n/***/ },\n/* 144 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar ResponsiveDropdownHeader = (function () {\n\t function ResponsiveDropdownHeader(componentName, element) {\n\t this.element = element;\n\t this.element.addClass(\"coveo-\" + componentName + \"-dropdown-header\");\n\t this.element.addClass(ResponsiveDropdownHeader.DEFAULT_CSS_CLASS_NAME);\n\t }\n\t ResponsiveDropdownHeader.prototype.open = function () {\n\t this.element.addClass(ResponsiveDropdownHeader.ACTIVE_HEADER_CSS_CLASS_NAME);\n\t };\n\t ResponsiveDropdownHeader.prototype.close = function () {\n\t this.element.removeClass(ResponsiveDropdownHeader.ACTIVE_HEADER_CSS_CLASS_NAME);\n\t };\n\t ResponsiveDropdownHeader.prototype.cleanUp = function () {\n\t this.element.detach();\n\t };\n\t ResponsiveDropdownHeader.prototype.hide = function () {\n\t Dom_1.$$(this.element).addClass('coveo-hidden');\n\t };\n\t ResponsiveDropdownHeader.prototype.show = function () {\n\t Dom_1.$$(this.element).removeClass('coveo-hidden');\n\t };\n\t return ResponsiveDropdownHeader;\n\t}());\n\tResponsiveDropdownHeader.DEFAULT_CSS_CLASS_NAME = 'coveo-dropdown-header';\n\tResponsiveDropdownHeader.ACTIVE_HEADER_CSS_CLASS_NAME = 'coveo-dropdown-header-active';\n\texports.ResponsiveDropdownHeader = ResponsiveDropdownHeader;\n\n\n/***/ },\n/* 145 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar EventsUtils_1 = __webpack_require__(140);\n\tvar _ = __webpack_require__(16);\n\tvar ResponsiveDropdown = (function () {\n\t function ResponsiveDropdown(dropdownContent, dropdownHeader, coveoRoot) {\n\t this.dropdownContent = dropdownContent;\n\t this.dropdownHeader = dropdownHeader;\n\t this.coveoRoot = coveoRoot;\n\t this.isOpened = false;\n\t this.onOpenHandlers = [];\n\t this.onCloseHandlers = [];\n\t this.popupBackgroundIsEnabled = true;\n\t this.popupBackground = this.buildPopupBackground();\n\t this.bindOnClickDropdownHeaderEvent();\n\t this.saveContentPosition();\n\t }\n\t ResponsiveDropdown.prototype.registerOnOpenHandler = function (handler, context) {\n\t this.onOpenHandlers.push({ handler: handler, context: context });\n\t };\n\t ResponsiveDropdown.prototype.registerOnCloseHandler = function (handler, context) {\n\t this.onCloseHandlers.push({ handler: handler, context: context });\n\t };\n\t ResponsiveDropdown.prototype.cleanUp = function () {\n\t this.close();\n\t this.dropdownHeader.cleanUp();\n\t this.dropdownContent.cleanUp();\n\t this.restoreContentPosition();\n\t };\n\t ResponsiveDropdown.prototype.open = function () {\n\t this.isOpened = true;\n\t this.dropdownHeader.open();\n\t this.dropdownContent.positionDropdown();\n\t _.each(this.onOpenHandlers, function (handlerCall) {\n\t handlerCall.handler.apply(handlerCall.context);\n\t });\n\t this.showPopupBackground();\n\t };\n\t ResponsiveDropdown.prototype.close = function () {\n\t this.isOpened = false;\n\t _.each(this.onCloseHandlers, function (handlerCall) {\n\t handlerCall.handler.apply(handlerCall.context);\n\t });\n\t this.dropdownHeader.close();\n\t this.dropdownContent.hideDropdown();\n\t this.hidePopupBackground();\n\t };\n\t ResponsiveDropdown.prototype.disablePopupBackground = function () {\n\t this.popupBackgroundIsEnabled = false;\n\t };\n\t ResponsiveDropdown.prototype.bindOnClickDropdownHeaderEvent = function () {\n\t var _this = this;\n\t this.dropdownHeader.element.on('click', function () {\n\t if (_this.isOpened) {\n\t _this.close();\n\t }\n\t else {\n\t _this.open();\n\t }\n\t });\n\t };\n\t ResponsiveDropdown.prototype.showPopupBackground = function () {\n\t if (this.popupBackgroundIsEnabled) {\n\t this.coveoRoot.el.appendChild(this.popupBackground.el);\n\t window.getComputedStyle(this.popupBackground.el).opacity;\n\t this.popupBackground.el.style.opacity = ResponsiveDropdown.TRANSPARENT_BACKGROUND_OPACITY;\n\t }\n\t };\n\t ResponsiveDropdown.prototype.hidePopupBackground = function () {\n\t if (this.popupBackgroundIsEnabled) {\n\t // forces the browser to reflow the element, so that the transition is applied.\n\t window.getComputedStyle(this.popupBackground.el).opacity;\n\t this.popupBackground.el.style.opacity = '0';\n\t }\n\t };\n\t ResponsiveDropdown.prototype.buildPopupBackground = function () {\n\t var _this = this;\n\t var popupBackground = Dom_1.$$('div', { className: ResponsiveDropdown.DROPDOWN_BACKGROUND_CSS_CLASS_NAME });\n\t EventsUtils_1.EventsUtils.addPrefixedEvent(popupBackground.el, 'TransitionEnd', function () {\n\t if (popupBackground.el.style.opacity == '0') {\n\t popupBackground.detach();\n\t }\n\t });\n\t popupBackground.on('click', function () { return _this.close(); });\n\t return popupBackground;\n\t };\n\t ResponsiveDropdown.prototype.saveContentPosition = function () {\n\t var dropdownContentPreviousSibling = this.dropdownContent.element.el.previousSibling;\n\t var dropdownContentParent = this.dropdownContent.element.el.parentElement;\n\t this.previousSibling = dropdownContentPreviousSibling ? Dom_1.$$(dropdownContentPreviousSibling) : null;\n\t this.parent = Dom_1.$$(dropdownContentParent);\n\t };\n\t ResponsiveDropdown.prototype.restoreContentPosition = function () {\n\t if (this.previousSibling) {\n\t this.dropdownContent.element.insertAfter(this.previousSibling.el);\n\t }\n\t else {\n\t this.parent.prepend(this.dropdownContent.element.el);\n\t }\n\t };\n\t return ResponsiveDropdown;\n\t}());\n\tResponsiveDropdown.TRANSPARENT_BACKGROUND_OPACITY = '0.9';\n\tResponsiveDropdown.DROPDOWN_BACKGROUND_CSS_CLASS_NAME = 'coveo-dropdown-background';\n\texports.ResponsiveDropdown = ResponsiveDropdown;\n\n\n/***/ },\n/* 146 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t/// \n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Slider_1 = __webpack_require__(147);\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar ResponsiveFacets_1 = __webpack_require__(157);\n\tvar FacetHeader_1 = __webpack_require__(168);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar FacetSliderQueryController_1 = __webpack_require__(97);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar BreadcrumbEvents_1 = __webpack_require__(44);\n\tvar Model_1 = __webpack_require__(100);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar SliderEvents_1 = __webpack_require__(55);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar ResponsiveComponentsUtils_1 = __webpack_require__(141);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar d3 = __webpack_require__(156);\n\tvar SearchAlertEvents_1 = __webpack_require__(53);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The FacetSlider component creates a facet containing a slider widget that allows the end user to filter results based\n\t * on a range of numerical values, rather than a \"classic\" multi-select {@link Facet} with a label and a count for each\n\t * value.\n\t *\n\t * Note that this component does not inherit from the Facet component, and thus does not offer the same configuration\n\t * options. Also, some of the FacetSlider options cannot be set as a HTML attributes on the component and must rather be\n\t * configured in the {@link init} call of the search interface.\n\t *\n\t * **Examples:**\n\t *\n\t * Specifying the FacetSlider configuration using a JSON inside the init call. Note that the JSON follows the\n\t * FacetSlider options:\n\t *\n\t * ```javascript\n\t * // You can call the init script using \"pure\" JavaScript:\n\t * Coveo.init(document.querySelector('#search'), {\n\t * FacetSlider: {\n\t * field: \"@size\",\n\t * start: 1000,\n\t * end: 5000,\n\t * rangeSlider: true,\n\t * graph: {\n\t * steps: 10\n\t * }\n\t * }\n\t * })\n\t *\n\t * // Or you can call the init script using the jQuery extension:\n\t * $('#search').coveo('init', {\n\t * FacetSlider: {\n\t * field: \"@size\",\n\t * start: 1000,\n\t * end: 5000,\n\t * rangeSlider: true,\n\t * graph: {\n\t * steps: 10\n\t * }\n\t * }\n\t * })\n\t * ```\n\t *\n\t * Specifying the same FacetSlider configuration by setting the corresponding HTML attributes directly in the markup:\n\t *\n\t * ```html\n\t *
\n\t * ```\n\t */\n\tvar FacetSlider = (function (_super) {\n\t __extends(FacetSlider, _super);\n\t /**\n\t * Creates a new FacetSlider component. Binds multiple query events as well.\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the FacetSlider component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t * @param slider\n\t */\n\t function FacetSlider(element, options, bindings, slider) {\n\t var _this = _super.call(this, element, FacetSlider.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.slider = slider;\n\t _this.isEmpty = false;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, FacetSlider, options);\n\t ResponsiveFacets_1.ResponsiveFacets.init(_this.root, _this, _this.options);\n\t if (_this.options.excludeOuterBounds == null) {\n\t _this.options.excludeOuterBounds = false;\n\t }\n\t if (_this.options.start) {\n\t _this.options.start = _this.options.dateField ? new Date(_this.options.start.replace(/-/g, '/')).getTime() : Number(_this.options.start);\n\t }\n\t if (_this.options.end) {\n\t _this.options.end = _this.options.dateField ? new Date(_this.options.end.replace(/-/g, '/')).getTime() : Number(_this.options.end);\n\t }\n\t if (_this.hasAGraph() && typeof d3 == 'undefined') {\n\t _this.options.graph = undefined;\n\t _this.logger.info('Cannot find the required dependencies d3.js. Cannot add graphic to your facet range', _this);\n\t }\n\t _this.facetQueryController = new FacetSliderQueryController_1.FacetSliderQueryController(_this);\n\t _this.initQueryStateEvents();\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.newQuery, function () { return _this.handleNewQuery(); });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.noResults, function () { return _this.handleNoresults(); });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.deferredQuerySuccess, function (args) { return _this.handleDeferredQuerySuccess(args); });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (args) { return _this.handleBuildingQuery(args); });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.doneBuildingQuery, function (args) { return _this.handleDoneBuildingQuery(args); });\n\t _this.bind.onRootElement(BreadcrumbEvents_1.BreadcrumbEvents.populateBreadcrumb, function (args) { return _this.handlePopulateBreadcrumb(args); });\n\t _this.bind.onRootElement(SearchAlertEvents_1.SearchAlertsEvents.searchAlertsPopulateMessage, function (args) { return _this.handlePopulateSearchAlerts(args); });\n\t _this.bind.onRootElement(BreadcrumbEvents_1.BreadcrumbEvents.clearBreadcrumb, function () { return _this.reset(); });\n\t _this.onResize = _.debounce(function () {\n\t if (ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.shouldDrawFacetSlider(Dom_1.$$(_this.root)) && _this.slider && !_this.isEmpty) {\n\t _this.slider.drawGraph();\n\t }\n\t }, FacetSlider.DEBOUNCED_RESIZE_DELAY);\n\t window.addEventListener('resize', _this.onResize);\n\t // This is used inside SF integration\n\t _this.bind.onRootElement('onPopupOpen', _this.onResize);\n\t Dom_1.$$(_this.root).on(InitializationEvents_1.InitializationEvents.nuke, _this.handleNuke);\n\t return _this;\n\t }\n\t FacetSlider.prototype.createDom = function () {\n\t this.facetHeader = new FacetHeader_1.FacetHeader({\n\t field: this.options.field,\n\t facetElement: this.element,\n\t title: this.options.title,\n\t enableClearElement: true,\n\t enableCollapseElement: true,\n\t isNewDesign: this.getBindings().searchInterface.isNewDesign(),\n\t facetSlider: this\n\t });\n\t this.element.appendChild(this.facetHeader.build());\n\t };\n\t FacetSlider.prototype.disable = function () {\n\t _super.prototype.disable.call(this);\n\t Dom_1.$$(this.element).addClass('coveo-disabled-empty');\n\t };\n\t /**\n\t * Resets the FacetSlider (meaning that you need to set the range value as inactive).\n\t */\n\t FacetSlider.prototype.reset = function () {\n\t if (this.slider) {\n\t this.slider.initializeState();\n\t this.updateQueryState();\n\t this.updateAppearanceDependingOnState();\n\t }\n\t };\n\t /**\n\t * Gets the current selection in the FacetSlider.\n\t *\n\t * **Note:**\n\t * > This method returns an array of number for selected date values. These numbers represent a number of milliseconds\n\t * > before or after January 1, 1970. Therefore, you can use these numbers to instantiate standard JavaScript Date\n\t * > objects.\n\t *\n\t * @returns {any} An array of number containing the first and last selected values, if possible. An array containing\n\t * two `undefined` values otherwise.\n\t */\n\t FacetSlider.prototype.getSelectedValues = function () {\n\t if (this.startOfSlider != undefined && this.endOfSlider != undefined) {\n\t return [this.startOfSlider, this.endOfSlider];\n\t }\n\t else {\n\t return [undefined, undefined];\n\t }\n\t };\n\t /**\n\t * Sets the selected values in the slider.\n\t *\n\t * **Note:**\n\t * > You must set date values with numbers representing a number of milliseconds before or after January 1, 1970. You\n\t * > can easily extract such numbers from standard JavaScript Date objects.\n\t *\n\t * @param values [start, end] An array containing the first and last values to select in the slider.\n\t */\n\t FacetSlider.prototype.setSelectedValues = function (values) {\n\t this.setupSliderIfNeeded(undefined);\n\t this.startOfSlider = values[0];\n\t this.endOfSlider = values[1];\n\t this.slider.setValues([this.startOfSlider, this.endOfSlider]);\n\t this.updateAppearanceDependingOnState();\n\t };\n\t /**\n\t * Indicates whether the FacetSlider is active. An active FacetSlider outputs an expression in the query when a search\n\t * is performed.\n\t * @returns {boolean} `true` if the FacetSlider is active; `false` otherwise.\n\t */\n\t FacetSlider.prototype.isActive = function () {\n\t return !isNaN(this.startOfSlider)\n\t && !isNaN(this.endOfSlider)\n\t && !isNaN(this.initialStartOfSlider)\n\t && !isNaN(this.initialEndOfSlider)\n\t && (this.startOfSlider != this.initialStartOfSlider || this.endOfSlider != this.initialEndOfSlider);\n\t };\n\t FacetSlider.prototype.getSliderBoundaryForQuery = function () {\n\t var needToReturnABoundary = false;\n\t if (!this.slider) {\n\t needToReturnABoundary = true;\n\t }\n\t else if (this.slider && this.isActive()) {\n\t needToReturnABoundary = true;\n\t }\n\t if (needToReturnABoundary) {\n\t return this.generateBoundary();\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t // There is delayed graph data if at the time the facet slider tried to draw, the facet was hidden in the\n\t // facet dropdown. This method will draw delayed graph data if it exists.\n\t FacetSlider.prototype.drawDelayedGraphData = function () {\n\t if (this.delayedGraphData != undefined && !this.isEmpty) {\n\t this.slider.drawGraph(this.delayedGraphData);\n\t }\n\t };\n\t FacetSlider.prototype.isSimpleSliderConfig = function () {\n\t return this.options.start != null && this.options.end != null;\n\t };\n\t FacetSlider.prototype.hasAGraph = function () {\n\t return this.options.graph != undefined;\n\t };\n\t FacetSlider.prototype.handleNoresults = function () {\n\t this.isEmpty = true;\n\t this.updateAppearanceDependingOnState();\n\t };\n\t FacetSlider.prototype.handleNewQuery = function () {\n\t this.isEmpty = false;\n\t };\n\t FacetSlider.prototype.handleRangeQueryStateChanged = function (args) {\n\t this.setupSliderIfNeeded(args);\n\t this.startOfSlider = args.value[0] == undefined ? this.startOfSlider : args.value[0];\n\t this.endOfSlider = args.value[1] == undefined ? this.endOfSlider : args.value[1];\n\t this.setSelectedValues([this.startOfSlider, this.endOfSlider]);\n\t };\n\t FacetSlider.prototype.handlePopulateBreadcrumb = function (args) {\n\t var _this = this;\n\t var populateBreadcrumb = function () {\n\t if (_this.isActive()) {\n\t args.breadcrumbs.push({\n\t element: _this.buildBreadcrumbFacetSlider()\n\t });\n\t }\n\t };\n\t if (this.slider) {\n\t populateBreadcrumb();\n\t }\n\t else {\n\t Dom_1.$$(this.root).one(QueryEvents_1.QueryEvents.deferredQuerySuccess, function () {\n\t populateBreadcrumb();\n\t Dom_1.$$(_this.root).trigger(BreadcrumbEvents_1.BreadcrumbEvents.redrawBreadcrumb);\n\t });\n\t }\n\t };\n\t FacetSlider.prototype.handlePopulateSearchAlerts = function (args) {\n\t if (this.isActive()) {\n\t args.text.push(Dom_1.$$(this.buildBreadcrumbFacetSlider()).text());\n\t }\n\t };\n\t FacetSlider.prototype.buildBreadcrumbFacetSlider = function () {\n\t var _this = this;\n\t var elem = Dom_1.$$('div', {\n\t className: 'coveo-facet-slider-breadcrumb'\n\t }).el;\n\t var title = Dom_1.$$('span', {\n\t className: 'coveo-facet-slider-breadcrumb-title'\n\t });\n\t title.text(this.options.title + ': ');\n\t elem.appendChild(title.el);\n\t var values = Dom_1.$$('span', {\n\t className: 'coveo-facet-slider-breadcrumb-values'\n\t });\n\t elem.appendChild(values.el);\n\t var value = Dom_1.$$('span', {\n\t className: 'coveo-facet-slider-breadcrumb-value'\n\t });\n\t value.text(this.slider.getCaption());\n\t values.el.appendChild(value.el);\n\t var clear = Dom_1.$$('span', {\n\t className: 'coveo-facet-slider-breadcrumb-clear'\n\t });\n\t value.el.appendChild(clear.el);\n\t value.on('click', function () {\n\t _this.reset();\n\t _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetClearAll, {\n\t facetId: _this.options.id,\n\t facetTitle: _this.options.title\n\t });\n\t _this.queryController.executeQuery();\n\t });\n\t return elem;\n\t };\n\t FacetSlider.prototype.initSlider = function () {\n\t this.buildSlider();\n\t this.slider.initializeState([this.startOfSlider, this.endOfSlider]);\n\t this.updateAppearanceDependingOnState();\n\t };\n\t FacetSlider.prototype.initQueryStateEvents = function () {\n\t var _this = this;\n\t this.rangeQueryStateAttribute = QueryStateModel_1.QueryStateModel.getFacetId(this.options.id) + ':range';\n\t this.queryStateModel.registerNewAttribute(this.rangeQueryStateAttribute, [undefined, undefined]);\n\t var eventName = this.queryStateModel.getEventName(Model_1.Model.eventTypes.changeOne + this.rangeQueryStateAttribute);\n\t this.bind.onRootElement(eventName, function (args) {\n\t _this.slider ? _this.handleRangeQueryStateChanged(args) : _this.setRangeStateSliderStillNotCreated(args);\n\t });\n\t };\n\t FacetSlider.prototype.setRangeStateSliderStillNotCreated = function (args) {\n\t this.rangeFromUrlState = this.copyValues(args.value);\n\t };\n\t FacetSlider.prototype.buildSlider = function () {\n\t var _this = this;\n\t var sliderContainer = Dom_1.$$('div', {\n\t className: 'coveo-facet-values coveo-slider-container'\n\t }).el;\n\t if (this.hasAGraph()) {\n\t Dom_1.$$(sliderContainer).addClass('coveo-with-graph');\n\t }\n\t var sliderDiv = Dom_1.$$('div').el;\n\t this.slider = this.slider ? this.slider : new Slider_1.Slider(sliderDiv, _.extend({}, this.options, { dateField: this.options.dateField }), this.root);\n\t Dom_1.$$(sliderDiv).on(SliderEvents_1.SliderEvents.endSlide, function (e, args) {\n\t _this.handleEndSlide(args);\n\t });\n\t Dom_1.$$(sliderDiv).on(SliderEvents_1.SliderEvents.duringSlide, function (e, args) {\n\t _this.handleDuringSlide(args);\n\t });\n\t if (this.hasAGraph()) {\n\t Dom_1.$$(sliderDiv).on(SliderEvents_1.SliderEvents.graphValueSelected, function (e, args) {\n\t _this.handleGraphValueSelected(args);\n\t });\n\t }\n\t sliderContainer.appendChild(sliderDiv);\n\t this.element.appendChild(sliderContainer);\n\t this.updateAppearanceDependingOnState();\n\t };\n\t FacetSlider.prototype.handleBuildingQuery = function (data) {\n\t Assert_1.Assert.exists(data);\n\t Assert_1.Assert.exists(data.queryBuilder);\n\t var boundary = this.getSliderBoundaryForQuery();\n\t if (boundary != undefined) {\n\t this.facetQueryController.prepareForNewQuery();\n\t var expression = this.facetQueryController.computeOurFilterExpression(boundary);\n\t if (Utils_1.Utils.isNonEmptyString(expression)) {\n\t this.logger.trace('Putting filter in query', expression);\n\t data.queryBuilder.advancedExpression.add(expression);\n\t }\n\t }\n\t };\n\t FacetSlider.prototype.handleDoneBuildingQuery = function (data) {\n\t var queryBuilder = data.queryBuilder;\n\t this.facetQueryController.putGroupByIntoQueryBuilder(queryBuilder);\n\t };\n\t FacetSlider.prototype.handleDeferredQuerySuccess = function (data) {\n\t this.ensureDom();\n\t this.setupSliderIfNeeded(data);\n\t var groupByResults = data.results.groupByResults[this.facetQueryController.lastGroupByRequestIndex];\n\t this.isEmpty = this.isFacetEmpty(groupByResults, data);\n\t this.updateAppearanceDependingOnState();\n\t if (this.hasAGraph()) {\n\t this.renderToSliderGraph(data);\n\t }\n\t };\n\t FacetSlider.prototype.handleEndSlide = function (args) {\n\t var values = args.slider.getValues();\n\t this.startOfSlider = values[0];\n\t this.endOfSlider = values[1];\n\t if (this.updateQueryState(values)) {\n\t this.updateAppearanceDependingOnState();\n\t this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetRangeSlider, {\n\t facetId: this.options.id,\n\t facetRangeStart: this.startOfSlider.toString(),\n\t facetRangeEnd: this.endOfSlider.toString()\n\t });\n\t this.queryController.executeQuery();\n\t }\n\t };\n\t FacetSlider.prototype.handleDuringSlide = function (args) {\n\t var values = args.slider.getValues();\n\t this.startOfSlider = values[0];\n\t this.endOfSlider = values[1];\n\t this.slider.setValues([this.startOfSlider, this.endOfSlider]);\n\t this.updateAppearanceDependingOnState(true);\n\t };\n\t FacetSlider.prototype.handleGraphValueSelected = function (args) {\n\t if ((this.options.rangeSlider && this.startOfSlider != args.start) || this.endOfSlider != args.end) {\n\t if (this.options.rangeSlider) {\n\t this.startOfSlider = args.start;\n\t }\n\t this.endOfSlider = args.end;\n\t this.slider.setValues([this.startOfSlider, this.endOfSlider]);\n\t this.updateQueryState();\n\t this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetRangeGraph, {\n\t facetId: this.options.id,\n\t facetRangeStart: this.startOfSlider.toString(),\n\t facetRangeEnd: this.endOfSlider.toString()\n\t });\n\t this.queryController.executeQuery();\n\t }\n\t };\n\t FacetSlider.prototype.updateQueryState = function (values, silent) {\n\t if (values === void 0) { values = this.slider.getValues(); }\n\t if (silent === void 0) { silent = false; }\n\t var copyOfValues = this.copyValues(values);\n\t var start = values[0] + 0.0;\n\t var end = values[1] + 0.0;\n\t var model = this.queryStateModel.get(this.rangeQueryStateAttribute);\n\t if (model == null || copyOfValues[0] != model[0] || copyOfValues[1] != model[1]) {\n\t copyOfValues[0] = start;\n\t copyOfValues[1] = end;\n\t this.queryStateModel.set(this.rangeQueryStateAttribute, copyOfValues, { silent: silent });\n\t return true;\n\t }\n\t return false;\n\t };\n\t FacetSlider.prototype.copyValues = function (values) {\n\t // Creating a copy of the values prevents an unwanted automatic update of the state while sliding\n\t // That's the cleanest way I found to copy that array correctly\n\t var copyOfValues = [];\n\t copyOfValues[0] = Number(values[0]) + 0.0;\n\t copyOfValues[1] = Number(values[1]) + 0.0;\n\t return copyOfValues;\n\t };\n\t FacetSlider.prototype.renderToSliderGraph = function (data) {\n\t var _this = this;\n\t var rawGroupByResults = data.results.groupByResults[this.facetQueryController.graphGroupByQueriesIndex];\n\t var graphData;\n\t var totalGraphResults = 0;\n\t if (rawGroupByResults) {\n\t graphData = _.map(rawGroupByResults.values, function (value) {\n\t totalGraphResults += value.numberOfResults;\n\t var start = value.value.split('..')[0];\n\t var end = value.value.split('..')[1];\n\t if (!_this.options.dateField) {\n\t start = Number(start);\n\t end = Number(end);\n\t }\n\t else {\n\t start = new Date(start.split('@')[0]).getTime();\n\t end = new Date(end.split('@')[0]).getTime();\n\t }\n\t var y = value.numberOfResults;\n\t return {\n\t start: start,\n\t y: y,\n\t end: end,\n\t isDate: _this.options.dateField\n\t };\n\t });\n\t }\n\t if (totalGraphResults == 0) {\n\t this.isEmpty = true;\n\t this.updateAppearanceDependingOnState();\n\t }\n\t else if (graphData != undefined && !this.isDropdownHidden()) {\n\t this.slider.drawGraph(graphData);\n\t }\n\t else if (graphData != undefined && this.isDropdownHidden()) {\n\t this.delayedGraphData = graphData;\n\t }\n\t };\n\t FacetSlider.prototype.isDropdownHidden = function () {\n\t var facetDropdown = this.root.querySelector('.coveo-facet-column');\n\t if (facetDropdown) {\n\t return Dom_1.$$(facetDropdown).css('display') == 'none';\n\t }\n\t if (Dom_1.$$(this.root).hasClass('CoveoRecommendation')) {\n\t var recommendationDropdown = Dom_1.$$(this.root).parents('.coveo-recommendation-column')[0] || this.root;\n\t return Dom_1.$$(recommendationDropdown).css('display') == 'none';\n\t }\n\t return false;\n\t };\n\t FacetSlider.prototype.generateBoundary = function () {\n\t if (!this.slider) {\n\t // If the slider is not initialized, the only boundary we can get is from the state.\n\t return this.generateBoundaryFromState();\n\t }\n\t else {\n\t // Else, try to get one from the slider itself. If we cant, try to return one from the state.\n\t var boundary = this.generateBoundaryFromSlider();\n\t if (boundary[0] == undefined && boundary[1] == undefined) {\n\t return this.generateBoundaryFromState();\n\t }\n\t else {\n\t return boundary;\n\t }\n\t }\n\t };\n\t FacetSlider.prototype.generateBoundaryFromSlider = function () {\n\t var start, end;\n\t if (this.startOfSlider != undefined) {\n\t start = this.startOfSlider;\n\t }\n\t if (this.endOfSlider != undefined) {\n\t end = this.endOfSlider;\n\t }\n\t return [start, end];\n\t };\n\t FacetSlider.prototype.generateBoundaryFromState = function () {\n\t var start, end;\n\t var startFromState = this.queryStateModel.get(this.rangeQueryStateAttribute)[0];\n\t if (startFromState != undefined) {\n\t start = startFromState;\n\t }\n\t var endFromState = this.queryStateModel.get(this.rangeQueryStateAttribute)[1];\n\t if (endFromState != undefined) {\n\t end = endFromState;\n\t }\n\t if (start != this.queryStateModel.getDefault(this.rangeQueryStateAttribute)[0] || end != this.queryStateModel.getDefault(this.rangeQueryStateAttribute)[1]) {\n\t return [start, end];\n\t }\n\t else {\n\t return [undefined, undefined];\n\t }\n\t };\n\t FacetSlider.prototype.setupSliderIfNeeded = function (data) {\n\t this.ensureDom();\n\t if (Utils_1.Utils.isNullOrUndefined(this.slider)) {\n\t if (!this.alreadySetBoundary()) {\n\t this.trySetSliderBoundaryFromOptions();\n\t }\n\t if (!this.alreadySetBoundary() && data != undefined) {\n\t this.trySetSliderBoundaryFromQueryResult(data);\n\t }\n\t this.trySetSliderBoundaryFromState();\n\t this.setupSliderStateVariables();\n\t var isInError = this.verifySetup();\n\t if (isInError) {\n\t this.logger.warn('Unable to initialize slider with current values', this);\n\t }\n\t else {\n\t this.initSlider();\n\t this.updateQueryState();\n\t }\n\t }\n\t };\n\t FacetSlider.prototype.verifySetup = function () {\n\t var isInError = 0;\n\t isInError += this.initialStartOfSlider == undefined ? 1 : 0;\n\t isInError += isNaN(this.initialStartOfSlider) ? 1 : 0;\n\t isInError += this.initialEndOfSlider == undefined ? 1 : 0;\n\t isInError += isNaN(this.initialEndOfSlider) ? 1 : 0;\n\t return isInError;\n\t };\n\t FacetSlider.prototype.setupSliderStateVariables = function () {\n\t if (isNaN(this.initialStartOfSlider) || isNaN(this.initialEndOfSlider)) {\n\t this.logger.warn('Cannnot initialize slider with those values : start: ' + this.initialStartOfSlider + ' end: ' + this.initialEndOfSlider);\n\t }\n\t else {\n\t this.initialStartOfSlider = Number(this.initialStartOfSlider);\n\t this.initialEndOfSlider = Number(this.initialEndOfSlider);\n\t this.startOfSlider = this.startOfSlider != undefined ? Number(this.startOfSlider) : this.initialStartOfSlider;\n\t this.endOfSlider = this.endOfSlider != undefined ? Number(this.endOfSlider) : this.initialEndOfSlider;\n\t this.options.start = this.initialStartOfSlider;\n\t this.options.end = this.initialEndOfSlider;\n\t this.queryStateModel.setNewDefault(this.rangeQueryStateAttribute, [this.initialStartOfSlider, this.initialEndOfSlider]);\n\t }\n\t };\n\t FacetSlider.prototype.alreadySetBoundary = function () {\n\t return this.startOfSlider != undefined && this.endOfSlider != undefined;\n\t };\n\t FacetSlider.prototype.trySetSliderBoundaryFromOptions = function () {\n\t if (!Utils_1.Utils.isNullOrUndefined(this.options.start)) {\n\t this.setupInitialSliderStateStart(this.options.start);\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(this.options.end)) {\n\t this.setupInitialSliderStateEnd(this.options.end);\n\t }\n\t };\n\t FacetSlider.prototype.trySetSliderBoundaryFromState = function () {\n\t var stateValues = this.rangeFromUrlState || this.queryStateModel.get(this.rangeQueryStateAttribute);\n\t if (stateValues && stateValues[0] != undefined && stateValues[1] != undefined) {\n\t stateValues[0] = Number(stateValues[0]);\n\t stateValues[1] = Number(stateValues[1]);\n\t this.setupInitialSliderStateStart(stateValues[0]);\n\t this.setupInitialSliderStateEnd(stateValues[1]);\n\t this.startOfSlider = stateValues[0];\n\t this.endOfSlider = stateValues[1];\n\t }\n\t };\n\t FacetSlider.prototype.trySetSliderBoundaryFromQueryResult = function (data) {\n\t var groupByResults = data.results.groupByResults[this.facetQueryController.lastGroupByRequestIndex];\n\t if (groupByResults && groupByResults.values.length > 0) {\n\t this.setupInitialSliderStateStart(groupByResults.values[0].value.split('..')[0]);\n\t this.setupInitialSliderStateEnd(groupByResults.values[groupByResults.values.length - 1].value.split('..')[1]);\n\t }\n\t };\n\t FacetSlider.prototype.setupInitialSliderStateStart = function (value) {\n\t if (this.initialStartOfSlider == undefined) {\n\t this.initialStartOfSlider = value;\n\t if (this.options.dateField && isNaN(value)) {\n\t this.initialStartOfSlider = new Date(value.replace('@', ' ')).getTime();\n\t }\n\t }\n\t };\n\t FacetSlider.prototype.setupInitialSliderStateEnd = function (value) {\n\t if (this.initialEndOfSlider == undefined) {\n\t this.initialEndOfSlider = value;\n\t if (this.options.dateField && isNaN((value))) {\n\t this.initialEndOfSlider = new Date(value.replace('@', ' ')).getTime();\n\t }\n\t }\n\t };\n\t FacetSlider.prototype.updateAppearanceDependingOnState = function (sliding) {\n\t if (sliding === void 0) { sliding = false; }\n\t if (this.isEmpty && !this.isActive() && !sliding) {\n\t Dom_1.$$(this.element).addClass('coveo-disabled-empty');\n\t }\n\t else {\n\t Dom_1.$$(this.element).removeClass('coveo-disabled-empty');\n\t Dom_1.$$(this.facetHeader.eraserElement).toggle(this.isActive());\n\t }\n\t if (!this.isActive() && !sliding) {\n\t Dom_1.$$(this.element).addClass('coveo-disabled');\n\t }\n\t else {\n\t Dom_1.$$(this.element).removeClass('coveo-disabled');\n\t }\n\t if (this.isActive() && this.slider) {\n\t this.slider.onMoving();\n\t }\n\t };\n\t FacetSlider.prototype.handleNuke = function () {\n\t window.removeEventListener('resize', this.onResize);\n\t };\n\t FacetSlider.prototype.isFacetEmpty = function (groupByResults, data) {\n\t return groupByResults == null || groupByResults.values[0] == null || groupByResults.values[0].numberOfResults == 0 || data.results.results.length == 0;\n\t };\n\t return FacetSlider;\n\t}(Component_1.Component));\n\t/**\n\t * The component options\n\t * @componentOptions\n\t */\n\tFacetSlider.options = {\n\t /**\n\t * Specifies the title to display on top of the FacetSlider component.\n\t *\n\t * Default value is the localized string for `\"NoTitle\"`.\n\t */\n\t title: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({ defaultValue: Strings_1.l('NoTitle') }),\n\t /**\n\t * Specifies whether the field for which you are requesting a range is a date field. This allows the FacetSlider to\n\t * correctly build the outgoing [GroupByRequest]{@link IGroupByRequest} and render itself properly.\n\t *\n\t * Default value is `false`.\n\t */\n\t dateField: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies the index field whose values the FacetSlider should use.\n\t *\n\t * This requires the given field to be configured correctly in the index as a Facet field (see\n\t * [Adding Fields to a Source](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=137)).\n\t *\n\t * Specifying a value for this option is required for the FacetSlider component to work.\n\t */\n\t field: ComponentOptions_1.ComponentOptions.buildFieldOption({ groupByField: true, required: true }),\n\t /**\n\t * Specifies a unique identifier for the FacetSlider. Among other things, this identifier serves the purpose of\n\t * saving the facet state in the URL hash.\n\t *\n\t * If you have two facets with the same field on the same page, you should specify a unique id value for at least\n\t * one of those two facets. This id must be unique in the page.\n\t *\n\t * Default value is the {@link FacetSlider.options.field} option value.\n\t */\n\t id: ComponentOptions_1.ComponentOptions.buildStringOption({\n\t postProcessing: function (value, options) { return value || options.field; }\n\t }),\n\t /**\n\t * Specifies the format to use to display values if they are dates.\n\t *\n\t * Default value is `\"MMM dd, yyyy\"`.\n\t */\n\t dateFormat: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the query to filter automatic minimum and maximum range of the slider.\n\t *\n\t * This is especially useful for date ranges where the index may contain values which are not set, and thus the\n\t * automatic range returns values from the year 1400 (earliest date from the boost C++ library).\n\t *\n\t * This option can be useful to do something like `queryOverride : @date>2000/01/01` or some arbitrary date which\n\t * will filter out unwanted values.\n\t */\n\t queryOverride: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the starting boundary of the slider.\n\t *\n\t * Date values are rounded to the nearest year when {@link FacetSlider.options.dateField} is `true`.\n\t *\n\t * Default value is the lowest available field value in the index.\n\t */\n\t start: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies the ending boundary of the slider.\n\t *\n\t * Date values are rounded to the nearest year when {@link FacetSlider.options.dateField} is `true`.\n\t *\n\t * Default value is the highest available field value in the index.\n\t */\n\t end: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies whether to exclude the outer bounds of the slider in the generated query when they are not active.\n\t *\n\t * Default value is `false`.\n\t */\n\t excludeOuterBounds: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies the number of decimal places to round the displayed numerical values to.\n\t *\n\t * Default (and minimum) value is `0`.\n\t */\n\t rounded: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 0 }),\n\t /**\n\t * Specifies the number of steps to split the slider into.\n\t *\n\t * For example, if your range is [ 0 , 100 ] and you specify 10 steps, then the end user can move the slider only to\n\t * the values [ 0, 10, 20, 30 ... , 100 ].\n\t *\n\t * For performance reasons, the maximum value for option is 1\n\t *\n\t * Default value is `undefined`, and the slider allows all values. Minimum value is `2`.\n\t */\n\t steps: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 2 }),\n\t /**\n\t * Specifies whether you want a slider with two buttons instead of a slider with a single button.\n\t *\n\t * By default, only one button appears in the slider.\n\t */\n\t rangeSlider: ComponentOptions_1.ComponentOptions.buildBooleanOption(),\n\t /**\n\t * Specifies the caption options to use to display the field values.\n\t *\n\t * Available options are:\n\t * - enable (`data-display-as-value-enable`): boolean; specifies whether to display the caption as a value. Default\n\t * value is `true`.\n\t * - unitSign (`data-display-as-value-unit-sign`): string; specifies the unit sign for this value (e.g., `\"$\"`).\n\t * Default value is `undefined`.\n\t * - separator (`data-display-as-value-separator`): string; specifies the character(s) to use as a separator in the\n\t * caption. Default value is `\"-\"`.\n\t */\n\t displayAsValue: ComponentOptions_1.ComponentOptions.buildObjectOption({\n\t subOptions: {\n\t enable: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t unitSign: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t separator: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: '-' })\n\t }\n\t }),\n\t /**\n\t * Specifies the percentage caption options to use to display the field values.\n\t *\n\t * Available options are:\n\t * - enable (`data-display-as-percent-enable`): boolean; specifies whether to display the caption as a percentage.\n\t * Default value is `false`.\n\t * separator (`data-display-as-percent-separator`): string; specifies the character(s) to use as a separator in the\n\t * caption. Default value is `\"-\"`.\n\t */\n\t displayAsPercent: ComponentOptions_1.ComponentOptions.buildObjectOption({\n\t subOptions: {\n\t enable: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t separator: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: '-' })\n\t }\n\t }),\n\t /**\n\t * Specifies whether to display a small graph on top of the slider.\n\t *\n\t * Available options are:\n\t * - steps (`data-graph-steps`): number; specifies the number of steps/columns to display in your graph. Default\n\t * value is `10`. Minimum value is `2`.\n\t */\n\t graph: ComponentOptions_1.ComponentOptions.buildObjectOption({\n\t subOptions: {\n\t steps: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 2 }),\n\t animationDuration: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 0 }),\n\t margin: ComponentOptions_1.ComponentOptions.buildObjectOption({\n\t subOptions: {\n\t top: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 0 }),\n\t bottom: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 0 }),\n\t left: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 0 }),\n\t right: ComponentOptions_1.ComponentOptions.buildNumberOption({ min: 0 })\n\t }\n\t })\n\t }\n\t }),\n\t /**\n\t * Specifies a function to generate the steps for the FacetSlider (see {@link FacetSlider.options.steps}. This\n\t * function receives the FacetSlider boundaries (see {@link FacetSlider.options.start} and\n\t * {@link FacetSlider.options.end}) and must return an array of numbers (the steps).\n\t *\n\t * You can only set this option in the {@link init} call of your search interface. You cannot set it directly in the\n\t * markup as an HTML attribute.\n\t *\n\t * **Example:**\n\t *\n\t * ```javascript\n\t * // You can call the init script using \"pure\" JavaScript:\n\t * Coveo.init(document.querySelector('#search'), {\n\t * FacetSlider: {\n\t * field: \"@size\",\n\t * getSteps: function(start, end) {\n\t * return [0,2,4,6,8,10];\n\t * }\n\t * }\n\t * })\n\t *\n\t * // Or you can call the init script using the jQuery extension:\n\t * $('#search').coveo('init', {\n\t * FacetSlider: {\n\t * field: \"@size\",\n\t * getSteps: function(start, end) {\n\t * return [0,2,4,6,8,10];\n\t * }\n\t * }\n\t * })\n\t * ```\n\t */\n\t getSteps: ComponentOptions_1.ComponentOptions.buildCustomOption(function () {\n\t return null;\n\t }),\n\t /**\n\t * Specifies a function to generate the caption for the FacetSlider. Receives the current slider values\n\t * (number[]) and must return the caption (string).\n\t *\n\t * You can only set this option in the {@link init} call of your search interface. You cannot set it directly in the\n\t * markup as an HTML attribute.\n\t *\n\t * **Example:**\n\t *\n\t * ```javascript\n\t * // You can call the init script using \"pure\" JavaScript:\n\t * Coveo.init(document.querySelector('#search'), {\n\t * FacetSlider: {\n\t * field: \"@size\",\n\t * valueCaption: function(values) {\n\t * return values[0] + \" hello\" + \", \" + values[1] + \" world\";\n\t * }\n\t * }\n\t * })\n\t *\n\t * // Or you can call the init script using the jQuery extension:\n\t * $('#search').coveo('init', {\n\t * FacetSlider: {\n\t * field: \"@size\",\n\t * valueCaption: function(values) {\n\t * return values[0] + \" hello\" + \", \" + values[1] + \" world\";\n\t * }\n\t * }\n\t * })\n\t * ```\n\t */\n\t valueCaption: ComponentOptions_1.ComponentOptions.buildCustomOption(function () {\n\t return null;\n\t }),\n\t /**\n\t * Specifies whether to enable *responsive mode* for facets. Setting this options to `false` on any {@link Facet} or\n\t * {@link FacetSlider} in a search interface disables responsive mode for all other facets in the search interface.\n\t *\n\t * Responsive mode displays all facets under a single dropdown button whenever the width of the HTML element which\n\t * the search interface is bound to reaches or falls behind a certain threshold (see\n\t * {@link SearchInterface.responsiveComponents}).\n\t *\n\t * See also {@link FacetSlider.options.dropdownHeaderLabel}.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableResponsiveMode: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies the label of the button that allows to show the facets when in responsive mode. If it is specified more than once, the\n\t * first occurence of the option will be used.\n\t * The default value is \"Filters\".\n\t */\n\t dropdownHeaderLabel: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption()\n\t};\n\tFacetSlider.ID = 'FacetSlider';\n\tFacetSlider.DEBOUNCED_RESIZE_DELAY = 250;\n\texports.FacetSlider = FacetSlider;\n\tInitialization_1.Initialization.registerAutoCreateComponent(FacetSlider);\n\n\n/***/ },\n/* 147 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar SliderEvents_1 = __webpack_require__(55);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar d3Scale = __webpack_require__(148);\n\tvar d3 = __webpack_require__(156);\n\tvar Globalize = __webpack_require__(30);\n\tvar _ = __webpack_require__(16);\n\tvar Logger_1 = __webpack_require__(13);\n\texports.MAX_NUMBER_OF_STEPS = 100;\n\tvar Slider = (function () {\n\t function Slider(element, options, root) {\n\t var _this = this;\n\t this.element = element;\n\t this.options = options;\n\t this.root = root;\n\t this.steps = [];\n\t if (this.options.dateField) {\n\t this.options.start = new Date(this.options.start).getTime();\n\t this.options.end = new Date(this.options.end).getTime();\n\t }\n\t if (this.options.rounded == undefined) {\n\t this.options.rounded = 0;\n\t }\n\t if (this.options.steps || this.options.getSteps) {\n\t this.buildSteps();\n\t }\n\t if (this.options.graph) {\n\t this.sliderGraph = new SliderGraph(this);\n\t }\n\t this.sliderLine = new SliderLine(this);\n\t _.each(this.sliderLine.build(), function (e) {\n\t _this.element.appendChild(e);\n\t });\n\t if (this.options.rangeSlider) {\n\t this.sliderRange = new SliderRange(this);\n\t _.each(this.sliderRange.build(), function (e) {\n\t _this.element.appendChild(e);\n\t });\n\t }\n\t else {\n\t this.sliderButton = new SliderButton(this, 1);\n\t var btnEl = this.sliderButton.build();\n\t Dom_1.$$(btnEl).addClass('coveo-no-range-button');\n\t this.element.appendChild(btnEl);\n\t this.sliderLine.setActiveWidth(this.sliderButton);\n\t }\n\t this.sliderCaption = new SliderCaption(this);\n\t this.element.appendChild(this.sliderCaption.build());\n\t }\n\t Slider.prototype.onMoving = function () {\n\t if (this.options.rangeSlider) {\n\t this.sliderRange.setBoundary();\n\t this.sliderLine.setActiveWidth(this.sliderRange.firstButton, this.sliderRange.secondButton);\n\t }\n\t else {\n\t this.setButtonBoundary();\n\t this.sliderLine.setActiveWidth(this.sliderButton);\n\t }\n\t if (this.options.graph) {\n\t this.sliderGraph.draw();\n\t }\n\t this.displayCaption();\n\t };\n\t Slider.prototype.initializeState = function (values) {\n\t if (values === void 0) { values = [this.options.start, this.options.end]; }\n\t this.currentValues = values;\n\t if (this.options.rangeSlider) {\n\t this.sliderRange.initializeSliderRangeState(values);\n\t this.sliderLine.setActiveWidth(this.sliderRange.firstButton, this.sliderRange.secondButton);\n\t }\n\t else {\n\t if (values == undefined) {\n\t this.sliderButton.toEnd();\n\t }\n\t else {\n\t this.sliderButton.setValue(values[1]);\n\t }\n\t this.setButtonBoundary();\n\t this.sliderLine.setActiveWidth(this.sliderButton);\n\t }\n\t this.displayCaption();\n\t };\n\t Slider.prototype.getPosition = function () {\n\t if (this.options.rangeSlider) {\n\t return this.sliderRange.getPosition();\n\t }\n\t else {\n\t return [0, this.sliderButton.getPosition()];\n\t }\n\t };\n\t Slider.prototype.getPercentPosition = function () {\n\t if (this.options.rangeSlider) {\n\t return this.sliderRange.getPercentPosition();\n\t }\n\t else {\n\t return [0, this.sliderButton.getPercent()];\n\t }\n\t };\n\t Slider.prototype.getValues = function () {\n\t if (this.currentValues != undefined) {\n\t return this.currentValues;\n\t }\n\t else {\n\t if (this.options.rangeSlider) {\n\t return this.sliderRange.getValue();\n\t }\n\t else {\n\t return [this.options.start, this.sliderButton.getValue()];\n\t }\n\t }\n\t };\n\t Slider.prototype.getCaptionFromValue = function (values) {\n\t return this.sliderCaption.getCaptionFromValues(values);\n\t };\n\t Slider.prototype.getCaption = function () {\n\t return this.sliderCaption.getCaption();\n\t };\n\t Slider.prototype.setValues = function (values) {\n\t if (values != undefined) {\n\t values[0] = Math.max(values[0], this.options.start);\n\t values[1] = Math.min(values[1], this.options.end);\n\t }\n\t this.currentValues = values;\n\t if (this.options.rangeSlider) {\n\t this.sliderRange.setValue(values);\n\t this.sliderLine.setActiveWidth(this.sliderRange.firstButton, this.sliderRange.secondButton);\n\t }\n\t else {\n\t this.sliderButton.setValue(values[1]);\n\t this.sliderLine.setActiveWidth(this.sliderButton);\n\t }\n\t this.displayCaption();\n\t };\n\t Slider.prototype.drawGraph = function (data) {\n\t if (this.sliderGraph) {\n\t this.sliderGraph.draw(data);\n\t }\n\t };\n\t Slider.prototype.setButtonBoundary = function () {\n\t this.sliderButton.leftBoundary = 0;\n\t this.sliderButton.rightBoundary = this.element.clientWidth;\n\t };\n\t Slider.prototype.displayCaption = function () {\n\t if (this.options.valueCaption != undefined) {\n\t this.sliderCaption.setFromString(this.options.valueCaption(this.getValues()));\n\t }\n\t else if (this.options.percentCaption != undefined) {\n\t this.sliderCaption.setFromString(this.options.percentCaption(this.getPercentPosition()));\n\t }\n\t else if (this.options.displayAsPercent != undefined && this.options.displayAsPercent.separator != undefined && this.options.displayAsPercent.enable) {\n\t this.sliderCaption.setAsPercent();\n\t }\n\t else {\n\t this.sliderCaption.setAsValue();\n\t }\n\t };\n\t Slider.prototype.buildSteps = function () {\n\t if (this.options.getSteps) {\n\t this.steps = this.options.getSteps(this.options.start, this.options.end);\n\t }\n\t else {\n\t if (this.options.steps > exports.MAX_NUMBER_OF_STEPS) {\n\t new Logger_1.Logger(this).warn(\"Maximum number of steps for slider is \" + exports.MAX_NUMBER_OF_STEPS + \" for performance reason\");\n\t this.options.steps = exports.MAX_NUMBER_OF_STEPS;\n\t }\n\t var oneStep = (this.options.end - this.options.start) / Math.max(1, this.options.steps);\n\t if (oneStep > 0) {\n\t var currentStep = this.options.start;\n\t var currentNumberOfSteps = 0;\n\t while (currentStep <= this.options.end && currentNumberOfSteps <= exports.MAX_NUMBER_OF_STEPS) {\n\t this.steps.push(currentStep);\n\t currentStep += oneStep;\n\t currentNumberOfSteps++;\n\t }\n\t }\n\t else {\n\t this.steps.push(this.options.start);\n\t this.steps.push(this.options.end);\n\t }\n\t }\n\t };\n\t return Slider;\n\t}());\n\texports.Slider = Slider;\n\tvar SliderLine = (function () {\n\t function SliderLine(slider) {\n\t this.slider = slider;\n\t }\n\t SliderLine.prototype.build = function () {\n\t this.backGround = Dom_1.$$('div', {\n\t className: 'coveo-slider-line coveo-background'\n\t }).el;\n\t this.activePart = Dom_1.$$('div', {\n\t className: 'coveo-slider-line coveo-active'\n\t }).el;\n\t return [this.backGround, this.activePart];\n\t };\n\t SliderLine.prototype.setActiveWidth = function (buttonOne, buttonTwo) {\n\t if (this.slider.options.rangeSlider) {\n\t var width = (buttonTwo.getPercent() - buttonOne.getPercent()) * 100;\n\t this.activePart.style.width = width + '%';\n\t this.activePart.style.left = buttonOne.getPercent() * 100 + '%';\n\t this.activePart.style.right = buttonTwo.getPercent() * 100 + '%';\n\t }\n\t else {\n\t var width = buttonOne.getPercent() * 100;\n\t this.activePart.style.width = width + '%';\n\t }\n\t };\n\t return SliderLine;\n\t}());\n\t// This component relies heavily on mouse interaction, really difficult to test inside a UT context.\n\t// Ignore it\n\t/* istanbul ignore next */\n\tvar SliderButton = (function () {\n\t function SliderButton(slider, which) {\n\t this.slider = slider;\n\t this.which = which;\n\t this.eventMouseDown = DeviceUtils_1.DeviceUtils.isMobileDevice() ? 'touchstart' : 'mousedown';\n\t this.eventMouseMove = DeviceUtils_1.DeviceUtils.isMobileDevice() ? 'touchmove' : 'mousemove';\n\t this.eventMouseUp = DeviceUtils_1.DeviceUtils.isMobileDevice() ? 'touchend' : 'mouseup';\n\t }\n\t SliderButton.prototype.build = function () {\n\t this.element = Dom_1.$$('div', {\n\t className: 'coveo-slider-button'\n\t }).el;\n\t this.bindEvents();\n\t this.element['CoveoSliderButton'] = this;\n\t return this.element;\n\t };\n\t SliderButton.prototype.toBeginning = function () {\n\t this.element.style.left = '0%';\n\t };\n\t SliderButton.prototype.toEnd = function () {\n\t this.element.style.left = '100%';\n\t };\n\t SliderButton.prototype.setValue = function (value) {\n\t var percent = this.fromValueToPercent(value);\n\t this.element.style.left = Math.round(percent * 100) + '%';\n\t };\n\t SliderButton.prototype.getPosition = function () {\n\t var left = this.element.style.left;\n\t if (left.indexOf('%') != -1) {\n\t return (parseFloat(left) / 100) * this.slider.element.clientWidth;\n\t }\n\t else {\n\t return parseFloat(left);\n\t }\n\t };\n\t SliderButton.prototype.getPercent = function (position) {\n\t if (position === void 0) { position = this.getPosition(); }\n\t if (this.slider.element.clientWidth == 0) {\n\t return 0;\n\t }\n\t return +(position / this.slider.element.clientWidth).toFixed(2);\n\t };\n\t SliderButton.prototype.getValue = function () {\n\t var value = this.getPercent() * (this.slider.options.end - this.slider.options.start) + this.slider.options.start;\n\t return value;\n\t };\n\t SliderButton.prototype.fromValueToPercent = function (value) {\n\t return 1 - ((this.slider.options.end - value) / (this.slider.options.end - this.slider.options.start));\n\t };\n\t SliderButton.prototype.fromPositionToValue = function (position) {\n\t var percent = this.getPercent(position);\n\t return this.slider.options.start + (percent * (this.slider.options.end - this.slider.options.start));\n\t };\n\t SliderButton.prototype.fromValueToPosition = function (value) {\n\t var percent = this.fromValueToPercent(value);\n\t return this.slider.element.clientWidth * percent;\n\t };\n\t SliderButton.prototype.bindEvents = function () {\n\t var _this = this;\n\t Dom_1.$$(this.element).on(this.eventMouseDown, function (e) {\n\t _this.handleStartSlide(e);\n\t });\n\t var doc = this.slider.options.document || document;\n\t doc.addEventListener(this.eventMouseMove, function (e) {\n\t if (_this.eventMouseMove == 'touchmove' && _this.isMouseDown) {\n\t e.preventDefault();\n\t }\n\t _this.handleMoving(e);\n\t });\n\t doc.addEventListener(this.eventMouseUp, function () {\n\t _this.handleEndSlide();\n\t });\n\t };\n\t SliderButton.prototype.getUserSelect = function () {\n\t if (document.body.style.msUserSelect !== undefined) {\n\t return 'msUserSelect';\n\t }\n\t if (document.body.style.webkitUserSelect !== undefined) {\n\t return 'webkitUserSelect';\n\t }\n\t if (document.body.style['MozUserSelect'] !== undefined) {\n\t return 'MozUserSelect';\n\t }\n\t return 'userSelect';\n\t };\n\t SliderButton.prototype.handleStartSlide = function (e) {\n\t var position = this.getMousePosition(e);\n\t this.isMouseDown = true;\n\t this.startPositionX = position.x;\n\t this.lastElementLeft = (parseInt(this.element.style.left, 10) / 100) * this.slider.element.clientWidth;\n\t this.origUserSelect = document.body.style[this.getUserSelect()];\n\t this.origCursor = document.body.style.cursor;\n\t document.body.style[this.getUserSelect()] = 'none';\n\t document.body.style.cursor = 'pointer';\n\t Dom_1.$$(this.element).addClass('coveo-active');\n\t Dom_1.$$(this.element).trigger(SliderEvents_1.SliderEvents.startSlide, {\n\t button: this,\n\t slider: this.slider\n\t });\n\t e.stopPropagation();\n\t };\n\t SliderButton.prototype.handleMoving = function (e) {\n\t if (this.isMouseDown) {\n\t this.slider.onMoving();\n\t this.updatePosition(e);\n\t this.handleButtonNearEnd();\n\t Dom_1.$$(this.element).trigger(SliderEvents_1.SliderEvents.duringSlide, {\n\t button: this,\n\t slider: this.slider\n\t });\n\t }\n\t };\n\t SliderButton.prototype.handleEndSlide = function () {\n\t if (this.isMouseDown) {\n\t document.body.style[this.getUserSelect()] = this.origUserSelect;\n\t document.body.style.cursor = this.origCursor;\n\t Dom_1.$$(this.element).removeClass('coveo-active');\n\t Dom_1.$$(this.element).trigger(SliderEvents_1.SliderEvents.endSlide, {\n\t button: this,\n\t slider: this.slider\n\t });\n\t }\n\t this.isMouseDown = false;\n\t };\n\t SliderButton.prototype.handleButtonNearEnd = function () {\n\t if (this.which == 0) {\n\t if (this.origZIndex == undefined) {\n\t this.origZIndex = this.element.style.zIndex || '1';\n\t }\n\t if (this.currentPos > 90) {\n\t this.element.style.zIndex = this.origZIndex + 1;\n\t }\n\t else {\n\t this.element.style.zIndex = this.origZIndex;\n\t }\n\t }\n\t };\n\t SliderButton.prototype.getMousePosition = function (e) {\n\t var posx = 0;\n\t var posy = 0;\n\t if (e['touches'] && e['touches'][0]) {\n\t posx = e['touches'][0].pageX;\n\t posy = e['touches'][0].pageY;\n\t }\n\t else if (e.pageX && e.pageY) {\n\t posx = e.pageX;\n\t posy = e.pageY;\n\t }\n\t else if (e.clientX && e.clientY) {\n\t posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n\t posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n\t }\n\t return { x: posx, y: posy };\n\t };\n\t SliderButton.prototype.updatePosition = function (e) {\n\t var pos = this.getMousePosition(e);\n\t var spanX = pos.x - this.startPositionX;\n\t var currentValue;\n\t this.currentPos = this.lastElementLeft + spanX;\n\t if (this.slider.options.steps || this.slider.options.getSteps) {\n\t var snapResult = this.snapToStep(spanX);\n\t this.currentPos = snapResult.position;\n\t currentValue = snapResult.value;\n\t }\n\t this.currentPos = Math.max(this.leftBoundary, this.currentPos);\n\t this.currentPos = Math.min(this.rightBoundary, this.currentPos);\n\t this.currentPos = this.getPercent(this.currentPos) * 100;\n\t this.currentPos = Math.min(this.currentPos, 100);\n\t this.currentPos = Math.max(this.currentPos, 0);\n\t this.element.style.left = Math.round(this.currentPos) + '%';\n\t if (this.slider.options.steps || this.slider.options.getSteps) {\n\t this.slider.currentValues[this.which] = currentValue;\n\t }\n\t else {\n\t this.slider.currentValues[this.which] = this.getValue();\n\t }\n\t };\n\t SliderButton.prototype.snapToStep = function (spanX) {\n\t var _this = this;\n\t var diffs = _.map(this.slider.steps, function (step, i) {\n\t return Math.abs(_this.currentPos - _this.fromValueToPosition(_this.slider.steps[i]));\n\t });\n\t var diffsNext = _.map(this.slider.steps, function (step, i) {\n\t return Math.abs(_this.rightBoundary - _this.fromValueToPosition(_this.slider.steps[i]));\n\t });\n\t var diffsPrev = _.map(this.slider.steps, function (step, i) {\n\t return Math.abs(_this.leftBoundary - _this.fromValueToPosition(_this.slider.steps[i]));\n\t });\n\t var nearest = _.min(diffs);\n\t var nearestNext = _.min(diffsNext);\n\t var nearestPrevious = _.min(diffsPrev);\n\t var currentStep = this.slider.steps[_.indexOf(diffs, nearest)];\n\t var nextStep = this.slider.steps[_.indexOf(diffsNext, nearestNext)];\n\t var previousStep = this.slider.steps[_.indexOf(diffsPrev, nearestPrevious)];\n\t currentStep = Math.min(currentStep, nextStep);\n\t currentStep = Math.max(currentStep, previousStep);\n\t return { position: this.fromValueToPosition(currentStep), value: currentStep };\n\t };\n\t return SliderButton;\n\t}());\n\texports.SliderButton = SliderButton;\n\tvar SliderRange = (function () {\n\t function SliderRange(slider) {\n\t this.slider = slider;\n\t this.firstButton = new SliderButton(slider, 0);\n\t this.secondButton = new SliderButton(slider, 1);\n\t }\n\t SliderRange.prototype.build = function () {\n\t var firstElem = this.firstButton.build();\n\t var secondElem = this.secondButton.build();\n\t Dom_1.$$(secondElem).addClass('coveo-range-button');\n\t return [firstElem, secondElem];\n\t };\n\t SliderRange.prototype.initializeSliderRangeState = function (values) {\n\t if (values == undefined) {\n\t this.firstButton.toBeginning();\n\t this.secondButton.toEnd();\n\t }\n\t else {\n\t this.firstButton.setValue(values[0]);\n\t this.secondButton.setValue(values[1]);\n\t }\n\t this.setBoundary();\n\t };\n\t SliderRange.prototype.setValue = function (values) {\n\t this.firstButton.setValue(values[0]);\n\t this.secondButton.setValue(values[1]);\n\t };\n\t SliderRange.prototype.setBoundary = function () {\n\t this.firstButton.leftBoundary = 0;\n\t this.firstButton.rightBoundary = this.secondButton.getPosition();\n\t this.secondButton.leftBoundary = this.firstButton.getPosition();\n\t this.secondButton.rightBoundary = this.slider.element.clientWidth;\n\t };\n\t SliderRange.prototype.getPosition = function () {\n\t return [this.firstButton.getPosition(), this.secondButton.getPosition()];\n\t };\n\t SliderRange.prototype.getPercentPosition = function () {\n\t return [this.firstButton.getPercent(), this.secondButton.getPercent()];\n\t };\n\t SliderRange.prototype.getValue = function () {\n\t return [this.firstButton.getValue(), this.secondButton.getValue()];\n\t };\n\t return SliderRange;\n\t}());\n\tvar SliderCaption = (function () {\n\t function SliderCaption(slider) {\n\t this.slider = slider;\n\t this.separator = '-';\n\t this.unitSign = '';\n\t if (this.slider.options.displayAsPercent && this.slider.options.displayAsPercent.enable) {\n\t this.separator = this.slider.options.displayAsPercent.separator != undefined ? this.slider.options.displayAsPercent.separator : this.separator;\n\t }\n\t else if (this.slider.options.displayAsValue && this.slider.options.displayAsValue.enable) {\n\t this.separator = this.slider.options.displayAsValue.separator != undefined ? this.slider.options.displayAsValue.separator : this.separator;\n\t this.unitSign = this.slider.options.displayAsValue.unitSign != undefined ? this.slider.options.displayAsValue.unitSign : this.unitSign;\n\t }\n\t }\n\t SliderCaption.prototype.build = function () {\n\t this.caption = Dom_1.$$('div', {\n\t className: 'coveo-slider-caption'\n\t }).el;\n\t return this.caption;\n\t };\n\t SliderCaption.prototype.getCaption = function () {\n\t return Dom_1.$$(this.caption).text();\n\t };\n\t SliderCaption.prototype.getCaptionFromValues = function (values) {\n\t return this.getValueCaption(values);\n\t };\n\t SliderCaption.prototype.getCaptionFromValuesAsPercent = function (values) {\n\t return this.getValueCaption(values);\n\t };\n\t SliderCaption.prototype.setAsValue = function () {\n\t Dom_1.$$(this.caption).text(this.getValueCaption());\n\t };\n\t SliderCaption.prototype.setAsPercent = function () {\n\t var values = this.slider.getPercentPosition();\n\t Dom_1.$$(this.caption).text([(values[0] * 100).toFixed(this.slider.options.rounded), '%', this.separator, (values[1] * 100).toFixed(this.slider.options.rounded), '%'].join(' '));\n\t };\n\t SliderCaption.prototype.setFromString = function (str) {\n\t Dom_1.$$(this.caption).text(str);\n\t };\n\t SliderCaption.prototype.getValueCaption = function (values) {\n\t if (values === void 0) { values = this.slider.getValues(); }\n\t var first = values[0];\n\t var second = values[1];\n\t if (this.slider.options.dateField) {\n\t var firstAsDate = new Date(first);\n\t var secondAsDate = new Date(second);\n\t firstAsDate.setHours(0, 0, 0, 0);\n\t secondAsDate.setHours(0, 0, 0, 0);\n\t first = Globalize.format(firstAsDate, this.slider.options.dateFormat || 'MMM dd, yyyy');\n\t second = Globalize.format(secondAsDate, this.slider.options.dateFormat || 'MMM dd, yyyy');\n\t this.unitSign = '';\n\t }\n\t else {\n\t first = first.toFixed(this.slider.options.rounded);\n\t second = second.toFixed(this.slider.options.rounded);\n\t }\n\t return [first, this.unitSign, this.separator, second, this.unitSign].join(' ');\n\t };\n\t return SliderCaption;\n\t}());\n\tvar SliderGraph = (function () {\n\t function SliderGraph(slider) {\n\t this.slider = slider;\n\t this.svg = d3.select(slider.element).append('svg').append('g');\n\t this.x = d3Scale.scaleBand();\n\t this.y = d3Scale.scaleLinear();\n\t this.slider.options.graph.margin = Utils_1.Utils.extendDeep({\n\t top: 20,\n\t right: 0,\n\t left: 0,\n\t bottom: 20\n\t }, this.slider.options.graph.margin || {});\n\t this.slider.options.graph.animationDuration = this.slider.options.graph.animationDuration || 500;\n\t this.tooltip = Dom_1.$$('div', {\n\t className: 'coveo-slider-tooltip'\n\t }).el;\n\t this.tooltip.style.display = 'none';\n\t this.slider.element.appendChild(this.tooltip);\n\t this.slider.options.graph.steps = this.slider.options.graph.steps || 10;\n\t }\n\t SliderGraph.prototype.draw = function (data) {\n\t if (data === void 0) { data = this.oldData; }\n\t if (data) {\n\t if (data != this.oldData) {\n\t // only modify the data if it's new\n\t data = this.modifyPossibleSinglePointDataIntoValidRange(data);\n\t }\n\t var sliderOuterWidth = this.slider.element.offsetWidth;\n\t var sliderOuterHeight = this.slider.element.offsetHeight;\n\t var width = sliderOuterWidth - this.slider.options.graph.margin.left - this.slider.options.graph.margin.right;\n\t var height = sliderOuterHeight - this.slider.options.graph.margin.top - this.slider.options.graph.margin.bottom;\n\t if (!isNaN(width) && width >= 0 && !isNaN(height) && height >= 0) {\n\t this.applyTransformOnSvg(width, height);\n\t this.setXAndYRange(width, height);\n\t this.setXAndYDomain(data);\n\t var bars = this.svg.selectAll('.coveo-bar').data(data);\n\t var currentSliderValues = this.slider.getValues();\n\t this.renderGraphBars(bars, width, height, currentSliderValues);\n\t this.setGraphBarsTransition(bars, height, currentSliderValues);\n\t }\n\t this.oldData = data;\n\t }\n\t };\n\t SliderGraph.prototype.modifyPossibleSinglePointDataIntoValidRange = function (data) {\n\t var _this = this;\n\t return _.map(data, function (d) {\n\t // In some rare corner case, the index can return range values where the start of the data is equal to the end of the data\n\t // Since it's a \"point\" as opposed to a real range, it's impossible to display this properly on a graph (where the range is the x axis)\n\t // An element in a graph with with 0 width on the x axis is illogical and cannot work.\n\t // In those case, we must \"widen\" the x range. Instead of adding an arbitrary value (like +1 to end, for example), we need something that won't make the range super small to click on.\n\t // We use the total width available, and subtract half a step at the beginning, and add half a step at the end\n\t if (d.start == d.end) {\n\t var oneStep = (_this.slider.options.end - _this.slider.options.start) / _this.slider.options.graph.steps;\n\t d.start = Math.round(d.start - oneStep / 2);\n\t d.end = Math.round(d.end + oneStep / 2);\n\t }\n\t return d;\n\t });\n\t };\n\t SliderGraph.prototype.setXAndYRange = function (width, height) {\n\t this.x.range([0, width]);\n\t this.x.padding(0.2);\n\t this.y.range([height - this.slider.options.graph.margin.top, 0]);\n\t };\n\t SliderGraph.prototype.setXAndYDomain = function (data) {\n\t this.padGraphWithEmptyData(data);\n\t this.x.domain(_.map(data, function (d) {\n\t return d.start;\n\t }));\n\t this.y.domain([0, d3.max(data, function (d) {\n\t return d.y;\n\t })]);\n\t };\n\t SliderGraph.prototype.padGraphWithEmptyData = function (data) {\n\t var oneStepOfGraph = data[0].end - data[0].start;\n\t this.padBeginningOfGraphWithEmptyData(data, oneStepOfGraph);\n\t this.padEndOfGraphWithEmptyData(data, oneStepOfGraph);\n\t };\n\t SliderGraph.prototype.padBeginningOfGraphWithEmptyData = function (data, oneStepOfGraph) {\n\t if (data[0].start > this.slider.options.start && data[0].start > oneStepOfGraph) {\n\t var difToFillAtStart = data[0].start - this.slider.options.start;\n\t var nbOfStepsAtStart = Math.round(difToFillAtStart / oneStepOfGraph);\n\t var currentStep = data[0].start;\n\t for (var i = nbOfStepsAtStart; i > 0; i--) {\n\t data.unshift({ start: currentStep - oneStepOfGraph, end: currentStep, y: 0 });\n\t currentStep -= oneStepOfGraph;\n\t }\n\t }\n\t };\n\t SliderGraph.prototype.padEndOfGraphWithEmptyData = function (data, oneStepOfGraph) {\n\t var lastDataIndex = data.length - 1;\n\t if (data[lastDataIndex].end < this.slider.options.end) {\n\t var diffToFillAtEnd = this.slider.options.end - data[lastDataIndex].end;\n\t var nbOfStepsAtEnd = Math.round(diffToFillAtEnd / oneStepOfGraph);\n\t var currentStep = data[lastDataIndex].end;\n\t for (var i = 0; i < nbOfStepsAtEnd; i++) {\n\t data.push({ start: currentStep, end: currentStep + oneStepOfGraph, y: 0 });\n\t currentStep += oneStepOfGraph;\n\t }\n\t }\n\t };\n\t SliderGraph.prototype.applyTransformOnSvg = function (width, height) {\n\t var svg = Dom_1.$$(this.slider.element).find('svg');\n\t svg.setAttribute('width', width + 'px');\n\t svg.setAttribute('height', height + 'px');\n\t this.svg.attr('transform', 'translate(' + this.slider.options.graph.margin.left + ',' + this.slider.options.graph.margin.top + ')');\n\t };\n\t SliderGraph.prototype.renderGraphBars = function (bars, width, height, currentSliderValues) {\n\t bars.enter().append('rect')\n\t .attr('class', this.getFunctionForClass(currentSliderValues))\n\t .attr('width', this.x.bandwidth())\n\t .attr('height', this.getFunctionForHeight(height))\n\t .attr('x', this.getFunctionForX())\n\t .attr('y', this.getFunctionForY())\n\t .on('click', this.getFunctionForClick())\n\t .on('mouseover', this.getFunctionForMouseOver(height))\n\t .on('mouseout', this.getFunctionForMouseOut());\n\t };\n\t SliderGraph.prototype.setGraphBarsTransition = function (bars, height, currentSliderValues) {\n\t bars\n\t .transition()\n\t .attr('x', this.getFunctionForX())\n\t .attr('width', this.x.bandwidth())\n\t .attr('class', this.getFunctionForClass(currentSliderValues))\n\t .transition()\n\t .duration(this.slider.options.graph.animationDuration)\n\t .attr('y', this.getFunctionForY())\n\t .attr('height', this.getFunctionForHeight(height));\n\t };\n\t SliderGraph.prototype.getBarClass = function (currentSliderValues, d, i) {\n\t if (d.start >= currentSliderValues[0] && d.end <= currentSliderValues[1]) {\n\t return 'coveo-active';\n\t }\n\t else if (currentSliderValues[0] == this.slider.options.start && i == 0) {\n\t return 'coveo-active';\n\t }\n\t else if (currentSliderValues[1] == this.slider.options.end && i == this.slider.options.graph.steps - 1) {\n\t return 'coveo-active';\n\t }\n\t else {\n\t return '';\n\t }\n\t };\n\t SliderGraph.prototype.setTooltip = function (d, height) {\n\t var caption = Dom_1.$$('span', {\n\t className: 'coveo-caption'\n\t });\n\t caption.text(this.slider.getCaptionFromValue([d.start, d.end]));\n\t var count = Dom_1.$$('span', {\n\t className: 'coveo-count'\n\t });\n\t count.text(d.y.toString());\n\t Dom_1.$$(this.tooltip).empty();\n\t this.tooltip.appendChild(caption.el);\n\t this.tooltip.appendChild(count.el);\n\t this.tooltip.style.display = 'block';\n\t this.tooltip.style.left = (this.x(d.start) - (0.2 * this.slider.options.graph.steps)) + 'px';\n\t this.tooltip.style.top = (this.y(d.y) - height) + 'px';\n\t };\n\t SliderGraph.prototype.getFunctionForX = function () {\n\t var _this = this;\n\t return function (d) {\n\t return _this.x(d.start);\n\t };\n\t };\n\t SliderGraph.prototype.getFunctionForY = function () {\n\t var _this = this;\n\t return function (d) {\n\t return _this.y(d.y);\n\t };\n\t };\n\t SliderGraph.prototype.getFunctionForHeight = function (height) {\n\t var _this = this;\n\t return function (d) {\n\t return height - _this.y(d.y);\n\t };\n\t };\n\t SliderGraph.prototype.getFunctionForClass = function (currentSliderValues) {\n\t var _this = this;\n\t return function (d, i) {\n\t return 'coveo-bar ' + _this.getBarClass(currentSliderValues, d, i);\n\t };\n\t };\n\t SliderGraph.prototype.getFunctionForClick = function () {\n\t var _this = this;\n\t return function (d, i) {\n\t Dom_1.$$(_this.slider.element).trigger(SliderEvents_1.SliderEvents.graphValueSelected, {\n\t start: d.start,\n\t end: d.end,\n\t value: d.y\n\t });\n\t };\n\t };\n\t SliderGraph.prototype.getFunctionForMouseOver = function (height) {\n\t var _this = this;\n\t return function (d) {\n\t _this.setTooltip(d, height);\n\t };\n\t };\n\t SliderGraph.prototype.getFunctionForMouseOut = function () {\n\t var _this = this;\n\t return function () {\n\t _this.tooltip.style.display = 'none';\n\t };\n\t };\n\t return SliderGraph;\n\t}());\n\n\n/***/ },\n/* 148 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-scale/ Version 1.0.3. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports, __webpack_require__(149), __webpack_require__(150), __webpack_require__(151), __webpack_require__(153), __webpack_require__(154), __webpack_require__(155), __webpack_require__(152)) :\n\t typeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-collection', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format', 'd3-color'], factory) :\n\t (factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n\t}(this, function (exports,d3Array,d3Collection,d3Interpolate,d3Format,d3Time,d3TimeFormat,d3Color) { 'use strict';\n\t\n\t var array = Array.prototype;\n\t\n\t var map$1 = array.map;\n\t var slice = array.slice;\n\t\n\t var implicit = {name: \"implicit\"};\n\t\n\t function ordinal(range) {\n\t var index = d3Collection.map(),\n\t domain = [],\n\t unknown = implicit;\n\t\n\t range = range == null ? [] : slice.call(range);\n\t\n\t function scale(d) {\n\t var key = d + \"\", i = index.get(key);\n\t if (!i) {\n\t if (unknown !== implicit) return unknown;\n\t index.set(key, i = domain.push(d));\n\t }\n\t return range[(i - 1) % range.length];\n\t }\n\t\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain.slice();\n\t domain = [], index = d3Collection.map();\n\t var i = -1, n = _.length, d, key;\n\t while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n\t return scale;\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice.call(_), scale) : range.slice();\n\t };\n\t\n\t scale.unknown = function(_) {\n\t return arguments.length ? (unknown = _, scale) : unknown;\n\t };\n\t\n\t scale.copy = function() {\n\t return ordinal()\n\t .domain(domain)\n\t .range(range)\n\t .unknown(unknown);\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function band() {\n\t var scale = ordinal().unknown(undefined),\n\t domain = scale.domain,\n\t ordinalRange = scale.range,\n\t range = [0, 1],\n\t step,\n\t bandwidth,\n\t round = false,\n\t paddingInner = 0,\n\t paddingOuter = 0,\n\t align = 0.5;\n\t\n\t delete scale.unknown;\n\t\n\t function rescale() {\n\t var n = domain().length,\n\t reverse = range[1] < range[0],\n\t start = range[reverse - 0],\n\t stop = range[1 - reverse];\n\t step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n\t if (round) step = Math.floor(step);\n\t start += (stop - start - step * (n - paddingInner)) * align;\n\t bandwidth = step * (1 - paddingInner);\n\t if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n\t var values = d3Array.range(n).map(function(i) { return start + step * i; });\n\t return ordinalRange(reverse ? values.reverse() : values);\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain(_), rescale()) : domain();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n\t };\n\t\n\t scale.rangeRound = function(_) {\n\t return range = [+_[0], +_[1]], round = true, rescale();\n\t };\n\t\n\t scale.bandwidth = function() {\n\t return bandwidth;\n\t };\n\t\n\t scale.step = function() {\n\t return step;\n\t };\n\t\n\t scale.round = function(_) {\n\t return arguments.length ? (round = !!_, rescale()) : round;\n\t };\n\t\n\t scale.padding = function(_) {\n\t return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n\t };\n\t\n\t scale.paddingInner = function(_) {\n\t return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n\t };\n\t\n\t scale.paddingOuter = function(_) {\n\t return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n\t };\n\t\n\t scale.align = function(_) {\n\t return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n\t };\n\t\n\t scale.copy = function() {\n\t return band()\n\t .domain(domain())\n\t .range(range)\n\t .round(round)\n\t .paddingInner(paddingInner)\n\t .paddingOuter(paddingOuter)\n\t .align(align);\n\t };\n\t\n\t return rescale();\n\t }\n\t\n\t function pointish(scale) {\n\t var copy = scale.copy;\n\t\n\t scale.padding = scale.paddingOuter;\n\t delete scale.paddingInner;\n\t delete scale.paddingOuter;\n\t\n\t scale.copy = function() {\n\t return pointish(copy());\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function point() {\n\t return pointish(band().paddingInner(1));\n\t }\n\t\n\t function constant(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function number(x) {\n\t return +x;\n\t }\n\t\n\t var unit = [0, 1];\n\t\n\t function deinterpolate(a, b) {\n\t return (b -= (a = +a))\n\t ? function(x) { return (x - a) / b; }\n\t : constant(b);\n\t }\n\t\n\t function deinterpolateClamp(deinterpolate) {\n\t return function(a, b) {\n\t var d = deinterpolate(a = +a, b = +b);\n\t return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n\t };\n\t }\n\t\n\t function reinterpolateClamp(reinterpolate) {\n\t return function(a, b) {\n\t var r = reinterpolate(a = +a, b = +b);\n\t return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n\t };\n\t }\n\t\n\t function bimap(domain, range, deinterpolate, reinterpolate) {\n\t var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n\t if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n\t else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n\t return function(x) { return r0(d0(x)); };\n\t }\n\t\n\t function polymap(domain, range, deinterpolate, reinterpolate) {\n\t var j = Math.min(domain.length, range.length) - 1,\n\t d = new Array(j),\n\t r = new Array(j),\n\t i = -1;\n\t\n\t // Reverse descending domains.\n\t if (domain[j] < domain[0]) {\n\t domain = domain.slice().reverse();\n\t range = range.slice().reverse();\n\t }\n\t\n\t while (++i < j) {\n\t d[i] = deinterpolate(domain[i], domain[i + 1]);\n\t r[i] = reinterpolate(range[i], range[i + 1]);\n\t }\n\t\n\t return function(x) {\n\t var i = d3Array.bisect(domain, x, 1, j) - 1;\n\t return r[i](d[i](x));\n\t };\n\t }\n\t\n\t function copy(source, target) {\n\t return target\n\t .domain(source.domain())\n\t .range(source.range())\n\t .interpolate(source.interpolate())\n\t .clamp(source.clamp());\n\t }\n\t\n\t // deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n\t // reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\n\t function continuous(deinterpolate$$, reinterpolate) {\n\t var domain = unit,\n\t range = unit,\n\t interpolate = d3Interpolate.interpolate,\n\t clamp = false,\n\t piecewise,\n\t output,\n\t input;\n\t\n\t function rescale() {\n\t piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n\t output = input = null;\n\t return scale;\n\t }\n\t\n\t function scale(x) {\n\t return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate$$) : deinterpolate$$, interpolate)))(+x);\n\t }\n\t\n\t scale.invert = function(y) {\n\t return (input || (input = piecewise(range, domain, deinterpolate, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain = map$1.call(_, number), rescale()) : domain.slice();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n\t };\n\t\n\t scale.rangeRound = function(_) {\n\t return range = slice.call(_), interpolate = d3Interpolate.interpolateRound, rescale();\n\t };\n\t\n\t scale.clamp = function(_) {\n\t return arguments.length ? (clamp = !!_, rescale()) : clamp;\n\t };\n\t\n\t scale.interpolate = function(_) {\n\t return arguments.length ? (interpolate = _, rescale()) : interpolate;\n\t };\n\t\n\t return rescale();\n\t }\n\t\n\t function tickFormat(domain, count, specifier) {\n\t var start = domain[0],\n\t stop = domain[domain.length - 1],\n\t step = d3Array.tickStep(start, stop, count == null ? 10 : count),\n\t precision;\n\t specifier = d3Format.formatSpecifier(specifier == null ? \",f\" : specifier);\n\t switch (specifier.type) {\n\t case \"s\": {\n\t var value = Math.max(Math.abs(start), Math.abs(stop));\n\t if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;\n\t return d3Format.formatPrefix(specifier, value);\n\t }\n\t case \"\":\n\t case \"e\":\n\t case \"g\":\n\t case \"p\":\n\t case \"r\": {\n\t if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n\t break;\n\t }\n\t case \"f\":\n\t case \"%\": {\n\t if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n\t break;\n\t }\n\t }\n\t return d3Format.format(specifier);\n\t }\n\t\n\t function linearish(scale) {\n\t var domain = scale.domain;\n\t\n\t scale.ticks = function(count) {\n\t var d = domain();\n\t return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t return tickFormat(domain(), count, specifier);\n\t };\n\t\n\t scale.nice = function(count) {\n\t var d = domain(),\n\t i = d.length - 1,\n\t n = count == null ? 10 : count,\n\t start = d[0],\n\t stop = d[i],\n\t step = d3Array.tickStep(start, stop, n);\n\t\n\t if (step) {\n\t step = d3Array.tickStep(Math.floor(start / step) * step, Math.ceil(stop / step) * step, n);\n\t d[0] = Math.floor(start / step) * step;\n\t d[i] = Math.ceil(stop / step) * step;\n\t domain(d);\n\t }\n\t\n\t return scale;\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function linear() {\n\t var scale = continuous(deinterpolate, d3Interpolate.interpolateNumber);\n\t\n\t scale.copy = function() {\n\t return copy(scale, linear());\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function identity() {\n\t var domain = [0, 1];\n\t\n\t function scale(x) {\n\t return +x;\n\t }\n\t\n\t scale.invert = scale;\n\t\n\t scale.domain = scale.range = function(_) {\n\t return arguments.length ? (domain = map$1.call(_, number), scale) : domain.slice();\n\t };\n\t\n\t scale.copy = function() {\n\t return identity().domain(domain);\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function nice(domain, interval) {\n\t domain = domain.slice();\n\t\n\t var i0 = 0,\n\t i1 = domain.length - 1,\n\t x0 = domain[i0],\n\t x1 = domain[i1],\n\t t;\n\t\n\t if (x1 < x0) {\n\t t = i0, i0 = i1, i1 = t;\n\t t = x0, x0 = x1, x1 = t;\n\t }\n\t\n\t domain[i0] = interval.floor(x0);\n\t domain[i1] = interval.ceil(x1);\n\t return domain;\n\t }\n\t\n\t function deinterpolate$1(a, b) {\n\t return (b = Math.log(b / a))\n\t ? function(x) { return Math.log(x / a) / b; }\n\t : constant(b);\n\t }\n\t\n\t function reinterpolate(a, b) {\n\t return a < 0\n\t ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n\t : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n\t }\n\t\n\t function pow10(x) {\n\t return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n\t }\n\t\n\t function powp(base) {\n\t return base === 10 ? pow10\n\t : base === Math.E ? Math.exp\n\t : function(x) { return Math.pow(base, x); };\n\t }\n\t\n\t function logp(base) {\n\t return base === Math.E ? Math.log\n\t : base === 10 && Math.log10\n\t || base === 2 && Math.log2\n\t || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n\t }\n\t\n\t function reflect(f) {\n\t return function(x) {\n\t return -f(-x);\n\t };\n\t }\n\t\n\t function log() {\n\t var scale = continuous(deinterpolate$1, reinterpolate).domain([1, 10]),\n\t domain = scale.domain,\n\t base = 10,\n\t logs = logp(10),\n\t pows = powp(10);\n\t\n\t function rescale() {\n\t logs = logp(base), pows = powp(base);\n\t if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n\t return scale;\n\t }\n\t\n\t scale.base = function(_) {\n\t return arguments.length ? (base = +_, rescale()) : base;\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain(_), rescale()) : domain();\n\t };\n\t\n\t scale.ticks = function(count) {\n\t var d = domain(),\n\t u = d[0],\n\t v = d[d.length - 1],\n\t r;\n\t\n\t if (r = v < u) i = u, u = v, v = i;\n\t\n\t var i = logs(u),\n\t j = logs(v),\n\t p,\n\t k,\n\t t,\n\t n = count == null ? 10 : +count,\n\t z = [];\n\t\n\t if (!(base % 1) && j - i < n) {\n\t i = Math.round(i) - 1, j = Math.round(j) + 1;\n\t if (u > 0) for (; i < j; ++i) {\n\t for (k = 1, p = pows(i); k < base; ++k) {\n\t t = p * k;\n\t if (t < u) continue;\n\t if (t > v) break;\n\t z.push(t);\n\t }\n\t } else for (; i < j; ++i) {\n\t for (k = base - 1, p = pows(i); k >= 1; --k) {\n\t t = p * k;\n\t if (t < u) continue;\n\t if (t > v) break;\n\t z.push(t);\n\t }\n\t }\n\t } else {\n\t z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);\n\t }\n\t\n\t return r ? z.reverse() : z;\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n\t if (typeof specifier !== \"function\") specifier = d3Format.format(specifier);\n\t if (count === Infinity) return specifier;\n\t if (count == null) count = 10;\n\t var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n\t return function(d) {\n\t var i = d / pows(Math.round(logs(d)));\n\t if (i * base < base - 0.5) i *= base;\n\t return i <= k ? specifier(d) : \"\";\n\t };\n\t };\n\t\n\t scale.nice = function() {\n\t return domain(nice(domain(), {\n\t floor: function(x) { return pows(Math.floor(logs(x))); },\n\t ceil: function(x) { return pows(Math.ceil(logs(x))); }\n\t }));\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, log().base(base));\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function raise(x, exponent) {\n\t return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\t }\n\t\n\t function pow() {\n\t var exponent = 1,\n\t scale = continuous(deinterpolate, reinterpolate),\n\t domain = scale.domain;\n\t\n\t function deinterpolate(a, b) {\n\t return (b = raise(b, exponent) - (a = raise(a, exponent)))\n\t ? function(x) { return (raise(x, exponent) - a) / b; }\n\t : constant(b);\n\t }\n\t\n\t function reinterpolate(a, b) {\n\t b = raise(b, exponent) - (a = raise(a, exponent));\n\t return function(t) { return raise(a + b * t, 1 / exponent); };\n\t }\n\t\n\t scale.exponent = function(_) {\n\t return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, pow().exponent(exponent));\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function sqrt() {\n\t return pow().exponent(0.5);\n\t }\n\t\n\t function quantile$1() {\n\t var domain = [],\n\t range = [],\n\t thresholds = [];\n\t\n\t function rescale() {\n\t var i = 0, n = Math.max(1, range.length);\n\t thresholds = new Array(n - 1);\n\t while (++i < n) thresholds[i - 1] = d3Array.quantile(domain, i / n);\n\t return scale;\n\t }\n\t\n\t function scale(x) {\n\t if (!isNaN(x = +x)) return range[d3Array.bisect(thresholds, x)];\n\t }\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range.indexOf(y);\n\t return i < 0 ? [NaN, NaN] : [\n\t i > 0 ? thresholds[i - 1] : domain[0],\n\t i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n\t ];\n\t };\n\t\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain.slice();\n\t domain = [];\n\t for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n\t domain.sort(d3Array.ascending);\n\t return rescale();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n\t };\n\t\n\t scale.quantiles = function() {\n\t return thresholds.slice();\n\t };\n\t\n\t scale.copy = function() {\n\t return quantile$1()\n\t .domain(domain)\n\t .range(range);\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function quantize() {\n\t var x0 = 0,\n\t x1 = 1,\n\t n = 1,\n\t domain = [0.5],\n\t range = [0, 1];\n\t\n\t function scale(x) {\n\t if (x <= x) return range[d3Array.bisect(domain, x, 0, n)];\n\t }\n\t\n\t function rescale() {\n\t var i = -1;\n\t domain = new Array(n);\n\t while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n\t return scale;\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n\t };\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range.indexOf(y);\n\t return i < 0 ? [NaN, NaN]\n\t : i < 1 ? [x0, domain[0]]\n\t : i >= n ? [domain[n - 1], x1]\n\t : [domain[i - 1], domain[i]];\n\t };\n\t\n\t scale.copy = function() {\n\t return quantize()\n\t .domain([x0, x1])\n\t .range(range);\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function threshold() {\n\t var domain = [0.5],\n\t range = [0, 1],\n\t n = 1;\n\t\n\t function scale(x) {\n\t if (x <= x) return range[d3Array.bisect(domain, x, 0, n)];\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n\t };\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range.indexOf(y);\n\t return [domain[i - 1], domain[i]];\n\t };\n\t\n\t scale.copy = function() {\n\t return threshold()\n\t .domain(domain)\n\t .range(range);\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t var durationSecond = 1000;\n\t var durationMinute = durationSecond * 60;\n\t var durationHour = durationMinute * 60;\n\t var durationDay = durationHour * 24;\n\t var durationWeek = durationDay * 7;\n\t var durationMonth = durationDay * 30;\n\t var durationYear = durationDay * 365;\n\t function date(t) {\n\t return new Date(t);\n\t }\n\t\n\t function number$1(t) {\n\t return t instanceof Date ? +t : +new Date(+t);\n\t }\n\t\n\t function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n\t var scale = continuous(deinterpolate, d3Interpolate.interpolateNumber),\n\t invert = scale.invert,\n\t domain = scale.domain;\n\t\n\t var formatMillisecond = format(\".%L\"),\n\t formatSecond = format(\":%S\"),\n\t formatMinute = format(\"%I:%M\"),\n\t formatHour = format(\"%I %p\"),\n\t formatDay = format(\"%a %d\"),\n\t formatWeek = format(\"%b %d\"),\n\t formatMonth = format(\"%B\"),\n\t formatYear = format(\"%Y\");\n\t\n\t var tickIntervals = [\n\t [second, 1, durationSecond],\n\t [second, 5, 5 * durationSecond],\n\t [second, 15, 15 * durationSecond],\n\t [second, 30, 30 * durationSecond],\n\t [minute, 1, durationMinute],\n\t [minute, 5, 5 * durationMinute],\n\t [minute, 15, 15 * durationMinute],\n\t [minute, 30, 30 * durationMinute],\n\t [ hour, 1, durationHour ],\n\t [ hour, 3, 3 * durationHour ],\n\t [ hour, 6, 6 * durationHour ],\n\t [ hour, 12, 12 * durationHour ],\n\t [ day, 1, durationDay ],\n\t [ day, 2, 2 * durationDay ],\n\t [ week, 1, durationWeek ],\n\t [ month, 1, durationMonth ],\n\t [ month, 3, 3 * durationMonth ],\n\t [ year, 1, durationYear ]\n\t ];\n\t\n\t function tickFormat(date) {\n\t return (second(date) < date ? formatMillisecond\n\t : minute(date) < date ? formatSecond\n\t : hour(date) < date ? formatMinute\n\t : day(date) < date ? formatHour\n\t : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n\t : year(date) < date ? formatMonth\n\t : formatYear)(date);\n\t }\n\t\n\t function tickInterval(interval, start, stop, step) {\n\t if (interval == null) interval = 10;\n\t\n\t // If a desired tick count is specified, pick a reasonable tick interval\n\t // based on the extent of the domain and a rough estimate of tick size.\n\t // Otherwise, assume interval is already a time interval and use it.\n\t if (typeof interval === \"number\") {\n\t var target = Math.abs(stop - start) / interval,\n\t i = d3Array.bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n\t if (i === tickIntervals.length) {\n\t step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);\n\t interval = year;\n\t } else if (i) {\n\t i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n\t step = i[1];\n\t interval = i[0];\n\t } else {\n\t step = d3Array.tickStep(start, stop, interval);\n\t interval = millisecond;\n\t }\n\t }\n\t\n\t return step == null ? interval : interval.every(step);\n\t }\n\t\n\t scale.invert = function(y) {\n\t return new Date(invert(y));\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? domain(map$1.call(_, number$1)) : domain().map(date);\n\t };\n\t\n\t scale.ticks = function(interval, step) {\n\t var d = domain(),\n\t t0 = d[0],\n\t t1 = d[d.length - 1],\n\t r = t1 < t0,\n\t t;\n\t if (r) t = t0, t0 = t1, t1 = t;\n\t t = tickInterval(interval, t0, t1, step);\n\t t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n\t return r ? t.reverse() : t;\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t return specifier == null ? tickFormat : format(specifier);\n\t };\n\t\n\t scale.nice = function(interval, step) {\n\t var d = domain();\n\t return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n\t ? domain(nice(d, interval))\n\t : scale;\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function time() {\n\t return calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n\t }\n\t\n\t function utcTime() {\n\t return calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n\t }\n\t\n\t function colors(s) {\n\t return s.match(/.{6}/g).map(function(x) {\n\t return \"#\" + x;\n\t });\n\t }\n\t\n\t var category10 = colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\t\n\t var category20b = colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n\t\n\t var category20c = colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n\t\n\t var category20 = colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n\t\n\t var cubehelix$1 = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(300, 0.5, 0.0), d3Color.cubehelix(-240, 0.5, 1.0));\n\t\n\t var warm = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(-100, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\t\n\t var cool = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(260, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\t\n\t var rainbow = d3Color.cubehelix();\n\t\n\t function rainbow$1(t) {\n\t if (t < 0 || t > 1) t -= Math.floor(t);\n\t var ts = Math.abs(t - 0.5);\n\t rainbow.h = 360 * t - 100;\n\t rainbow.s = 1.5 - 1.5 * ts;\n\t rainbow.l = 0.8 - 0.9 * ts;\n\t return rainbow + \"\";\n\t }\n\t\n\t function ramp(range) {\n\t var n = range.length;\n\t return function(t) {\n\t return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n\t };\n\t }\n\t\n\t var viridis = ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\t\n\t var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\t\n\t var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\t\n\t var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\t\n\t function sequential(interpolator) {\n\t var x0 = 0,\n\t x1 = 1,\n\t clamp = false;\n\t\n\t function scale(x) {\n\t var t = (x - x0) / (x1 - x0);\n\t return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n\t };\n\t\n\t scale.clamp = function(_) {\n\t return arguments.length ? (clamp = !!_, scale) : clamp;\n\t };\n\t\n\t scale.interpolator = function(_) {\n\t return arguments.length ? (interpolator = _, scale) : interpolator;\n\t };\n\t\n\t scale.copy = function() {\n\t return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t exports.scaleBand = band;\n\t exports.scalePoint = point;\n\t exports.scaleIdentity = identity;\n\t exports.scaleLinear = linear;\n\t exports.scaleLog = log;\n\t exports.scaleOrdinal = ordinal;\n\t exports.scaleImplicit = implicit;\n\t exports.scalePow = pow;\n\t exports.scaleSqrt = sqrt;\n\t exports.scaleQuantile = quantile$1;\n\t exports.scaleQuantize = quantize;\n\t exports.scaleThreshold = threshold;\n\t exports.scaleTime = time;\n\t exports.scaleUtc = utcTime;\n\t exports.schemeCategory10 = category10;\n\t exports.schemeCategory20b = category20b;\n\t exports.schemeCategory20c = category20c;\n\t exports.schemeCategory20 = category20;\n\t exports.interpolateCubehelixDefault = cubehelix$1;\n\t exports.interpolateRainbow = rainbow$1;\n\t exports.interpolateWarm = warm;\n\t exports.interpolateCool = cool;\n\t exports.interpolateViridis = viridis;\n\t exports.interpolateMagma = magma;\n\t exports.interpolateInferno = inferno;\n\t exports.interpolatePlasma = plasma;\n\t exports.scaleSequential = sequential;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 149 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-array/ Version 1.0.1. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3 = global.d3 || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t function ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t }\n\t\n\t function bisector(compare) {\n\t if (compare.length === 1) compare = ascendingComparator(compare);\n\t return {\n\t left: function(a, x, lo, hi) {\n\t if (lo == null) lo = 0;\n\t if (hi == null) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) < 0) lo = mid + 1;\n\t else hi = mid;\n\t }\n\t return lo;\n\t },\n\t right: function(a, x, lo, hi) {\n\t if (lo == null) lo = 0;\n\t if (hi == null) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) > 0) hi = mid;\n\t else lo = mid + 1;\n\t }\n\t return lo;\n\t }\n\t };\n\t }\n\t\n\t function ascendingComparator(f) {\n\t return function(d, x) {\n\t return ascending(f(d), x);\n\t };\n\t }\n\t\n\t var ascendingBisect = bisector(ascending);\n\t var bisectRight = ascendingBisect.right;\n\t var bisectLeft = ascendingBisect.left;\n\t\n\t function descending(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t }\n\t\n\t function number(x) {\n\t return x === null ? NaN : +x;\n\t }\n\t\n\t function variance(array, f) {\n\t var n = array.length,\n\t m = 0,\n\t a,\n\t d,\n\t s = 0,\n\t i = -1,\n\t j = 0;\n\t\n\t if (f == null) {\n\t while (++i < n) {\n\t if (!isNaN(a = number(array[i]))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) {\n\t if (!isNaN(a = number(f(array[i], i, array)))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t\n\t if (j > 1) return s / (j - 1);\n\t }\n\t\n\t function deviation(array, f) {\n\t var v = variance(array, f);\n\t return v ? Math.sqrt(v) : v;\n\t }\n\t\n\t function extent(array, f) {\n\t var i = -1,\n\t n = array.length,\n\t a,\n\t b,\n\t c;\n\t\n\t if (f == null) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n\t while (++i < n) if ((b = array[i]) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n\t while (++i < n) if ((b = f(array[i], i, array)) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t\n\t return [a, c];\n\t }\n\t\n\t var array = Array.prototype;\n\t\n\t var slice = array.slice;\n\t var map = array.map;\n\t\n\t function constant(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function identity(x) {\n\t return x;\n\t }\n\t\n\t function range(start, stop, step) {\n\t start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\t\n\t var i = -1,\n\t n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n\t range = new Array(n);\n\t\n\t while (++i < n) {\n\t range[i] = start + i * step;\n\t }\n\t\n\t return range;\n\t }\n\t\n\t var e10 = Math.sqrt(50);\n\t var e5 = Math.sqrt(10);\n\t var e2 = Math.sqrt(2);\n\t function ticks(start, stop, count) {\n\t var step = tickStep(start, stop, count);\n\t return range(\n\t Math.ceil(start / step) * step,\n\t Math.floor(stop / step) * step + step / 2, // inclusive\n\t step\n\t );\n\t }\n\t\n\t function tickStep(start, stop, count) {\n\t var step0 = Math.abs(stop - start) / Math.max(0, count),\n\t step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n\t error = step0 / step1;\n\t if (error >= e10) step1 *= 10;\n\t else if (error >= e5) step1 *= 5;\n\t else if (error >= e2) step1 *= 2;\n\t return stop < start ? -step1 : step1;\n\t }\n\t\n\t function sturges(values) {\n\t return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n\t }\n\t\n\t function histogram() {\n\t var value = identity,\n\t domain = extent,\n\t threshold = sturges;\n\t\n\t function histogram(data) {\n\t var i,\n\t n = data.length,\n\t x,\n\t values = new Array(n);\n\t\n\t for (i = 0; i < n; ++i) {\n\t values[i] = value(data[i], i, data);\n\t }\n\t\n\t var xz = domain(values),\n\t x0 = xz[0],\n\t x1 = xz[1],\n\t tz = threshold(values, x0, x1);\n\t\n\t // Convert number of thresholds into uniform thresholds.\n\t if (!Array.isArray(tz)) tz = ticks(x0, x1, tz);\n\t\n\t // Remove any thresholds outside the domain.\n\t var m = tz.length;\n\t while (tz[0] <= x0) tz.shift(), --m;\n\t while (tz[m - 1] >= x1) tz.pop(), --m;\n\t\n\t var bins = new Array(m + 1),\n\t bin;\n\t\n\t // Initialize bins.\n\t for (i = 0; i <= m; ++i) {\n\t bin = bins[i] = [];\n\t bin.x0 = i > 0 ? tz[i - 1] : x0;\n\t bin.x1 = i < m ? tz[i] : x1;\n\t }\n\t\n\t // Assign data to bins by value, ignoring any outside the domain.\n\t for (i = 0; i < n; ++i) {\n\t x = values[i];\n\t if (x0 <= x && x <= x1) {\n\t bins[bisectRight(tz, x, 0, m)].push(data[i]);\n\t }\n\t }\n\t\n\t return bins;\n\t }\n\t\n\t histogram.value = function(_) {\n\t return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n\t };\n\t\n\t histogram.domain = function(_) {\n\t return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n\t };\n\t\n\t histogram.thresholds = function(_) {\n\t return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n\t };\n\t\n\t return histogram;\n\t }\n\t\n\t function quantile(array, p, f) {\n\t if (f == null) f = number;\n\t if (!(n = array.length)) return;\n\t if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n\t if (p >= 1) return +f(array[n - 1], n - 1, array);\n\t var n,\n\t h = (n - 1) * p,\n\t i = Math.floor(h),\n\t a = +f(array[i], i, array),\n\t b = +f(array[i + 1], i + 1, array);\n\t return a + (b - a) * (h - i);\n\t }\n\t\n\t function freedmanDiaconis(values, min, max) {\n\t values = map.call(values, number).sort(ascending);\n\t return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n\t }\n\t\n\t function scott(values, min, max) {\n\t return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n\t }\n\t\n\t function max(array, f) {\n\t var i = -1,\n\t n = array.length,\n\t a,\n\t b;\n\t\n\t if (f == null) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n\t }\n\t\n\t else {\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n\t }\n\t\n\t return a;\n\t }\n\t\n\t function mean(array, f) {\n\t var s = 0,\n\t n = array.length,\n\t a,\n\t i = -1,\n\t j = n;\n\t\n\t if (f == null) {\n\t while (++i < n) if (!isNaN(a = number(array[i]))) s += a; else --j;\n\t }\n\t\n\t else {\n\t while (++i < n) if (!isNaN(a = number(f(array[i], i, array)))) s += a; else --j;\n\t }\n\t\n\t if (j) return s / j;\n\t }\n\t\n\t function median(array, f) {\n\t var numbers = [],\n\t n = array.length,\n\t a,\n\t i = -1;\n\t\n\t if (f == null) {\n\t while (++i < n) if (!isNaN(a = number(array[i]))) numbers.push(a);\n\t }\n\t\n\t else {\n\t while (++i < n) if (!isNaN(a = number(f(array[i], i, array)))) numbers.push(a);\n\t }\n\t\n\t return quantile(numbers.sort(ascending), 0.5);\n\t }\n\t\n\t function merge(arrays) {\n\t var n = arrays.length,\n\t m,\n\t i = -1,\n\t j = 0,\n\t merged,\n\t array;\n\t\n\t while (++i < n) j += arrays[i].length;\n\t merged = new Array(j);\n\t\n\t while (--n >= 0) {\n\t array = arrays[n];\n\t m = array.length;\n\t while (--m >= 0) {\n\t merged[--j] = array[m];\n\t }\n\t }\n\t\n\t return merged;\n\t }\n\t\n\t function min(array, f) {\n\t var i = -1,\n\t n = array.length,\n\t a,\n\t b;\n\t\n\t if (f == null) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n\t }\n\t\n\t else {\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n\t }\n\t\n\t return a;\n\t }\n\t\n\t function pairs(array) {\n\t var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n\t while (i < n) pairs[i] = [p, p = array[++i]];\n\t return pairs;\n\t }\n\t\n\t function permute(array, indexes) {\n\t var i = indexes.length, permutes = new Array(i);\n\t while (i--) permutes[i] = array[indexes[i]];\n\t return permutes;\n\t }\n\t\n\t function scan(array, compare) {\n\t if (!(n = array.length)) return;\n\t var i = 0,\n\t n,\n\t j = 0,\n\t xi,\n\t xj = array[j];\n\t\n\t if (!compare) compare = ascending;\n\t\n\t while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\t\n\t if (compare(xj, xj) === 0) return j;\n\t }\n\t\n\t function shuffle(array, i0, i1) {\n\t var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n\t t,\n\t i;\n\t\n\t while (m) {\n\t i = Math.random() * m-- | 0;\n\t t = array[m + i0];\n\t array[m + i0] = array[i + i0];\n\t array[i + i0] = t;\n\t }\n\t\n\t return array;\n\t }\n\t\n\t function sum(array, f) {\n\t var s = 0,\n\t n = array.length,\n\t a,\n\t i = -1;\n\t\n\t if (f == null) {\n\t while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n\t }\n\t\n\t else {\n\t while (++i < n) if (a = +f(array[i], i, array)) s += a;\n\t }\n\t\n\t return s;\n\t }\n\t\n\t function transpose(matrix) {\n\t if (!(n = matrix.length)) return [];\n\t for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n\t for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n\t row[j] = matrix[j][i];\n\t }\n\t }\n\t return transpose;\n\t }\n\t\n\t function length(d) {\n\t return d.length;\n\t }\n\t\n\t function zip() {\n\t return transpose(arguments);\n\t }\n\t\n\t exports.bisect = bisectRight;\n\t exports.bisectRight = bisectRight;\n\t exports.bisectLeft = bisectLeft;\n\t exports.ascending = ascending;\n\t exports.bisector = bisector;\n\t exports.descending = descending;\n\t exports.deviation = deviation;\n\t exports.extent = extent;\n\t exports.histogram = histogram;\n\t exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n\t exports.thresholdScott = scott;\n\t exports.thresholdSturges = sturges;\n\t exports.max = max;\n\t exports.mean = mean;\n\t exports.median = median;\n\t exports.merge = merge;\n\t exports.min = min;\n\t exports.pairs = pairs;\n\t exports.permute = permute;\n\t exports.quantile = quantile;\n\t exports.range = range;\n\t exports.scan = scan;\n\t exports.shuffle = shuffle;\n\t exports.sum = sum;\n\t exports.ticks = ticks;\n\t exports.tickStep = tickStep;\n\t exports.transpose = transpose;\n\t exports.variance = variance;\n\t exports.zip = zip;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 150 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-collection/ Version 1.0.1. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3 = global.d3 || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t var prefix = \"$\";\n\t\n\t function Map() {}\n\t\n\t Map.prototype = map.prototype = {\n\t constructor: Map,\n\t has: function(key) {\n\t return (prefix + key) in this;\n\t },\n\t get: function(key) {\n\t return this[prefix + key];\n\t },\n\t set: function(key, value) {\n\t this[prefix + key] = value;\n\t return this;\n\t },\n\t remove: function(key) {\n\t var property = prefix + key;\n\t return property in this && delete this[property];\n\t },\n\t clear: function() {\n\t for (var property in this) if (property[0] === prefix) delete this[property];\n\t },\n\t keys: function() {\n\t var keys = [];\n\t for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n\t return keys;\n\t },\n\t values: function() {\n\t var values = [];\n\t for (var property in this) if (property[0] === prefix) values.push(this[property]);\n\t return values;\n\t },\n\t entries: function() {\n\t var entries = [];\n\t for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n\t return entries;\n\t },\n\t size: function() {\n\t var size = 0;\n\t for (var property in this) if (property[0] === prefix) ++size;\n\t return size;\n\t },\n\t empty: function() {\n\t for (var property in this) if (property[0] === prefix) return false;\n\t return true;\n\t },\n\t each: function(f) {\n\t for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n\t }\n\t };\n\t\n\t function map(object, f) {\n\t var map = new Map;\n\t\n\t // Copy constructor.\n\t if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\t\n\t // Index array by numeric index or specified key function.\n\t else if (Array.isArray(object)) {\n\t var i = -1,\n\t n = object.length,\n\t o;\n\t\n\t if (f == null) while (++i < n) map.set(i, object[i]);\n\t else while (++i < n) map.set(f(o = object[i], i, object), o);\n\t }\n\t\n\t // Convert object to map.\n\t else if (object) for (var key in object) map.set(key, object[key]);\n\t\n\t return map;\n\t }\n\t\n\t function nest() {\n\t var keys = [],\n\t sortKeys = [],\n\t sortValues,\n\t rollup,\n\t nest;\n\t\n\t function apply(array, depth, createResult, setResult) {\n\t if (depth >= keys.length) return rollup != null\n\t ? rollup(array) : (sortValues != null\n\t ? array.sort(sortValues)\n\t : array);\n\t\n\t var i = -1,\n\t n = array.length,\n\t key = keys[depth++],\n\t keyValue,\n\t value,\n\t valuesByKey = map(),\n\t values,\n\t result = createResult();\n\t\n\t while (++i < n) {\n\t if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n\t values.push(value);\n\t } else {\n\t valuesByKey.set(keyValue, [value]);\n\t }\n\t }\n\t\n\t valuesByKey.each(function(values, key) {\n\t setResult(result, key, apply(values, depth, createResult, setResult));\n\t });\n\t\n\t return result;\n\t }\n\t\n\t function entries(map, depth) {\n\t if (++depth > keys.length) return map;\n\t var array, sortKey = sortKeys[depth - 1];\n\t if (rollup != null && depth >= keys.length) array = map.entries();\n\t else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n\t return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n\t }\n\t\n\t return nest = {\n\t object: function(array) { return apply(array, 0, createObject, setObject); },\n\t map: function(array) { return apply(array, 0, createMap, setMap); },\n\t entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n\t key: function(d) { keys.push(d); return nest; },\n\t sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n\t sortValues: function(order) { sortValues = order; return nest; },\n\t rollup: function(f) { rollup = f; return nest; }\n\t };\n\t }\n\t\n\t function createObject() {\n\t return {};\n\t }\n\t\n\t function setObject(object, key, value) {\n\t object[key] = value;\n\t }\n\t\n\t function createMap() {\n\t return map();\n\t }\n\t\n\t function setMap(map, key, value) {\n\t map.set(key, value);\n\t }\n\t\n\t function Set() {}\n\t\n\t var proto = map.prototype;\n\t\n\t Set.prototype = set.prototype = {\n\t constructor: Set,\n\t has: proto.has,\n\t add: function(value) {\n\t value += \"\";\n\t this[prefix + value] = value;\n\t return this;\n\t },\n\t remove: proto.remove,\n\t clear: proto.clear,\n\t values: proto.keys,\n\t size: proto.size,\n\t empty: proto.empty,\n\t each: proto.each\n\t };\n\t\n\t function set(object, f) {\n\t var set = new Set;\n\t\n\t // Copy constructor.\n\t if (object instanceof Set) object.each(function(value) { set.add(value); });\n\t\n\t // Otherwise, assume it’s an array.\n\t else if (object) {\n\t var i = -1, n = object.length;\n\t if (f == null) while (++i < n) set.add(object[i]);\n\t else while (++i < n) set.add(f(object[i], i, object));\n\t }\n\t\n\t return set;\n\t }\n\t\n\t function keys(map) {\n\t var keys = [];\n\t for (var key in map) keys.push(key);\n\t return keys;\n\t }\n\t\n\t function values(map) {\n\t var values = [];\n\t for (var key in map) values.push(map[key]);\n\t return values;\n\t }\n\t\n\t function entries(map) {\n\t var entries = [];\n\t for (var key in map) entries.push({key: key, value: map[key]});\n\t return entries;\n\t }\n\t\n\t exports.nest = nest;\n\t exports.set = set;\n\t exports.map = map;\n\t exports.keys = keys;\n\t exports.values = values;\n\t exports.entries = entries;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 151 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-interpolate/ Version 1.1.1. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports, __webpack_require__(152)) :\n\t typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) :\n\t (factory((global.d3 = global.d3 || {}),global.d3));\n\t}(this, function (exports,d3Color) { 'use strict';\n\t\n\t function basis(t1, v0, v1, v2, v3) {\n\t var t2 = t1 * t1, t3 = t2 * t1;\n\t return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n\t + (4 - 6 * t2 + 3 * t3) * v1\n\t + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n\t + t3 * v3) / 6;\n\t }\n\t\n\t function basis$1(values) {\n\t var n = values.length - 1;\n\t return function(t) {\n\t var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n\t v1 = values[i],\n\t v2 = values[i + 1],\n\t v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n\t v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n\t return basis((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t }\n\t\n\t function basisClosed(values) {\n\t var n = values.length;\n\t return function(t) {\n\t var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n\t v0 = values[(i + n - 1) % n],\n\t v1 = values[i % n],\n\t v2 = values[(i + 1) % n],\n\t v3 = values[(i + 2) % n];\n\t return basis((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t }\n\t\n\t function constant(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function linear(a, d) {\n\t return function(t) {\n\t return a + t * d;\n\t };\n\t }\n\t\n\t function exponential(a, b, y) {\n\t return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n\t return Math.pow(a + t * b, y);\n\t };\n\t }\n\t\n\t function hue(a, b) {\n\t var d = b - a;\n\t return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n\t }\n\t\n\t function gamma(y) {\n\t return (y = +y) === 1 ? nogamma : function(a, b) {\n\t return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n\t };\n\t }\n\t\n\t function nogamma(a, b) {\n\t var d = b - a;\n\t return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n\t }\n\t\n\t var rgb$1 = (function rgbGamma(y) {\n\t var color = gamma(y);\n\t\n\t function rgb(start, end) {\n\t var r = color((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),\n\t g = color(start.g, end.g),\n\t b = color(start.b, end.b),\n\t opacity = color(start.opacity, end.opacity);\n\t return function(t) {\n\t start.r = r(t);\n\t start.g = g(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t rgb.gamma = rgbGamma;\n\t\n\t return rgb;\n\t })(1);\n\t\n\t function rgbSpline(spline) {\n\t return function(colors) {\n\t var n = colors.length,\n\t r = new Array(n),\n\t g = new Array(n),\n\t b = new Array(n),\n\t i, color;\n\t for (i = 0; i < n; ++i) {\n\t color = d3Color.rgb(colors[i]);\n\t r[i] = color.r || 0;\n\t g[i] = color.g || 0;\n\t b[i] = color.b || 0;\n\t }\n\t r = spline(r);\n\t g = spline(g);\n\t b = spline(b);\n\t color.opacity = 1;\n\t return function(t) {\n\t color.r = r(t);\n\t color.g = g(t);\n\t color.b = b(t);\n\t return color + \"\";\n\t };\n\t };\n\t }\n\t\n\t var rgbBasis = rgbSpline(basis$1);\n\t var rgbBasisClosed = rgbSpline(basisClosed);\n\t\n\t function array(a, b) {\n\t var nb = b ? b.length : 0,\n\t na = a ? Math.min(nb, a.length) : 0,\n\t x = new Array(nb),\n\t c = new Array(nb),\n\t i;\n\t\n\t for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n\t for (; i < nb; ++i) c[i] = b[i];\n\t\n\t return function(t) {\n\t for (i = 0; i < na; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t }\n\t\n\t function date(a, b) {\n\t var d = new Date;\n\t return a = +a, b -= a, function(t) {\n\t return d.setTime(a + b * t), d;\n\t };\n\t }\n\t\n\t function number(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return a + b * t;\n\t };\n\t }\n\t\n\t function object(a, b) {\n\t var i = {},\n\t c = {},\n\t k;\n\t\n\t if (a === null || typeof a !== \"object\") a = {};\n\t if (b === null || typeof b !== \"object\") b = {};\n\t\n\t for (k in b) {\n\t if (k in a) {\n\t i[k] = value(a[k], b[k]);\n\t } else {\n\t c[k] = b[k];\n\t }\n\t }\n\t\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t }\n\t\n\t var reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\n\t var reB = new RegExp(reA.source, \"g\");\n\t function zero(b) {\n\t return function() {\n\t return b;\n\t };\n\t }\n\t\n\t function one(b) {\n\t return function(t) {\n\t return b(t) + \"\";\n\t };\n\t }\n\t\n\t function string(a, b) {\n\t var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n\t am, // current match in a\n\t bm, // current match in b\n\t bs, // string preceding current number in b, if any\n\t i = -1, // index in s\n\t s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t\n\t // Coerce inputs to strings.\n\t a = a + \"\", b = b + \"\";\n\t\n\t // Interpolate pairs of numbers in a & b.\n\t while ((am = reA.exec(a))\n\t && (bm = reB.exec(b))) {\n\t if ((bs = bm.index) > bi) { // a string precedes the next number in b\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n\t if (s[i]) s[i] += bm; // coalesce with previous string\n\t else s[++i] = bm;\n\t } else { // interpolate non-matching numbers\n\t s[++i] = null;\n\t q.push({i: i, x: number(am, bm)});\n\t }\n\t bi = reB.lastIndex;\n\t }\n\t\n\t // Add remains of b.\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t\n\t // Special optimization for only a single match.\n\t // Otherwise, interpolate each of the numbers and rejoin the string.\n\t return s.length < 2 ? (q[0]\n\t ? one(q[0].x)\n\t : zero(b))\n\t : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t }\n\t\n\t function value(a, b) {\n\t var t = typeof b, c;\n\t return b == null || t === \"boolean\" ? constant(b)\n\t : (t === \"number\" ? number\n\t : t === \"string\" ? ((c = d3Color.color(b)) ? (b = c, rgb$1) : string)\n\t : b instanceof d3Color.color ? rgb$1\n\t : b instanceof Date ? date\n\t : Array.isArray(b) ? array\n\t : isNaN(b) ? object\n\t : number)(a, b);\n\t }\n\t\n\t function round(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t }\n\t\n\t var degrees = 180 / Math.PI;\n\t\n\t var identity = {\n\t translateX: 0,\n\t translateY: 0,\n\t rotate: 0,\n\t skewX: 0,\n\t scaleX: 1,\n\t scaleY: 1\n\t };\n\t\n\t function decompose(a, b, c, d, e, f) {\n\t var scaleX, scaleY, skewX;\n\t if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n\t if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n\t if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n\t if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n\t return {\n\t translateX: e,\n\t translateY: f,\n\t rotate: Math.atan2(b, a) * degrees,\n\t skewX: Math.atan(skewX) * degrees,\n\t scaleX: scaleX,\n\t scaleY: scaleY\n\t };\n\t }\n\t\n\t var cssNode;\n\t var cssRoot;\n\t var cssView;\n\t var svgNode;\n\t function parseCss(value) {\n\t if (value === \"none\") return identity;\n\t if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n\t cssNode.style.transform = value;\n\t value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n\t cssRoot.removeChild(cssNode);\n\t value = value.slice(7, -1).split(\",\");\n\t return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n\t }\n\t\n\t function parseSvg(value) {\n\t if (value == null) return identity;\n\t if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n\t svgNode.setAttribute(\"transform\", value);\n\t if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n\t value = value.matrix;\n\t return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n\t }\n\t\n\t function interpolateTransform(parse, pxComma, pxParen, degParen) {\n\t\n\t function pop(s) {\n\t return s.length ? s.pop() + \" \" : \"\";\n\t }\n\t\n\t function translate(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n\t q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n\t } else if (xb || yb) {\n\t s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n\t }\n\t }\n\t\n\t function rotate(a, b, s, q) {\n\t if (a !== b) {\n\t if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n\t q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"rotate(\" + b + degParen);\n\t }\n\t }\n\t\n\t function skewX(a, b, s, q) {\n\t if (a !== b) {\n\t q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"skewX(\" + b + degParen);\n\t }\n\t }\n\t\n\t function scale(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n\t } else if (xb !== 1 || yb !== 1) {\n\t s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n\t }\n\t }\n\t\n\t return function(a, b) {\n\t var s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t a = parse(a), b = parse(b);\n\t translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n\t rotate(a.rotate, b.rotate, s, q);\n\t skewX(a.skewX, b.skewX, s, q);\n\t scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n\t a = b = null; // gc\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t };\n\t }\n\t\n\t var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\n\t var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\t\n\t var rho = Math.SQRT2;\n\t var rho2 = 2;\n\t var rho4 = 4;\n\t var epsilon2 = 1e-12;\n\t function cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t }\n\t\n\t function sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t }\n\t\n\t function tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t }\n\t\n\t // p0 = [ux0, uy0, w0]\n\t // p1 = [ux1, uy1, w1]\n\t function zoom(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n\t ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n\t dx = ux1 - ux0,\n\t dy = uy1 - uy0,\n\t d2 = dx * dx + dy * dy,\n\t i,\n\t S;\n\t\n\t // Special case for u0 ≅ u1.\n\t if (d2 < epsilon2) {\n\t S = Math.log(w1 / w0) / rho;\n\t i = function(t) {\n\t return [\n\t ux0 + t * dx,\n\t uy0 + t * dy,\n\t w0 * Math.exp(rho * t * S)\n\t ];\n\t }\n\t }\n\t\n\t // General case.\n\t else {\n\t var d1 = Math.sqrt(d2),\n\t b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n\t b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n\t r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n\t r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / rho;\n\t i = function(t) {\n\t var s = t * S,\n\t coshr0 = cosh(r0),\n\t u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n\t return [\n\t ux0 + u * dx,\n\t uy0 + u * dy,\n\t w0 * coshr0 / cosh(rho * s + r0)\n\t ];\n\t }\n\t }\n\t\n\t i.duration = S * 1000;\n\t\n\t return i;\n\t }\n\t\n\t function hsl$1(hue) {\n\t return function(start, end) {\n\t var h = hue((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t }\n\t\n\t var hsl$2 = hsl$1(hue);\n\t var hslLong = hsl$1(nogamma);\n\t\n\t function lab$1(start, end) {\n\t var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),\n\t a = nogamma(start.a, end.a),\n\t b = nogamma(start.b, end.b),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.l = l(t);\n\t start.a = a(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t function hcl$1(hue) {\n\t return function(start, end) {\n\t var h = hue((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),\n\t c = nogamma(start.c, end.c),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.c = c(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t }\n\t\n\t var hcl$2 = hcl$1(hue);\n\t var hclLong = hcl$1(nogamma);\n\t\n\t function cubehelix$1(hue) {\n\t return (function cubehelixGamma(y) {\n\t y = +y;\n\t\n\t function cubehelix(start, end) {\n\t var h = hue((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(Math.pow(t, y));\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t cubehelix.gamma = cubehelixGamma;\n\t\n\t return cubehelix;\n\t })(1);\n\t }\n\t\n\t var cubehelix$2 = cubehelix$1(hue);\n\t var cubehelixLong = cubehelix$1(nogamma);\n\t\n\t function quantize(interpolator, n) {\n\t var samples = new Array(n);\n\t for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n\t return samples;\n\t }\n\t\n\t exports.interpolate = value;\n\t exports.interpolateArray = array;\n\t exports.interpolateBasis = basis$1;\n\t exports.interpolateBasisClosed = basisClosed;\n\t exports.interpolateDate = date;\n\t exports.interpolateNumber = number;\n\t exports.interpolateObject = object;\n\t exports.interpolateRound = round;\n\t exports.interpolateString = string;\n\t exports.interpolateTransformCss = interpolateTransformCss;\n\t exports.interpolateTransformSvg = interpolateTransformSvg;\n\t exports.interpolateZoom = zoom;\n\t exports.interpolateRgb = rgb$1;\n\t exports.interpolateRgbBasis = rgbBasis;\n\t exports.interpolateRgbBasisClosed = rgbBasisClosed;\n\t exports.interpolateHsl = hsl$2;\n\t exports.interpolateHslLong = hslLong;\n\t exports.interpolateLab = lab$1;\n\t exports.interpolateHcl = hcl$2;\n\t exports.interpolateHclLong = hclLong;\n\t exports.interpolateCubehelix = cubehelix$2;\n\t exports.interpolateCubehelixLong = cubehelixLong;\n\t exports.quantize = quantize;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 152 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-color/ Version 1.0.1. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3 = global.d3 || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t function define(constructor, factory, prototype) {\n\t constructor.prototype = factory.prototype = prototype;\n\t prototype.constructor = constructor;\n\t }\n\t\n\t function extend(parent, definition) {\n\t var prototype = Object.create(parent.prototype);\n\t for (var key in definition) prototype[key] = definition[key];\n\t return prototype;\n\t }\n\t\n\t function Color() {}\n\t\n\t var darker = 0.7;\n\t var brighter = 1 / darker;\n\t\n\t var reHex3 = /^#([0-9a-f]{3})$/;\n\t var reHex6 = /^#([0-9a-f]{6})$/;\n\t var reRgbInteger = /^rgb\\(\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*\\)$/;\n\t var reRgbPercent = /^rgb\\(\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n\t var reRgbaInteger = /^rgba\\(\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\t var reRgbaPercent = /^rgba\\(\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\t var reHslPercent = /^hsl\\(\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n\t var reHslaPercent = /^hsla\\(\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\t var named = {\n\t aliceblue: 0xf0f8ff,\n\t antiquewhite: 0xfaebd7,\n\t aqua: 0x00ffff,\n\t aquamarine: 0x7fffd4,\n\t azure: 0xf0ffff,\n\t beige: 0xf5f5dc,\n\t bisque: 0xffe4c4,\n\t black: 0x000000,\n\t blanchedalmond: 0xffebcd,\n\t blue: 0x0000ff,\n\t blueviolet: 0x8a2be2,\n\t brown: 0xa52a2a,\n\t burlywood: 0xdeb887,\n\t cadetblue: 0x5f9ea0,\n\t chartreuse: 0x7fff00,\n\t chocolate: 0xd2691e,\n\t coral: 0xff7f50,\n\t cornflowerblue: 0x6495ed,\n\t cornsilk: 0xfff8dc,\n\t crimson: 0xdc143c,\n\t cyan: 0x00ffff,\n\t darkblue: 0x00008b,\n\t darkcyan: 0x008b8b,\n\t darkgoldenrod: 0xb8860b,\n\t darkgray: 0xa9a9a9,\n\t darkgreen: 0x006400,\n\t darkgrey: 0xa9a9a9,\n\t darkkhaki: 0xbdb76b,\n\t darkmagenta: 0x8b008b,\n\t darkolivegreen: 0x556b2f,\n\t darkorange: 0xff8c00,\n\t darkorchid: 0x9932cc,\n\t darkred: 0x8b0000,\n\t darksalmon: 0xe9967a,\n\t darkseagreen: 0x8fbc8f,\n\t darkslateblue: 0x483d8b,\n\t darkslategray: 0x2f4f4f,\n\t darkslategrey: 0x2f4f4f,\n\t darkturquoise: 0x00ced1,\n\t darkviolet: 0x9400d3,\n\t deeppink: 0xff1493,\n\t deepskyblue: 0x00bfff,\n\t dimgray: 0x696969,\n\t dimgrey: 0x696969,\n\t dodgerblue: 0x1e90ff,\n\t firebrick: 0xb22222,\n\t floralwhite: 0xfffaf0,\n\t forestgreen: 0x228b22,\n\t fuchsia: 0xff00ff,\n\t gainsboro: 0xdcdcdc,\n\t ghostwhite: 0xf8f8ff,\n\t gold: 0xffd700,\n\t goldenrod: 0xdaa520,\n\t gray: 0x808080,\n\t green: 0x008000,\n\t greenyellow: 0xadff2f,\n\t grey: 0x808080,\n\t honeydew: 0xf0fff0,\n\t hotpink: 0xff69b4,\n\t indianred: 0xcd5c5c,\n\t indigo: 0x4b0082,\n\t ivory: 0xfffff0,\n\t khaki: 0xf0e68c,\n\t lavender: 0xe6e6fa,\n\t lavenderblush: 0xfff0f5,\n\t lawngreen: 0x7cfc00,\n\t lemonchiffon: 0xfffacd,\n\t lightblue: 0xadd8e6,\n\t lightcoral: 0xf08080,\n\t lightcyan: 0xe0ffff,\n\t lightgoldenrodyellow: 0xfafad2,\n\t lightgray: 0xd3d3d3,\n\t lightgreen: 0x90ee90,\n\t lightgrey: 0xd3d3d3,\n\t lightpink: 0xffb6c1,\n\t lightsalmon: 0xffa07a,\n\t lightseagreen: 0x20b2aa,\n\t lightskyblue: 0x87cefa,\n\t lightslategray: 0x778899,\n\t lightslategrey: 0x778899,\n\t lightsteelblue: 0xb0c4de,\n\t lightyellow: 0xffffe0,\n\t lime: 0x00ff00,\n\t limegreen: 0x32cd32,\n\t linen: 0xfaf0e6,\n\t magenta: 0xff00ff,\n\t maroon: 0x800000,\n\t mediumaquamarine: 0x66cdaa,\n\t mediumblue: 0x0000cd,\n\t mediumorchid: 0xba55d3,\n\t mediumpurple: 0x9370db,\n\t mediumseagreen: 0x3cb371,\n\t mediumslateblue: 0x7b68ee,\n\t mediumspringgreen: 0x00fa9a,\n\t mediumturquoise: 0x48d1cc,\n\t mediumvioletred: 0xc71585,\n\t midnightblue: 0x191970,\n\t mintcream: 0xf5fffa,\n\t mistyrose: 0xffe4e1,\n\t moccasin: 0xffe4b5,\n\t navajowhite: 0xffdead,\n\t navy: 0x000080,\n\t oldlace: 0xfdf5e6,\n\t olive: 0x808000,\n\t olivedrab: 0x6b8e23,\n\t orange: 0xffa500,\n\t orangered: 0xff4500,\n\t orchid: 0xda70d6,\n\t palegoldenrod: 0xeee8aa,\n\t palegreen: 0x98fb98,\n\t paleturquoise: 0xafeeee,\n\t palevioletred: 0xdb7093,\n\t papayawhip: 0xffefd5,\n\t peachpuff: 0xffdab9,\n\t peru: 0xcd853f,\n\t pink: 0xffc0cb,\n\t plum: 0xdda0dd,\n\t powderblue: 0xb0e0e6,\n\t purple: 0x800080,\n\t rebeccapurple: 0x663399,\n\t red: 0xff0000,\n\t rosybrown: 0xbc8f8f,\n\t royalblue: 0x4169e1,\n\t saddlebrown: 0x8b4513,\n\t salmon: 0xfa8072,\n\t sandybrown: 0xf4a460,\n\t seagreen: 0x2e8b57,\n\t seashell: 0xfff5ee,\n\t sienna: 0xa0522d,\n\t silver: 0xc0c0c0,\n\t skyblue: 0x87ceeb,\n\t slateblue: 0x6a5acd,\n\t slategray: 0x708090,\n\t slategrey: 0x708090,\n\t snow: 0xfffafa,\n\t springgreen: 0x00ff7f,\n\t steelblue: 0x4682b4,\n\t tan: 0xd2b48c,\n\t teal: 0x008080,\n\t thistle: 0xd8bfd8,\n\t tomato: 0xff6347,\n\t turquoise: 0x40e0d0,\n\t violet: 0xee82ee,\n\t wheat: 0xf5deb3,\n\t white: 0xffffff,\n\t whitesmoke: 0xf5f5f5,\n\t yellow: 0xffff00,\n\t yellowgreen: 0x9acd32\n\t };\n\t\n\t define(Color, color, {\n\t displayable: function() {\n\t return this.rgb().displayable();\n\t },\n\t toString: function() {\n\t return this.rgb() + \"\";\n\t }\n\t });\n\t\n\t function color(format) {\n\t var m;\n\t format = (format + \"\").trim().toLowerCase();\n\t return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n\t : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n\t : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n\t : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n\t : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n\t : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n\t : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n\t : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n\t : named.hasOwnProperty(format) ? rgbn(named[format])\n\t : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n\t : null;\n\t }\n\t\n\t function rgbn(n) {\n\t return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n\t }\n\t\n\t function rgba(r, g, b, a) {\n\t if (a <= 0) r = g = b = NaN;\n\t return new Rgb(r, g, b, a);\n\t }\n\t\n\t function rgbConvert(o) {\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Rgb;\n\t o = o.rgb();\n\t return new Rgb(o.r, o.g, o.b, o.opacity);\n\t }\n\t\n\t function rgb(r, g, b, opacity) {\n\t return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Rgb(r, g, b, opacity) {\n\t this.r = +r;\n\t this.g = +g;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Rgb, rgb, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t rgb: function() {\n\t return this;\n\t },\n\t displayable: function() {\n\t return (0 <= this.r && this.r <= 255)\n\t && (0 <= this.g && this.g <= 255)\n\t && (0 <= this.b && this.b <= 255)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t },\n\t toString: function() {\n\t var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n\t return (a === 1 ? \"rgb(\" : \"rgba(\")\n\t + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n\t + (a === 1 ? \")\" : \", \" + a + \")\");\n\t }\n\t }));\n\t\n\t function hsla(h, s, l, a) {\n\t if (a <= 0) h = s = l = NaN;\n\t else if (l <= 0 || l >= 1) h = s = NaN;\n\t else if (s <= 0) h = NaN;\n\t return new Hsl(h, s, l, a);\n\t }\n\t\n\t function hslConvert(o) {\n\t if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Hsl;\n\t if (o instanceof Hsl) return o;\n\t o = o.rgb();\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t min = Math.min(r, g, b),\n\t max = Math.max(r, g, b),\n\t h = NaN,\n\t s = max - min,\n\t l = (max + min) / 2;\n\t if (s) {\n\t if (r === max) h = (g - b) / s + (g < b) * 6;\n\t else if (g === max) h = (b - r) / s + 2;\n\t else h = (r - g) / s + 4;\n\t s /= l < 0.5 ? max + min : 2 - max - min;\n\t h *= 60;\n\t } else {\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new Hsl(h, s, l, o.opacity);\n\t }\n\t\n\t function hsl(h, s, l, opacity) {\n\t return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Hsl(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Hsl, hsl, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = this.h % 360 + (this.h < 0) * 360,\n\t s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n\t l = this.l,\n\t m2 = l + (l < 0.5 ? l : 1 - l) * s,\n\t m1 = 2 * l - m2;\n\t return new Rgb(\n\t hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n\t hsl2rgb(h, m1, m2),\n\t hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n\t this.opacity\n\t );\n\t },\n\t displayable: function() {\n\t return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n\t && (0 <= this.l && this.l <= 1)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t }\n\t }));\n\t\n\t /* From FvD 13.37, CSS Color Module Level 3 */\n\t function hsl2rgb(h, m1, m2) {\n\t return (h < 60 ? m1 + (m2 - m1) * h / 60\n\t : h < 180 ? m2\n\t : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n\t : m1) * 255;\n\t }\n\t\n\t var deg2rad = Math.PI / 180;\n\t var rad2deg = 180 / Math.PI;\n\t\n\t var Kn = 18;\n\t var Xn = 0.950470;\n\t var Yn = 1;\n\t var Zn = 1.088830;\n\t var t0 = 4 / 29;\n\t var t1 = 6 / 29;\n\t var t2 = 3 * t1 * t1;\n\t var t3 = t1 * t1 * t1;\n\t function labConvert(o) {\n\t if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n\t if (o instanceof Hcl) {\n\t var h = o.h * deg2rad;\n\t return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n\t }\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var b = rgb2xyz(o.r),\n\t a = rgb2xyz(o.g),\n\t l = rgb2xyz(o.b),\n\t x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n\t y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n\t z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\t return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n\t }\n\t\n\t function lab(l, a, b, opacity) {\n\t return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Lab(l, a, b, opacity) {\n\t this.l = +l;\n\t this.a = +a;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Lab, lab, extend(Color, {\n\t brighter: function(k) {\n\t return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t rgb: function() {\n\t var y = (this.l + 16) / 116,\n\t x = isNaN(this.a) ? y : y + this.a / 500,\n\t z = isNaN(this.b) ? y : y - this.b / 200;\n\t y = Yn * lab2xyz(y);\n\t x = Xn * lab2xyz(x);\n\t z = Zn * lab2xyz(z);\n\t return new Rgb(\n\t xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n\t xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n\t xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n\t this.opacity\n\t );\n\t }\n\t }));\n\t\n\t function xyz2lab(t) {\n\t return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n\t }\n\t\n\t function lab2xyz(t) {\n\t return t > t1 ? t * t * t : t2 * (t - t0);\n\t }\n\t\n\t function xyz2rgb(x) {\n\t return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n\t }\n\t\n\t function rgb2xyz(x) {\n\t return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n\t }\n\t\n\t function hclConvert(o) {\n\t if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n\t if (!(o instanceof Lab)) o = labConvert(o);\n\t var h = Math.atan2(o.b, o.a) * rad2deg;\n\t return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n\t }\n\t\n\t function hcl(h, c, l, opacity) {\n\t return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Hcl(h, c, l, opacity) {\n\t this.h = +h;\n\t this.c = +c;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Hcl, hcl, extend(Color, {\n\t brighter: function(k) {\n\t return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t rgb: function() {\n\t return labConvert(this).rgb();\n\t }\n\t }));\n\t\n\t var A = -0.14861;\n\t var B = +1.78277;\n\t var C = -0.29227;\n\t var D = -0.90649;\n\t var E = +1.97294;\n\t var ED = E * D;\n\t var EB = E * B;\n\t var BC_DA = B * C - D * A;\n\t function cubehelixConvert(o) {\n\t if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n\t bl = b - l,\n\t k = (E * (g - l) - C * bl) / D,\n\t s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n\t h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n\t return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n\t }\n\t\n\t function cubehelix(h, s, l, opacity) {\n\t return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Cubehelix(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Cubehelix, cubehelix, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n\t l = +this.l,\n\t a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n\t cosh = Math.cos(h),\n\t sinh = Math.sin(h);\n\t return new Rgb(\n\t 255 * (l + a * (A * cosh + B * sinh)),\n\t 255 * (l + a * (C * cosh + D * sinh)),\n\t 255 * (l + a * (E * cosh)),\n\t this.opacity\n\t );\n\t }\n\t }));\n\t\n\t exports.color = color;\n\t exports.rgb = rgb;\n\t exports.hsl = hsl;\n\t exports.lab = lab;\n\t exports.hcl = hcl;\n\t exports.cubehelix = cubehelix;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 153 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-format/ Version 1.0.2. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3 = global.d3 || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t // Computes the decimal coefficient and exponent of the specified number x with\n\t // significant digits p, where x is positive and p is in [1, 21] or undefined.\n\t // For example, formatDecimal(1.23) returns [\"123\", 0].\n\t function formatDecimal(x, p) {\n\t if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n\t var i, coefficient = x.slice(0, i);\n\t\n\t // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n\t // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n\t return [\n\t coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n\t +x.slice(i + 1)\n\t ];\n\t }\n\t\n\t function exponent(x) {\n\t return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n\t }\n\t\n\t function formatGroup(grouping, thousands) {\n\t return function(value, width) {\n\t var i = value.length,\n\t t = [],\n\t j = 0,\n\t g = grouping[0],\n\t length = 0;\n\t\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = grouping[j = (j + 1) % grouping.length];\n\t }\n\t\n\t return t.reverse().join(thousands);\n\t };\n\t }\n\t\n\t function formatDefault(x, p) {\n\t x = x.toPrecision(p);\n\t\n\t out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n\t switch (x[i]) {\n\t case \".\": i0 = i1 = i; break;\n\t case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n\t case \"e\": break out;\n\t default: if (i0 > 0) i0 = 0; break;\n\t }\n\t }\n\t\n\t return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n\t }\n\t\n\t var prefixExponent;\n\t\n\t function formatPrefixAuto(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1],\n\t i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n\t n = coefficient.length;\n\t return i === n ? coefficient\n\t : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n\t : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n\t : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n\t }\n\t\n\t function formatRounded(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1];\n\t return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n\t : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n\t : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n\t }\n\t\n\t var formatTypes = {\n\t \"\": formatDefault,\n\t \"%\": function(x, p) { return (x * 100).toFixed(p); },\n\t \"b\": function(x) { return Math.round(x).toString(2); },\n\t \"c\": function(x) { return x + \"\"; },\n\t \"d\": function(x) { return Math.round(x).toString(10); },\n\t \"e\": function(x, p) { return x.toExponential(p); },\n\t \"f\": function(x, p) { return x.toFixed(p); },\n\t \"g\": function(x, p) { return x.toPrecision(p); },\n\t \"o\": function(x) { return Math.round(x).toString(8); },\n\t \"p\": function(x, p) { return formatRounded(x * 100, p); },\n\t \"r\": formatRounded,\n\t \"s\": formatPrefixAuto,\n\t \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n\t \"x\": function(x) { return Math.round(x).toString(16); }\n\t };\n\t\n\t // [[fill]align][sign][symbol][0][width][,][.precision][type]\n\t var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\t\n\t function formatSpecifier(specifier) {\n\t return new FormatSpecifier(specifier);\n\t }\n\t\n\t function FormatSpecifier(specifier) {\n\t if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\t\n\t var match,\n\t fill = match[1] || \" \",\n\t align = match[2] || \">\",\n\t sign = match[3] || \"-\",\n\t symbol = match[4] || \"\",\n\t zero = !!match[5],\n\t width = match[6] && +match[6],\n\t comma = !!match[7],\n\t precision = match[8] && +match[8].slice(1),\n\t type = match[9] || \"\";\n\t\n\t // The \"n\" type is an alias for \",g\".\n\t if (type === \"n\") comma = true, type = \"g\";\n\t\n\t // Map invalid types to the default format.\n\t else if (!formatTypes[type]) type = \"\";\n\t\n\t // If zero fill is specified, padding goes after sign and before digits.\n\t if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\t\n\t this.fill = fill;\n\t this.align = align;\n\t this.sign = sign;\n\t this.symbol = symbol;\n\t this.zero = zero;\n\t this.width = width;\n\t this.comma = comma;\n\t this.precision = precision;\n\t this.type = type;\n\t }\n\t\n\t FormatSpecifier.prototype.toString = function() {\n\t return this.fill\n\t + this.align\n\t + this.sign\n\t + this.symbol\n\t + (this.zero ? \"0\" : \"\")\n\t + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n\t + (this.comma ? \",\" : \"\")\n\t + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n\t + this.type;\n\t };\n\t\n\t var prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\t\n\t function identity(x) {\n\t return x;\n\t }\n\t\n\t function formatLocale(locale) {\n\t var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n\t currency = locale.currency,\n\t decimal = locale.decimal;\n\t\n\t function newFormat(specifier) {\n\t specifier = formatSpecifier(specifier);\n\t\n\t var fill = specifier.fill,\n\t align = specifier.align,\n\t sign = specifier.sign,\n\t symbol = specifier.symbol,\n\t zero = specifier.zero,\n\t width = specifier.width,\n\t comma = specifier.comma,\n\t precision = specifier.precision,\n\t type = specifier.type;\n\t\n\t // Compute the prefix and suffix.\n\t // For SI-prefix, the suffix is lazily computed.\n\t var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n\t suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? \"%\" : \"\";\n\t\n\t // What format function should we use?\n\t // Is this an integer type?\n\t // Can this type generate exponential notation?\n\t var formatType = formatTypes[type],\n\t maybeSuffix = !type || /[defgprs%]/.test(type);\n\t\n\t // Set the default precision if not specified,\n\t // or clamp the specified precision to the supported range.\n\t // For significant precision, it must be in [1, 21].\n\t // For fixed precision, it must be in [0, 20].\n\t precision = precision == null ? (type ? 6 : 12)\n\t : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n\t : Math.max(0, Math.min(20, precision));\n\t\n\t function format(value) {\n\t var valuePrefix = prefix,\n\t valueSuffix = suffix,\n\t i, n, c;\n\t\n\t if (type === \"c\") {\n\t valueSuffix = formatType(value) + valueSuffix;\n\t value = \"\";\n\t } else {\n\t value = +value;\n\t\n\t // Convert negative to positive, and compute the prefix.\n\t // Note that -0 is not less than 0, but 1 / -0 is!\n\t var valueNegative = (value < 0 || 1 / value < 0) && (value *= -1, true);\n\t\n\t // Perform the initial formatting.\n\t value = formatType(value, precision);\n\t\n\t // If the original value was negative, it may be rounded to zero during\n\t // formatting; treat this as (positive) zero.\n\t if (valueNegative) {\n\t i = -1, n = value.length;\n\t valueNegative = false;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), (48 < c && c < 58)\n\t || (type === \"x\" && 96 < c && c < 103)\n\t || (type === \"X\" && 64 < c && c < 71)) {\n\t valueNegative = true;\n\t break;\n\t }\n\t }\n\t }\n\t\n\t // Compute the prefix and suffix.\n\t valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\t valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\t\n\t // Break the formatted value into the integer “value” part that can be\n\t // grouped, and fractional or exponential “suffix” part that is not.\n\t if (maybeSuffix) {\n\t i = -1, n = value.length;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), 48 > c || c > 57) {\n\t valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n\t value = value.slice(0, i);\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // If the fill character is not \"0\", grouping is applied before padding.\n\t if (comma && !zero) value = group(value, Infinity);\n\t\n\t // Compute the padding.\n\t var length = valuePrefix.length + value.length + valueSuffix.length,\n\t padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\t\n\t // If the fill character is \"0\", grouping is applied after padding.\n\t if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\t\n\t // Reconstruct the final output based on the desired alignment.\n\t switch (align) {\n\t case \"<\": return valuePrefix + value + valueSuffix + padding;\n\t case \"=\": return valuePrefix + padding + value + valueSuffix;\n\t case \"^\": return padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n\t }\n\t return padding + valuePrefix + value + valueSuffix;\n\t }\n\t\n\t format.toString = function() {\n\t return specifier + \"\";\n\t };\n\t\n\t return format;\n\t }\n\t\n\t function formatPrefix(specifier, value) {\n\t var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n\t e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n\t k = Math.pow(10, -e),\n\t prefix = prefixes[8 + e / 3];\n\t return function(value) {\n\t return f(k * value) + prefix;\n\t };\n\t }\n\t\n\t return {\n\t format: newFormat,\n\t formatPrefix: formatPrefix\n\t };\n\t }\n\t\n\t var locale;\n\t defaultLocale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t });\n\t\n\t function defaultLocale(definition) {\n\t locale = formatLocale(definition);\n\t exports.format = locale.format;\n\t exports.formatPrefix = locale.formatPrefix;\n\t return locale;\n\t }\n\t\n\t function precisionFixed(step) {\n\t return Math.max(0, -exponent(Math.abs(step)));\n\t }\n\t\n\t function precisionPrefix(step, value) {\n\t return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n\t }\n\t\n\t function precisionRound(step, max) {\n\t step = Math.abs(step), max = Math.abs(max) - step;\n\t return Math.max(0, exponent(max) - exponent(step)) + 1;\n\t }\n\t\n\t exports.formatDefaultLocale = defaultLocale;\n\t exports.formatLocale = formatLocale;\n\t exports.formatSpecifier = formatSpecifier;\n\t exports.precisionFixed = precisionFixed;\n\t exports.precisionPrefix = precisionPrefix;\n\t exports.precisionRound = precisionRound;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 154 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-time/ Version 1.0.2. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3 = global.d3 || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t var t0 = new Date;\n\t var t1 = new Date;\n\t function newInterval(floori, offseti, count, field) {\n\t\n\t function interval(date) {\n\t return floori(date = new Date(+date)), date;\n\t }\n\t\n\t interval.floor = interval;\n\t\n\t interval.ceil = function(date) {\n\t return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n\t };\n\t\n\t interval.round = function(date) {\n\t var d0 = interval(date),\n\t d1 = interval.ceil(date);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t };\n\t\n\t interval.offset = function(date, step) {\n\t return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n\t };\n\t\n\t interval.range = function(start, stop, step) {\n\t var range = [];\n\t start = interval.ceil(start);\n\t step = step == null ? 1 : Math.floor(step);\n\t if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n\t do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t while (--step >= 0) while (offseti(date, 1), !test(date));\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0.setTime(+start), t1.setTime(+end);\n\t floori(t0), floori(t1);\n\t return Math.floor(count(t0, t1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t }\n\t\n\t var millisecond = newInterval(function() {\n\t // noop\n\t }, function(date, step) {\n\t date.setTime(+date + step);\n\t }, function(start, end) {\n\t return end - start;\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t millisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t };\n\t\n\t var milliseconds = millisecond.range;\n\t\n\t var durationSecond = 1e3;\n\t var durationMinute = 6e4;\n\t var durationHour = 36e5;\n\t var durationDay = 864e5;\n\t var durationWeek = 6048e5;\n\t\n\t var second = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationSecond) * durationSecond);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationSecond);\n\t }, function(start, end) {\n\t return (end - start) / durationSecond;\n\t }, function(date) {\n\t return date.getUTCSeconds();\n\t });\n\t\n\t var seconds = second.range;\n\t\n\t var minute = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationMinute) * durationMinute);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t }, function(start, end) {\n\t return (end - start) / durationMinute;\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t\n\t var minutes = minute.range;\n\t\n\t var hour = newInterval(function(date) {\n\t var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n\t if (offset < 0) offset += durationHour;\n\t date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t }, function(start, end) {\n\t return (end - start) / durationHour;\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t\n\t var hours = hour.range;\n\t\n\t var day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t\n\t var days = day.range;\n\t\n\t function weekday(i) {\n\t return newInterval(function(date) {\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n\t });\n\t }\n\t\n\t var sunday = weekday(0);\n\t var monday = weekday(1);\n\t var tuesday = weekday(2);\n\t var wednesday = weekday(3);\n\t var thursday = weekday(4);\n\t var friday = weekday(5);\n\t var saturday = weekday(6);\n\t\n\t var sundays = sunday.range;\n\t var mondays = monday.range;\n\t var tuesdays = tuesday.range;\n\t var wednesdays = wednesday.range;\n\t var thursdays = thursday.range;\n\t var fridays = friday.range;\n\t var saturdays = saturday.range;\n\t\n\t var month = newInterval(function(date) {\n\t date.setDate(1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t }, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t\n\t var months = month.range;\n\t\n\t var year = newInterval(function(date) {\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t }, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t year.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step * k);\n\t });\n\t };\n\t\n\t var years = year.range;\n\t\n\t var utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t }, function(start, end) {\n\t return (end - start) / durationMinute;\n\t }, function(date) {\n\t return date.getUTCMinutes();\n\t });\n\t\n\t var utcMinutes = utcMinute.range;\n\t\n\t var utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t }, function(start, end) {\n\t return (end - start) / durationHour;\n\t }, function(date) {\n\t return date.getUTCHours();\n\t });\n\t\n\t var utcHours = utcHour.range;\n\t\n\t var utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t }, function(start, end) {\n\t return (end - start) / durationDay;\n\t }, function(date) {\n\t return date.getUTCDate() - 1;\n\t });\n\t\n\t var utcDays = utcDay.range;\n\t\n\t function utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / durationWeek;\n\t });\n\t }\n\t\n\t var utcSunday = utcWeekday(0);\n\t var utcMonday = utcWeekday(1);\n\t var utcTuesday = utcWeekday(2);\n\t var utcWednesday = utcWeekday(3);\n\t var utcThursday = utcWeekday(4);\n\t var utcFriday = utcWeekday(5);\n\t var utcSaturday = utcWeekday(6);\n\t\n\t var utcSundays = utcSunday.range;\n\t var utcMondays = utcMonday.range;\n\t var utcTuesdays = utcTuesday.range;\n\t var utcWednesdays = utcWednesday.range;\n\t var utcThursdays = utcThursday.range;\n\t var utcFridays = utcFriday.range;\n\t var utcSaturdays = utcSaturday.range;\n\t\n\t var utcMonth = newInterval(function(date) {\n\t date.setUTCDate(1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t }, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t }, function(date) {\n\t return date.getUTCMonth();\n\t });\n\t\n\t var utcMonths = utcMonth.range;\n\t\n\t var utcYear = newInterval(function(date) {\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t }, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t }, function(date) {\n\t return date.getUTCFullYear();\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t utcYear.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step * k);\n\t });\n\t };\n\t\n\t var utcYears = utcYear.range;\n\t\n\t exports.timeInterval = newInterval;\n\t exports.timeMillisecond = millisecond;\n\t exports.timeMilliseconds = milliseconds;\n\t exports.utcMillisecond = millisecond;\n\t exports.utcMilliseconds = milliseconds;\n\t exports.timeSecond = second;\n\t exports.timeSeconds = seconds;\n\t exports.utcSecond = second;\n\t exports.utcSeconds = seconds;\n\t exports.timeMinute = minute;\n\t exports.timeMinutes = minutes;\n\t exports.timeHour = hour;\n\t exports.timeHours = hours;\n\t exports.timeDay = day;\n\t exports.timeDays = days;\n\t exports.timeWeek = sunday;\n\t exports.timeWeeks = sundays;\n\t exports.timeSunday = sunday;\n\t exports.timeSundays = sundays;\n\t exports.timeMonday = monday;\n\t exports.timeMondays = mondays;\n\t exports.timeTuesday = tuesday;\n\t exports.timeTuesdays = tuesdays;\n\t exports.timeWednesday = wednesday;\n\t exports.timeWednesdays = wednesdays;\n\t exports.timeThursday = thursday;\n\t exports.timeThursdays = thursdays;\n\t exports.timeFriday = friday;\n\t exports.timeFridays = fridays;\n\t exports.timeSaturday = saturday;\n\t exports.timeSaturdays = saturdays;\n\t exports.timeMonth = month;\n\t exports.timeMonths = months;\n\t exports.timeYear = year;\n\t exports.timeYears = years;\n\t exports.utcMinute = utcMinute;\n\t exports.utcMinutes = utcMinutes;\n\t exports.utcHour = utcHour;\n\t exports.utcHours = utcHours;\n\t exports.utcDay = utcDay;\n\t exports.utcDays = utcDays;\n\t exports.utcWeek = utcSunday;\n\t exports.utcWeeks = utcSundays;\n\t exports.utcSunday = utcSunday;\n\t exports.utcSundays = utcSundays;\n\t exports.utcMonday = utcMonday;\n\t exports.utcMondays = utcMondays;\n\t exports.utcTuesday = utcTuesday;\n\t exports.utcTuesdays = utcTuesdays;\n\t exports.utcWednesday = utcWednesday;\n\t exports.utcWednesdays = utcWednesdays;\n\t exports.utcThursday = utcThursday;\n\t exports.utcThursdays = utcThursdays;\n\t exports.utcFriday = utcFriday;\n\t exports.utcFridays = utcFridays;\n\t exports.utcSaturday = utcSaturday;\n\t exports.utcSaturdays = utcSaturdays;\n\t exports.utcMonth = utcMonth;\n\t exports.utcMonths = utcMonths;\n\t exports.utcYear = utcYear;\n\t exports.utcYears = utcYears;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 155 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-time-format/ Version 2.0.2. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports, __webpack_require__(154)) :\n\t typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :\n\t (factory((global.d3 = global.d3 || {}),global.d3));\n\t}(this, function (exports,d3Time) { 'use strict';\n\t\n\t function localDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n\t date.setFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n\t }\n\t\n\t function utcDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n\t date.setUTCFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n\t }\n\t\n\t function newYear(y) {\n\t return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n\t }\n\t\n\t function formatLocale(locale) {\n\t var locale_dateTime = locale.dateTime,\n\t locale_date = locale.date,\n\t locale_time = locale.time,\n\t locale_periods = locale.periods,\n\t locale_weekdays = locale.days,\n\t locale_shortWeekdays = locale.shortDays,\n\t locale_months = locale.months,\n\t locale_shortMonths = locale.shortMonths;\n\t\n\t var periodRe = formatRe(locale_periods),\n\t periodLookup = formatLookup(locale_periods),\n\t weekdayRe = formatRe(locale_weekdays),\n\t weekdayLookup = formatLookup(locale_weekdays),\n\t shortWeekdayRe = formatRe(locale_shortWeekdays),\n\t shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n\t monthRe = formatRe(locale_months),\n\t monthLookup = formatLookup(locale_months),\n\t shortMonthRe = formatRe(locale_shortMonths),\n\t shortMonthLookup = formatLookup(locale_shortMonths);\n\t\n\t var formats = {\n\t \"a\": formatShortWeekday,\n\t \"A\": formatWeekday,\n\t \"b\": formatShortMonth,\n\t \"B\": formatMonth,\n\t \"c\": null,\n\t \"d\": formatDayOfMonth,\n\t \"e\": formatDayOfMonth,\n\t \"H\": formatHour24,\n\t \"I\": formatHour12,\n\t \"j\": formatDayOfYear,\n\t \"L\": formatMilliseconds,\n\t \"m\": formatMonthNumber,\n\t \"M\": formatMinutes,\n\t \"p\": formatPeriod,\n\t \"S\": formatSeconds,\n\t \"U\": formatWeekNumberSunday,\n\t \"w\": formatWeekdayNumber,\n\t \"W\": formatWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatYear,\n\t \"Y\": formatFullYear,\n\t \"Z\": formatZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var utcFormats = {\n\t \"a\": formatUTCShortWeekday,\n\t \"A\": formatUTCWeekday,\n\t \"b\": formatUTCShortMonth,\n\t \"B\": formatUTCMonth,\n\t \"c\": null,\n\t \"d\": formatUTCDayOfMonth,\n\t \"e\": formatUTCDayOfMonth,\n\t \"H\": formatUTCHour24,\n\t \"I\": formatUTCHour12,\n\t \"j\": formatUTCDayOfYear,\n\t \"L\": formatUTCMilliseconds,\n\t \"m\": formatUTCMonthNumber,\n\t \"M\": formatUTCMinutes,\n\t \"p\": formatUTCPeriod,\n\t \"S\": formatUTCSeconds,\n\t \"U\": formatUTCWeekNumberSunday,\n\t \"w\": formatUTCWeekdayNumber,\n\t \"W\": formatUTCWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatUTCYear,\n\t \"Y\": formatUTCFullYear,\n\t \"Z\": formatUTCZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var parses = {\n\t \"a\": parseShortWeekday,\n\t \"A\": parseWeekday,\n\t \"b\": parseShortMonth,\n\t \"B\": parseMonth,\n\t \"c\": parseLocaleDateTime,\n\t \"d\": parseDayOfMonth,\n\t \"e\": parseDayOfMonth,\n\t \"H\": parseHour24,\n\t \"I\": parseHour24,\n\t \"j\": parseDayOfYear,\n\t \"L\": parseMilliseconds,\n\t \"m\": parseMonthNumber,\n\t \"M\": parseMinutes,\n\t \"p\": parsePeriod,\n\t \"S\": parseSeconds,\n\t \"U\": parseWeekNumberSunday,\n\t \"w\": parseWeekdayNumber,\n\t \"W\": parseWeekNumberMonday,\n\t \"x\": parseLocaleDate,\n\t \"X\": parseLocaleTime,\n\t \"y\": parseYear,\n\t \"Y\": parseFullYear,\n\t \"Z\": parseZone,\n\t \"%\": parseLiteralPercent\n\t };\n\t\n\t // These recursive directive definitions must be deferred.\n\t formats.x = newFormat(locale_date, formats);\n\t formats.X = newFormat(locale_time, formats);\n\t formats.c = newFormat(locale_dateTime, formats);\n\t utcFormats.x = newFormat(locale_date, utcFormats);\n\t utcFormats.X = newFormat(locale_time, utcFormats);\n\t utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\t\n\t function newFormat(specifier, formats) {\n\t return function(date) {\n\t var string = [],\n\t i = -1,\n\t j = 0,\n\t n = specifier.length,\n\t c,\n\t pad,\n\t format;\n\t\n\t if (!(date instanceof Date)) date = new Date(+date);\n\t\n\t while (++i < n) {\n\t if (specifier.charCodeAt(i) === 37) {\n\t string.push(specifier.slice(j, i));\n\t if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n\t else pad = c === \"e\" ? \" \" : \"0\";\n\t if (format = formats[c]) c = format(date, pad);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t\n\t string.push(specifier.slice(j, i));\n\t return string.join(\"\");\n\t };\n\t }\n\t\n\t function newParse(specifier, newDate) {\n\t return function(string) {\n\t var d = newYear(1900),\n\t i = parseSpecifier(d, specifier, string += \"\", 0);\n\t if (i != string.length) return null;\n\t\n\t // The am-pm flag is 0 for AM, and 1 for PM.\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t\n\t // Convert day-of-week and week-of-year to day-of-year.\n\t if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n\t d.m = 0;\n\t d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n\t }\n\t\n\t // If a time zone is specified, all fields are interpreted as UTC and then\n\t // offset according to the specified time zone.\n\t if (\"Z\" in d) {\n\t d.H += d.Z / 100 | 0;\n\t d.M += d.Z % 100;\n\t return utcDate(d);\n\t }\n\t\n\t // Otherwise, all fields are in local time.\n\t return newDate(d);\n\t };\n\t }\n\t\n\t function parseSpecifier(d, specifier, string, j) {\n\t var i = 0,\n\t n = specifier.length,\n\t m = string.length,\n\t c,\n\t parse;\n\t\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = specifier.charCodeAt(i++);\n\t if (c === 37) {\n\t c = specifier.charAt(i++);\n\t parse = parses[c in pads ? specifier.charAt(i++) : c];\n\t if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t\n\t return j;\n\t }\n\t\n\t function parsePeriod(d, string, i) {\n\t var n = periodRe.exec(string.slice(i));\n\t return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortWeekday(d, string, i) {\n\t var n = shortWeekdayRe.exec(string.slice(i));\n\t return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekday(d, string, i) {\n\t var n = weekdayRe.exec(string.slice(i));\n\t return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortMonth(d, string, i) {\n\t var n = shortMonthRe.exec(string.slice(i));\n\t return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonth(d, string, i) {\n\t var n = monthRe.exec(string.slice(i));\n\t return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLocaleDateTime(d, string, i) {\n\t return parseSpecifier(d, locale_dateTime, string, i);\n\t }\n\t\n\t function parseLocaleDate(d, string, i) {\n\t return parseSpecifier(d, locale_date, string, i);\n\t }\n\t\n\t function parseLocaleTime(d, string, i) {\n\t return parseSpecifier(d, locale_time, string, i);\n\t }\n\t\n\t function formatShortWeekday(d) {\n\t return locale_shortWeekdays[d.getDay()];\n\t }\n\t\n\t function formatWeekday(d) {\n\t return locale_weekdays[d.getDay()];\n\t }\n\t\n\t function formatShortMonth(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t }\n\t\n\t function formatMonth(d) {\n\t return locale_months[d.getMonth()];\n\t }\n\t\n\t function formatPeriod(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t }\n\t\n\t function formatUTCShortWeekday(d) {\n\t return locale_shortWeekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCWeekday(d) {\n\t return locale_weekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCShortMonth(d) {\n\t return locale_shortMonths[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCMonth(d) {\n\t return locale_months[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCPeriod(d) {\n\t return locale_periods[+(d.getUTCHours() >= 12)];\n\t }\n\t\n\t return {\n\t format: function(specifier) {\n\t var f = newFormat(specifier += \"\", formats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t parse: function(specifier) {\n\t var p = newParse(specifier += \"\", localDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t },\n\t utcFormat: function(specifier) {\n\t var f = newFormat(specifier += \"\", utcFormats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t utcParse: function(specifier) {\n\t var p = newParse(specifier, utcDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t }\n\t };\n\t }\n\t\n\t var pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n\t var numberRe = /^\\s*\\d+/;\n\t var percentRe = /^%/;\n\t var requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t function pad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\",\n\t string = (sign ? -value : value) + \"\",\n\t length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t\n\t function requote(s) {\n\t return s.replace(requoteRe, \"\\\\$&\");\n\t }\n\t\n\t function formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n\t }\n\t\n\t function formatLookup(names) {\n\t var map = {}, i = -1, n = names.length;\n\t while (++i < n) map[names[i].toLowerCase()] = i;\n\t return map;\n\t }\n\t\n\t function parseWeekdayNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 1));\n\t return n ? (d.w = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberSunday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.U = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberMonday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.W = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseFullYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 4));\n\t return n ? (d.y = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n\t }\n\t\n\t function parseZone(d, string, i) {\n\t var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n\t return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonthNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfMonth(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseHour24(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.H = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMinutes(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.M = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseSeconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.S = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMilliseconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.L = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLiteralPercent(d, string, i) {\n\t var n = percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t\n\t function formatDayOfMonth(d, p) {\n\t return pad(d.getDate(), p, 2);\n\t }\n\t\n\t function formatHour24(d, p) {\n\t return pad(d.getHours(), p, 2);\n\t }\n\t\n\t function formatHour12(d, p) {\n\t return pad(d.getHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatDayOfYear(d, p) {\n\t return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n\t }\n\t\n\t function formatMilliseconds(d, p) {\n\t return pad(d.getMilliseconds(), p, 3);\n\t }\n\t\n\t function formatMonthNumber(d, p) {\n\t return pad(d.getMonth() + 1, p, 2);\n\t }\n\t\n\t function formatMinutes(d, p) {\n\t return pad(d.getMinutes(), p, 2);\n\t }\n\t\n\t function formatSeconds(d, p) {\n\t return pad(d.getSeconds(), p, 2);\n\t }\n\t\n\t function formatWeekNumberSunday(d, p) {\n\t return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);\n\t }\n\t\n\t function formatWeekdayNumber(d) {\n\t return d.getDay();\n\t }\n\t\n\t function formatWeekNumberMonday(d, p) {\n\t return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);\n\t }\n\t\n\t function formatYear(d, p) {\n\t return pad(d.getFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatFullYear(d, p) {\n\t return pad(d.getFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatZone(d) {\n\t var z = d.getTimezoneOffset();\n\t return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n\t + pad(z / 60 | 0, \"0\", 2)\n\t + pad(z % 60, \"0\", 2);\n\t }\n\t\n\t function formatUTCDayOfMonth(d, p) {\n\t return pad(d.getUTCDate(), p, 2);\n\t }\n\t\n\t function formatUTCHour24(d, p) {\n\t return pad(d.getUTCHours(), p, 2);\n\t }\n\t\n\t function formatUTCHour12(d, p) {\n\t return pad(d.getUTCHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatUTCDayOfYear(d, p) {\n\t return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n\t }\n\t\n\t function formatUTCMilliseconds(d, p) {\n\t return pad(d.getUTCMilliseconds(), p, 3);\n\t }\n\t\n\t function formatUTCMonthNumber(d, p) {\n\t return pad(d.getUTCMonth() + 1, p, 2);\n\t }\n\t\n\t function formatUTCMinutes(d, p) {\n\t return pad(d.getUTCMinutes(), p, 2);\n\t }\n\t\n\t function formatUTCSeconds(d, p) {\n\t return pad(d.getUTCSeconds(), p, 2);\n\t }\n\t\n\t function formatUTCWeekNumberSunday(d, p) {\n\t return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCWeekdayNumber(d) {\n\t return d.getUTCDay();\n\t }\n\t\n\t function formatUTCWeekNumberMonday(d, p) {\n\t return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCYear(d, p) {\n\t return pad(d.getUTCFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatUTCFullYear(d, p) {\n\t return pad(d.getUTCFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatUTCZone() {\n\t return \"+0000\";\n\t }\n\t\n\t function formatLiteralPercent() {\n\t return \"%\";\n\t }\n\t\n\t var locale;\n\t defaultLocale({\n\t dateTime: \"%x, %X\",\n\t date: \"%-m/%-d/%Y\",\n\t time: \"%-I:%M:%S %p\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t function defaultLocale(definition) {\n\t locale = formatLocale(definition);\n\t exports.timeFormat = locale.format;\n\t exports.timeParse = locale.parse;\n\t exports.utcFormat = locale.utcFormat;\n\t exports.utcParse = locale.utcParse;\n\t return locale;\n\t }\n\t\n\t var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\t\n\t function formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t\n\t var formatIso = Date.prototype.toISOString\n\t ? formatIsoNative\n\t : exports.utcFormat(isoSpecifier);\n\t\n\t function parseIsoNative(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t }\n\t\n\t var parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n\t ? parseIsoNative\n\t : exports.utcParse(isoSpecifier);\n\t\n\t exports.timeFormatDefaultLocale = defaultLocale;\n\t exports.timeFormatLocale = formatLocale;\n\t exports.isoFormat = formatIso;\n\t exports.isoParse = parseIso;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 156 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org Version 4.2.1. Copyright 2016 Mike Bostock.\n\t(function (global, factory) {\n\t true ? factory(exports) :\n\t typeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t (factory((global.d3 = global.d3 || {})));\n\t}(this, function (exports) { 'use strict';\n\t\n\t var version = \"4.2.1\";\n\t\n\t function ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t }\n\t\n\t function bisector(compare) {\n\t if (compare.length === 1) compare = ascendingComparator(compare);\n\t return {\n\t left: function(a, x, lo, hi) {\n\t if (lo == null) lo = 0;\n\t if (hi == null) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) < 0) lo = mid + 1;\n\t else hi = mid;\n\t }\n\t return lo;\n\t },\n\t right: function(a, x, lo, hi) {\n\t if (lo == null) lo = 0;\n\t if (hi == null) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) > 0) hi = mid;\n\t else lo = mid + 1;\n\t }\n\t return lo;\n\t }\n\t };\n\t }\n\t\n\t function ascendingComparator(f) {\n\t return function(d, x) {\n\t return ascending(f(d), x);\n\t };\n\t }\n\t\n\t var ascendingBisect = bisector(ascending);\n\t var bisectRight = ascendingBisect.right;\n\t var bisectLeft = ascendingBisect.left;\n\t\n\t function descending(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t }\n\t\n\t function number(x) {\n\t return x === null ? NaN : +x;\n\t }\n\t\n\t function variance(array, f) {\n\t var n = array.length,\n\t m = 0,\n\t a,\n\t d,\n\t s = 0,\n\t i = -1,\n\t j = 0;\n\t\n\t if (f == null) {\n\t while (++i < n) {\n\t if (!isNaN(a = number(array[i]))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) {\n\t if (!isNaN(a = number(f(array[i], i, array)))) {\n\t d = a - m;\n\t m += d / ++j;\n\t s += d * (a - m);\n\t }\n\t }\n\t }\n\t\n\t if (j > 1) return s / (j - 1);\n\t }\n\t\n\t function deviation(array, f) {\n\t var v = variance(array, f);\n\t return v ? Math.sqrt(v) : v;\n\t }\n\t\n\t function extent(array, f) {\n\t var i = -1,\n\t n = array.length,\n\t a,\n\t b,\n\t c;\n\t\n\t if (f == null) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n\t while (++i < n) if ((b = array[i]) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n\t while (++i < n) if ((b = f(array[i], i, array)) != null) {\n\t if (a > b) a = b;\n\t if (c < b) c = b;\n\t }\n\t }\n\t\n\t return [a, c];\n\t }\n\t\n\t var array = Array.prototype;\n\t\n\t var slice = array.slice;\n\t var map = array.map;\n\t\n\t function constant(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function identity(x) {\n\t return x;\n\t }\n\t\n\t function range(start, stop, step) {\n\t start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\t\n\t var i = -1,\n\t n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n\t range = new Array(n);\n\t\n\t while (++i < n) {\n\t range[i] = start + i * step;\n\t }\n\t\n\t return range;\n\t }\n\t\n\t var e10 = Math.sqrt(50);\n\t var e5 = Math.sqrt(10);\n\t var e2 = Math.sqrt(2);\n\t function ticks(start, stop, count) {\n\t var step = tickStep(start, stop, count);\n\t return range(\n\t Math.ceil(start / step) * step,\n\t Math.floor(stop / step) * step + step / 2, // inclusive\n\t step\n\t );\n\t }\n\t\n\t function tickStep(start, stop, count) {\n\t var step0 = Math.abs(stop - start) / Math.max(0, count),\n\t step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n\t error = step0 / step1;\n\t if (error >= e10) step1 *= 10;\n\t else if (error >= e5) step1 *= 5;\n\t else if (error >= e2) step1 *= 2;\n\t return stop < start ? -step1 : step1;\n\t }\n\t\n\t function sturges(values) {\n\t return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n\t }\n\t\n\t function histogram() {\n\t var value = identity,\n\t domain = extent,\n\t threshold = sturges;\n\t\n\t function histogram(data) {\n\t var i,\n\t n = data.length,\n\t x,\n\t values = new Array(n);\n\t\n\t for (i = 0; i < n; ++i) {\n\t values[i] = value(data[i], i, data);\n\t }\n\t\n\t var xz = domain(values),\n\t x0 = xz[0],\n\t x1 = xz[1],\n\t tz = threshold(values, x0, x1);\n\t\n\t // Convert number of thresholds into uniform thresholds.\n\t if (!Array.isArray(tz)) tz = ticks(x0, x1, tz);\n\t\n\t // Remove any thresholds outside the domain.\n\t var m = tz.length;\n\t while (tz[0] <= x0) tz.shift(), --m;\n\t while (tz[m - 1] >= x1) tz.pop(), --m;\n\t\n\t var bins = new Array(m + 1),\n\t bin;\n\t\n\t // Initialize bins.\n\t for (i = 0; i <= m; ++i) {\n\t bin = bins[i] = [];\n\t bin.x0 = i > 0 ? tz[i - 1] : x0;\n\t bin.x1 = i < m ? tz[i] : x1;\n\t }\n\t\n\t // Assign data to bins by value, ignoring any outside the domain.\n\t for (i = 0; i < n; ++i) {\n\t x = values[i];\n\t if (x0 <= x && x <= x1) {\n\t bins[bisectRight(tz, x, 0, m)].push(data[i]);\n\t }\n\t }\n\t\n\t return bins;\n\t }\n\t\n\t histogram.value = function(_) {\n\t return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n\t };\n\t\n\t histogram.domain = function(_) {\n\t return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n\t };\n\t\n\t histogram.thresholds = function(_) {\n\t return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n\t };\n\t\n\t return histogram;\n\t }\n\t\n\t function threshold(array, p, f) {\n\t if (f == null) f = number;\n\t if (!(n = array.length)) return;\n\t if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n\t if (p >= 1) return +f(array[n - 1], n - 1, array);\n\t var n,\n\t h = (n - 1) * p,\n\t i = Math.floor(h),\n\t a = +f(array[i], i, array),\n\t b = +f(array[i + 1], i + 1, array);\n\t return a + (b - a) * (h - i);\n\t }\n\t\n\t function freedmanDiaconis(values, min, max) {\n\t values = map.call(values, number).sort(ascending);\n\t return Math.ceil((max - min) / (2 * (threshold(values, 0.75) - threshold(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n\t }\n\t\n\t function scott(values, min, max) {\n\t return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n\t }\n\t\n\t function max(array, f) {\n\t var i = -1,\n\t n = array.length,\n\t a,\n\t b;\n\t\n\t if (f == null) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n\t }\n\t\n\t else {\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n\t }\n\t\n\t return a;\n\t }\n\t\n\t function mean(array, f) {\n\t var s = 0,\n\t n = array.length,\n\t a,\n\t i = -1,\n\t j = n;\n\t\n\t if (f == null) {\n\t while (++i < n) if (!isNaN(a = number(array[i]))) s += a; else --j;\n\t }\n\t\n\t else {\n\t while (++i < n) if (!isNaN(a = number(f(array[i], i, array)))) s += a; else --j;\n\t }\n\t\n\t if (j) return s / j;\n\t }\n\t\n\t function median(array, f) {\n\t var numbers = [],\n\t n = array.length,\n\t a,\n\t i = -1;\n\t\n\t if (f == null) {\n\t while (++i < n) if (!isNaN(a = number(array[i]))) numbers.push(a);\n\t }\n\t\n\t else {\n\t while (++i < n) if (!isNaN(a = number(f(array[i], i, array)))) numbers.push(a);\n\t }\n\t\n\t return threshold(numbers.sort(ascending), 0.5);\n\t }\n\t\n\t function merge(arrays) {\n\t var n = arrays.length,\n\t m,\n\t i = -1,\n\t j = 0,\n\t merged,\n\t array;\n\t\n\t while (++i < n) j += arrays[i].length;\n\t merged = new Array(j);\n\t\n\t while (--n >= 0) {\n\t array = arrays[n];\n\t m = array.length;\n\t while (--m >= 0) {\n\t merged[--j] = array[m];\n\t }\n\t }\n\t\n\t return merged;\n\t }\n\t\n\t function min(array, f) {\n\t var i = -1,\n\t n = array.length,\n\t a,\n\t b;\n\t\n\t if (f == null) {\n\t while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n\t }\n\t\n\t else {\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n\t while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n\t }\n\t\n\t return a;\n\t }\n\t\n\t function pairs(array) {\n\t var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n\t while (i < n) pairs[i] = [p, p = array[++i]];\n\t return pairs;\n\t }\n\t\n\t function permute(array, indexes) {\n\t var i = indexes.length, permutes = new Array(i);\n\t while (i--) permutes[i] = array[indexes[i]];\n\t return permutes;\n\t }\n\t\n\t function scan(array, compare) {\n\t if (!(n = array.length)) return;\n\t var i = 0,\n\t n,\n\t j = 0,\n\t xi,\n\t xj = array[j];\n\t\n\t if (!compare) compare = ascending;\n\t\n\t while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\t\n\t if (compare(xj, xj) === 0) return j;\n\t }\n\t\n\t function shuffle(array, i0, i1) {\n\t var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n\t t,\n\t i;\n\t\n\t while (m) {\n\t i = Math.random() * m-- | 0;\n\t t = array[m + i0];\n\t array[m + i0] = array[i + i0];\n\t array[i + i0] = t;\n\t }\n\t\n\t return array;\n\t }\n\t\n\t function sum(array, f) {\n\t var s = 0,\n\t n = array.length,\n\t a,\n\t i = -1;\n\t\n\t if (f == null) {\n\t while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n\t }\n\t\n\t else {\n\t while (++i < n) if (a = +f(array[i], i, array)) s += a;\n\t }\n\t\n\t return s;\n\t }\n\t\n\t function transpose(matrix) {\n\t if (!(n = matrix.length)) return [];\n\t for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n\t for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n\t row[j] = matrix[j][i];\n\t }\n\t }\n\t return transpose;\n\t }\n\t\n\t function length(d) {\n\t return d.length;\n\t }\n\t\n\t function zip() {\n\t return transpose(arguments);\n\t }\n\t\n\t var prefix = \"$\";\n\t\n\t function Map() {}\n\t\n\t Map.prototype = map$1.prototype = {\n\t constructor: Map,\n\t has: function(key) {\n\t return (prefix + key) in this;\n\t },\n\t get: function(key) {\n\t return this[prefix + key];\n\t },\n\t set: function(key, value) {\n\t this[prefix + key] = value;\n\t return this;\n\t },\n\t remove: function(key) {\n\t var property = prefix + key;\n\t return property in this && delete this[property];\n\t },\n\t clear: function() {\n\t for (var property in this) if (property[0] === prefix) delete this[property];\n\t },\n\t keys: function() {\n\t var keys = [];\n\t for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n\t return keys;\n\t },\n\t values: function() {\n\t var values = [];\n\t for (var property in this) if (property[0] === prefix) values.push(this[property]);\n\t return values;\n\t },\n\t entries: function() {\n\t var entries = [];\n\t for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n\t return entries;\n\t },\n\t size: function() {\n\t var size = 0;\n\t for (var property in this) if (property[0] === prefix) ++size;\n\t return size;\n\t },\n\t empty: function() {\n\t for (var property in this) if (property[0] === prefix) return false;\n\t return true;\n\t },\n\t each: function(f) {\n\t for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n\t }\n\t };\n\t\n\t function map$1(object, f) {\n\t var map = new Map;\n\t\n\t // Copy constructor.\n\t if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\t\n\t // Index array by numeric index or specified key function.\n\t else if (Array.isArray(object)) {\n\t var i = -1,\n\t n = object.length,\n\t o;\n\t\n\t if (f == null) while (++i < n) map.set(i, object[i]);\n\t else while (++i < n) map.set(f(o = object[i], i, object), o);\n\t }\n\t\n\t // Convert object to map.\n\t else if (object) for (var key in object) map.set(key, object[key]);\n\t\n\t return map;\n\t }\n\t\n\t function nest() {\n\t var keys = [],\n\t sortKeys = [],\n\t sortValues,\n\t rollup,\n\t nest;\n\t\n\t function apply(array, depth, createResult, setResult) {\n\t if (depth >= keys.length) return rollup != null\n\t ? rollup(array) : (sortValues != null\n\t ? array.sort(sortValues)\n\t : array);\n\t\n\t var i = -1,\n\t n = array.length,\n\t key = keys[depth++],\n\t keyValue,\n\t value,\n\t valuesByKey = map$1(),\n\t values,\n\t result = createResult();\n\t\n\t while (++i < n) {\n\t if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n\t values.push(value);\n\t } else {\n\t valuesByKey.set(keyValue, [value]);\n\t }\n\t }\n\t\n\t valuesByKey.each(function(values, key) {\n\t setResult(result, key, apply(values, depth, createResult, setResult));\n\t });\n\t\n\t return result;\n\t }\n\t\n\t function entries(map, depth) {\n\t if (++depth > keys.length) return map;\n\t var array, sortKey = sortKeys[depth - 1];\n\t if (rollup != null && depth >= keys.length) array = map.entries();\n\t else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n\t return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n\t }\n\t\n\t return nest = {\n\t object: function(array) { return apply(array, 0, createObject, setObject); },\n\t map: function(array) { return apply(array, 0, createMap, setMap); },\n\t entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n\t key: function(d) { keys.push(d); return nest; },\n\t sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n\t sortValues: function(order) { sortValues = order; return nest; },\n\t rollup: function(f) { rollup = f; return nest; }\n\t };\n\t }\n\t\n\t function createObject() {\n\t return {};\n\t }\n\t\n\t function setObject(object, key, value) {\n\t object[key] = value;\n\t }\n\t\n\t function createMap() {\n\t return map$1();\n\t }\n\t\n\t function setMap(map, key, value) {\n\t map.set(key, value);\n\t }\n\t\n\t function Set() {}\n\t\n\t var proto = map$1.prototype;\n\t\n\t Set.prototype = set.prototype = {\n\t constructor: Set,\n\t has: proto.has,\n\t add: function(value) {\n\t value += \"\";\n\t this[prefix + value] = value;\n\t return this;\n\t },\n\t remove: proto.remove,\n\t clear: proto.clear,\n\t values: proto.keys,\n\t size: proto.size,\n\t empty: proto.empty,\n\t each: proto.each\n\t };\n\t\n\t function set(object, f) {\n\t var set = new Set;\n\t\n\t // Copy constructor.\n\t if (object instanceof Set) object.each(function(value) { set.add(value); });\n\t\n\t // Otherwise, assume it’s an array.\n\t else if (object) {\n\t var i = -1, n = object.length;\n\t if (f == null) while (++i < n) set.add(object[i]);\n\t else while (++i < n) set.add(f(object[i], i, object));\n\t }\n\t\n\t return set;\n\t }\n\t\n\t function keys(map) {\n\t var keys = [];\n\t for (var key in map) keys.push(key);\n\t return keys;\n\t }\n\t\n\t function values(map) {\n\t var values = [];\n\t for (var key in map) values.push(map[key]);\n\t return values;\n\t }\n\t\n\t function entries(map) {\n\t var entries = [];\n\t for (var key in map) entries.push({key: key, value: map[key]});\n\t return entries;\n\t }\n\t\n\t function uniform(min, max) {\n\t min = min == null ? 0 : +min;\n\t max = max == null ? 1 : +max;\n\t if (arguments.length === 1) max = min, min = 0;\n\t else max -= min;\n\t return function() {\n\t return Math.random() * max + min;\n\t };\n\t }\n\t\n\t function normal(mu, sigma) {\n\t var x, r;\n\t mu = mu == null ? 0 : +mu;\n\t sigma = sigma == null ? 1 : +sigma;\n\t return function() {\n\t var y;\n\t\n\t // If available, use the second previously-generated uniform random.\n\t if (x != null) y = x, x = null;\n\t\n\t // Otherwise, generate a new x and y.\n\t else do {\n\t x = Math.random() * 2 - 1;\n\t y = Math.random() * 2 - 1;\n\t r = x * x + y * y;\n\t } while (!r || r > 1);\n\t\n\t return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n\t };\n\t }\n\t\n\t function logNormal() {\n\t var randomNormal = normal.apply(this, arguments);\n\t return function() {\n\t return Math.exp(randomNormal());\n\t };\n\t }\n\t\n\t function irwinHall(n) {\n\t return function() {\n\t for (var sum = 0, i = 0; i < n; ++i) sum += Math.random();\n\t return sum;\n\t };\n\t }\n\t\n\t function bates(n) {\n\t var randomIrwinHall = irwinHall(n);\n\t return function() {\n\t return randomIrwinHall() / n;\n\t };\n\t }\n\t\n\t function exponential(lambda) {\n\t return function() {\n\t return -Math.log(1 - Math.random()) / lambda;\n\t };\n\t }\n\t\n\t function linear(t) {\n\t return +t;\n\t }\n\t\n\t function quadIn(t) {\n\t return t * t;\n\t }\n\t\n\t function quadOut(t) {\n\t return t * (2 - t);\n\t }\n\t\n\t function quadInOut(t) {\n\t return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n\t }\n\t\n\t function cubicIn(t) {\n\t return t * t * t;\n\t }\n\t\n\t function cubicOut(t) {\n\t return --t * t * t + 1;\n\t }\n\t\n\t function easeCubicInOut(t) {\n\t return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n\t }\n\t\n\t var exponent = 3;\n\t\n\t var polyIn = (function custom(e) {\n\t e = +e;\n\t\n\t function polyIn(t) {\n\t return Math.pow(t, e);\n\t }\n\t\n\t polyIn.exponent = custom;\n\t\n\t return polyIn;\n\t })(exponent);\n\t\n\t var polyOut = (function custom(e) {\n\t e = +e;\n\t\n\t function polyOut(t) {\n\t return 1 - Math.pow(1 - t, e);\n\t }\n\t\n\t polyOut.exponent = custom;\n\t\n\t return polyOut;\n\t })(exponent);\n\t\n\t var polyInOut = (function custom(e) {\n\t e = +e;\n\t\n\t function polyInOut(t) {\n\t return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n\t }\n\t\n\t polyInOut.exponent = custom;\n\t\n\t return polyInOut;\n\t })(exponent);\n\t\n\t var pi = Math.PI;\n\t var halfPi = pi / 2;\n\t function sinIn(t) {\n\t return 1 - Math.cos(t * halfPi);\n\t }\n\t\n\t function sinOut(t) {\n\t return Math.sin(t * halfPi);\n\t }\n\t\n\t function sinInOut(t) {\n\t return (1 - Math.cos(pi * t)) / 2;\n\t }\n\t\n\t function expIn(t) {\n\t return Math.pow(2, 10 * t - 10);\n\t }\n\t\n\t function expOut(t) {\n\t return 1 - Math.pow(2, -10 * t);\n\t }\n\t\n\t function expInOut(t) {\n\t return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n\t }\n\t\n\t function circleIn(t) {\n\t return 1 - Math.sqrt(1 - t * t);\n\t }\n\t\n\t function circleOut(t) {\n\t return Math.sqrt(1 - --t * t);\n\t }\n\t\n\t function circleInOut(t) {\n\t return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n\t }\n\t\n\t var b1 = 4 / 11;\n\t var b2 = 6 / 11;\n\t var b3 = 8 / 11;\n\t var b4 = 3 / 4;\n\t var b5 = 9 / 11;\n\t var b6 = 10 / 11;\n\t var b7 = 15 / 16;\n\t var b8 = 21 / 22;\n\t var b9 = 63 / 64;\n\t var b0 = 1 / b1 / b1;\n\t function bounceIn(t) {\n\t return 1 - bounceOut(1 - t);\n\t }\n\t\n\t function bounceOut(t) {\n\t return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n\t }\n\t\n\t function bounceInOut(t) {\n\t return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n\t }\n\t\n\t var overshoot = 1.70158;\n\t\n\t var backIn = (function custom(s) {\n\t s = +s;\n\t\n\t function backIn(t) {\n\t return t * t * ((s + 1) * t - s);\n\t }\n\t\n\t backIn.overshoot = custom;\n\t\n\t return backIn;\n\t })(overshoot);\n\t\n\t var backOut = (function custom(s) {\n\t s = +s;\n\t\n\t function backOut(t) {\n\t return --t * t * ((s + 1) * t + s) + 1;\n\t }\n\t\n\t backOut.overshoot = custom;\n\t\n\t return backOut;\n\t })(overshoot);\n\t\n\t var backInOut = (function custom(s) {\n\t s = +s;\n\t\n\t function backInOut(t) {\n\t return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n\t }\n\t\n\t backInOut.overshoot = custom;\n\t\n\t return backInOut;\n\t })(overshoot);\n\t\n\t var tau = 2 * Math.PI;\n\t var amplitude = 1;\n\t var period = 0.3;\n\t var elasticIn = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticIn(t) {\n\t return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n\t }\n\t\n\t elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticIn.period = function(p) { return custom(a, p); };\n\t\n\t return elasticIn;\n\t })(amplitude, period);\n\t\n\t var elasticOut = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticOut(t) {\n\t return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n\t }\n\t\n\t elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticOut.period = function(p) { return custom(a, p); };\n\t\n\t return elasticOut;\n\t })(amplitude, period);\n\t\n\t var elasticInOut = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticInOut(t) {\n\t return ((t = t * 2 - 1) < 0\n\t ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n\t : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n\t }\n\t\n\t elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticInOut.period = function(p) { return custom(a, p); };\n\t\n\t return elasticInOut;\n\t })(amplitude, period);\n\t\n\t function area(polygon) {\n\t var i = -1,\n\t n = polygon.length,\n\t a,\n\t b = polygon[n - 1],\n\t area = 0;\n\t\n\t while (++i < n) {\n\t a = b;\n\t b = polygon[i];\n\t area += a[1] * b[0] - a[0] * b[1];\n\t }\n\t\n\t return area / 2;\n\t }\n\t\n\t function centroid(polygon) {\n\t var i = -1,\n\t n = polygon.length,\n\t x = 0,\n\t y = 0,\n\t a,\n\t b = polygon[n - 1],\n\t c,\n\t k = 0;\n\t\n\t while (++i < n) {\n\t a = b;\n\t b = polygon[i];\n\t k += c = a[0] * b[1] - b[0] * a[1];\n\t x += (a[0] + b[0]) * c;\n\t y += (a[1] + b[1]) * c;\n\t }\n\t\n\t return k *= 3, [x / k, y / k];\n\t }\n\t\n\t // Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n\t // the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n\t // right, +y is up). Returns a positive value if ABC is counter-clockwise,\n\t // negative if clockwise, and zero if the points are collinear.\n\t function cross(a, b, c) {\n\t return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n\t }\n\t\n\t function lexicographicOrder(a, b) {\n\t return a[0] - b[0] || a[1] - b[1];\n\t }\n\t\n\t // Computes the upper convex hull per the monotone chain algorithm.\n\t // Assumes points.length >= 3, is sorted by x, unique in y.\n\t // Returns an array of indices into points in left-to-right order.\n\t function computeUpperHullIndexes(points) {\n\t var n = points.length,\n\t indexes = [0, 1],\n\t size = 2;\n\t\n\t for (var i = 2; i < n; ++i) {\n\t while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n\t indexes[size++] = i;\n\t }\n\t\n\t return indexes.slice(0, size); // remove popped points\n\t }\n\t\n\t function hull(points) {\n\t if ((n = points.length) < 3) return null;\n\t\n\t var i,\n\t n,\n\t sortedPoints = new Array(n),\n\t flippedPoints = new Array(n);\n\t\n\t for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n\t sortedPoints.sort(lexicographicOrder);\n\t for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\t\n\t var upperIndexes = computeUpperHullIndexes(sortedPoints),\n\t lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\t\n\t // Construct the hull polygon, removing possible duplicate endpoints.\n\t var skipLeft = lowerIndexes[0] === upperIndexes[0],\n\t skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n\t hull = [];\n\t\n\t // Add upper hull in right-to-l order.\n\t // Then add lower hull in left-to-right order.\n\t for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n\t for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\t\n\t return hull;\n\t }\n\t\n\t function contains(polygon, point) {\n\t var n = polygon.length,\n\t p = polygon[n - 1],\n\t x = point[0], y = point[1],\n\t x0 = p[0], y0 = p[1],\n\t x1, y1,\n\t inside = false;\n\t\n\t for (var i = 0; i < n; ++i) {\n\t p = polygon[i], x1 = p[0], y1 = p[1];\n\t if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n\t x0 = x1, y0 = y1;\n\t }\n\t\n\t return inside;\n\t }\n\t\n\t function length$1(polygon) {\n\t var i = -1,\n\t n = polygon.length,\n\t b = polygon[n - 1],\n\t xa,\n\t ya,\n\t xb = b[0],\n\t yb = b[1],\n\t perimeter = 0;\n\t\n\t while (++i < n) {\n\t xa = xb;\n\t ya = yb;\n\t b = polygon[i];\n\t xb = b[0];\n\t yb = b[1];\n\t xa -= xb;\n\t ya -= yb;\n\t perimeter += Math.sqrt(xa * xa + ya * ya);\n\t }\n\t\n\t return perimeter;\n\t }\n\t\n\tvar pi$1 = Math.PI;\n\tvar tau$1 = 2 * pi$1;\n\t var epsilon = 1e-6;\n\t var tauEpsilon = tau$1 - epsilon;\n\t function Path() {\n\t this._x0 = this._y0 = // start of current subpath\n\t this._x1 = this._y1 = null; // end of current subpath\n\t this._ = [];\n\t }\n\t\n\t function path() {\n\t return new Path;\n\t }\n\t\n\t Path.prototype = path.prototype = {\n\t constructor: Path,\n\t moveTo: function(x, y) {\n\t this._.push(\"M\", this._x0 = this._x1 = +x, \",\", this._y0 = this._y1 = +y);\n\t },\n\t closePath: function() {\n\t if (this._x1 !== null) {\n\t this._x1 = this._x0, this._y1 = this._y0;\n\t this._.push(\"Z\");\n\t }\n\t },\n\t lineTo: function(x, y) {\n\t this._.push(\"L\", this._x1 = +x, \",\", this._y1 = +y);\n\t },\n\t quadraticCurveTo: function(x1, y1, x, y) {\n\t this._.push(\"Q\", +x1, \",\", +y1, \",\", this._x1 = +x, \",\", this._y1 = +y);\n\t },\n\t bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n\t this._.push(\"C\", +x1, \",\", +y1, \",\", +x2, \",\", +y2, \",\", this._x1 = +x, \",\", this._y1 = +y);\n\t },\n\t arcTo: function(x1, y1, x2, y2, r) {\n\t x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\t var x0 = this._x1,\n\t y0 = this._y1,\n\t x21 = x2 - x1,\n\t y21 = y2 - y1,\n\t x01 = x0 - x1,\n\t y01 = y0 - y1,\n\t l01_2 = x01 * x01 + y01 * y01;\n\t\n\t // Is the radius negative? Error.\n\t if (r < 0) throw new Error(\"negative radius: \" + r);\n\t\n\t // Is this path empty? Move to (x1,y1).\n\t if (this._x1 === null) {\n\t this._.push(\n\t \"M\", this._x1 = x1, \",\", this._y1 = y1\n\t );\n\t }\n\t\n\t // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n\t else if (!(l01_2 > epsilon));\n\t\n\t // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n\t // Equivalently, is (x1,y1) coincident with (x2,y2)?\n\t // Or, is the radius zero? Line to (x1,y1).\n\t else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n\t this._.push(\n\t \"L\", this._x1 = x1, \",\", this._y1 = y1\n\t );\n\t }\n\t\n\t // Otherwise, draw an arc!\n\t else {\n\t var x20 = x2 - x0,\n\t y20 = y2 - y0,\n\t l21_2 = x21 * x21 + y21 * y21,\n\t l20_2 = x20 * x20 + y20 * y20,\n\t l21 = Math.sqrt(l21_2),\n\t l01 = Math.sqrt(l01_2),\n\t l = r * Math.tan((pi$1 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n\t t01 = l / l01,\n\t t21 = l / l21;\n\t\n\t // If the start tangent is not coincident with (x0,y0), line to.\n\t if (Math.abs(t01 - 1) > epsilon) {\n\t this._.push(\n\t \"L\", x1 + t01 * x01, \",\", y1 + t01 * y01\n\t );\n\t }\n\t\n\t this._.push(\n\t \"A\", r, \",\", r, \",0,0,\", +(y01 * x20 > x01 * y20), \",\", this._x1 = x1 + t21 * x21, \",\", this._y1 = y1 + t21 * y21\n\t );\n\t }\n\t },\n\t arc: function(x, y, r, a0, a1, ccw) {\n\t x = +x, y = +y, r = +r;\n\t var dx = r * Math.cos(a0),\n\t dy = r * Math.sin(a0),\n\t x0 = x + dx,\n\t y0 = y + dy,\n\t cw = 1 ^ ccw,\n\t da = ccw ? a0 - a1 : a1 - a0;\n\t\n\t // Is the radius negative? Error.\n\t if (r < 0) throw new Error(\"negative radius: \" + r);\n\t\n\t // Is this path empty? Move to (x0,y0).\n\t if (this._x1 === null) {\n\t this._.push(\n\t \"M\", x0, \",\", y0\n\t );\n\t }\n\t\n\t // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n\t else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n\t this._.push(\n\t \"L\", x0, \",\", y0\n\t );\n\t }\n\t\n\t // Is this arc empty? We’re done.\n\t if (!r) return;\n\t\n\t // Is this a complete circle? Draw two arcs to complete the circle.\n\t if (da > tauEpsilon) {\n\t this._.push(\n\t \"A\", r, \",\", r, \",0,1,\", cw, \",\", x - dx, \",\", y - dy,\n\t \"A\", r, \",\", r, \",0,1,\", cw, \",\", this._x1 = x0, \",\", this._y1 = y0\n\t );\n\t }\n\t\n\t // Otherwise, draw an arc!\n\t else {\n\t if (da < 0) da = da % tau$1 + tau$1;\n\t this._.push(\n\t \"A\", r, \",\", r, \",0,\", +(da >= pi$1), \",\", cw, \",\", this._x1 = x + r * Math.cos(a1), \",\", this._y1 = y + r * Math.sin(a1)\n\t );\n\t }\n\t },\n\t rect: function(x, y, w, h) {\n\t this._.push(\"M\", this._x0 = this._x1 = +x, \",\", this._y0 = this._y1 = +y, \"h\", +w, \"v\", +h, \"h\", -w, \"Z\");\n\t },\n\t toString: function() {\n\t return this._.join(\"\");\n\t }\n\t };\n\t\n\t function tree_add(d) {\n\t var x = +this._x.call(null, d),\n\t y = +this._y.call(null, d);\n\t return add(this.cover(x, y), x, y, d);\n\t }\n\t\n\t function add(tree, x, y, d) {\n\t if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\t\n\t var parent,\n\t node = tree._root,\n\t leaf = {data: d},\n\t x0 = tree._x0,\n\t y0 = tree._y0,\n\t x1 = tree._x1,\n\t y1 = tree._y1,\n\t xm,\n\t ym,\n\t xp,\n\t yp,\n\t right,\n\t bottom,\n\t i,\n\t j;\n\t\n\t // If the tree is empty, initialize the root as a leaf.\n\t if (!node) return tree._root = leaf, tree;\n\t\n\t // Find the existing leaf for the new point, or add it.\n\t while (node.length) {\n\t if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n\t if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n\t if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n\t }\n\t\n\t // Is the new point is exactly coincident with the existing point?\n\t xp = +tree._x.call(null, node.data);\n\t yp = +tree._y.call(null, node.data);\n\t if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\t\n\t // Otherwise, split the leaf node until the old and new point are separated.\n\t do {\n\t parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n\t if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n\t if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n\t } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n\t return parent[j] = node, parent[i] = leaf, tree;\n\t }\n\t\n\t function addAll(data) {\n\t var d, i, n = data.length,\n\t x,\n\t y,\n\t xz = new Array(n),\n\t yz = new Array(n),\n\t x0 = Infinity,\n\t y0 = Infinity,\n\t x1 = -Infinity,\n\t y1 = -Infinity;\n\t\n\t // Compute the points and their extent.\n\t for (i = 0; i < n; ++i) {\n\t if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n\t xz[i] = x;\n\t yz[i] = y;\n\t if (x < x0) x0 = x;\n\t if (x > x1) x1 = x;\n\t if (y < y0) y0 = y;\n\t if (y > y1) y1 = y;\n\t }\n\t\n\t // If there were no (valid) points, inherit the existing extent.\n\t if (x1 < x0) x0 = this._x0, x1 = this._x1;\n\t if (y1 < y0) y0 = this._y0, y1 = this._y1;\n\t\n\t // Expand the tree to cover the new points.\n\t this.cover(x0, y0).cover(x1, y1);\n\t\n\t // Add the new points.\n\t for (i = 0; i < n; ++i) {\n\t add(this, xz[i], yz[i], data[i]);\n\t }\n\t\n\t return this;\n\t }\n\t\n\t function tree_cover(x, y) {\n\t if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\t\n\t var x0 = this._x0,\n\t y0 = this._y0,\n\t x1 = this._x1,\n\t y1 = this._y1;\n\t\n\t // If the quadtree has no extent, initialize them.\n\t // Integer extent are necessary so that if we later double the extent,\n\t // the existing quadrant boundaries don’t change due to floating point error!\n\t if (isNaN(x0)) {\n\t x1 = (x0 = Math.floor(x)) + 1;\n\t y1 = (y0 = Math.floor(y)) + 1;\n\t }\n\t\n\t // Otherwise, double repeatedly to cover.\n\t else if (x0 > x || x > x1 || y0 > y || y > y1) {\n\t var z = x1 - x0,\n\t node = this._root,\n\t parent,\n\t i;\n\t\n\t switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) {\n\t case 0: {\n\t do parent = new Array(4), parent[i] = node, node = parent;\n\t while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1);\n\t break;\n\t }\n\t case 1: {\n\t do parent = new Array(4), parent[i] = node, node = parent;\n\t while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1);\n\t break;\n\t }\n\t case 2: {\n\t do parent = new Array(4), parent[i] = node, node = parent;\n\t while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y);\n\t break;\n\t }\n\t case 3: {\n\t do parent = new Array(4), parent[i] = node, node = parent;\n\t while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y);\n\t break;\n\t }\n\t }\n\t\n\t if (this._root && this._root.length) this._root = node;\n\t }\n\t\n\t // If the quadtree covers the point already, just return.\n\t else return this;\n\t\n\t this._x0 = x0;\n\t this._y0 = y0;\n\t this._x1 = x1;\n\t this._y1 = y1;\n\t return this;\n\t }\n\t\n\t function tree_data() {\n\t var data = [];\n\t this.visit(function(node) {\n\t if (!node.length) do data.push(node.data); while (node = node.next)\n\t });\n\t return data;\n\t }\n\t\n\t function tree_extent(_) {\n\t return arguments.length\n\t ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n\t : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n\t }\n\t\n\t function Quad(node, x0, y0, x1, y1) {\n\t this.node = node;\n\t this.x0 = x0;\n\t this.y0 = y0;\n\t this.x1 = x1;\n\t this.y1 = y1;\n\t }\n\t\n\t function tree_find(x, y, radius) {\n\t var data,\n\t x0 = this._x0,\n\t y0 = this._y0,\n\t x1,\n\t y1,\n\t x2,\n\t y2,\n\t x3 = this._x1,\n\t y3 = this._y1,\n\t quads = [],\n\t node = this._root,\n\t q,\n\t i;\n\t\n\t if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n\t if (radius == null) radius = Infinity;\n\t else {\n\t x0 = x - radius, y0 = y - radius;\n\t x3 = x + radius, y3 = y + radius;\n\t radius *= radius;\n\t }\n\t\n\t while (q = quads.pop()) {\n\t\n\t // Stop searching if this quadrant can’t contain a closer node.\n\t if (!(node = q.node)\n\t || (x1 = q.x0) > x3\n\t || (y1 = q.y0) > y3\n\t || (x2 = q.x1) < x0\n\t || (y2 = q.y1) < y0) continue;\n\t\n\t // Bisect the current quadrant.\n\t if (node.length) {\n\t var xm = (x1 + x2) / 2,\n\t ym = (y1 + y2) / 2;\n\t\n\t quads.push(\n\t new Quad(node[3], xm, ym, x2, y2),\n\t new Quad(node[2], x1, ym, xm, y2),\n\t new Quad(node[1], xm, y1, x2, ym),\n\t new Quad(node[0], x1, y1, xm, ym)\n\t );\n\t\n\t // Visit the closest quadrant first.\n\t if (i = (y >= ym) << 1 | (x >= xm)) {\n\t q = quads[quads.length - 1];\n\t quads[quads.length - 1] = quads[quads.length - 1 - i];\n\t quads[quads.length - 1 - i] = q;\n\t }\n\t }\n\t\n\t // Visit this point. (Visiting coincident points isn’t necessary!)\n\t else {\n\t var dx = x - +this._x.call(null, node.data),\n\t dy = y - +this._y.call(null, node.data),\n\t d2 = dx * dx + dy * dy;\n\t if (d2 < radius) {\n\t var d = Math.sqrt(radius = d2);\n\t x0 = x - d, y0 = y - d;\n\t x3 = x + d, y3 = y + d;\n\t data = node.data;\n\t }\n\t }\n\t }\n\t\n\t return data;\n\t }\n\t\n\t function tree_remove(d) {\n\t if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\t\n\t var parent,\n\t node = this._root,\n\t retainer,\n\t previous,\n\t next,\n\t x0 = this._x0,\n\t y0 = this._y0,\n\t x1 = this._x1,\n\t y1 = this._y1,\n\t x,\n\t y,\n\t xm,\n\t ym,\n\t right,\n\t bottom,\n\t i,\n\t j;\n\t\n\t // If the tree is empty, initialize the root as a leaf.\n\t if (!node) return this;\n\t\n\t // Find the leaf node for the point.\n\t // While descending, also retain the deepest parent with a non-removed sibling.\n\t if (node.length) while (true) {\n\t if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n\t if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n\t if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n\t if (!node.length) break;\n\t if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n\t }\n\t\n\t // Find the point to remove.\n\t while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n\t if (next = node.next) delete node.next;\n\t\n\t // If there are multiple coincident points, remove just the point.\n\t if (previous) return (next ? previous.next = next : delete previous.next), this;\n\t\n\t // If this is the root point, remove it.\n\t if (!parent) return this._root = next, this;\n\t\n\t // Remove this leaf.\n\t next ? parent[i] = next : delete parent[i];\n\t\n\t // If the parent now contains exactly one leaf, collapse superfluous parents.\n\t if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n\t && node === (parent[3] || parent[2] || parent[1] || parent[0])\n\t && !node.length) {\n\t if (retainer) retainer[j] = node;\n\t else this._root = node;\n\t }\n\t\n\t return this;\n\t }\n\t\n\t function removeAll(data) {\n\t for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n\t return this;\n\t }\n\t\n\t function tree_root() {\n\t return this._root;\n\t }\n\t\n\t function tree_size() {\n\t var size = 0;\n\t this.visit(function(node) {\n\t if (!node.length) do ++size; while (node = node.next)\n\t });\n\t return size;\n\t }\n\t\n\t function tree_visit(callback) {\n\t var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n\t if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n\t while (q = quads.pop()) {\n\t if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n\t var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n\t if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n\t if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n\t if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n\t if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n\t }\n\t }\n\t return this;\n\t }\n\t\n\t function tree_visitAfter(callback) {\n\t var quads = [], next = [], q;\n\t if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n\t while (q = quads.pop()) {\n\t var node = q.node;\n\t if (node.length) {\n\t var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n\t if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n\t if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n\t if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n\t if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n\t }\n\t next.push(q);\n\t }\n\t while (q = next.pop()) {\n\t callback(q.node, q.x0, q.y0, q.x1, q.y1);\n\t }\n\t return this;\n\t }\n\t\n\t function defaultX(d) {\n\t return d[0];\n\t }\n\t\n\t function tree_x(_) {\n\t return arguments.length ? (this._x = _, this) : this._x;\n\t }\n\t\n\t function defaultY(d) {\n\t return d[1];\n\t }\n\t\n\t function tree_y(_) {\n\t return arguments.length ? (this._y = _, this) : this._y;\n\t }\n\t\n\t function quadtree(nodes, x, y) {\n\t var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n\t return nodes == null ? tree : tree.addAll(nodes);\n\t }\n\t\n\t function Quadtree(x, y, x0, y0, x1, y1) {\n\t this._x = x;\n\t this._y = y;\n\t this._x0 = x0;\n\t this._y0 = y0;\n\t this._x1 = x1;\n\t this._y1 = y1;\n\t this._root = undefined;\n\t }\n\t\n\t function leaf_copy(leaf) {\n\t var copy = {data: leaf.data}, next = copy;\n\t while (leaf = leaf.next) next = next.next = {data: leaf.data};\n\t return copy;\n\t }\n\t\n\t var treeProto = quadtree.prototype = Quadtree.prototype;\n\t\n\t treeProto.copy = function() {\n\t var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n\t node = this._root,\n\t nodes,\n\t child;\n\t\n\t if (!node) return copy;\n\t\n\t if (!node.length) return copy._root = leaf_copy(node), copy;\n\t\n\t nodes = [{source: node, target: copy._root = new Array(4)}];\n\t while (node = nodes.pop()) {\n\t for (var i = 0; i < 4; ++i) {\n\t if (child = node.source[i]) {\n\t if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n\t else node.target[i] = leaf_copy(child);\n\t }\n\t }\n\t }\n\t\n\t return copy;\n\t };\n\t\n\t treeProto.add = tree_add;\n\t treeProto.addAll = addAll;\n\t treeProto.cover = tree_cover;\n\t treeProto.data = tree_data;\n\t treeProto.extent = tree_extent;\n\t treeProto.find = tree_find;\n\t treeProto.remove = tree_remove;\n\t treeProto.removeAll = removeAll;\n\t treeProto.root = tree_root;\n\t treeProto.size = tree_size;\n\t treeProto.visit = tree_visit;\n\t treeProto.visitAfter = tree_visitAfter;\n\t treeProto.x = tree_x;\n\t treeProto.y = tree_y;\n\t\n\t var slice$1 = [].slice;\n\t\n\t var noabort = {};\n\t\n\t function Queue(size) {\n\t if (!(size >= 1)) throw new Error;\n\t this._size = size;\n\t this._call =\n\t this._error = null;\n\t this._tasks = [];\n\t this._data = [];\n\t this._waiting =\n\t this._active =\n\t this._ended =\n\t this._start = 0; // inside a synchronous task callback?\n\t }\n\t\n\t Queue.prototype = queue.prototype = {\n\t constructor: Queue,\n\t defer: function(callback) {\n\t if (typeof callback !== \"function\" || this._call) throw new Error;\n\t if (this._error != null) return this;\n\t var t = slice$1.call(arguments, 1);\n\t t.push(callback);\n\t ++this._waiting, this._tasks.push(t);\n\t poke(this);\n\t return this;\n\t },\n\t abort: function() {\n\t if (this._error == null) abort(this, new Error(\"abort\"));\n\t return this;\n\t },\n\t await: function(callback) {\n\t if (typeof callback !== \"function\" || this._call) throw new Error;\n\t this._call = function(error, results) { callback.apply(null, [error].concat(results)); };\n\t maybeNotify(this);\n\t return this;\n\t },\n\t awaitAll: function(callback) {\n\t if (typeof callback !== \"function\" || this._call) throw new Error;\n\t this._call = callback;\n\t maybeNotify(this);\n\t return this;\n\t }\n\t };\n\t\n\t function poke(q) {\n\t if (!q._start) try { start(q); } // let the current task complete\n\t catch (e) { if (q._tasks[q._ended + q._active - 1]) abort(q, e); } // task errored synchronously\n\t }\n\t\n\t function start(q) {\n\t while (q._start = q._waiting && q._active < q._size) {\n\t var i = q._ended + q._active,\n\t t = q._tasks[i],\n\t j = t.length - 1,\n\t c = t[j];\n\t t[j] = end(q, i);\n\t --q._waiting, ++q._active;\n\t t = c.apply(null, t);\n\t if (!q._tasks[i]) continue; // task finished synchronously\n\t q._tasks[i] = t || noabort;\n\t }\n\t }\n\t\n\t function end(q, i) {\n\t return function(e, r) {\n\t if (!q._tasks[i]) return; // ignore multiple callbacks\n\t --q._active, ++q._ended;\n\t q._tasks[i] = null;\n\t if (q._error != null) return; // ignore secondary errors\n\t if (e != null) {\n\t abort(q, e);\n\t } else {\n\t q._data[i] = r;\n\t if (q._waiting) poke(q);\n\t else maybeNotify(q);\n\t }\n\t };\n\t }\n\t\n\t function abort(q, e) {\n\t var i = q._tasks.length, t;\n\t q._error = e; // ignore active callbacks\n\t q._data = undefined; // allow gc\n\t q._waiting = NaN; // prevent starting\n\t\n\t while (--i >= 0) {\n\t if (t = q._tasks[i]) {\n\t q._tasks[i] = null;\n\t if (t.abort) try { t.abort(); }\n\t catch (e) { /* ignore */ }\n\t }\n\t }\n\t\n\t q._active = NaN; // allow notification\n\t maybeNotify(q);\n\t }\n\t\n\t function maybeNotify(q) {\n\t if (!q._active && q._call) q._call(q._error, q._data);\n\t }\n\t\n\t function queue(concurrency) {\n\t return new Queue(arguments.length ? +concurrency : Infinity);\n\t }\n\t\n\t function constant$1(x) {\n\t return function constant() {\n\t return x;\n\t };\n\t }\n\t\n\t var epsilon$1 = 1e-12;\n\t var pi$2 = Math.PI;\n\t var halfPi$1 = pi$2 / 2;\n\t var tau$2 = 2 * pi$2;\n\t\n\t function arcInnerRadius(d) {\n\t return d.innerRadius;\n\t }\n\t\n\t function arcOuterRadius(d) {\n\t return d.outerRadius;\n\t }\n\t\n\t function arcStartAngle(d) {\n\t return d.startAngle;\n\t }\n\t\n\t function arcEndAngle(d) {\n\t return d.endAngle;\n\t }\n\t\n\t function arcPadAngle(d) {\n\t return d && d.padAngle; // Note: optional!\n\t }\n\t\n\t function asin(x) {\n\t return x >= 1 ? halfPi$1 : x <= -1 ? -halfPi$1 : Math.asin(x);\n\t }\n\t\n\t function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n\t var x10 = x1 - x0, y10 = y1 - y0,\n\t x32 = x3 - x2, y32 = y3 - y2,\n\t t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n\t return [x0 + t * x10, y0 + t * y10];\n\t }\n\t\n\t // Compute perpendicular offset line of length rc.\n\t // http://mathworld.wolfram.com/Circle-LineIntersection.html\n\t function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n\t var x01 = x0 - x1,\n\t y01 = y0 - y1,\n\t lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01),\n\t ox = lo * y01,\n\t oy = -lo * x01,\n\t x11 = x0 + ox,\n\t y11 = y0 + oy,\n\t x10 = x1 + ox,\n\t y10 = y1 + oy,\n\t x00 = (x11 + x10) / 2,\n\t y00 = (y11 + y10) / 2,\n\t dx = x10 - x11,\n\t dy = y10 - y11,\n\t d2 = dx * dx + dy * dy,\n\t r = r1 - rc,\n\t D = x11 * y10 - x10 * y11,\n\t d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)),\n\t cx0 = (D * dy - dx * d) / d2,\n\t cy0 = (-D * dx - dy * d) / d2,\n\t cx1 = (D * dy + dx * d) / d2,\n\t cy1 = (-D * dx + dy * d) / d2,\n\t dx0 = cx0 - x00,\n\t dy0 = cy0 - y00,\n\t dx1 = cx1 - x00,\n\t dy1 = cy1 - y00;\n\t\n\t // Pick the closer of the two intersection points.\n\t // TODO Is there a faster way to determine which intersection to use?\n\t if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\t\n\t return {\n\t cx: cx0,\n\t cy: cy0,\n\t x01: -ox,\n\t y01: -oy,\n\t x11: cx0 * (r1 / r - 1),\n\t y11: cy0 * (r1 / r - 1)\n\t };\n\t }\n\t\n\t function arc() {\n\t var innerRadius = arcInnerRadius,\n\t outerRadius = arcOuterRadius,\n\t cornerRadius = constant$1(0),\n\t padRadius = null,\n\t startAngle = arcStartAngle,\n\t endAngle = arcEndAngle,\n\t padAngle = arcPadAngle,\n\t context = null;\n\t\n\t function arc() {\n\t var buffer,\n\t r,\n\t r0 = +innerRadius.apply(this, arguments),\n\t r1 = +outerRadius.apply(this, arguments),\n\t a0 = startAngle.apply(this, arguments) - halfPi$1,\n\t a1 = endAngle.apply(this, arguments) - halfPi$1,\n\t da = Math.abs(a1 - a0),\n\t cw = a1 > a0;\n\t\n\t if (!context) context = buffer = path();\n\t\n\t // Ensure that the outer radius is always larger than the inner radius.\n\t if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\t\n\t // Is it a point?\n\t if (!(r1 > epsilon$1)) context.moveTo(0, 0);\n\t\n\t // Or is it a circle or annulus?\n\t else if (da > tau$2 - epsilon$1) {\n\t context.moveTo(r1 * Math.cos(a0), r1 * Math.sin(a0));\n\t context.arc(0, 0, r1, a0, a1, !cw);\n\t if (r0 > epsilon$1) {\n\t context.moveTo(r0 * Math.cos(a1), r0 * Math.sin(a1));\n\t context.arc(0, 0, r0, a1, a0, cw);\n\t }\n\t }\n\t\n\t // Or is it a circular or annular sector?\n\t else {\n\t var a01 = a0,\n\t a11 = a1,\n\t a00 = a0,\n\t a10 = a1,\n\t da0 = da,\n\t da1 = da,\n\t ap = padAngle.apply(this, arguments) / 2,\n\t rp = (ap > epsilon$1) && (padRadius ? +padRadius.apply(this, arguments) : Math.sqrt(r0 * r0 + r1 * r1)),\n\t rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n\t rc0 = rc,\n\t rc1 = rc,\n\t t0,\n\t t1;\n\t\n\t // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n\t if (rp > epsilon$1) {\n\t var p0 = asin(rp / r0 * Math.sin(ap)),\n\t p1 = asin(rp / r1 * Math.sin(ap));\n\t if ((da0 -= p0 * 2) > epsilon$1) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n\t else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n\t if ((da1 -= p1 * 2) > epsilon$1) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n\t else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n\t }\n\t\n\t var x01 = r1 * Math.cos(a01),\n\t y01 = r1 * Math.sin(a01),\n\t x10 = r0 * Math.cos(a10),\n\t y10 = r0 * Math.sin(a10);\n\t\n\t // Apply rounded corners?\n\t if (rc > epsilon$1) {\n\t var x11 = r1 * Math.cos(a11),\n\t y11 = r1 * Math.sin(a11),\n\t x00 = r0 * Math.cos(a00),\n\t y00 = r0 * Math.sin(a00);\n\t\n\t // Restrict the corner radius according to the sector angle.\n\t if (da < pi$2) {\n\t var oc = da0 > epsilon$1 ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n\t ax = x01 - oc[0],\n\t ay = y01 - oc[1],\n\t bx = x11 - oc[0],\n\t by = y11 - oc[1],\n\t kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2),\n\t lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\t rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n\t rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n\t }\n\t }\n\t\n\t // Is the sector collapsed to a line?\n\t if (!(da1 > epsilon$1)) context.moveTo(x01, y01);\n\t\n\t // Does the sector’s outer ring have rounded corners?\n\t else if (rc1 > epsilon$1) {\n\t t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n\t t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\t\n\t context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\t\n\t // Have the corners merged?\n\t if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\t\n\t // Otherwise, draw the two corners and the ring.\n\t else {\n\t context.arc(t0.cx, t0.cy, rc1, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n\t context.arc(0, 0, r1, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n\t context.arc(t1.cx, t1.cy, rc1, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n\t }\n\t }\n\t\n\t // Or is the outer ring just a circular arc?\n\t else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\t\n\t // Is there no inner ring, and it’s a circular sector?\n\t // Or perhaps it’s an annular sector collapsed due to padding?\n\t if (!(r0 > epsilon$1) || !(da0 > epsilon$1)) context.lineTo(x10, y10);\n\t\n\t // Does the sector’s inner ring (or point) have rounded corners?\n\t else if (rc0 > epsilon$1) {\n\t t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n\t t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\t\n\t context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\t\n\t // Have the corners merged?\n\t if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t1.y01, t1.x01), !cw);\n\t\n\t // Otherwise, draw the two corners and the ring.\n\t else {\n\t context.arc(t0.cx, t0.cy, rc0, Math.atan2(t0.y01, t0.x01), Math.atan2(t0.y11, t0.x11), !cw);\n\t context.arc(0, 0, r0, Math.atan2(t0.cy + t0.y11, t0.cx + t0.x11), Math.atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n\t context.arc(t1.cx, t1.cy, rc0, Math.atan2(t1.y11, t1.x11), Math.atan2(t1.y01, t1.x01), !cw);\n\t }\n\t }\n\t\n\t // Or is the inner ring just a circular arc?\n\t else context.arc(0, 0, r0, a10, a00, cw);\n\t }\n\t\n\t context.closePath();\n\t\n\t if (buffer) return context = null, buffer + \"\" || null;\n\t }\n\t\n\t arc.centroid = function() {\n\t var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n\t a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$2 / 2;\n\t return [Math.cos(a) * r, Math.sin(a) * r];\n\t };\n\t\n\t arc.innerRadius = function(_) {\n\t return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant$1(+_), arc) : innerRadius;\n\t };\n\t\n\t arc.outerRadius = function(_) {\n\t return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant$1(+_), arc) : outerRadius;\n\t };\n\t\n\t arc.cornerRadius = function(_) {\n\t return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant$1(+_), arc) : cornerRadius;\n\t };\n\t\n\t arc.padRadius = function(_) {\n\t return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant$1(+_), arc) : padRadius;\n\t };\n\t\n\t arc.startAngle = function(_) {\n\t return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant$1(+_), arc) : startAngle;\n\t };\n\t\n\t arc.endAngle = function(_) {\n\t return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant$1(+_), arc) : endAngle;\n\t };\n\t\n\t arc.padAngle = function(_) {\n\t return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant$1(+_), arc) : padAngle;\n\t };\n\t\n\t arc.context = function(_) {\n\t return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n\t };\n\t\n\t return arc;\n\t }\n\t\n\t function Linear(context) {\n\t this._context = context;\n\t }\n\t\n\t Linear.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; // proceed\n\t default: this._context.lineTo(x, y); break;\n\t }\n\t }\n\t };\n\t\n\t function curveLinear(context) {\n\t return new Linear(context);\n\t }\n\t\n\t function x(p) {\n\t return p[0];\n\t }\n\t\n\t function y(p) {\n\t return p[1];\n\t }\n\t\n\t function line() {\n\t var x$$ = x,\n\t y$$ = y,\n\t defined = constant$1(true),\n\t context = null,\n\t curve = curveLinear,\n\t output = null;\n\t\n\t function line(data) {\n\t var i,\n\t n = data.length,\n\t d,\n\t defined0 = false,\n\t buffer;\n\t\n\t if (context == null) output = curve(buffer = path());\n\t\n\t for (i = 0; i <= n; ++i) {\n\t if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n\t if (defined0 = !defined0) output.lineStart();\n\t else output.lineEnd();\n\t }\n\t if (defined0) output.point(+x$$(d, i, data), +y$$(d, i, data));\n\t }\n\t\n\t if (buffer) return output = null, buffer + \"\" || null;\n\t }\n\t\n\t line.x = function(_) {\n\t return arguments.length ? (x$$ = typeof _ === \"function\" ? _ : constant$1(+_), line) : x$$;\n\t };\n\t\n\t line.y = function(_) {\n\t return arguments.length ? (y$$ = typeof _ === \"function\" ? _ : constant$1(+_), line) : y$$;\n\t };\n\t\n\t line.defined = function(_) {\n\t return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant$1(!!_), line) : defined;\n\t };\n\t\n\t line.curve = function(_) {\n\t return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n\t };\n\t\n\t line.context = function(_) {\n\t return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n\t };\n\t\n\t return line;\n\t }\n\t\n\t function area$1() {\n\t var x0 = x,\n\t x1 = null,\n\t y0 = constant$1(0),\n\t y1 = y,\n\t defined = constant$1(true),\n\t context = null,\n\t curve = curveLinear,\n\t output = null;\n\t\n\t function area(data) {\n\t var i,\n\t j,\n\t k,\n\t n = data.length,\n\t d,\n\t defined0 = false,\n\t buffer,\n\t x0z = new Array(n),\n\t y0z = new Array(n);\n\t\n\t if (context == null) output = curve(buffer = path());\n\t\n\t for (i = 0; i <= n; ++i) {\n\t if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n\t if (defined0 = !defined0) {\n\t j = i;\n\t output.areaStart();\n\t output.lineStart();\n\t } else {\n\t output.lineEnd();\n\t output.lineStart();\n\t for (k = i - 1; k >= j; --k) {\n\t output.point(x0z[k], y0z[k]);\n\t }\n\t output.lineEnd();\n\t output.areaEnd();\n\t }\n\t }\n\t if (defined0) {\n\t x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n\t output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n\t }\n\t }\n\t\n\t if (buffer) return output = null, buffer + \"\" || null;\n\t }\n\t\n\t function arealine() {\n\t return line().defined(defined).curve(curve).context(context);\n\t }\n\t\n\t area.x = function(_) {\n\t return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant$1(+_), x1 = null, area) : x0;\n\t };\n\t\n\t area.x0 = function(_) {\n\t return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant$1(+_), area) : x0;\n\t };\n\t\n\t area.x1 = function(_) {\n\t return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant$1(+_), area) : x1;\n\t };\n\t\n\t area.y = function(_) {\n\t return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant$1(+_), y1 = null, area) : y0;\n\t };\n\t\n\t area.y0 = function(_) {\n\t return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant$1(+_), area) : y0;\n\t };\n\t\n\t area.y1 = function(_) {\n\t return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant$1(+_), area) : y1;\n\t };\n\t\n\t area.lineX0 =\n\t area.lineY0 = function() {\n\t return arealine().x(x0).y(y0);\n\t };\n\t\n\t area.lineY1 = function() {\n\t return arealine().x(x0).y(y1);\n\t };\n\t\n\t area.lineX1 = function() {\n\t return arealine().x(x1).y(y0);\n\t };\n\t\n\t area.defined = function(_) {\n\t return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant$1(!!_), area) : defined;\n\t };\n\t\n\t area.curve = function(_) {\n\t return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n\t };\n\t\n\t area.context = function(_) {\n\t return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n\t };\n\t\n\t return area;\n\t }\n\t\n\t function descending$1(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t }\n\t\n\t function identity$1(d) {\n\t return d;\n\t }\n\t\n\t function pie() {\n\t var value = identity$1,\n\t sortValues = descending$1,\n\t sort = null,\n\t startAngle = constant$1(0),\n\t endAngle = constant$1(tau$2),\n\t padAngle = constant$1(0);\n\t\n\t function pie(data) {\n\t var i,\n\t n = data.length,\n\t j,\n\t k,\n\t sum = 0,\n\t index = new Array(n),\n\t arcs = new Array(n),\n\t a0 = +startAngle.apply(this, arguments),\n\t da = Math.min(tau$2, Math.max(-tau$2, endAngle.apply(this, arguments) - a0)),\n\t a1,\n\t p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n\t pa = p * (da < 0 ? -1 : 1),\n\t v;\n\t\n\t for (i = 0; i < n; ++i) {\n\t if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n\t sum += v;\n\t }\n\t }\n\t\n\t // Optionally sort the arcs by previously-computed values or by data.\n\t if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n\t else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\t\n\t // Compute the arcs! They are stored in the original data's order.\n\t for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n\t j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n\t data: data[j],\n\t index: i,\n\t value: v,\n\t startAngle: a0,\n\t endAngle: a1,\n\t padAngle: p\n\t };\n\t }\n\t\n\t return arcs;\n\t }\n\t\n\t pie.value = function(_) {\n\t return arguments.length ? (value = typeof _ === \"function\" ? _ : constant$1(+_), pie) : value;\n\t };\n\t\n\t pie.sortValues = function(_) {\n\t return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n\t };\n\t\n\t pie.sort = function(_) {\n\t return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n\t };\n\t\n\t pie.startAngle = function(_) {\n\t return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant$1(+_), pie) : startAngle;\n\t };\n\t\n\t pie.endAngle = function(_) {\n\t return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant$1(+_), pie) : endAngle;\n\t };\n\t\n\t pie.padAngle = function(_) {\n\t return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant$1(+_), pie) : padAngle;\n\t };\n\t\n\t return pie;\n\t }\n\t\n\t var curveRadialLinear = curveRadial(curveLinear);\n\t\n\t function Radial(curve) {\n\t this._curve = curve;\n\t }\n\t\n\t Radial.prototype = {\n\t areaStart: function() {\n\t this._curve.areaStart();\n\t },\n\t areaEnd: function() {\n\t this._curve.areaEnd();\n\t },\n\t lineStart: function() {\n\t this._curve.lineStart();\n\t },\n\t lineEnd: function() {\n\t this._curve.lineEnd();\n\t },\n\t point: function(a, r) {\n\t this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n\t }\n\t };\n\t\n\t function curveRadial(curve) {\n\t\n\t function radial(context) {\n\t return new Radial(curve(context));\n\t }\n\t\n\t radial._curve = curve;\n\t\n\t return radial;\n\t }\n\t\n\t function radialLine(l) {\n\t var c = l.curve;\n\t\n\t l.angle = l.x, delete l.x;\n\t l.radius = l.y, delete l.y;\n\t\n\t l.curve = function(_) {\n\t return arguments.length ? c(curveRadial(_)) : c()._curve;\n\t };\n\t\n\t return l;\n\t }\n\t\n\t function radialLine$1() {\n\t return radialLine(line().curve(curveRadialLinear));\n\t }\n\t\n\t function radialArea() {\n\t var a = area$1().curve(curveRadialLinear),\n\t c = a.curve,\n\t x0 = a.lineX0,\n\t x1 = a.lineX1,\n\t y0 = a.lineY0,\n\t y1 = a.lineY1;\n\t\n\t a.angle = a.x, delete a.x;\n\t a.startAngle = a.x0, delete a.x0;\n\t a.endAngle = a.x1, delete a.x1;\n\t a.radius = a.y, delete a.y;\n\t a.innerRadius = a.y0, delete a.y0;\n\t a.outerRadius = a.y1, delete a.y1;\n\t a.lineStartAngle = function() { return radialLine(x0()); }, delete a.lineX0;\n\t a.lineEndAngle = function() { return radialLine(x1()); }, delete a.lineX1;\n\t a.lineInnerRadius = function() { return radialLine(y0()); }, delete a.lineY0;\n\t a.lineOuterRadius = function() { return radialLine(y1()); }, delete a.lineY1;\n\t\n\t a.curve = function(_) {\n\t return arguments.length ? c(curveRadial(_)) : c()._curve;\n\t };\n\t\n\t return a;\n\t }\n\t\n\t var circle = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size / pi$2);\n\t context.moveTo(r, 0);\n\t context.arc(0, 0, r, 0, tau$2);\n\t }\n\t };\n\t\n\t var cross$1 = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size / 5) / 2;\n\t context.moveTo(-3 * r, -r);\n\t context.lineTo(-r, -r);\n\t context.lineTo(-r, -3 * r);\n\t context.lineTo(r, -3 * r);\n\t context.lineTo(r, -r);\n\t context.lineTo(3 * r, -r);\n\t context.lineTo(3 * r, r);\n\t context.lineTo(r, r);\n\t context.lineTo(r, 3 * r);\n\t context.lineTo(-r, 3 * r);\n\t context.lineTo(-r, r);\n\t context.lineTo(-3 * r, r);\n\t context.closePath();\n\t }\n\t };\n\t\n\t var tan30 = Math.sqrt(1 / 3);\n\t var tan30_2 = tan30 * 2;\n\t var diamond = {\n\t draw: function(context, size) {\n\t var y = Math.sqrt(size / tan30_2),\n\t x = y * tan30;\n\t context.moveTo(0, -y);\n\t context.lineTo(x, 0);\n\t context.lineTo(0, y);\n\t context.lineTo(-x, 0);\n\t context.closePath();\n\t }\n\t };\n\t\n\t var ka = 0.89081309152928522810;\n\t var kr = Math.sin(pi$2 / 10) / Math.sin(7 * pi$2 / 10);\n\t var kx = Math.sin(tau$2 / 10) * kr;\n\t var ky = -Math.cos(tau$2 / 10) * kr;\n\t var star = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size * ka),\n\t x = kx * r,\n\t y = ky * r;\n\t context.moveTo(0, -r);\n\t context.lineTo(x, y);\n\t for (var i = 1; i < 5; ++i) {\n\t var a = tau$2 * i / 5,\n\t c = Math.cos(a),\n\t s = Math.sin(a);\n\t context.lineTo(s * r, -c * r);\n\t context.lineTo(c * x - s * y, s * x + c * y);\n\t }\n\t context.closePath();\n\t }\n\t };\n\t\n\t var square = {\n\t draw: function(context, size) {\n\t var w = Math.sqrt(size),\n\t x = -w / 2;\n\t context.rect(x, x, w, w);\n\t }\n\t };\n\t\n\t var sqrt3 = Math.sqrt(3);\n\t\n\t var triangle = {\n\t draw: function(context, size) {\n\t var y = -Math.sqrt(size / (sqrt3 * 3));\n\t context.moveTo(0, y * 2);\n\t context.lineTo(-sqrt3 * y, -y);\n\t context.lineTo(sqrt3 * y, -y);\n\t context.closePath();\n\t }\n\t };\n\t\n\t var c = -0.5;\n\t var s = Math.sqrt(3) / 2;\n\t var k = 1 / Math.sqrt(12);\n\t var a = (k / 2 + 1) * 3;\n\t var wye = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size / a),\n\t x0 = r / 2,\n\t y0 = r * k,\n\t x1 = x0,\n\t y1 = r * k + r,\n\t x2 = -x1,\n\t y2 = y1;\n\t context.moveTo(x0, y0);\n\t context.lineTo(x1, y1);\n\t context.lineTo(x2, y2);\n\t context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n\t context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n\t context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n\t context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n\t context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n\t context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n\t context.closePath();\n\t }\n\t };\n\t\n\t var symbols = [\n\t circle,\n\t cross$1,\n\t diamond,\n\t square,\n\t star,\n\t triangle,\n\t wye\n\t ];\n\t\n\t function symbol() {\n\t var type = constant$1(circle),\n\t size = constant$1(64),\n\t context = null;\n\t\n\t function symbol() {\n\t var buffer;\n\t if (!context) context = buffer = path();\n\t type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n\t if (buffer) return context = null, buffer + \"\" || null;\n\t }\n\t\n\t symbol.type = function(_) {\n\t return arguments.length ? (type = typeof _ === \"function\" ? _ : constant$1(_), symbol) : type;\n\t };\n\t\n\t symbol.size = function(_) {\n\t return arguments.length ? (size = typeof _ === \"function\" ? _ : constant$1(+_), symbol) : size;\n\t };\n\t\n\t symbol.context = function(_) {\n\t return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n\t };\n\t\n\t return symbol;\n\t }\n\t\n\t function noop() {}\n\t\n\t function point(that, x, y) {\n\t that._context.bezierCurveTo(\n\t (2 * that._x0 + that._x1) / 3,\n\t (2 * that._y0 + that._y1) / 3,\n\t (that._x0 + 2 * that._x1) / 3,\n\t (that._y0 + 2 * that._y1) / 3,\n\t (that._x0 + 4 * that._x1 + x) / 6,\n\t (that._y0 + 4 * that._y1 + y) / 6\n\t );\n\t }\n\t\n\t function Basis(context) {\n\t this._context = context;\n\t }\n\t\n\t Basis.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 =\n\t this._y0 = this._y1 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 3: point(this, this._x1, this._y1); // proceed\n\t case 2: this._context.lineTo(this._x1, this._y1); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n\t default: point(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t }\n\t };\n\t\n\t function basis(context) {\n\t return new Basis(context);\n\t }\n\t\n\t function BasisClosed(context) {\n\t this._context = context;\n\t }\n\t\n\t BasisClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n\t this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 1: {\n\t this._context.moveTo(this._x2, this._y2);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 2: {\n\t this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n\t this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 3: {\n\t this.point(this._x2, this._y2);\n\t this.point(this._x3, this._y3);\n\t this.point(this._x4, this._y4);\n\t break;\n\t }\n\t }\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n\t case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n\t case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n\t default: point(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t }\n\t };\n\t\n\t function basisClosed(context) {\n\t return new BasisClosed(context);\n\t }\n\t\n\t function BasisOpen(context) {\n\t this._context = context;\n\t }\n\t\n\t BasisOpen.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 =\n\t this._y0 = this._y1 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n\t case 3: this._point = 4; // proceed\n\t default: point(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t }\n\t };\n\t\n\t function basisOpen(context) {\n\t return new BasisOpen(context);\n\t }\n\t\n\t function Bundle(context, beta) {\n\t this._basis = new Basis(context);\n\t this._beta = beta;\n\t }\n\t\n\t Bundle.prototype = {\n\t lineStart: function() {\n\t this._x = [];\n\t this._y = [];\n\t this._basis.lineStart();\n\t },\n\t lineEnd: function() {\n\t var x = this._x,\n\t y = this._y,\n\t j = x.length - 1;\n\t\n\t if (j > 0) {\n\t var x0 = x[0],\n\t y0 = y[0],\n\t dx = x[j] - x0,\n\t dy = y[j] - y0,\n\t i = -1,\n\t t;\n\t\n\t while (++i <= j) {\n\t t = i / j;\n\t this._basis.point(\n\t this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n\t this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n\t );\n\t }\n\t }\n\t\n\t this._x = this._y = null;\n\t this._basis.lineEnd();\n\t },\n\t point: function(x, y) {\n\t this._x.push(+x);\n\t this._y.push(+y);\n\t }\n\t };\n\t\n\t var bundle = (function custom(beta) {\n\t\n\t function bundle(context) {\n\t return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n\t }\n\t\n\t bundle.beta = function(beta) {\n\t return custom(+beta);\n\t };\n\t\n\t return bundle;\n\t })(0.85);\n\t\n\t function point$1(that, x, y) {\n\t that._context.bezierCurveTo(\n\t that._x1 + that._k * (that._x2 - that._x0),\n\t that._y1 + that._k * (that._y2 - that._y0),\n\t that._x2 + that._k * (that._x1 - x),\n\t that._y2 + that._k * (that._y1 - y),\n\t that._x2,\n\t that._y2\n\t );\n\t }\n\t\n\t function Cardinal(context, tension) {\n\t this._context = context;\n\t this._k = (1 - tension) / 6;\n\t }\n\t\n\t Cardinal.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 2: this._context.lineTo(this._x2, this._y2); break;\n\t case 3: point$1(this, this._x1, this._y1); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n\t case 2: this._point = 3; // proceed\n\t default: point$1(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t };\n\t\n\t var cardinal = (function custom(tension) {\n\t\n\t function cardinal(context) {\n\t return new Cardinal(context, tension);\n\t }\n\t\n\t cardinal.tension = function(tension) {\n\t return custom(+tension);\n\t };\n\t\n\t return cardinal;\n\t })(0);\n\t\n\t function CardinalClosed(context, tension) {\n\t this._context = context;\n\t this._k = (1 - tension) / 6;\n\t }\n\t\n\t CardinalClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n\t this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 1: {\n\t this._context.moveTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 2: {\n\t this._context.lineTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 3: {\n\t this.point(this._x3, this._y3);\n\t this.point(this._x4, this._y4);\n\t this.point(this._x5, this._y5);\n\t break;\n\t }\n\t }\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n\t case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n\t case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n\t default: point$1(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t };\n\t\n\t var cardinalClosed = (function custom(tension) {\n\t\n\t function cardinal(context) {\n\t return new CardinalClosed(context, tension);\n\t }\n\t\n\t cardinal.tension = function(tension) {\n\t return custom(+tension);\n\t };\n\t\n\t return cardinal;\n\t })(0);\n\t\n\t function CardinalOpen(context, tension) {\n\t this._context = context;\n\t this._k = (1 - tension) / 6;\n\t }\n\t\n\t CardinalOpen.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n\t case 3: this._point = 4; // proceed\n\t default: point$1(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t };\n\t\n\t var cardinalOpen = (function custom(tension) {\n\t\n\t function cardinal(context) {\n\t return new CardinalOpen(context, tension);\n\t }\n\t\n\t cardinal.tension = function(tension) {\n\t return custom(+tension);\n\t };\n\t\n\t return cardinal;\n\t })(0);\n\t\n\t function point$2(that, x, y) {\n\t var x1 = that._x1,\n\t y1 = that._y1,\n\t x2 = that._x2,\n\t y2 = that._y2;\n\t\n\t if (that._l01_a > epsilon$1) {\n\t var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n\t n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n\t x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n\t y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n\t }\n\t\n\t if (that._l23_a > epsilon$1) {\n\t var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n\t m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n\t x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n\t y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n\t }\n\t\n\t that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n\t }\n\t\n\t function CatmullRom(context, alpha) {\n\t this._context = context;\n\t this._alpha = alpha;\n\t }\n\t\n\t CatmullRom.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._l01_a = this._l12_a = this._l23_a =\n\t this._l01_2a = this._l12_2a = this._l23_2a =\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 2: this._context.lineTo(this._x2, this._y2); break;\n\t case 3: this.point(this, this._x2, this._y2); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t\n\t if (this._point) {\n\t var x23 = this._x2 - x,\n\t y23 = this._y2 - y;\n\t this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n\t }\n\t\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; // proceed\n\t default: point$2(this, x, y); break;\n\t }\n\t\n\t this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n\t this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t };\n\t\n\t var catmullRom = (function custom(alpha) {\n\t\n\t function catmullRom(context) {\n\t return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n\t }\n\t\n\t catmullRom.alpha = function(alpha) {\n\t return custom(+alpha);\n\t };\n\t\n\t return catmullRom;\n\t })(0.5);\n\t\n\t function CatmullRomClosed(context, alpha) {\n\t this._context = context;\n\t this._alpha = alpha;\n\t }\n\t\n\t CatmullRomClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n\t this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n\t this._l01_a = this._l12_a = this._l23_a =\n\t this._l01_2a = this._l12_2a = this._l23_2a =\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 1: {\n\t this._context.moveTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 2: {\n\t this._context.lineTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 3: {\n\t this.point(this._x3, this._y3);\n\t this.point(this._x4, this._y4);\n\t this.point(this._x5, this._y5);\n\t break;\n\t }\n\t }\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t\n\t if (this._point) {\n\t var x23 = this._x2 - x,\n\t y23 = this._y2 - y;\n\t this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n\t }\n\t\n\t switch (this._point) {\n\t case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n\t case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n\t case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n\t default: point$2(this, x, y); break;\n\t }\n\t\n\t this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n\t this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t };\n\t\n\t var catmullRomClosed = (function custom(alpha) {\n\t\n\t function catmullRom(context) {\n\t return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n\t }\n\t\n\t catmullRom.alpha = function(alpha) {\n\t return custom(+alpha);\n\t };\n\t\n\t return catmullRom;\n\t })(0.5);\n\t\n\t function CatmullRomOpen(context, alpha) {\n\t this._context = context;\n\t this._alpha = alpha;\n\t }\n\t\n\t CatmullRomOpen.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._l01_a = this._l12_a = this._l23_a =\n\t this._l01_2a = this._l12_2a = this._l23_2a =\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t\n\t if (this._point) {\n\t var x23 = this._x2 - x,\n\t y23 = this._y2 - y;\n\t this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n\t }\n\t\n\t switch (this._point) {\n\t case 0: this._point = 1; break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n\t case 3: this._point = 4; // proceed\n\t default: point$2(this, x, y); break;\n\t }\n\t\n\t this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n\t this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t };\n\t\n\t var catmullRomOpen = (function custom(alpha) {\n\t\n\t function catmullRom(context) {\n\t return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n\t }\n\t\n\t catmullRom.alpha = function(alpha) {\n\t return custom(+alpha);\n\t };\n\t\n\t return catmullRom;\n\t })(0.5);\n\t\n\t function LinearClosed(context) {\n\t this._context = context;\n\t }\n\t\n\t LinearClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._point) this._context.closePath();\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t if (this._point) this._context.lineTo(x, y);\n\t else this._point = 1, this._context.moveTo(x, y);\n\t }\n\t };\n\t\n\t function linearClosed(context) {\n\t return new LinearClosed(context);\n\t }\n\t\n\t function sign(x) {\n\t return x < 0 ? -1 : 1;\n\t }\n\t\n\t // Calculate the slopes of the tangents (Hermite-type interpolation) based on\n\t // the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n\t // Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n\t // NOV(II), P. 443, 1990.\n\t function slope3(that, x2, y2) {\n\t var h0 = that._x1 - that._x0,\n\t h1 = x2 - that._x1,\n\t s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n\t s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n\t p = (s0 * h1 + s1 * h0) / (h0 + h1);\n\t return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n\t }\n\t\n\t // Calculate a one-sided slope.\n\t function slope2(that, t) {\n\t var h = that._x1 - that._x0;\n\t return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n\t }\n\t\n\t // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n\t // \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n\t // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\n\t function point$3(that, t0, t1) {\n\t var x0 = that._x0,\n\t y0 = that._y0,\n\t x1 = that._x1,\n\t y1 = that._y1,\n\t dx = (x1 - x0) / 3;\n\t that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n\t }\n\t\n\t function MonotoneX(context) {\n\t this._context = context;\n\t }\n\t\n\t MonotoneX.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 =\n\t this._y0 = this._y1 =\n\t this._t0 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 2: this._context.lineTo(this._x1, this._y1); break;\n\t case 3: point$3(this, this._t0, slope2(this, this._t0)); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t var t1 = NaN;\n\t\n\t x = +x, y = +y;\n\t if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; point$3(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n\t default: point$3(this, this._t0, t1 = slope3(this, x, y)); break;\n\t }\n\t\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t this._t0 = t1;\n\t }\n\t }\n\t\n\t function MonotoneY(context) {\n\t this._context = new ReflectContext(context);\n\t }\n\t\n\t (MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n\t MonotoneX.prototype.point.call(this, y, x);\n\t };\n\t\n\t function ReflectContext(context) {\n\t this._context = context;\n\t }\n\t\n\t ReflectContext.prototype = {\n\t moveTo: function(x, y) { this._context.moveTo(y, x); },\n\t closePath: function() { this._context.closePath(); },\n\t lineTo: function(x, y) { this._context.lineTo(y, x); },\n\t bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n\t };\n\t\n\t function monotoneX(context) {\n\t return new MonotoneX(context);\n\t }\n\t\n\t function monotoneY(context) {\n\t return new MonotoneY(context);\n\t }\n\t\n\t function Natural(context) {\n\t this._context = context;\n\t }\n\t\n\t Natural.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x = [];\n\t this._y = [];\n\t },\n\t lineEnd: function() {\n\t var x = this._x,\n\t y = this._y,\n\t n = x.length;\n\t\n\t if (n) {\n\t this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n\t if (n === 2) {\n\t this._context.lineTo(x[1], y[1]);\n\t } else {\n\t var px = controlPoints(x),\n\t py = controlPoints(y);\n\t for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n\t this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n\t }\n\t }\n\t }\n\t\n\t if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t this._x = this._y = null;\n\t },\n\t point: function(x, y) {\n\t this._x.push(+x);\n\t this._y.push(+y);\n\t }\n\t };\n\t\n\t // See https://www.particleincell.com/2012/bezier-splines/ for derivation.\n\t function controlPoints(x) {\n\t var i,\n\t n = x.length - 1,\n\t m,\n\t a = new Array(n),\n\t b = new Array(n),\n\t r = new Array(n);\n\t a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n\t for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n\t a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n\t for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n\t a[n - 1] = r[n - 1] / b[n - 1];\n\t for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n\t b[n - 1] = (x[n] + a[n - 1]) / 2;\n\t for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n\t return [a, b];\n\t }\n\t\n\t function natural(context) {\n\t return new Natural(context);\n\t }\n\t\n\t function Step(context, t) {\n\t this._context = context;\n\t this._t = t;\n\t }\n\t\n\t Step.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x = this._y = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; // proceed\n\t default: {\n\t if (this._t <= 0) {\n\t this._context.lineTo(this._x, y);\n\t this._context.lineTo(x, y);\n\t } else {\n\t var x1 = this._x * (1 - this._t) + x * this._t;\n\t this._context.lineTo(x1, this._y);\n\t this._context.lineTo(x1, y);\n\t }\n\t break;\n\t }\n\t }\n\t this._x = x, this._y = y;\n\t }\n\t };\n\t\n\t function step(context) {\n\t return new Step(context, 0.5);\n\t }\n\t\n\t function stepBefore(context) {\n\t return new Step(context, 0);\n\t }\n\t\n\t function stepAfter(context) {\n\t return new Step(context, 1);\n\t }\n\t\n\t var slice$2 = Array.prototype.slice;\n\t\n\t function none(series, order) {\n\t if (!((n = series.length) > 1)) return;\n\t for (var i = 1, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n\t s0 = s1, s1 = series[order[i]];\n\t for (var j = 0; j < m; ++j) {\n\t s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n\t }\n\t }\n\t }\n\t\n\t function none$1(series) {\n\t var n = series.length, o = new Array(n);\n\t while (--n >= 0) o[n] = n;\n\t return o;\n\t }\n\t\n\t function stackValue(d, key) {\n\t return d[key];\n\t }\n\t\n\t function stack() {\n\t var keys = constant$1([]),\n\t order = none$1,\n\t offset = none,\n\t value = stackValue;\n\t\n\t function stack(data) {\n\t var kz = keys.apply(this, arguments),\n\t i,\n\t m = data.length,\n\t n = kz.length,\n\t sz = new Array(n),\n\t oz;\n\t\n\t for (i = 0; i < n; ++i) {\n\t for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n\t si[j] = sij = [0, +value(data[j], ki, j, data)];\n\t sij.data = data[j];\n\t }\n\t si.key = ki;\n\t }\n\t\n\t for (i = 0, oz = order(sz); i < n; ++i) {\n\t sz[oz[i]].index = i;\n\t }\n\t\n\t offset(sz, oz);\n\t return sz;\n\t }\n\t\n\t stack.keys = function(_) {\n\t return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant$1(slice$2.call(_)), stack) : keys;\n\t };\n\t\n\t stack.value = function(_) {\n\t return arguments.length ? (value = typeof _ === \"function\" ? _ : constant$1(+_), stack) : value;\n\t };\n\t\n\t stack.order = function(_) {\n\t return arguments.length ? (order = _ == null ? none$1 : typeof _ === \"function\" ? _ : constant$1(slice$2.call(_)), stack) : order;\n\t };\n\t\n\t stack.offset = function(_) {\n\t return arguments.length ? (offset = _ == null ? none : _, stack) : offset;\n\t };\n\t\n\t return stack;\n\t }\n\t\n\t function expand(series, order) {\n\t if (!((n = series.length) > 0)) return;\n\t for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n\t for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n\t if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n\t }\n\t none(series, order);\n\t }\n\t\n\t function silhouette(series, order) {\n\t if (!((n = series.length) > 0)) return;\n\t for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n\t for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n\t s0[j][1] += s0[j][0] = -y / 2;\n\t }\n\t none(series, order);\n\t }\n\t\n\t function wiggle(series, order) {\n\t if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n\t for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n\t for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n\t var si = series[order[i]],\n\t sij0 = si[j][1] || 0,\n\t sij1 = si[j - 1][1] || 0,\n\t s3 = (sij0 - sij1) / 2;\n\t for (var k = 0; k < i; ++k) {\n\t var sk = series[order[k]],\n\t skj0 = sk[j][1] || 0,\n\t skj1 = sk[j - 1][1] || 0;\n\t s3 += skj0 - skj1;\n\t }\n\t s1 += sij0, s2 += s3 * sij0;\n\t }\n\t s0[j - 1][1] += s0[j - 1][0] = y;\n\t if (s1) y -= s2 / s1;\n\t }\n\t s0[j - 1][1] += s0[j - 1][0] = y;\n\t none(series, order);\n\t }\n\t\n\t function ascending$1(series) {\n\t var sums = series.map(sum$1);\n\t return none$1(series).sort(function(a, b) { return sums[a] - sums[b]; });\n\t }\n\t\n\t function sum$1(series) {\n\t var s = 0, i = -1, n = series.length, v;\n\t while (++i < n) if (v = +series[i][1]) s += v;\n\t return s;\n\t }\n\t\n\t function descending$2(series) {\n\t return ascending$1(series).reverse();\n\t }\n\t\n\t function insideOut(series) {\n\t var n = series.length,\n\t i,\n\t j,\n\t sums = series.map(sum$1),\n\t order = none$1(series).sort(function(a, b) { return sums[b] - sums[a]; }),\n\t top = 0,\n\t bottom = 0,\n\t tops = [],\n\t bottoms = [];\n\t\n\t for (i = 0; i < n; ++i) {\n\t j = order[i];\n\t if (top < bottom) {\n\t top += sums[j];\n\t tops.push(j);\n\t } else {\n\t bottom += sums[j];\n\t bottoms.push(j);\n\t }\n\t }\n\t\n\t return bottoms.reverse().concat(tops);\n\t }\n\t\n\t function reverse(series) {\n\t return none$1(series).reverse();\n\t }\n\t\n\t function define(constructor, factory, prototype) {\n\t constructor.prototype = factory.prototype = prototype;\n\t prototype.constructor = constructor;\n\t }\n\t\n\t function extend(parent, definition) {\n\t var prototype = Object.create(parent.prototype);\n\t for (var key in definition) prototype[key] = definition[key];\n\t return prototype;\n\t }\n\t\n\t function Color() {}\n\t\n\t var darker = 0.7;\n\t var brighter = 1 / darker;\n\t\n\t var reHex3 = /^#([0-9a-f]{3})$/;\n\t var reHex6 = /^#([0-9a-f]{6})$/;\n\t var reRgbInteger = /^rgb\\(\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*\\)$/;\n\t var reRgbPercent = /^rgb\\(\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n\t var reRgbaInteger = /^rgba\\(\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+)\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\t var reRgbaPercent = /^rgba\\(\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\t var reHslPercent = /^hsl\\(\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n\t var reHslaPercent = /^hsla\\(\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)%\\s*,\\s*([-+]?\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\t var named = {\n\t aliceblue: 0xf0f8ff,\n\t antiquewhite: 0xfaebd7,\n\t aqua: 0x00ffff,\n\t aquamarine: 0x7fffd4,\n\t azure: 0xf0ffff,\n\t beige: 0xf5f5dc,\n\t bisque: 0xffe4c4,\n\t black: 0x000000,\n\t blanchedalmond: 0xffebcd,\n\t blue: 0x0000ff,\n\t blueviolet: 0x8a2be2,\n\t brown: 0xa52a2a,\n\t burlywood: 0xdeb887,\n\t cadetblue: 0x5f9ea0,\n\t chartreuse: 0x7fff00,\n\t chocolate: 0xd2691e,\n\t coral: 0xff7f50,\n\t cornflowerblue: 0x6495ed,\n\t cornsilk: 0xfff8dc,\n\t crimson: 0xdc143c,\n\t cyan: 0x00ffff,\n\t darkblue: 0x00008b,\n\t darkcyan: 0x008b8b,\n\t darkgoldenrod: 0xb8860b,\n\t darkgray: 0xa9a9a9,\n\t darkgreen: 0x006400,\n\t darkgrey: 0xa9a9a9,\n\t darkkhaki: 0xbdb76b,\n\t darkmagenta: 0x8b008b,\n\t darkolivegreen: 0x556b2f,\n\t darkorange: 0xff8c00,\n\t darkorchid: 0x9932cc,\n\t darkred: 0x8b0000,\n\t darksalmon: 0xe9967a,\n\t darkseagreen: 0x8fbc8f,\n\t darkslateblue: 0x483d8b,\n\t darkslategray: 0x2f4f4f,\n\t darkslategrey: 0x2f4f4f,\n\t darkturquoise: 0x00ced1,\n\t darkviolet: 0x9400d3,\n\t deeppink: 0xff1493,\n\t deepskyblue: 0x00bfff,\n\t dimgray: 0x696969,\n\t dimgrey: 0x696969,\n\t dodgerblue: 0x1e90ff,\n\t firebrick: 0xb22222,\n\t floralwhite: 0xfffaf0,\n\t forestgreen: 0x228b22,\n\t fuchsia: 0xff00ff,\n\t gainsboro: 0xdcdcdc,\n\t ghostwhite: 0xf8f8ff,\n\t gold: 0xffd700,\n\t goldenrod: 0xdaa520,\n\t gray: 0x808080,\n\t green: 0x008000,\n\t greenyellow: 0xadff2f,\n\t grey: 0x808080,\n\t honeydew: 0xf0fff0,\n\t hotpink: 0xff69b4,\n\t indianred: 0xcd5c5c,\n\t indigo: 0x4b0082,\n\t ivory: 0xfffff0,\n\t khaki: 0xf0e68c,\n\t lavender: 0xe6e6fa,\n\t lavenderblush: 0xfff0f5,\n\t lawngreen: 0x7cfc00,\n\t lemonchiffon: 0xfffacd,\n\t lightblue: 0xadd8e6,\n\t lightcoral: 0xf08080,\n\t lightcyan: 0xe0ffff,\n\t lightgoldenrodyellow: 0xfafad2,\n\t lightgray: 0xd3d3d3,\n\t lightgreen: 0x90ee90,\n\t lightgrey: 0xd3d3d3,\n\t lightpink: 0xffb6c1,\n\t lightsalmon: 0xffa07a,\n\t lightseagreen: 0x20b2aa,\n\t lightskyblue: 0x87cefa,\n\t lightslategray: 0x778899,\n\t lightslategrey: 0x778899,\n\t lightsteelblue: 0xb0c4de,\n\t lightyellow: 0xffffe0,\n\t lime: 0x00ff00,\n\t limegreen: 0x32cd32,\n\t linen: 0xfaf0e6,\n\t magenta: 0xff00ff,\n\t maroon: 0x800000,\n\t mediumaquamarine: 0x66cdaa,\n\t mediumblue: 0x0000cd,\n\t mediumorchid: 0xba55d3,\n\t mediumpurple: 0x9370db,\n\t mediumseagreen: 0x3cb371,\n\t mediumslateblue: 0x7b68ee,\n\t mediumspringgreen: 0x00fa9a,\n\t mediumturquoise: 0x48d1cc,\n\t mediumvioletred: 0xc71585,\n\t midnightblue: 0x191970,\n\t mintcream: 0xf5fffa,\n\t mistyrose: 0xffe4e1,\n\t moccasin: 0xffe4b5,\n\t navajowhite: 0xffdead,\n\t navy: 0x000080,\n\t oldlace: 0xfdf5e6,\n\t olive: 0x808000,\n\t olivedrab: 0x6b8e23,\n\t orange: 0xffa500,\n\t orangered: 0xff4500,\n\t orchid: 0xda70d6,\n\t palegoldenrod: 0xeee8aa,\n\t palegreen: 0x98fb98,\n\t paleturquoise: 0xafeeee,\n\t palevioletred: 0xdb7093,\n\t papayawhip: 0xffefd5,\n\t peachpuff: 0xffdab9,\n\t peru: 0xcd853f,\n\t pink: 0xffc0cb,\n\t plum: 0xdda0dd,\n\t powderblue: 0xb0e0e6,\n\t purple: 0x800080,\n\t rebeccapurple: 0x663399,\n\t red: 0xff0000,\n\t rosybrown: 0xbc8f8f,\n\t royalblue: 0x4169e1,\n\t saddlebrown: 0x8b4513,\n\t salmon: 0xfa8072,\n\t sandybrown: 0xf4a460,\n\t seagreen: 0x2e8b57,\n\t seashell: 0xfff5ee,\n\t sienna: 0xa0522d,\n\t silver: 0xc0c0c0,\n\t skyblue: 0x87ceeb,\n\t slateblue: 0x6a5acd,\n\t slategray: 0x708090,\n\t slategrey: 0x708090,\n\t snow: 0xfffafa,\n\t springgreen: 0x00ff7f,\n\t steelblue: 0x4682b4,\n\t tan: 0xd2b48c,\n\t teal: 0x008080,\n\t thistle: 0xd8bfd8,\n\t tomato: 0xff6347,\n\t turquoise: 0x40e0d0,\n\t violet: 0xee82ee,\n\t wheat: 0xf5deb3,\n\t white: 0xffffff,\n\t whitesmoke: 0xf5f5f5,\n\t yellow: 0xffff00,\n\t yellowgreen: 0x9acd32\n\t };\n\t\n\t define(Color, color, {\n\t displayable: function() {\n\t return this.rgb().displayable();\n\t },\n\t toString: function() {\n\t return this.rgb() + \"\";\n\t }\n\t });\n\t\n\t function color(format) {\n\t var m;\n\t format = (format + \"\").trim().toLowerCase();\n\t return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n\t : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n\t : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n\t : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n\t : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n\t : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n\t : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n\t : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n\t : named.hasOwnProperty(format) ? rgbn(named[format])\n\t : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n\t : null;\n\t }\n\t\n\t function rgbn(n) {\n\t return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n\t }\n\t\n\t function rgba(r, g, b, a) {\n\t if (a <= 0) r = g = b = NaN;\n\t return new Rgb(r, g, b, a);\n\t }\n\t\n\t function rgbConvert(o) {\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Rgb;\n\t o = o.rgb();\n\t return new Rgb(o.r, o.g, o.b, o.opacity);\n\t }\n\t\n\t function colorRgb(r, g, b, opacity) {\n\t return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Rgb(r, g, b, opacity) {\n\t this.r = +r;\n\t this.g = +g;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Rgb, colorRgb, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t rgb: function() {\n\t return this;\n\t },\n\t displayable: function() {\n\t return (0 <= this.r && this.r <= 255)\n\t && (0 <= this.g && this.g <= 255)\n\t && (0 <= this.b && this.b <= 255)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t },\n\t toString: function() {\n\t var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n\t return (a === 1 ? \"rgb(\" : \"rgba(\")\n\t + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n\t + (a === 1 ? \")\" : \", \" + a + \")\");\n\t }\n\t }));\n\t\n\t function hsla(h, s, l, a) {\n\t if (a <= 0) h = s = l = NaN;\n\t else if (l <= 0 || l >= 1) h = s = NaN;\n\t else if (s <= 0) h = NaN;\n\t return new Hsl(h, s, l, a);\n\t }\n\t\n\t function hslConvert(o) {\n\t if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Hsl;\n\t if (o instanceof Hsl) return o;\n\t o = o.rgb();\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t min = Math.min(r, g, b),\n\t max = Math.max(r, g, b),\n\t h = NaN,\n\t s = max - min,\n\t l = (max + min) / 2;\n\t if (s) {\n\t if (r === max) h = (g - b) / s + (g < b) * 6;\n\t else if (g === max) h = (b - r) / s + 2;\n\t else h = (r - g) / s + 4;\n\t s /= l < 0.5 ? max + min : 2 - max - min;\n\t h *= 60;\n\t } else {\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new Hsl(h, s, l, o.opacity);\n\t }\n\t\n\t function colorHsl(h, s, l, opacity) {\n\t return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Hsl(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Hsl, colorHsl, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = this.h % 360 + (this.h < 0) * 360,\n\t s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n\t l = this.l,\n\t m2 = l + (l < 0.5 ? l : 1 - l) * s,\n\t m1 = 2 * l - m2;\n\t return new Rgb(\n\t hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n\t hsl2rgb(h, m1, m2),\n\t hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n\t this.opacity\n\t );\n\t },\n\t displayable: function() {\n\t return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n\t && (0 <= this.l && this.l <= 1)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t }\n\t }));\n\t\n\t /* From FvD 13.37, CSS Color Module Level 3 */\n\t function hsl2rgb(h, m1, m2) {\n\t return (h < 60 ? m1 + (m2 - m1) * h / 60\n\t : h < 180 ? m2\n\t : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n\t : m1) * 255;\n\t }\n\t\n\t var deg2rad = Math.PI / 180;\n\t var rad2deg = 180 / Math.PI;\n\t\n\t var Kn = 18;\n\t var Xn = 0.950470;\n\t var Yn = 1;\n\t var Zn = 1.088830;\n\t var t0 = 4 / 29;\n\t var t1 = 6 / 29;\n\t var t2 = 3 * t1 * t1;\n\t var t3 = t1 * t1 * t1;\n\t function labConvert(o) {\n\t if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n\t if (o instanceof Hcl) {\n\t var h = o.h * deg2rad;\n\t return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n\t }\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var b = rgb2xyz(o.r),\n\t a = rgb2xyz(o.g),\n\t l = rgb2xyz(o.b),\n\t x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n\t y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n\t z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\t return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n\t }\n\t\n\t function lab(l, a, b, opacity) {\n\t return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Lab(l, a, b, opacity) {\n\t this.l = +l;\n\t this.a = +a;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Lab, lab, extend(Color, {\n\t brighter: function(k) {\n\t return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t rgb: function() {\n\t var y = (this.l + 16) / 116,\n\t x = isNaN(this.a) ? y : y + this.a / 500,\n\t z = isNaN(this.b) ? y : y - this.b / 200;\n\t y = Yn * lab2xyz(y);\n\t x = Xn * lab2xyz(x);\n\t z = Zn * lab2xyz(z);\n\t return new Rgb(\n\t xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n\t xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n\t xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n\t this.opacity\n\t );\n\t }\n\t }));\n\t\n\t function xyz2lab(t) {\n\t return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n\t }\n\t\n\t function lab2xyz(t) {\n\t return t > t1 ? t * t * t : t2 * (t - t0);\n\t }\n\t\n\t function xyz2rgb(x) {\n\t return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n\t }\n\t\n\t function rgb2xyz(x) {\n\t return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n\t }\n\t\n\t function hclConvert(o) {\n\t if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n\t if (!(o instanceof Lab)) o = labConvert(o);\n\t var h = Math.atan2(o.b, o.a) * rad2deg;\n\t return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n\t }\n\t\n\t function colorHcl(h, c, l, opacity) {\n\t return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Hcl(h, c, l, opacity) {\n\t this.h = +h;\n\t this.c = +c;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Hcl, colorHcl, extend(Color, {\n\t brighter: function(k) {\n\t return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t rgb: function() {\n\t return labConvert(this).rgb();\n\t }\n\t }));\n\t\n\t var A = -0.14861;\n\t var B = +1.78277;\n\t var C = -0.29227;\n\t var D = -0.90649;\n\t var E = +1.97294;\n\t var ED = E * D;\n\t var EB = E * B;\n\t var BC_DA = B * C - D * A;\n\t function cubehelixConvert(o) {\n\t if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n\t bl = b - l,\n\t k = (E * (g - l) - C * bl) / D,\n\t s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n\t h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n\t return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n\t }\n\t\n\t function cubehelix(h, s, l, opacity) {\n\t return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n\t }\n\t\n\t function Cubehelix(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t }\n\t\n\t define(Cubehelix, cubehelix, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n\t l = +this.l,\n\t a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n\t cosh = Math.cos(h),\n\t sinh = Math.sin(h);\n\t return new Rgb(\n\t 255 * (l + a * (A * cosh + B * sinh)),\n\t 255 * (l + a * (C * cosh + D * sinh)),\n\t 255 * (l + a * (E * cosh)),\n\t this.opacity\n\t );\n\t }\n\t }));\n\t\n\t function basis$1(t1, v0, v1, v2, v3) {\n\t var t2 = t1 * t1, t3 = t2 * t1;\n\t return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n\t + (4 - 6 * t2 + 3 * t3) * v1\n\t + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n\t + t3 * v3) / 6;\n\t }\n\t\n\t function basis$2(values) {\n\t var n = values.length - 1;\n\t return function(t) {\n\t var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n\t v1 = values[i],\n\t v2 = values[i + 1],\n\t v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n\t v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n\t return basis$1((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t }\n\t\n\t function basisClosed$1(values) {\n\t var n = values.length;\n\t return function(t) {\n\t var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n\t v0 = values[(i + n - 1) % n],\n\t v1 = values[i % n],\n\t v2 = values[(i + 1) % n],\n\t v3 = values[(i + 2) % n];\n\t return basis$1((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t }\n\t\n\t function constant$2(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function linear$1(a, d) {\n\t return function(t) {\n\t return a + t * d;\n\t };\n\t }\n\t\n\t function exponential$1(a, b, y) {\n\t return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n\t return Math.pow(a + t * b, y);\n\t };\n\t }\n\t\n\t function hue(a, b) {\n\t var d = b - a;\n\t return d ? linear$1(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$2(isNaN(a) ? b : a);\n\t }\n\t\n\t function gamma(y) {\n\t return (y = +y) === 1 ? nogamma : function(a, b) {\n\t return b - a ? exponential$1(a, b, y) : constant$2(isNaN(a) ? b : a);\n\t };\n\t }\n\t\n\t function nogamma(a, b) {\n\t var d = b - a;\n\t return d ? linear$1(a, d) : constant$2(isNaN(a) ? b : a);\n\t }\n\t\n\t var interpolateRgb = (function rgbGamma(y) {\n\t var color = gamma(y);\n\t\n\t function rgb(start, end) {\n\t var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n\t g = color(start.g, end.g),\n\t b = color(start.b, end.b),\n\t opacity = color(start.opacity, end.opacity);\n\t return function(t) {\n\t start.r = r(t);\n\t start.g = g(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t rgb.gamma = rgbGamma;\n\t\n\t return rgb;\n\t })(1);\n\t\n\t function rgbSpline(spline) {\n\t return function(colors) {\n\t var n = colors.length,\n\t r = new Array(n),\n\t g = new Array(n),\n\t b = new Array(n),\n\t i, color;\n\t for (i = 0; i < n; ++i) {\n\t color = colorRgb(colors[i]);\n\t r[i] = color.r || 0;\n\t g[i] = color.g || 0;\n\t b[i] = color.b || 0;\n\t }\n\t r = spline(r);\n\t g = spline(g);\n\t b = spline(b);\n\t color.opacity = 1;\n\t return function(t) {\n\t color.r = r(t);\n\t color.g = g(t);\n\t color.b = b(t);\n\t return color + \"\";\n\t };\n\t };\n\t }\n\t\n\t var rgbBasis = rgbSpline(basis$2);\n\t var rgbBasisClosed = rgbSpline(basisClosed$1);\n\t\n\t function array$1(a, b) {\n\t var nb = b ? b.length : 0,\n\t na = a ? Math.min(nb, a.length) : 0,\n\t x = new Array(nb),\n\t c = new Array(nb),\n\t i;\n\t\n\t for (i = 0; i < na; ++i) x[i] = interpolate(a[i], b[i]);\n\t for (; i < nb; ++i) c[i] = b[i];\n\t\n\t return function(t) {\n\t for (i = 0; i < na; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t }\n\t\n\t function date(a, b) {\n\t var d = new Date;\n\t return a = +a, b -= a, function(t) {\n\t return d.setTime(a + b * t), d;\n\t };\n\t }\n\t\n\t function interpolateNumber(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return a + b * t;\n\t };\n\t }\n\t\n\t function object(a, b) {\n\t var i = {},\n\t c = {},\n\t k;\n\t\n\t if (a === null || typeof a !== \"object\") a = {};\n\t if (b === null || typeof b !== \"object\") b = {};\n\t\n\t for (k in b) {\n\t if (k in a) {\n\t i[k] = interpolate(a[k], b[k]);\n\t } else {\n\t c[k] = b[k];\n\t }\n\t }\n\t\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t }\n\t\n\t var reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\n\t var reB = new RegExp(reA.source, \"g\");\n\t function zero(b) {\n\t return function() {\n\t return b;\n\t };\n\t }\n\t\n\t function one(b) {\n\t return function(t) {\n\t return b(t) + \"\";\n\t };\n\t }\n\t\n\t function interpolateString(a, b) {\n\t var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n\t am, // current match in a\n\t bm, // current match in b\n\t bs, // string preceding current number in b, if any\n\t i = -1, // index in s\n\t s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t\n\t // Coerce inputs to strings.\n\t a = a + \"\", b = b + \"\";\n\t\n\t // Interpolate pairs of numbers in a & b.\n\t while ((am = reA.exec(a))\n\t && (bm = reB.exec(b))) {\n\t if ((bs = bm.index) > bi) { // a string precedes the next number in b\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n\t if (s[i]) s[i] += bm; // coalesce with previous string\n\t else s[++i] = bm;\n\t } else { // interpolate non-matching numbers\n\t s[++i] = null;\n\t q.push({i: i, x: interpolateNumber(am, bm)});\n\t }\n\t bi = reB.lastIndex;\n\t }\n\t\n\t // Add remains of b.\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t\n\t // Special optimization for only a single match.\n\t // Otherwise, interpolate each of the numbers and rejoin the string.\n\t return s.length < 2 ? (q[0]\n\t ? one(q[0].x)\n\t : zero(b))\n\t : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t }\n\t\n\t function interpolate(a, b) {\n\t var t = typeof b, c;\n\t return b == null || t === \"boolean\" ? constant$2(b)\n\t : (t === \"number\" ? interpolateNumber\n\t : t === \"string\" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString)\n\t : b instanceof color ? interpolateRgb\n\t : b instanceof Date ? date\n\t : Array.isArray(b) ? array$1\n\t : isNaN(b) ? object\n\t : interpolateNumber)(a, b);\n\t }\n\t\n\t function interpolateRound(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t }\n\t\n\t var degrees = 180 / Math.PI;\n\t\n\t var identity$2 = {\n\t translateX: 0,\n\t translateY: 0,\n\t rotate: 0,\n\t skewX: 0,\n\t scaleX: 1,\n\t scaleY: 1\n\t };\n\t\n\t function decompose(a, b, c, d, e, f) {\n\t var scaleX, scaleY, skewX;\n\t if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n\t if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n\t if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n\t if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n\t return {\n\t translateX: e,\n\t translateY: f,\n\t rotate: Math.atan2(b, a) * degrees,\n\t skewX: Math.atan(skewX) * degrees,\n\t scaleX: scaleX,\n\t scaleY: scaleY\n\t };\n\t }\n\t\n\t var cssNode;\n\t var cssRoot;\n\t var cssView;\n\t var svgNode;\n\t function parseCss(value) {\n\t if (value === \"none\") return identity$2;\n\t if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n\t cssNode.style.transform = value;\n\t value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n\t cssRoot.removeChild(cssNode);\n\t value = value.slice(7, -1).split(\",\");\n\t return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n\t }\n\t\n\t function parseSvg(value) {\n\t if (value == null) return identity$2;\n\t if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n\t svgNode.setAttribute(\"transform\", value);\n\t if (!(value = svgNode.transform.baseVal.consolidate())) return identity$2;\n\t value = value.matrix;\n\t return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n\t }\n\t\n\t function interpolateTransform(parse, pxComma, pxParen, degParen) {\n\t\n\t function pop(s) {\n\t return s.length ? s.pop() + \" \" : \"\";\n\t }\n\t\n\t function translate(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n\t q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)});\n\t } else if (xb || yb) {\n\t s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n\t }\n\t }\n\t\n\t function rotate(a, b, s, q) {\n\t if (a !== b) {\n\t if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n\t q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: interpolateNumber(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"rotate(\" + b + degParen);\n\t }\n\t }\n\t\n\t function skewX(a, b, s, q) {\n\t if (a !== b) {\n\t q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: interpolateNumber(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"skewX(\" + b + degParen);\n\t }\n\t }\n\t\n\t function scale(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)});\n\t } else if (xb !== 1 || yb !== 1) {\n\t s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n\t }\n\t }\n\t\n\t return function(a, b) {\n\t var s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t a = parse(a), b = parse(b);\n\t translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n\t rotate(a.rotate, b.rotate, s, q);\n\t skewX(a.skewX, b.skewX, s, q);\n\t scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n\t a = b = null; // gc\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t };\n\t }\n\t\n\t var interpolateTransform$1 = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\n\t var interpolateTransform$2 = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\t\n\t var rho = Math.SQRT2;\n\t var rho2 = 2;\n\t var rho4 = 4;\n\t var epsilon2 = 1e-12;\n\t function cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t }\n\t\n\t function sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t }\n\t\n\t function tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t }\n\t\n\t // p0 = [ux0, uy0, w0]\n\t // p1 = [ux1, uy1, w1]\n\t function interpolateZoom(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n\t ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n\t dx = ux1 - ux0,\n\t dy = uy1 - uy0,\n\t d2 = dx * dx + dy * dy,\n\t i,\n\t S;\n\t\n\t // Special case for u0 ≅ u1.\n\t if (d2 < epsilon2) {\n\t S = Math.log(w1 / w0) / rho;\n\t i = function(t) {\n\t return [\n\t ux0 + t * dx,\n\t uy0 + t * dy,\n\t w0 * Math.exp(rho * t * S)\n\t ];\n\t }\n\t }\n\t\n\t // General case.\n\t else {\n\t var d1 = Math.sqrt(d2),\n\t b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n\t b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n\t r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n\t r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / rho;\n\t i = function(t) {\n\t var s = t * S,\n\t coshr0 = cosh(r0),\n\t u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n\t return [\n\t ux0 + u * dx,\n\t uy0 + u * dy,\n\t w0 * coshr0 / cosh(rho * s + r0)\n\t ];\n\t }\n\t }\n\t\n\t i.duration = S * 1000;\n\t\n\t return i;\n\t }\n\t\n\t function hsl(hue) {\n\t return function(start, end) {\n\t var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t }\n\t\n\t var hsl$1 = hsl(hue);\n\t var hslLong = hsl(nogamma);\n\t\n\t function lab$1(start, end) {\n\t var l = nogamma((start = lab(start)).l, (end = lab(end)).l),\n\t a = nogamma(start.a, end.a),\n\t b = nogamma(start.b, end.b),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.l = l(t);\n\t start.a = a(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t function hcl(hue) {\n\t return function(start, end) {\n\t var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n\t c = nogamma(start.c, end.c),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.c = c(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t }\n\t\n\t var hcl$1 = hcl(hue);\n\t var hclLong = hcl(nogamma);\n\t\n\t function cubehelix$1(hue) {\n\t return (function cubehelixGamma(y) {\n\t y = +y;\n\t\n\t function cubehelix$$(start, end) {\n\t var h = hue((start = cubehelix(start)).h, (end = cubehelix(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(Math.pow(t, y));\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t cubehelix$$.gamma = cubehelixGamma;\n\t\n\t return cubehelix$$;\n\t })(1);\n\t }\n\t\n\t var cubehelix$2 = cubehelix$1(hue);\n\t var interpolateCubehelixLong = cubehelix$1(nogamma);\n\t\n\t function quantize(interpolator, n) {\n\t var samples = new Array(n);\n\t for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n\t return samples;\n\t }\n\t\n\t var noop$1 = {value: function() {}};\n\t\n\t function dispatch() {\n\t for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n\t if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n\t _[t] = [];\n\t }\n\t return new Dispatch(_);\n\t }\n\t\n\t function Dispatch(_) {\n\t this._ = _;\n\t }\n\t\n\t function parseTypenames(typenames, types) {\n\t return typenames.trim().split(/^|\\s+/).map(function(t) {\n\t var name = \"\", i = t.indexOf(\".\");\n\t if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n\t if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n\t return {type: t, name: name};\n\t });\n\t }\n\t\n\t Dispatch.prototype = dispatch.prototype = {\n\t constructor: Dispatch,\n\t on: function(typename, callback) {\n\t var _ = this._,\n\t T = parseTypenames(typename + \"\", _),\n\t t,\n\t i = -1,\n\t n = T.length;\n\t\n\t // If no callback was specified, return the callback of the given type and name.\n\t if (arguments.length < 2) {\n\t while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n\t return;\n\t }\n\t\n\t // If a type was specified, set the callback for the given type and name.\n\t // Otherwise, if a null callback was specified, remove callbacks of the given name.\n\t if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n\t while (++i < n) {\n\t if (t = (typename = T[i]).type) _[t] = set$1(_[t], typename.name, callback);\n\t else if (callback == null) for (t in _) _[t] = set$1(_[t], typename.name, null);\n\t }\n\t\n\t return this;\n\t },\n\t copy: function() {\n\t var copy = {}, _ = this._;\n\t for (var t in _) copy[t] = _[t].slice();\n\t return new Dispatch(copy);\n\t },\n\t call: function(type, that) {\n\t if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n\t if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n\t },\n\t apply: function(type, that, args) {\n\t if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n\t }\n\t };\n\t\n\t function get(type, name) {\n\t for (var i = 0, n = type.length, c; i < n; ++i) {\n\t if ((c = type[i]).name === name) {\n\t return c.value;\n\t }\n\t }\n\t }\n\t\n\t function set$1(type, name, callback) {\n\t for (var i = 0, n = type.length; i < n; ++i) {\n\t if (type[i].name === name) {\n\t type[i] = noop$1, type = type.slice(0, i).concat(type.slice(i + 1));\n\t break;\n\t }\n\t }\n\t if (callback != null) type.push({name: name, value: callback});\n\t return type;\n\t }\n\t\n\t function objectConverter(columns) {\n\t return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n\t return JSON.stringify(name) + \": d[\" + i + \"]\";\n\t }).join(\",\") + \"}\");\n\t }\n\t\n\t function customConverter(columns, f) {\n\t var object = objectConverter(columns);\n\t return function(row, i) {\n\t return f(object(row), i, columns);\n\t };\n\t }\n\t\n\t // Compute unique columns in order of discovery.\n\t function inferColumns(rows) {\n\t var columnSet = Object.create(null),\n\t columns = [];\n\t\n\t rows.forEach(function(row) {\n\t for (var column in row) {\n\t if (!(column in columnSet)) {\n\t columns.push(columnSet[column] = column);\n\t }\n\t }\n\t });\n\t\n\t return columns;\n\t }\n\t\n\t function dsv(delimiter) {\n\t var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n]\"),\n\t delimiterCode = delimiter.charCodeAt(0);\n\t\n\t function parse(text, f) {\n\t var convert, columns, rows = parseRows(text, function(row, i) {\n\t if (convert) return convert(row, i - 1);\n\t columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n\t });\n\t rows.columns = columns;\n\t return rows;\n\t }\n\t\n\t function parseRows(text, f) {\n\t var EOL = {}, // sentinel value for end-of-line\n\t EOF = {}, // sentinel value for end-of-file\n\t rows = [], // output rows\n\t N = text.length,\n\t I = 0, // current character index\n\t n = 0, // the current line number\n\t t, // the current token\n\t eol; // is the current token followed by EOL?\n\t\n\t function token() {\n\t if (I >= N) return EOF; // special case: end of file\n\t if (eol) return eol = false, EOL; // special case: end of line\n\t\n\t // special case: quotes\n\t var j = I, c;\n\t if (text.charCodeAt(j) === 34) {\n\t var i = j;\n\t while (i++ < N) {\n\t if (text.charCodeAt(i) === 34) {\n\t if (text.charCodeAt(i + 1) !== 34) break;\n\t ++i;\n\t }\n\t }\n\t I = i + 2;\n\t c = text.charCodeAt(i + 1);\n\t if (c === 13) {\n\t eol = true;\n\t if (text.charCodeAt(i + 2) === 10) ++I;\n\t } else if (c === 10) {\n\t eol = true;\n\t }\n\t return text.slice(j + 1, i).replace(/\"\"/g, \"\\\"\");\n\t }\n\t\n\t // common case: find next delimiter or newline\n\t while (I < N) {\n\t var k = 1;\n\t c = text.charCodeAt(I++);\n\t if (c === 10) eol = true; // \\n\n\t else if (c === 13) { eol = true; if (text.charCodeAt(I) === 10) ++I, ++k; } // \\r|\\r\\n\n\t else if (c !== delimiterCode) continue;\n\t return text.slice(j, I - k);\n\t }\n\t\n\t // special case: last token before EOF\n\t return text.slice(j);\n\t }\n\t\n\t while ((t = token()) !== EOF) {\n\t var a = [];\n\t while (t !== EOL && t !== EOF) {\n\t a.push(t);\n\t t = token();\n\t }\n\t if (f && (a = f(a, n++)) == null) continue;\n\t rows.push(a);\n\t }\n\t\n\t return rows;\n\t }\n\t\n\t function format(rows, columns) {\n\t if (columns == null) columns = inferColumns(rows);\n\t return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n\t return columns.map(function(column) {\n\t return formatValue(row[column]);\n\t }).join(delimiter);\n\t })).join(\"\\n\");\n\t }\n\t\n\t function formatRows(rows) {\n\t return rows.map(formatRow).join(\"\\n\");\n\t }\n\t\n\t function formatRow(row) {\n\t return row.map(formatValue).join(delimiter);\n\t }\n\t\n\t function formatValue(text) {\n\t return text == null ? \"\"\n\t : reFormat.test(text += \"\") ? \"\\\"\" + text.replace(/\\\"/g, \"\\\"\\\"\") + \"\\\"\"\n\t : text;\n\t }\n\t\n\t return {\n\t parse: parse,\n\t parseRows: parseRows,\n\t format: format,\n\t formatRows: formatRows\n\t };\n\t }\n\t\n\t var csv = dsv(\",\");\n\t\n\t var csvParse = csv.parse;\n\t var csvParseRows = csv.parseRows;\n\t var csvFormat = csv.format;\n\t var csvFormatRows = csv.formatRows;\n\t\n\t var tsv = dsv(\"\\t\");\n\t\n\t var tsvParse = tsv.parse;\n\t var tsvParseRows = tsv.parseRows;\n\t var tsvFormat = tsv.format;\n\t var tsvFormatRows = tsv.formatRows;\n\t\n\t function request(url, callback) {\n\t var request,\n\t event = dispatch(\"beforesend\", \"progress\", \"load\", \"error\"),\n\t mimeType,\n\t headers = map$1(),\n\t xhr = new XMLHttpRequest,\n\t user = null,\n\t password = null,\n\t response,\n\t responseType,\n\t timeout = 0;\n\t\n\t // If IE does not support CORS, use XDomainRequest.\n\t if (typeof XDomainRequest !== \"undefined\"\n\t && !(\"withCredentials\" in xhr)\n\t && /^(http(s)?:)?\\/\\//.test(url)) xhr = new XDomainRequest;\n\t\n\t \"onload\" in xhr\n\t ? xhr.onload = xhr.onerror = xhr.ontimeout = respond\n\t : xhr.onreadystatechange = function(o) { xhr.readyState > 3 && respond(o); };\n\t\n\t function respond(o) {\n\t var status = xhr.status, result;\n\t if (!status && hasResponse(xhr)\n\t || status >= 200 && status < 300\n\t || status === 304) {\n\t if (response) {\n\t try {\n\t result = response.call(request, xhr);\n\t } catch (e) {\n\t event.call(\"error\", request, e);\n\t return;\n\t }\n\t } else {\n\t result = xhr;\n\t }\n\t event.call(\"load\", request, result);\n\t } else {\n\t event.call(\"error\", request, o);\n\t }\n\t }\n\t\n\t xhr.onprogress = function(e) {\n\t event.call(\"progress\", request, e);\n\t };\n\t\n\t request = {\n\t header: function(name, value) {\n\t name = (name + \"\").toLowerCase();\n\t if (arguments.length < 2) return headers.get(name);\n\t if (value == null) headers.remove(name);\n\t else headers.set(name, value + \"\");\n\t return request;\n\t },\n\t\n\t // If mimeType is non-null and no Accept header is set, a default is used.\n\t mimeType: function(value) {\n\t if (!arguments.length) return mimeType;\n\t mimeType = value == null ? null : value + \"\";\n\t return request;\n\t },\n\t\n\t // Specifies what type the response value should take;\n\t // for instance, arraybuffer, blob, document, or text.\n\t responseType: function(value) {\n\t if (!arguments.length) return responseType;\n\t responseType = value;\n\t return request;\n\t },\n\t\n\t timeout: function(value) {\n\t if (!arguments.length) return timeout;\n\t timeout = +value;\n\t return request;\n\t },\n\t\n\t user: function(value) {\n\t return arguments.length < 1 ? user : (user = value == null ? null : value + \"\", request);\n\t },\n\t\n\t password: function(value) {\n\t return arguments.length < 1 ? password : (password = value == null ? null : value + \"\", request);\n\t },\n\t\n\t // Specify how to convert the response content to a specific type;\n\t // changes the callback value on \"load\" events.\n\t response: function(value) {\n\t response = value;\n\t return request;\n\t },\n\t\n\t // Alias for send(\"GET\", …).\n\t get: function(data, callback) {\n\t return request.send(\"GET\", data, callback);\n\t },\n\t\n\t // Alias for send(\"POST\", …).\n\t post: function(data, callback) {\n\t return request.send(\"POST\", data, callback);\n\t },\n\t\n\t // If callback is non-null, it will be used for error and load events.\n\t send: function(method, data, callback) {\n\t xhr.open(method, url, true, user, password);\n\t if (mimeType != null && !headers.has(\"accept\")) headers.set(\"accept\", mimeType + \",*/*\");\n\t if (xhr.setRequestHeader) headers.each(function(value, name) { xhr.setRequestHeader(name, value); });\n\t if (mimeType != null && xhr.overrideMimeType) xhr.overrideMimeType(mimeType);\n\t if (responseType != null) xhr.responseType = responseType;\n\t if (timeout > 0) xhr.timeout = timeout;\n\t if (callback == null && typeof data === \"function\") callback = data, data = null;\n\t if (callback != null && callback.length === 1) callback = fixCallback(callback);\n\t if (callback != null) request.on(\"error\", callback).on(\"load\", function(xhr) { callback(null, xhr); });\n\t event.call(\"beforesend\", request, xhr);\n\t xhr.send(data == null ? null : data);\n\t return request;\n\t },\n\t\n\t abort: function() {\n\t xhr.abort();\n\t return request;\n\t },\n\t\n\t on: function() {\n\t var value = event.on.apply(event, arguments);\n\t return value === event ? request : value;\n\t }\n\t };\n\t\n\t if (callback != null) {\n\t if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n\t return request.get(callback);\n\t }\n\t\n\t return request;\n\t }\n\t\n\t function fixCallback(callback) {\n\t return function(error, xhr) {\n\t callback(error == null ? xhr : null);\n\t };\n\t }\n\t\n\t function hasResponse(xhr) {\n\t var type = xhr.responseType;\n\t return type && type !== \"text\"\n\t ? xhr.response // null on error\n\t : xhr.responseText; // \"\" on error\n\t }\n\t\n\t function type(defaultMimeType, response) {\n\t return function(url, callback) {\n\t var r = request(url).mimeType(defaultMimeType).response(response);\n\t if (callback != null) {\n\t if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n\t return r.get(callback);\n\t }\n\t return r;\n\t };\n\t }\n\t\n\t var html = type(\"text/html\", function(xhr) {\n\t return document.createRange().createContextualFragment(xhr.responseText);\n\t });\n\t\n\t var json = type(\"application/json\", function(xhr) {\n\t return JSON.parse(xhr.responseText);\n\t });\n\t\n\t var text = type(\"text/plain\", function(xhr) {\n\t return xhr.responseText;\n\t });\n\t\n\t var xml = type(\"application/xml\", function(xhr) {\n\t var xml = xhr.responseXML;\n\t if (!xml) throw new Error(\"parse error\");\n\t return xml;\n\t });\n\t\n\t function dsv$1(defaultMimeType, parse) {\n\t return function(url, row, callback) {\n\t if (arguments.length < 3) callback = row, row = null;\n\t var r = request(url).mimeType(defaultMimeType);\n\t r.row = function(_) { return arguments.length ? r.response(responseOf(parse, row = _)) : row; };\n\t r.row(row);\n\t return callback ? r.get(callback) : r;\n\t };\n\t }\n\t\n\t function responseOf(parse, row) {\n\t return function(request) {\n\t return parse(request.responseText, row);\n\t };\n\t }\n\t\n\t var csv$1 = dsv$1(\"text/csv\", csvParse);\n\t\n\t var tsv$1 = dsv$1(\"text/tab-separated-values\", tsvParse);\n\t\n\t var frame = 0;\n\t var timeout = 0;\n\t var interval = 0;\n\t var pokeDelay = 1000;\n\t var taskHead;\n\t var taskTail;\n\t var clockLast = 0;\n\t var clockNow = 0;\n\t var clockSkew = 0;\n\t var clock = typeof performance === \"object\" && performance.now ? performance : Date;\n\t var setFrame = typeof requestAnimationFrame === \"function\"\n\t ? (clock === Date ? function(f) { requestAnimationFrame(function() { f(clock.now()); }); } : requestAnimationFrame)\n\t : function(f) { setTimeout(f, 17); };\n\t function now() {\n\t return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n\t }\n\t\n\t function clearNow() {\n\t clockNow = 0;\n\t }\n\t\n\t function Timer() {\n\t this._call =\n\t this._time =\n\t this._next = null;\n\t }\n\t\n\t Timer.prototype = timer.prototype = {\n\t constructor: Timer,\n\t restart: function(callback, delay, time) {\n\t if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n\t time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n\t if (!this._next && taskTail !== this) {\n\t if (taskTail) taskTail._next = this;\n\t else taskHead = this;\n\t taskTail = this;\n\t }\n\t this._call = callback;\n\t this._time = time;\n\t sleep();\n\t },\n\t stop: function() {\n\t if (this._call) {\n\t this._call = null;\n\t this._time = Infinity;\n\t sleep();\n\t }\n\t }\n\t };\n\t\n\t function timer(callback, delay, time) {\n\t var t = new Timer;\n\t t.restart(callback, delay, time);\n\t return t;\n\t }\n\t\n\t function timerFlush() {\n\t now(); // Get the current time, if not already set.\n\t ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n\t var t = taskHead, e;\n\t while (t) {\n\t if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n\t t = t._next;\n\t }\n\t --frame;\n\t }\n\t\n\t function wake(time) {\n\t clockNow = (clockLast = time || clock.now()) + clockSkew;\n\t frame = timeout = 0;\n\t try {\n\t timerFlush();\n\t } finally {\n\t frame = 0;\n\t nap();\n\t clockNow = 0;\n\t }\n\t }\n\t\n\t function poke$1() {\n\t var now = clock.now(), delay = now - clockLast;\n\t if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n\t }\n\t\n\t function nap() {\n\t var t0, t1 = taskHead, t2, time = Infinity;\n\t while (t1) {\n\t if (t1._call) {\n\t if (time > t1._time) time = t1._time;\n\t t0 = t1, t1 = t1._next;\n\t } else {\n\t t2 = t1._next, t1._next = null;\n\t t1 = t0 ? t0._next = t2 : taskHead = t2;\n\t }\n\t }\n\t taskTail = t0;\n\t sleep(time);\n\t }\n\t\n\t function sleep(time) {\n\t if (frame) return; // Soonest alarm already set, or will be.\n\t if (timeout) timeout = clearTimeout(timeout);\n\t var delay = time - clockNow;\n\t if (delay > 24) {\n\t if (time < Infinity) timeout = setTimeout(wake, delay);\n\t if (interval) interval = clearInterval(interval);\n\t } else {\n\t if (!interval) interval = setInterval(poke$1, pokeDelay);\n\t frame = 1, setFrame(wake);\n\t }\n\t }\n\t\n\t function timeout$1(callback, delay, time) {\n\t var t = new Timer;\n\t delay = delay == null ? 0 : +delay;\n\t t.restart(function(elapsed) {\n\t t.stop();\n\t callback(elapsed + delay);\n\t }, delay, time);\n\t return t;\n\t }\n\t\n\t function interval$1(callback, delay, time) {\n\t var t = new Timer, total = delay;\n\t if (delay == null) return t.restart(callback, delay, time), t;\n\t delay = +delay, time = time == null ? now() : +time;\n\t t.restart(function tick(elapsed) {\n\t elapsed += total;\n\t t.restart(tick, total += delay, time);\n\t callback(elapsed);\n\t }, delay, time);\n\t return t;\n\t }\n\t\n\tvar t0$1 = new Date;\n\tvar t1$1 = new Date;\n\t function newInterval(floori, offseti, count, field) {\n\t\n\t function interval(date) {\n\t return floori(date = new Date(+date)), date;\n\t }\n\t\n\t interval.floor = interval;\n\t\n\t interval.ceil = function(date) {\n\t return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n\t };\n\t\n\t interval.round = function(date) {\n\t var d0 = interval(date),\n\t d1 = interval.ceil(date);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t };\n\t\n\t interval.offset = function(date, step) {\n\t return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n\t };\n\t\n\t interval.range = function(start, stop, step) {\n\t var range = [];\n\t start = interval.ceil(start);\n\t step = step == null ? 1 : Math.floor(step);\n\t if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n\t do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t while (--step >= 0) while (offseti(date, 1), !test(date));\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0$1.setTime(+start), t1$1.setTime(+end);\n\t floori(t0$1), floori(t1$1);\n\t return Math.floor(count(t0$1, t1$1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t }\n\t\n\t var millisecond = newInterval(function() {\n\t // noop\n\t }, function(date, step) {\n\t date.setTime(+date + step);\n\t }, function(start, end) {\n\t return end - start;\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t millisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t };\n\t\n\t var milliseconds = millisecond.range;\n\t\n\t var durationSecond = 1e3;\n\t var durationMinute = 6e4;\n\t var durationHour = 36e5;\n\t var durationDay = 864e5;\n\t var durationWeek = 6048e5;\n\t\n\t var second = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationSecond) * durationSecond);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationSecond);\n\t }, function(start, end) {\n\t return (end - start) / durationSecond;\n\t }, function(date) {\n\t return date.getUTCSeconds();\n\t });\n\t\n\t var seconds = second.range;\n\t\n\t var minute = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationMinute) * durationMinute);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t }, function(start, end) {\n\t return (end - start) / durationMinute;\n\t }, function(date) {\n\t return date.getMinutes();\n\t });\n\t\n\t var minutes = minute.range;\n\t\n\t var hour = newInterval(function(date) {\n\t var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n\t if (offset < 0) offset += durationHour;\n\t date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t }, function(start, end) {\n\t return (end - start) / durationHour;\n\t }, function(date) {\n\t return date.getHours();\n\t });\n\t\n\t var hours = hour.range;\n\t\n\t var day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n\t }, function(date) {\n\t return date.getDate() - 1;\n\t });\n\t\n\t var days = day.range;\n\t\n\t function weekday(i) {\n\t return newInterval(function(date) {\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n\t });\n\t }\n\t\n\t var timeWeek = weekday(0);\n\t var timeMonday = weekday(1);\n\t var tuesday = weekday(2);\n\t var wednesday = weekday(3);\n\t var thursday = weekday(4);\n\t var friday = weekday(5);\n\t var saturday = weekday(6);\n\t\n\t var sundays = timeWeek.range;\n\t var mondays = timeMonday.range;\n\t var tuesdays = tuesday.range;\n\t var wednesdays = wednesday.range;\n\t var thursdays = thursday.range;\n\t var fridays = friday.range;\n\t var saturdays = saturday.range;\n\t\n\t var month = newInterval(function(date) {\n\t date.setDate(1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t }, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t }, function(date) {\n\t return date.getMonth();\n\t });\n\t\n\t var months = month.range;\n\t\n\t var year = newInterval(function(date) {\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t }, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t }, function(date) {\n\t return date.getFullYear();\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t year.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step * k);\n\t });\n\t };\n\t\n\t var years = year.range;\n\t\n\t var utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t }, function(start, end) {\n\t return (end - start) / durationMinute;\n\t }, function(date) {\n\t return date.getUTCMinutes();\n\t });\n\t\n\t var utcMinutes = utcMinute.range;\n\t\n\t var utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t }, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t }, function(start, end) {\n\t return (end - start) / durationHour;\n\t }, function(date) {\n\t return date.getUTCHours();\n\t });\n\t\n\t var utcHours = utcHour.range;\n\t\n\t var utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t }, function(start, end) {\n\t return (end - start) / durationDay;\n\t }, function(date) {\n\t return date.getUTCDate() - 1;\n\t });\n\t\n\t var utcDays = utcDay.range;\n\t\n\t function utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / durationWeek;\n\t });\n\t }\n\t\n\t var utcWeek = utcWeekday(0);\n\t var utcMonday = utcWeekday(1);\n\t var utcTuesday = utcWeekday(2);\n\t var utcWednesday = utcWeekday(3);\n\t var utcThursday = utcWeekday(4);\n\t var utcFriday = utcWeekday(5);\n\t var utcSaturday = utcWeekday(6);\n\t\n\t var utcSundays = utcWeek.range;\n\t var utcMondays = utcMonday.range;\n\t var utcTuesdays = utcTuesday.range;\n\t var utcWednesdays = utcWednesday.range;\n\t var utcThursdays = utcThursday.range;\n\t var utcFridays = utcFriday.range;\n\t var utcSaturdays = utcSaturday.range;\n\t\n\t var utcMonth = newInterval(function(date) {\n\t date.setUTCDate(1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t }, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t }, function(date) {\n\t return date.getUTCMonth();\n\t });\n\t\n\t var utcMonths = utcMonth.range;\n\t\n\t var utcYear = newInterval(function(date) {\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t }, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t }, function(date) {\n\t return date.getUTCFullYear();\n\t });\n\t\n\t // An optimized implementation for this simple case.\n\t utcYear.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step * k);\n\t });\n\t };\n\t\n\t var utcYears = utcYear.range;\n\t\n\t // Computes the decimal coefficient and exponent of the specified number x with\n\t // significant digits p, where x is positive and p is in [1, 21] or undefined.\n\t // For example, formatDecimal(1.23) returns [\"123\", 0].\n\t function formatDecimal(x, p) {\n\t if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n\t var i, coefficient = x.slice(0, i);\n\t\n\t // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n\t // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n\t return [\n\t coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n\t +x.slice(i + 1)\n\t ];\n\t }\n\t\n\t function exponent$1(x) {\n\t return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n\t }\n\t\n\t function formatGroup(grouping, thousands) {\n\t return function(value, width) {\n\t var i = value.length,\n\t t = [],\n\t j = 0,\n\t g = grouping[0],\n\t length = 0;\n\t\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = grouping[j = (j + 1) % grouping.length];\n\t }\n\t\n\t return t.reverse().join(thousands);\n\t };\n\t }\n\t\n\t function formatDefault(x, p) {\n\t x = x.toPrecision(p);\n\t\n\t out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n\t switch (x[i]) {\n\t case \".\": i0 = i1 = i; break;\n\t case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n\t case \"e\": break out;\n\t default: if (i0 > 0) i0 = 0; break;\n\t }\n\t }\n\t\n\t return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n\t }\n\t\n\t var prefixExponent;\n\t\n\t function formatPrefixAuto(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1],\n\t i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n\t n = coefficient.length;\n\t return i === n ? coefficient\n\t : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n\t : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n\t : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n\t }\n\t\n\t function formatRounded(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1];\n\t return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n\t : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n\t : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n\t }\n\t\n\t var formatTypes = {\n\t \"\": formatDefault,\n\t \"%\": function(x, p) { return (x * 100).toFixed(p); },\n\t \"b\": function(x) { return Math.round(x).toString(2); },\n\t \"c\": function(x) { return x + \"\"; },\n\t \"d\": function(x) { return Math.round(x).toString(10); },\n\t \"e\": function(x, p) { return x.toExponential(p); },\n\t \"f\": function(x, p) { return x.toFixed(p); },\n\t \"g\": function(x, p) { return x.toPrecision(p); },\n\t \"o\": function(x) { return Math.round(x).toString(8); },\n\t \"p\": function(x, p) { return formatRounded(x * 100, p); },\n\t \"r\": formatRounded,\n\t \"s\": formatPrefixAuto,\n\t \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n\t \"x\": function(x) { return Math.round(x).toString(16); }\n\t };\n\t\n\t // [[fill]align][sign][symbol][0][width][,][.precision][type]\n\t var re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\t\n\t function formatSpecifier(specifier) {\n\t return new FormatSpecifier(specifier);\n\t }\n\t\n\t function FormatSpecifier(specifier) {\n\t if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\t\n\t var match,\n\t fill = match[1] || \" \",\n\t align = match[2] || \">\",\n\t sign = match[3] || \"-\",\n\t symbol = match[4] || \"\",\n\t zero = !!match[5],\n\t width = match[6] && +match[6],\n\t comma = !!match[7],\n\t precision = match[8] && +match[8].slice(1),\n\t type = match[9] || \"\";\n\t\n\t // The \"n\" type is an alias for \",g\".\n\t if (type === \"n\") comma = true, type = \"g\";\n\t\n\t // Map invalid types to the default format.\n\t else if (!formatTypes[type]) type = \"\";\n\t\n\t // If zero fill is specified, padding goes after sign and before digits.\n\t if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\t\n\t this.fill = fill;\n\t this.align = align;\n\t this.sign = sign;\n\t this.symbol = symbol;\n\t this.zero = zero;\n\t this.width = width;\n\t this.comma = comma;\n\t this.precision = precision;\n\t this.type = type;\n\t }\n\t\n\t FormatSpecifier.prototype.toString = function() {\n\t return this.fill\n\t + this.align\n\t + this.sign\n\t + this.symbol\n\t + (this.zero ? \"0\" : \"\")\n\t + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n\t + (this.comma ? \",\" : \"\")\n\t + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n\t + this.type;\n\t };\n\t\n\t var prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xB5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\t\n\t function identity$3(x) {\n\t return x;\n\t }\n\t\n\t function formatLocale(locale) {\n\t var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity$3,\n\t currency = locale.currency,\n\t decimal = locale.decimal;\n\t\n\t function newFormat(specifier) {\n\t specifier = formatSpecifier(specifier);\n\t\n\t var fill = specifier.fill,\n\t align = specifier.align,\n\t sign = specifier.sign,\n\t symbol = specifier.symbol,\n\t zero = specifier.zero,\n\t width = specifier.width,\n\t comma = specifier.comma,\n\t precision = specifier.precision,\n\t type = specifier.type;\n\t\n\t // Compute the prefix and suffix.\n\t // For SI-prefix, the suffix is lazily computed.\n\t var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n\t suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? \"%\" : \"\";\n\t\n\t // What format function should we use?\n\t // Is this an integer type?\n\t // Can this type generate exponential notation?\n\t var formatType = formatTypes[type],\n\t maybeSuffix = !type || /[defgprs%]/.test(type);\n\t\n\t // Set the default precision if not specified,\n\t // or clamp the specified precision to the supported range.\n\t // For significant precision, it must be in [1, 21].\n\t // For fixed precision, it must be in [0, 20].\n\t precision = precision == null ? (type ? 6 : 12)\n\t : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n\t : Math.max(0, Math.min(20, precision));\n\t\n\t function format(value) {\n\t var valuePrefix = prefix,\n\t valueSuffix = suffix,\n\t i, n, c;\n\t\n\t if (type === \"c\") {\n\t valueSuffix = formatType(value) + valueSuffix;\n\t value = \"\";\n\t } else {\n\t value = +value;\n\t\n\t // Convert negative to positive, and compute the prefix.\n\t // Note that -0 is not less than 0, but 1 / -0 is!\n\t var valueNegative = (value < 0 || 1 / value < 0) && (value *= -1, true);\n\t\n\t // Perform the initial formatting.\n\t value = formatType(value, precision);\n\t\n\t // If the original value was negative, it may be rounded to zero during\n\t // formatting; treat this as (positive) zero.\n\t if (valueNegative) {\n\t i = -1, n = value.length;\n\t valueNegative = false;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), (48 < c && c < 58)\n\t || (type === \"x\" && 96 < c && c < 103)\n\t || (type === \"X\" && 64 < c && c < 71)) {\n\t valueNegative = true;\n\t break;\n\t }\n\t }\n\t }\n\t\n\t // Compute the prefix and suffix.\n\t valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\t valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\t\n\t // Break the formatted value into the integer “value” part that can be\n\t // grouped, and fractional or exponential “suffix” part that is not.\n\t if (maybeSuffix) {\n\t i = -1, n = value.length;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), 48 > c || c > 57) {\n\t valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n\t value = value.slice(0, i);\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // If the fill character is not \"0\", grouping is applied before padding.\n\t if (comma && !zero) value = group(value, Infinity);\n\t\n\t // Compute the padding.\n\t var length = valuePrefix.length + value.length + valueSuffix.length,\n\t padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\t\n\t // If the fill character is \"0\", grouping is applied after padding.\n\t if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\t\n\t // Reconstruct the final output based on the desired alignment.\n\t switch (align) {\n\t case \"<\": return valuePrefix + value + valueSuffix + padding;\n\t case \"=\": return valuePrefix + padding + value + valueSuffix;\n\t case \"^\": return padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n\t }\n\t return padding + valuePrefix + value + valueSuffix;\n\t }\n\t\n\t format.toString = function() {\n\t return specifier + \"\";\n\t };\n\t\n\t return format;\n\t }\n\t\n\t function formatPrefix(specifier, value) {\n\t var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n\t e = Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3,\n\t k = Math.pow(10, -e),\n\t prefix = prefixes[8 + e / 3];\n\t return function(value) {\n\t return f(k * value) + prefix;\n\t };\n\t }\n\t\n\t return {\n\t format: newFormat,\n\t formatPrefix: formatPrefix\n\t };\n\t }\n\t\n\t var locale;\n\t defaultLocale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t });\n\t\n\t function defaultLocale(definition) {\n\t locale = formatLocale(definition);\n\t exports.format = locale.format;\n\t exports.formatPrefix = locale.formatPrefix;\n\t return locale;\n\t }\n\t\n\t function precisionFixed(step) {\n\t return Math.max(0, -exponent$1(Math.abs(step)));\n\t }\n\t\n\t function precisionPrefix(step, value) {\n\t return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3 - exponent$1(Math.abs(step)));\n\t }\n\t\n\t function precisionRound(step, max) {\n\t step = Math.abs(step), max = Math.abs(max) - step;\n\t return Math.max(0, exponent$1(max) - exponent$1(step)) + 1;\n\t }\n\t\n\t function localDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n\t date.setFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n\t }\n\t\n\t function utcDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n\t date.setUTCFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n\t }\n\t\n\t function newYear(y) {\n\t return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n\t }\n\t\n\t function formatLocale$1(locale) {\n\t var locale_dateTime = locale.dateTime,\n\t locale_date = locale.date,\n\t locale_time = locale.time,\n\t locale_periods = locale.periods,\n\t locale_weekdays = locale.days,\n\t locale_shortWeekdays = locale.shortDays,\n\t locale_months = locale.months,\n\t locale_shortMonths = locale.shortMonths;\n\t\n\t var periodRe = formatRe(locale_periods),\n\t periodLookup = formatLookup(locale_periods),\n\t weekdayRe = formatRe(locale_weekdays),\n\t weekdayLookup = formatLookup(locale_weekdays),\n\t shortWeekdayRe = formatRe(locale_shortWeekdays),\n\t shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n\t monthRe = formatRe(locale_months),\n\t monthLookup = formatLookup(locale_months),\n\t shortMonthRe = formatRe(locale_shortMonths),\n\t shortMonthLookup = formatLookup(locale_shortMonths);\n\t\n\t var formats = {\n\t \"a\": formatShortWeekday,\n\t \"A\": formatWeekday,\n\t \"b\": formatShortMonth,\n\t \"B\": formatMonth,\n\t \"c\": null,\n\t \"d\": formatDayOfMonth,\n\t \"e\": formatDayOfMonth,\n\t \"H\": formatHour24,\n\t \"I\": formatHour12,\n\t \"j\": formatDayOfYear,\n\t \"L\": formatMilliseconds,\n\t \"m\": formatMonthNumber,\n\t \"M\": formatMinutes,\n\t \"p\": formatPeriod,\n\t \"S\": formatSeconds,\n\t \"U\": formatWeekNumberSunday,\n\t \"w\": formatWeekdayNumber,\n\t \"W\": formatWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatYear,\n\t \"Y\": formatFullYear,\n\t \"Z\": formatZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var utcFormats = {\n\t \"a\": formatUTCShortWeekday,\n\t \"A\": formatUTCWeekday,\n\t \"b\": formatUTCShortMonth,\n\t \"B\": formatUTCMonth,\n\t \"c\": null,\n\t \"d\": formatUTCDayOfMonth,\n\t \"e\": formatUTCDayOfMonth,\n\t \"H\": formatUTCHour24,\n\t \"I\": formatUTCHour12,\n\t \"j\": formatUTCDayOfYear,\n\t \"L\": formatUTCMilliseconds,\n\t \"m\": formatUTCMonthNumber,\n\t \"M\": formatUTCMinutes,\n\t \"p\": formatUTCPeriod,\n\t \"S\": formatUTCSeconds,\n\t \"U\": formatUTCWeekNumberSunday,\n\t \"w\": formatUTCWeekdayNumber,\n\t \"W\": formatUTCWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatUTCYear,\n\t \"Y\": formatUTCFullYear,\n\t \"Z\": formatUTCZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var parses = {\n\t \"a\": parseShortWeekday,\n\t \"A\": parseWeekday,\n\t \"b\": parseShortMonth,\n\t \"B\": parseMonth,\n\t \"c\": parseLocaleDateTime,\n\t \"d\": parseDayOfMonth,\n\t \"e\": parseDayOfMonth,\n\t \"H\": parseHour24,\n\t \"I\": parseHour24,\n\t \"j\": parseDayOfYear,\n\t \"L\": parseMilliseconds,\n\t \"m\": parseMonthNumber,\n\t \"M\": parseMinutes,\n\t \"p\": parsePeriod,\n\t \"S\": parseSeconds,\n\t \"U\": parseWeekNumberSunday,\n\t \"w\": parseWeekdayNumber,\n\t \"W\": parseWeekNumberMonday,\n\t \"x\": parseLocaleDate,\n\t \"X\": parseLocaleTime,\n\t \"y\": parseYear,\n\t \"Y\": parseFullYear,\n\t \"Z\": parseZone,\n\t \"%\": parseLiteralPercent\n\t };\n\t\n\t // These recursive directive definitions must be deferred.\n\t formats.x = newFormat(locale_date, formats);\n\t formats.X = newFormat(locale_time, formats);\n\t formats.c = newFormat(locale_dateTime, formats);\n\t utcFormats.x = newFormat(locale_date, utcFormats);\n\t utcFormats.X = newFormat(locale_time, utcFormats);\n\t utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\t\n\t function newFormat(specifier, formats) {\n\t return function(date) {\n\t var string = [],\n\t i = -1,\n\t j = 0,\n\t n = specifier.length,\n\t c,\n\t pad,\n\t format;\n\t\n\t if (!(date instanceof Date)) date = new Date(+date);\n\t\n\t while (++i < n) {\n\t if (specifier.charCodeAt(i) === 37) {\n\t string.push(specifier.slice(j, i));\n\t if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n\t else pad = c === \"e\" ? \" \" : \"0\";\n\t if (format = formats[c]) c = format(date, pad);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t\n\t string.push(specifier.slice(j, i));\n\t return string.join(\"\");\n\t };\n\t }\n\t\n\t function newParse(specifier, newDate) {\n\t return function(string) {\n\t var d = newYear(1900),\n\t i = parseSpecifier(d, specifier, string += \"\", 0);\n\t if (i != string.length) return null;\n\t\n\t // The am-pm flag is 0 for AM, and 1 for PM.\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t\n\t // Convert day-of-week and week-of-year to day-of-year.\n\t if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n\t d.m = 0;\n\t d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n\t }\n\t\n\t // If a time zone is specified, all fields are interpreted as UTC and then\n\t // offset according to the specified time zone.\n\t if (\"Z\" in d) {\n\t d.H += d.Z / 100 | 0;\n\t d.M += d.Z % 100;\n\t return utcDate(d);\n\t }\n\t\n\t // Otherwise, all fields are in local time.\n\t return newDate(d);\n\t };\n\t }\n\t\n\t function parseSpecifier(d, specifier, string, j) {\n\t var i = 0,\n\t n = specifier.length,\n\t m = string.length,\n\t c,\n\t parse;\n\t\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = specifier.charCodeAt(i++);\n\t if (c === 37) {\n\t c = specifier.charAt(i++);\n\t parse = parses[c in pads ? specifier.charAt(i++) : c];\n\t if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t\n\t return j;\n\t }\n\t\n\t function parsePeriod(d, string, i) {\n\t var n = periodRe.exec(string.slice(i));\n\t return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortWeekday(d, string, i) {\n\t var n = shortWeekdayRe.exec(string.slice(i));\n\t return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekday(d, string, i) {\n\t var n = weekdayRe.exec(string.slice(i));\n\t return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortMonth(d, string, i) {\n\t var n = shortMonthRe.exec(string.slice(i));\n\t return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonth(d, string, i) {\n\t var n = monthRe.exec(string.slice(i));\n\t return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLocaleDateTime(d, string, i) {\n\t return parseSpecifier(d, locale_dateTime, string, i);\n\t }\n\t\n\t function parseLocaleDate(d, string, i) {\n\t return parseSpecifier(d, locale_date, string, i);\n\t }\n\t\n\t function parseLocaleTime(d, string, i) {\n\t return parseSpecifier(d, locale_time, string, i);\n\t }\n\t\n\t function formatShortWeekday(d) {\n\t return locale_shortWeekdays[d.getDay()];\n\t }\n\t\n\t function formatWeekday(d) {\n\t return locale_weekdays[d.getDay()];\n\t }\n\t\n\t function formatShortMonth(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t }\n\t\n\t function formatMonth(d) {\n\t return locale_months[d.getMonth()];\n\t }\n\t\n\t function formatPeriod(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t }\n\t\n\t function formatUTCShortWeekday(d) {\n\t return locale_shortWeekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCWeekday(d) {\n\t return locale_weekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCShortMonth(d) {\n\t return locale_shortMonths[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCMonth(d) {\n\t return locale_months[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCPeriod(d) {\n\t return locale_periods[+(d.getUTCHours() >= 12)];\n\t }\n\t\n\t return {\n\t format: function(specifier) {\n\t var f = newFormat(specifier += \"\", formats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t parse: function(specifier) {\n\t var p = newParse(specifier += \"\", localDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t },\n\t utcFormat: function(specifier) {\n\t var f = newFormat(specifier += \"\", utcFormats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t utcParse: function(specifier) {\n\t var p = newParse(specifier, utcDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t }\n\t };\n\t }\n\t\n\t var pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n\t var numberRe = /^\\s*\\d+/;\n\t var percentRe = /^%/;\n\t var requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t function pad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\",\n\t string = (sign ? -value : value) + \"\",\n\t length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t }\n\t\n\t function requote(s) {\n\t return s.replace(requoteRe, \"\\\\$&\");\n\t }\n\t\n\t function formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n\t }\n\t\n\t function formatLookup(names) {\n\t var map = {}, i = -1, n = names.length;\n\t while (++i < n) map[names[i].toLowerCase()] = i;\n\t return map;\n\t }\n\t\n\t function parseWeekdayNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 1));\n\t return n ? (d.w = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberSunday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.U = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekNumberMonday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.W = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseFullYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 4));\n\t return n ? (d.y = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n\t }\n\t\n\t function parseZone(d, string, i) {\n\t var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n\t return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonthNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfMonth(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseDayOfYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseHour24(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.H = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMinutes(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.M = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseSeconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.S = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMilliseconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.L = +n[0], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLiteralPercent(d, string, i) {\n\t var n = percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t }\n\t\n\t function formatDayOfMonth(d, p) {\n\t return pad(d.getDate(), p, 2);\n\t }\n\t\n\t function formatHour24(d, p) {\n\t return pad(d.getHours(), p, 2);\n\t }\n\t\n\t function formatHour12(d, p) {\n\t return pad(d.getHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatDayOfYear(d, p) {\n\t return pad(1 + day.count(year(d), d), p, 3);\n\t }\n\t\n\t function formatMilliseconds(d, p) {\n\t return pad(d.getMilliseconds(), p, 3);\n\t }\n\t\n\t function formatMonthNumber(d, p) {\n\t return pad(d.getMonth() + 1, p, 2);\n\t }\n\t\n\t function formatMinutes(d, p) {\n\t return pad(d.getMinutes(), p, 2);\n\t }\n\t\n\t function formatSeconds(d, p) {\n\t return pad(d.getSeconds(), p, 2);\n\t }\n\t\n\t function formatWeekNumberSunday(d, p) {\n\t return pad(timeWeek.count(year(d), d), p, 2);\n\t }\n\t\n\t function formatWeekdayNumber(d) {\n\t return d.getDay();\n\t }\n\t\n\t function formatWeekNumberMonday(d, p) {\n\t return pad(timeMonday.count(year(d), d), p, 2);\n\t }\n\t\n\t function formatYear(d, p) {\n\t return pad(d.getFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatFullYear(d, p) {\n\t return pad(d.getFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatZone(d) {\n\t var z = d.getTimezoneOffset();\n\t return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n\t + pad(z / 60 | 0, \"0\", 2)\n\t + pad(z % 60, \"0\", 2);\n\t }\n\t\n\t function formatUTCDayOfMonth(d, p) {\n\t return pad(d.getUTCDate(), p, 2);\n\t }\n\t\n\t function formatUTCHour24(d, p) {\n\t return pad(d.getUTCHours(), p, 2);\n\t }\n\t\n\t function formatUTCHour12(d, p) {\n\t return pad(d.getUTCHours() % 12 || 12, p, 2);\n\t }\n\t\n\t function formatUTCDayOfYear(d, p) {\n\t return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n\t }\n\t\n\t function formatUTCMilliseconds(d, p) {\n\t return pad(d.getUTCMilliseconds(), p, 3);\n\t }\n\t\n\t function formatUTCMonthNumber(d, p) {\n\t return pad(d.getUTCMonth() + 1, p, 2);\n\t }\n\t\n\t function formatUTCMinutes(d, p) {\n\t return pad(d.getUTCMinutes(), p, 2);\n\t }\n\t\n\t function formatUTCSeconds(d, p) {\n\t return pad(d.getUTCSeconds(), p, 2);\n\t }\n\t\n\t function formatUTCWeekNumberSunday(d, p) {\n\t return pad(utcWeek.count(utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCWeekdayNumber(d) {\n\t return d.getUTCDay();\n\t }\n\t\n\t function formatUTCWeekNumberMonday(d, p) {\n\t return pad(utcMonday.count(utcYear(d), d), p, 2);\n\t }\n\t\n\t function formatUTCYear(d, p) {\n\t return pad(d.getUTCFullYear() % 100, p, 2);\n\t }\n\t\n\t function formatUTCFullYear(d, p) {\n\t return pad(d.getUTCFullYear() % 10000, p, 4);\n\t }\n\t\n\t function formatUTCZone() {\n\t return \"+0000\";\n\t }\n\t\n\t function formatLiteralPercent() {\n\t return \"%\";\n\t }\n\t\n\t var locale$1;\n\t defaultLocale$1({\n\t dateTime: \"%x, %X\",\n\t date: \"%-m/%-d/%Y\",\n\t time: \"%-I:%M:%S %p\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t });\n\t\n\t function defaultLocale$1(definition) {\n\t locale$1 = formatLocale$1(definition);\n\t exports.timeFormat = locale$1.format;\n\t exports.timeParse = locale$1.parse;\n\t exports.utcFormat = locale$1.utcFormat;\n\t exports.utcParse = locale$1.utcParse;\n\t return locale$1;\n\t }\n\t\n\t var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\t\n\t function formatIsoNative(date) {\n\t return date.toISOString();\n\t }\n\t\n\t var formatIso = Date.prototype.toISOString\n\t ? formatIsoNative\n\t : exports.utcFormat(isoSpecifier);\n\t\n\t function parseIsoNative(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t }\n\t\n\t var parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n\t ? parseIsoNative\n\t : exports.utcParse(isoSpecifier);\n\t\n\t var array$2 = Array.prototype;\n\t\n\t var map$2 = array$2.map;\n\t var slice$3 = array$2.slice;\n\t\n\t var implicit = {name: \"implicit\"};\n\t\n\t function ordinal(range) {\n\t var index = map$1(),\n\t domain = [],\n\t unknown = implicit;\n\t\n\t range = range == null ? [] : slice$3.call(range);\n\t\n\t function scale(d) {\n\t var key = d + \"\", i = index.get(key);\n\t if (!i) {\n\t if (unknown !== implicit) return unknown;\n\t index.set(key, i = domain.push(d));\n\t }\n\t return range[(i - 1) % range.length];\n\t }\n\t\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain.slice();\n\t domain = [], index = map$1();\n\t var i = -1, n = _.length, d, key;\n\t while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n\t return scale;\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice$3.call(_), scale) : range.slice();\n\t };\n\t\n\t scale.unknown = function(_) {\n\t return arguments.length ? (unknown = _, scale) : unknown;\n\t };\n\t\n\t scale.copy = function() {\n\t return ordinal()\n\t .domain(domain)\n\t .range(range)\n\t .unknown(unknown);\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function band() {\n\t var scale = ordinal().unknown(undefined),\n\t domain = scale.domain,\n\t ordinalRange = scale.range,\n\t range$$ = [0, 1],\n\t step,\n\t bandwidth,\n\t round = false,\n\t paddingInner = 0,\n\t paddingOuter = 0,\n\t align = 0.5;\n\t\n\t delete scale.unknown;\n\t\n\t function rescale() {\n\t var n = domain().length,\n\t reverse = range$$[1] < range$$[0],\n\t start = range$$[reverse - 0],\n\t stop = range$$[1 - reverse];\n\t step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n\t if (round) step = Math.floor(step);\n\t start += (stop - start - step * (n - paddingInner)) * align;\n\t bandwidth = step * (1 - paddingInner);\n\t if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n\t var values = range(n).map(function(i) { return start + step * i; });\n\t return ordinalRange(reverse ? values.reverse() : values);\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain(_), rescale()) : domain();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range$$ = [+_[0], +_[1]], rescale()) : range$$.slice();\n\t };\n\t\n\t scale.rangeRound = function(_) {\n\t return range$$ = [+_[0], +_[1]], round = true, rescale();\n\t };\n\t\n\t scale.bandwidth = function() {\n\t return bandwidth;\n\t };\n\t\n\t scale.step = function() {\n\t return step;\n\t };\n\t\n\t scale.round = function(_) {\n\t return arguments.length ? (round = !!_, rescale()) : round;\n\t };\n\t\n\t scale.padding = function(_) {\n\t return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n\t };\n\t\n\t scale.paddingInner = function(_) {\n\t return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n\t };\n\t\n\t scale.paddingOuter = function(_) {\n\t return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n\t };\n\t\n\t scale.align = function(_) {\n\t return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n\t };\n\t\n\t scale.copy = function() {\n\t return band()\n\t .domain(domain())\n\t .range(range$$)\n\t .round(round)\n\t .paddingInner(paddingInner)\n\t .paddingOuter(paddingOuter)\n\t .align(align);\n\t };\n\t\n\t return rescale();\n\t }\n\t\n\t function pointish(scale) {\n\t var copy = scale.copy;\n\t\n\t scale.padding = scale.paddingOuter;\n\t delete scale.paddingInner;\n\t delete scale.paddingOuter;\n\t\n\t scale.copy = function() {\n\t return pointish(copy());\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function point$4() {\n\t return pointish(band().paddingInner(1));\n\t }\n\t\n\t function constant$3(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function number$1(x) {\n\t return +x;\n\t }\n\t\n\t var unit = [0, 1];\n\t\n\t function deinterpolate(a, b) {\n\t return (b -= (a = +a))\n\t ? function(x) { return (x - a) / b; }\n\t : constant$3(b);\n\t }\n\t\n\t function deinterpolateClamp(deinterpolate) {\n\t return function(a, b) {\n\t var d = deinterpolate(a = +a, b = +b);\n\t return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n\t };\n\t }\n\t\n\t function reinterpolateClamp(reinterpolate) {\n\t return function(a, b) {\n\t var r = reinterpolate(a = +a, b = +b);\n\t return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n\t };\n\t }\n\t\n\t function bimap(domain, range, deinterpolate, reinterpolate) {\n\t var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n\t if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n\t else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n\t return function(x) { return r0(d0(x)); };\n\t }\n\t\n\t function polymap(domain, range, deinterpolate, reinterpolate) {\n\t var j = Math.min(domain.length, range.length) - 1,\n\t d = new Array(j),\n\t r = new Array(j),\n\t i = -1;\n\t\n\t // Reverse descending domains.\n\t if (domain[j] < domain[0]) {\n\t domain = domain.slice().reverse();\n\t range = range.slice().reverse();\n\t }\n\t\n\t while (++i < j) {\n\t d[i] = deinterpolate(domain[i], domain[i + 1]);\n\t r[i] = reinterpolate(range[i], range[i + 1]);\n\t }\n\t\n\t return function(x) {\n\t var i = bisectRight(domain, x, 1, j) - 1;\n\t return r[i](d[i](x));\n\t };\n\t }\n\t\n\t function copy(source, target) {\n\t return target\n\t .domain(source.domain())\n\t .range(source.range())\n\t .interpolate(source.interpolate())\n\t .clamp(source.clamp());\n\t }\n\t\n\t // deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n\t // reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\n\t function continuous(deinterpolate$$, reinterpolate) {\n\t var domain = unit,\n\t range = unit,\n\t interpolate$$ = interpolate,\n\t clamp = false,\n\t piecewise,\n\t output,\n\t input;\n\t\n\t function rescale() {\n\t piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n\t output = input = null;\n\t return scale;\n\t }\n\t\n\t function scale(x) {\n\t return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate$$) : deinterpolate$$, interpolate$$)))(+x);\n\t }\n\t\n\t scale.invert = function(y) {\n\t return (input || (input = piecewise(range, domain, deinterpolate, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain = map$2.call(_, number$1), rescale()) : domain.slice();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice$3.call(_), rescale()) : range.slice();\n\t };\n\t\n\t scale.rangeRound = function(_) {\n\t return range = slice$3.call(_), interpolate$$ = interpolateRound, rescale();\n\t };\n\t\n\t scale.clamp = function(_) {\n\t return arguments.length ? (clamp = !!_, rescale()) : clamp;\n\t };\n\t\n\t scale.interpolate = function(_) {\n\t return arguments.length ? (interpolate$$ = _, rescale()) : interpolate$$;\n\t };\n\t\n\t return rescale();\n\t }\n\t\n\t function tickFormat(domain, count, specifier) {\n\t var start = domain[0],\n\t stop = domain[domain.length - 1],\n\t step = tickStep(start, stop, count == null ? 10 : count),\n\t precision;\n\t specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n\t switch (specifier.type) {\n\t case \"s\": {\n\t var value = Math.max(Math.abs(start), Math.abs(stop));\n\t if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n\t return exports.formatPrefix(specifier, value);\n\t }\n\t case \"\":\n\t case \"e\":\n\t case \"g\":\n\t case \"p\":\n\t case \"r\": {\n\t if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n\t break;\n\t }\n\t case \"f\":\n\t case \"%\": {\n\t if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n\t break;\n\t }\n\t }\n\t return exports.format(specifier);\n\t }\n\t\n\t function linearish(scale) {\n\t var domain = scale.domain;\n\t\n\t scale.ticks = function(count) {\n\t var d = domain();\n\t return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t return tickFormat(domain(), count, specifier);\n\t };\n\t\n\t scale.nice = function(count) {\n\t var d = domain(),\n\t i = d.length - 1,\n\t n = count == null ? 10 : count,\n\t start = d[0],\n\t stop = d[i],\n\t step = tickStep(start, stop, n);\n\t\n\t if (step) {\n\t step = tickStep(Math.floor(start / step) * step, Math.ceil(stop / step) * step, n);\n\t d[0] = Math.floor(start / step) * step;\n\t d[i] = Math.ceil(stop / step) * step;\n\t domain(d);\n\t }\n\t\n\t return scale;\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function linear$2() {\n\t var scale = continuous(deinterpolate, interpolateNumber);\n\t\n\t scale.copy = function() {\n\t return copy(scale, linear$2());\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function identity$4() {\n\t var domain = [0, 1];\n\t\n\t function scale(x) {\n\t return +x;\n\t }\n\t\n\t scale.invert = scale;\n\t\n\t scale.domain = scale.range = function(_) {\n\t return arguments.length ? (domain = map$2.call(_, number$1), scale) : domain.slice();\n\t };\n\t\n\t scale.copy = function() {\n\t return identity$4().domain(domain);\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function nice(domain, interval) {\n\t domain = domain.slice();\n\t\n\t var i0 = 0,\n\t i1 = domain.length - 1,\n\t x0 = domain[i0],\n\t x1 = domain[i1],\n\t t;\n\t\n\t if (x1 < x0) {\n\t t = i0, i0 = i1, i1 = t;\n\t t = x0, x0 = x1, x1 = t;\n\t }\n\t\n\t domain[i0] = interval.floor(x0);\n\t domain[i1] = interval.ceil(x1);\n\t return domain;\n\t }\n\t\n\t function deinterpolate$1(a, b) {\n\t return (b = Math.log(b / a))\n\t ? function(x) { return Math.log(x / a) / b; }\n\t : constant$3(b);\n\t }\n\t\n\t function reinterpolate(a, b) {\n\t return a < 0\n\t ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n\t : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n\t }\n\t\n\t function pow10(x) {\n\t return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n\t }\n\t\n\t function powp(base) {\n\t return base === 10 ? pow10\n\t : base === Math.E ? Math.exp\n\t : function(x) { return Math.pow(base, x); };\n\t }\n\t\n\t function logp(base) {\n\t return base === Math.E ? Math.log\n\t : base === 10 && Math.log10\n\t || base === 2 && Math.log2\n\t || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n\t }\n\t\n\t function reflect(f) {\n\t return function(x) {\n\t return -f(-x);\n\t };\n\t }\n\t\n\t function log() {\n\t var scale = continuous(deinterpolate$1, reinterpolate).domain([1, 10]),\n\t domain = scale.domain,\n\t base = 10,\n\t logs = logp(10),\n\t pows = powp(10);\n\t\n\t function rescale() {\n\t logs = logp(base), pows = powp(base);\n\t if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n\t return scale;\n\t }\n\t\n\t scale.base = function(_) {\n\t return arguments.length ? (base = +_, rescale()) : base;\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain(_), rescale()) : domain();\n\t };\n\t\n\t scale.ticks = function(count) {\n\t var d = domain(),\n\t u = d[0],\n\t v = d[d.length - 1],\n\t r;\n\t\n\t if (r = v < u) i = u, u = v, v = i;\n\t\n\t var i = logs(u),\n\t j = logs(v),\n\t p,\n\t k,\n\t t,\n\t n = count == null ? 10 : +count,\n\t z = [];\n\t\n\t if (!(base % 1) && j - i < n) {\n\t i = Math.round(i) - 1, j = Math.round(j) + 1;\n\t if (u > 0) for (; i < j; ++i) {\n\t for (k = 1, p = pows(i); k < base; ++k) {\n\t t = p * k;\n\t if (t < u) continue;\n\t if (t > v) break;\n\t z.push(t);\n\t }\n\t } else for (; i < j; ++i) {\n\t for (k = base - 1, p = pows(i); k >= 1; --k) {\n\t t = p * k;\n\t if (t < u) continue;\n\t if (t > v) break;\n\t z.push(t);\n\t }\n\t }\n\t } else {\n\t z = ticks(i, j, Math.min(j - i, n)).map(pows);\n\t }\n\t\n\t return r ? z.reverse() : z;\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n\t if (typeof specifier !== \"function\") specifier = exports.format(specifier);\n\t if (count === Infinity) return specifier;\n\t if (count == null) count = 10;\n\t var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n\t return function(d) {\n\t var i = d / pows(Math.round(logs(d)));\n\t if (i * base < base - 0.5) i *= base;\n\t return i <= k ? specifier(d) : \"\";\n\t };\n\t };\n\t\n\t scale.nice = function() {\n\t return domain(nice(domain(), {\n\t floor: function(x) { return pows(Math.floor(logs(x))); },\n\t ceil: function(x) { return pows(Math.ceil(logs(x))); }\n\t }));\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, log().base(base));\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function raise(x, exponent) {\n\t return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\t }\n\t\n\t function pow() {\n\t var exponent = 1,\n\t scale = continuous(deinterpolate, reinterpolate),\n\t domain = scale.domain;\n\t\n\t function deinterpolate(a, b) {\n\t return (b = raise(b, exponent) - (a = raise(a, exponent)))\n\t ? function(x) { return (raise(x, exponent) - a) / b; }\n\t : constant$3(b);\n\t }\n\t\n\t function reinterpolate(a, b) {\n\t b = raise(b, exponent) - (a = raise(a, exponent));\n\t return function(t) { return raise(a + b * t, 1 / exponent); };\n\t }\n\t\n\t scale.exponent = function(_) {\n\t return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, pow().exponent(exponent));\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function sqrt() {\n\t return pow().exponent(0.5);\n\t }\n\t\n\t function quantile() {\n\t var domain = [],\n\t range = [],\n\t thresholds = [];\n\t\n\t function rescale() {\n\t var i = 0, n = Math.max(1, range.length);\n\t thresholds = new Array(n - 1);\n\t while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n\t return scale;\n\t }\n\t\n\t function scale(x) {\n\t if (!isNaN(x = +x)) return range[bisectRight(thresholds, x)];\n\t }\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range.indexOf(y);\n\t return i < 0 ? [NaN, NaN] : [\n\t i > 0 ? thresholds[i - 1] : domain[0],\n\t i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n\t ];\n\t };\n\t\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain.slice();\n\t domain = [];\n\t for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n\t domain.sort(ascending);\n\t return rescale();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice$3.call(_), rescale()) : range.slice();\n\t };\n\t\n\t scale.quantiles = function() {\n\t return thresholds.slice();\n\t };\n\t\n\t scale.copy = function() {\n\t return quantile()\n\t .domain(domain)\n\t .range(range);\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function quantize$1() {\n\t var x0 = 0,\n\t x1 = 1,\n\t n = 1,\n\t domain = [0.5],\n\t range = [0, 1];\n\t\n\t function scale(x) {\n\t if (x <= x) return range[bisectRight(domain, x, 0, n)];\n\t }\n\t\n\t function rescale() {\n\t var i = -1;\n\t domain = new Array(n);\n\t while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n\t return scale;\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (n = (range = slice$3.call(_)).length - 1, rescale()) : range.slice();\n\t };\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range.indexOf(y);\n\t return i < 0 ? [NaN, NaN]\n\t : i < 1 ? [x0, domain[0]]\n\t : i >= n ? [domain[n - 1], x1]\n\t : [domain[i - 1], domain[i]];\n\t };\n\t\n\t scale.copy = function() {\n\t return quantize$1()\n\t .domain([x0, x1])\n\t .range(range);\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t function threshold$1() {\n\t var domain = [0.5],\n\t range = [0, 1],\n\t n = 1;\n\t\n\t function scale(x) {\n\t if (x <= x) return range[bisectRight(domain, x, 0, n)];\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain = slice$3.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range = slice$3.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n\t };\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range.indexOf(y);\n\t return [domain[i - 1], domain[i]];\n\t };\n\t\n\t scale.copy = function() {\n\t return threshold$1()\n\t .domain(domain)\n\t .range(range);\n\t };\n\t\n\t return scale;\n\t }\n\t\n\tvar durationSecond$1 = 1000;\n\tvar durationMinute$1 = durationSecond$1 * 60;\n\tvar durationHour$1 = durationMinute$1 * 60;\n\tvar durationDay$1 = durationHour$1 * 24;\n\tvar durationWeek$1 = durationDay$1 * 7;\n\t var durationMonth = durationDay$1 * 30;\n\t var durationYear = durationDay$1 * 365;\n\t function date$1(t) {\n\t return new Date(t);\n\t }\n\t\n\t function number$2(t) {\n\t return t instanceof Date ? +t : +new Date(+t);\n\t }\n\t\n\t function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n\t var scale = continuous(deinterpolate, interpolateNumber),\n\t invert = scale.invert,\n\t domain = scale.domain;\n\t\n\t var formatMillisecond = format(\".%L\"),\n\t formatSecond = format(\":%S\"),\n\t formatMinute = format(\"%I:%M\"),\n\t formatHour = format(\"%I %p\"),\n\t formatDay = format(\"%a %d\"),\n\t formatWeek = format(\"%b %d\"),\n\t formatMonth = format(\"%B\"),\n\t formatYear = format(\"%Y\");\n\t\n\t var tickIntervals = [\n\t [second, 1, durationSecond$1],\n\t [second, 5, 5 * durationSecond$1],\n\t [second, 15, 15 * durationSecond$1],\n\t [second, 30, 30 * durationSecond$1],\n\t [minute, 1, durationMinute$1],\n\t [minute, 5, 5 * durationMinute$1],\n\t [minute, 15, 15 * durationMinute$1],\n\t [minute, 30, 30 * durationMinute$1],\n\t [ hour, 1, durationHour$1 ],\n\t [ hour, 3, 3 * durationHour$1 ],\n\t [ hour, 6, 6 * durationHour$1 ],\n\t [ hour, 12, 12 * durationHour$1 ],\n\t [ day, 1, durationDay$1 ],\n\t [ day, 2, 2 * durationDay$1 ],\n\t [ week, 1, durationWeek$1 ],\n\t [ month, 1, durationMonth ],\n\t [ month, 3, 3 * durationMonth ],\n\t [ year, 1, durationYear ]\n\t ];\n\t\n\t function tickFormat(date) {\n\t return (second(date) < date ? formatMillisecond\n\t : minute(date) < date ? formatSecond\n\t : hour(date) < date ? formatMinute\n\t : day(date) < date ? formatHour\n\t : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n\t : year(date) < date ? formatMonth\n\t : formatYear)(date);\n\t }\n\t\n\t function tickInterval(interval, start, stop, step) {\n\t if (interval == null) interval = 10;\n\t\n\t // If a desired tick count is specified, pick a reasonable tick interval\n\t // based on the extent of the domain and a rough estimate of tick size.\n\t // Otherwise, assume interval is already a time interval and use it.\n\t if (typeof interval === \"number\") {\n\t var target = Math.abs(stop - start) / interval,\n\t i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n\t if (i === tickIntervals.length) {\n\t step = tickStep(start / durationYear, stop / durationYear, interval);\n\t interval = year;\n\t } else if (i) {\n\t i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n\t step = i[1];\n\t interval = i[0];\n\t } else {\n\t step = tickStep(start, stop, interval);\n\t interval = millisecond;\n\t }\n\t }\n\t\n\t return step == null ? interval : interval.every(step);\n\t }\n\t\n\t scale.invert = function(y) {\n\t return new Date(invert(y));\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? domain(map$2.call(_, number$2)) : domain().map(date$1);\n\t };\n\t\n\t scale.ticks = function(interval, step) {\n\t var d = domain(),\n\t t0 = d[0],\n\t t1 = d[d.length - 1],\n\t r = t1 < t0,\n\t t;\n\t if (r) t = t0, t0 = t1, t1 = t;\n\t t = tickInterval(interval, t0, t1, step);\n\t t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n\t return r ? t.reverse() : t;\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t return specifier == null ? tickFormat : format(specifier);\n\t };\n\t\n\t scale.nice = function(interval, step) {\n\t var d = domain();\n\t return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n\t ? domain(nice(d, interval))\n\t : scale;\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n\t };\n\t\n\t return scale;\n\t }\n\t\n\t function time() {\n\t return calendar(year, month, timeWeek, day, hour, minute, second, millisecond, exports.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n\t }\n\t\n\t function utcTime() {\n\t return calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, second, millisecond, exports.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n\t }\n\t\n\t function colors(s) {\n\t return s.match(/.{6}/g).map(function(x) {\n\t return \"#\" + x;\n\t });\n\t }\n\t\n\t var category10 = colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\t\n\t var category20b = colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n\t\n\t var category20c = colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n\t\n\t var category20 = colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n\t\n\t var cubehelix$3 = interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n\t\n\t var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\t\n\t var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\t\n\t var rainbow = cubehelix();\n\t\n\t function rainbow$1(t) {\n\t if (t < 0 || t > 1) t -= Math.floor(t);\n\t var ts = Math.abs(t - 0.5);\n\t rainbow.h = 360 * t - 100;\n\t rainbow.s = 1.5 - 1.5 * ts;\n\t rainbow.l = 0.8 - 0.9 * ts;\n\t return rainbow + \"\";\n\t }\n\t\n\t function ramp(range) {\n\t var n = range.length;\n\t return function(t) {\n\t return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n\t };\n\t }\n\t\n\t var viridis = ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\t\n\t var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\t\n\t var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\t\n\t var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\t\n\t function sequential(interpolator) {\n\t var x0 = 0,\n\t x1 = 1,\n\t clamp = false;\n\t\n\t function scale(x) {\n\t var t = (x - x0) / (x1 - x0);\n\t return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n\t };\n\t\n\t scale.clamp = function(_) {\n\t return arguments.length ? (clamp = !!_, scale) : clamp;\n\t };\n\t\n\t scale.interpolator = function(_) {\n\t return arguments.length ? (interpolator = _, scale) : interpolator;\n\t };\n\t\n\t scale.copy = function() {\n\t return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n\t };\n\t\n\t return linearish(scale);\n\t }\n\t\n\t var xhtml = \"http://www.w3.org/1999/xhtml\";\n\t\n\t var namespaces = {\n\t svg: \"http://www.w3.org/2000/svg\",\n\t xhtml: xhtml,\n\t xlink: \"http://www.w3.org/1999/xlink\",\n\t xml: \"http://www.w3.org/XML/1998/namespace\",\n\t xmlns: \"http://www.w3.org/2000/xmlns/\"\n\t };\n\t\n\t function namespace(name) {\n\t var prefix = name += \"\", i = prefix.indexOf(\":\");\n\t if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n\t return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n\t }\n\t\n\t function creatorInherit(name) {\n\t return function() {\n\t var document = this.ownerDocument,\n\t uri = this.namespaceURI;\n\t return uri === xhtml && document.documentElement.namespaceURI === xhtml\n\t ? document.createElement(name)\n\t : document.createElementNS(uri, name);\n\t };\n\t }\n\t\n\t function creatorFixed(fullname) {\n\t return function() {\n\t return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n\t };\n\t }\n\t\n\t function creator(name) {\n\t var fullname = namespace(name);\n\t return (fullname.local\n\t ? creatorFixed\n\t : creatorInherit)(fullname);\n\t }\n\t\n\t var nextId = 0;\n\t\n\t function local() {\n\t return new Local;\n\t }\n\t\n\t function Local() {\n\t this._ = \"@\" + (++nextId).toString(36);\n\t }\n\t\n\t Local.prototype = local.prototype = {\n\t constructor: Local,\n\t get: function(node) {\n\t var id = this._;\n\t while (!(id in node)) if (!(node = node.parentNode)) return;\n\t return node[id];\n\t },\n\t set: function(node, value) {\n\t return node[this._] = value;\n\t },\n\t remove: function(node) {\n\t return this._ in node && delete node[this._];\n\t },\n\t toString: function() {\n\t return this._;\n\t }\n\t };\n\t\n\t var matcher = function(selector) {\n\t return function() {\n\t return this.matches(selector);\n\t };\n\t };\n\t\n\t if (typeof document !== \"undefined\") {\n\t var element = document.documentElement;\n\t if (!element.matches) {\n\t var vendorMatches = element.webkitMatchesSelector\n\t || element.msMatchesSelector\n\t || element.mozMatchesSelector\n\t || element.oMatchesSelector;\n\t matcher = function(selector) {\n\t return function() {\n\t return vendorMatches.call(this, selector);\n\t };\n\t };\n\t }\n\t }\n\t\n\t var matcher$1 = matcher;\n\t\n\t var filterEvents = {};\n\t\n\t exports.event = null;\n\t\n\t if (typeof document !== \"undefined\") {\n\t var element$1 = document.documentElement;\n\t if (!(\"onmouseenter\" in element$1)) {\n\t filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n\t }\n\t }\n\t\n\t function filterContextListener(listener, index, group) {\n\t listener = contextListener(listener, index, group);\n\t return function(event) {\n\t var related = event.relatedTarget;\n\t if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n\t listener.call(this, event);\n\t }\n\t };\n\t }\n\t\n\t function contextListener(listener, index, group) {\n\t return function(event1) {\n\t var event0 = exports.event; // Events can be reentrant (e.g., focus).\n\t exports.event = event1;\n\t try {\n\t listener.call(this, this.__data__, index, group);\n\t } finally {\n\t exports.event = event0;\n\t }\n\t };\n\t }\n\t\n\t function parseTypenames$1(typenames) {\n\t return typenames.trim().split(/^|\\s+/).map(function(t) {\n\t var name = \"\", i = t.indexOf(\".\");\n\t if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n\t return {type: t, name: name};\n\t });\n\t }\n\t\n\t function onRemove(typename) {\n\t return function() {\n\t var on = this.__on;\n\t if (!on) return;\n\t for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n\t if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n\t this.removeEventListener(o.type, o.listener, o.capture);\n\t } else {\n\t on[++i] = o;\n\t }\n\t }\n\t if (++i) on.length = i;\n\t else delete this.__on;\n\t };\n\t }\n\t\n\t function onAdd(typename, value, capture) {\n\t var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n\t return function(d, i, group) {\n\t var on = this.__on, o, listener = wrap(value, i, group);\n\t if (on) for (var j = 0, m = on.length; j < m; ++j) {\n\t if ((o = on[j]).type === typename.type && o.name === typename.name) {\n\t this.removeEventListener(o.type, o.listener, o.capture);\n\t this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n\t o.value = value;\n\t return;\n\t }\n\t }\n\t this.addEventListener(typename.type, listener, capture);\n\t o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n\t if (!on) this.__on = [o];\n\t else on.push(o);\n\t };\n\t }\n\t\n\t function selection_on(typename, value, capture) {\n\t var typenames = parseTypenames$1(typename + \"\"), i, n = typenames.length, t;\n\t\n\t if (arguments.length < 2) {\n\t var on = this.node().__on;\n\t if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n\t for (i = 0, o = on[j]; i < n; ++i) {\n\t if ((t = typenames[i]).type === o.type && t.name === o.name) {\n\t return o.value;\n\t }\n\t }\n\t }\n\t return;\n\t }\n\t\n\t on = value ? onAdd : onRemove;\n\t if (capture == null) capture = false;\n\t for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n\t return this;\n\t }\n\t\n\t function customEvent(event1, listener, that, args) {\n\t var event0 = exports.event;\n\t event1.sourceEvent = exports.event;\n\t exports.event = event1;\n\t try {\n\t return listener.apply(that, args);\n\t } finally {\n\t exports.event = event0;\n\t }\n\t }\n\t\n\t function sourceEvent() {\n\t var current = exports.event, source;\n\t while (source = current.sourceEvent) current = source;\n\t return current;\n\t }\n\t\n\t function point$5(node, event) {\n\t var svg = node.ownerSVGElement || node;\n\t\n\t if (svg.createSVGPoint) {\n\t var point = svg.createSVGPoint();\n\t point.x = event.clientX, point.y = event.clientY;\n\t point = point.matrixTransform(node.getScreenCTM().inverse());\n\t return [point.x, point.y];\n\t }\n\t\n\t var rect = node.getBoundingClientRect();\n\t return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n\t }\n\t\n\t function mouse(node) {\n\t var event = sourceEvent();\n\t if (event.changedTouches) event = event.changedTouches[0];\n\t return point$5(node, event);\n\t }\n\t\n\t function none$2() {}\n\t\n\t function selector(selector) {\n\t return selector == null ? none$2 : function() {\n\t return this.querySelector(selector);\n\t };\n\t }\n\t\n\t function selection_select(select) {\n\t if (typeof select !== \"function\") select = selector(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t subgroup[i] = subnode;\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, this._parents);\n\t }\n\t\n\t function empty() {\n\t return [];\n\t }\n\t\n\t function selectorAll(selector) {\n\t return selector == null ? empty : function() {\n\t return this.querySelectorAll(selector);\n\t };\n\t }\n\t\n\t function selection_selectAll(select) {\n\t if (typeof select !== \"function\") select = selectorAll(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t subgroups.push(select.call(node, node.__data__, i, group));\n\t parents.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, parents);\n\t }\n\t\n\t function selection_filter(match) {\n\t if (typeof match !== \"function\") match = matcher$1(match);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, this._parents);\n\t }\n\t\n\t function sparse(update) {\n\t return new Array(update.length);\n\t }\n\t\n\t function selection_enter() {\n\t return new Selection(this._enter || this._groups.map(sparse), this._parents);\n\t }\n\t\n\t function EnterNode(parent, datum) {\n\t this.ownerDocument = parent.ownerDocument;\n\t this.namespaceURI = parent.namespaceURI;\n\t this._next = null;\n\t this._parent = parent;\n\t this.__data__ = datum;\n\t }\n\t\n\t EnterNode.prototype = {\n\t constructor: EnterNode,\n\t appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n\t insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n\t querySelector: function(selector) { return this._parent.querySelector(selector); },\n\t querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n\t };\n\t\n\t function constant$4(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t var keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\t\n\t function bindIndex(parent, group, enter, update, exit, data) {\n\t var i = 0,\n\t node,\n\t groupLength = group.length,\n\t dataLength = data.length;\n\t\n\t // Put any non-null nodes that fit into update.\n\t // Put any null nodes into enter.\n\t // Put any remaining data into enter.\n\t for (; i < dataLength; ++i) {\n\t if (node = group[i]) {\n\t node.__data__ = data[i];\n\t update[i] = node;\n\t } else {\n\t enter[i] = new EnterNode(parent, data[i]);\n\t }\n\t }\n\t\n\t // Put any non-null nodes that don’t fit into exit.\n\t for (; i < groupLength; ++i) {\n\t if (node = group[i]) {\n\t exit[i] = node;\n\t }\n\t }\n\t }\n\t\n\t function bindKey(parent, group, enter, update, exit, data, key) {\n\t var i,\n\t node,\n\t nodeByKeyValue = {},\n\t groupLength = group.length,\n\t dataLength = data.length,\n\t keyValues = new Array(groupLength),\n\t keyValue;\n\t\n\t // Compute the key for each node.\n\t // If multiple nodes have the same key, the duplicates are added to exit.\n\t for (i = 0; i < groupLength; ++i) {\n\t if (node = group[i]) {\n\t keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n\t if (keyValue in nodeByKeyValue) {\n\t exit[i] = node;\n\t } else {\n\t nodeByKeyValue[keyValue] = node;\n\t }\n\t }\n\t }\n\t\n\t // Compute the key for each datum.\n\t // If there a node associated with this key, join and add it to update.\n\t // If there is not (or the key is a duplicate), add it to enter.\n\t for (i = 0; i < dataLength; ++i) {\n\t keyValue = keyPrefix + key.call(parent, data[i], i, data);\n\t if (node = nodeByKeyValue[keyValue]) {\n\t update[i] = node;\n\t node.__data__ = data[i];\n\t nodeByKeyValue[keyValue] = null;\n\t } else {\n\t enter[i] = new EnterNode(parent, data[i]);\n\t }\n\t }\n\t\n\t // Add any remaining nodes that were not bound to data to exit.\n\t for (i = 0; i < groupLength; ++i) {\n\t if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n\t exit[i] = node;\n\t }\n\t }\n\t }\n\t\n\t function selection_data(value, key) {\n\t if (!value) {\n\t data = new Array(this.size()), j = -1;\n\t this.each(function(d) { data[++j] = d; });\n\t return data;\n\t }\n\t\n\t var bind = key ? bindKey : bindIndex,\n\t parents = this._parents,\n\t groups = this._groups;\n\t\n\t if (typeof value !== \"function\") value = constant$4(value);\n\t\n\t for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n\t var parent = parents[j],\n\t group = groups[j],\n\t groupLength = group.length,\n\t data = value.call(parent, parent && parent.__data__, j, parents),\n\t dataLength = data.length,\n\t enterGroup = enter[j] = new Array(dataLength),\n\t updateGroup = update[j] = new Array(dataLength),\n\t exitGroup = exit[j] = new Array(groupLength);\n\t\n\t bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\t\n\t // Now connect the enter nodes to their following update node, such that\n\t // appendChild can insert the materialized enter node before this node,\n\t // rather than at the end of the parent node.\n\t for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n\t if (previous = enterGroup[i0]) {\n\t if (i0 >= i1) i1 = i0 + 1;\n\t while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n\t previous._next = next || null;\n\t }\n\t }\n\t }\n\t\n\t update = new Selection(update, parents);\n\t update._enter = enter;\n\t update._exit = exit;\n\t return update;\n\t }\n\t\n\t function selection_exit() {\n\t return new Selection(this._exit || this._groups.map(sparse), this._parents);\n\t }\n\t\n\t function selection_merge(selection) {\n\t\n\t for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n\t for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group0[i] || group1[i]) {\n\t merge[i] = node;\n\t }\n\t }\n\t }\n\t\n\t for (; j < m0; ++j) {\n\t merges[j] = groups0[j];\n\t }\n\t\n\t return new Selection(merges, this._parents);\n\t }\n\t\n\t function selection_order() {\n\t\n\t for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n\t for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n\t if (node = group[i]) {\n\t if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n\t next = node;\n\t }\n\t }\n\t }\n\t\n\t return this;\n\t }\n\t\n\t function selection_sort(compare) {\n\t if (!compare) compare = ascending$2;\n\t\n\t function compareNode(a, b) {\n\t return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n\t }\n\t\n\t for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t sortgroup[i] = node;\n\t }\n\t }\n\t sortgroup.sort(compareNode);\n\t }\n\t\n\t return new Selection(sortgroups, this._parents).order();\n\t }\n\t\n\t function ascending$2(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t }\n\t\n\t function selection_call() {\n\t var callback = arguments[0];\n\t arguments[0] = this;\n\t callback.apply(null, arguments);\n\t return this;\n\t }\n\t\n\t function selection_nodes() {\n\t var nodes = new Array(this.size()), i = -1;\n\t this.each(function() { nodes[++i] = this; });\n\t return nodes;\n\t }\n\t\n\t function selection_node() {\n\t\n\t for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n\t for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n\t var node = group[i];\n\t if (node) return node;\n\t }\n\t }\n\t\n\t return null;\n\t }\n\t\n\t function selection_size() {\n\t var size = 0;\n\t this.each(function() { ++size; });\n\t return size;\n\t }\n\t\n\t function selection_empty() {\n\t return !this.node();\n\t }\n\t\n\t function selection_each(callback) {\n\t\n\t for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n\t for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n\t if (node = group[i]) callback.call(node, node.__data__, i, group);\n\t }\n\t }\n\t\n\t return this;\n\t }\n\t\n\t function attrRemove(name) {\n\t return function() {\n\t this.removeAttribute(name);\n\t };\n\t }\n\t\n\t function attrRemoveNS(fullname) {\n\t return function() {\n\t this.removeAttributeNS(fullname.space, fullname.local);\n\t };\n\t }\n\t\n\t function attrConstant(name, value) {\n\t return function() {\n\t this.setAttribute(name, value);\n\t };\n\t }\n\t\n\t function attrConstantNS(fullname, value) {\n\t return function() {\n\t this.setAttributeNS(fullname.space, fullname.local, value);\n\t };\n\t }\n\t\n\t function attrFunction(name, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.removeAttribute(name);\n\t else this.setAttribute(name, v);\n\t };\n\t }\n\t\n\t function attrFunctionNS(fullname, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n\t else this.setAttributeNS(fullname.space, fullname.local, v);\n\t };\n\t }\n\t\n\t function selection_attr(name, value) {\n\t var fullname = namespace(name);\n\t\n\t if (arguments.length < 2) {\n\t var node = this.node();\n\t return fullname.local\n\t ? node.getAttributeNS(fullname.space, fullname.local)\n\t : node.getAttribute(fullname);\n\t }\n\t\n\t return this.each((value == null\n\t ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n\t ? (fullname.local ? attrFunctionNS : attrFunction)\n\t : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n\t }\n\t\n\t function window(node) {\n\t return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n\t || (node.document && node) // node is a Window\n\t || node.defaultView; // node is a Document\n\t }\n\t\n\t function styleRemove(name) {\n\t return function() {\n\t this.style.removeProperty(name);\n\t };\n\t }\n\t\n\t function styleConstant(name, value, priority) {\n\t return function() {\n\t this.style.setProperty(name, value, priority);\n\t };\n\t }\n\t\n\t function styleFunction(name, value, priority) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.style.removeProperty(name);\n\t else this.style.setProperty(name, v, priority);\n\t };\n\t }\n\t\n\t function selection_style(name, value, priority) {\n\t var node;\n\t return arguments.length > 1\n\t ? this.each((value == null\n\t ? styleRemove : typeof value === \"function\"\n\t ? styleFunction\n\t : styleConstant)(name, value, priority == null ? \"\" : priority))\n\t : window(node = this.node())\n\t .getComputedStyle(node, null)\n\t .getPropertyValue(name);\n\t }\n\t\n\t function propertyRemove(name) {\n\t return function() {\n\t delete this[name];\n\t };\n\t }\n\t\n\t function propertyConstant(name, value) {\n\t return function() {\n\t this[name] = value;\n\t };\n\t }\n\t\n\t function propertyFunction(name, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) delete this[name];\n\t else this[name] = v;\n\t };\n\t }\n\t\n\t function selection_property(name, value) {\n\t return arguments.length > 1\n\t ? this.each((value == null\n\t ? propertyRemove : typeof value === \"function\"\n\t ? propertyFunction\n\t : propertyConstant)(name, value))\n\t : this.node()[name];\n\t }\n\t\n\t function classArray(string) {\n\t return string.trim().split(/^|\\s+/);\n\t }\n\t\n\t function classList(node) {\n\t return node.classList || new ClassList(node);\n\t }\n\t\n\t function ClassList(node) {\n\t this._node = node;\n\t this._names = classArray(node.getAttribute(\"class\") || \"\");\n\t }\n\t\n\t ClassList.prototype = {\n\t add: function(name) {\n\t var i = this._names.indexOf(name);\n\t if (i < 0) {\n\t this._names.push(name);\n\t this._node.setAttribute(\"class\", this._names.join(\" \"));\n\t }\n\t },\n\t remove: function(name) {\n\t var i = this._names.indexOf(name);\n\t if (i >= 0) {\n\t this._names.splice(i, 1);\n\t this._node.setAttribute(\"class\", this._names.join(\" \"));\n\t }\n\t },\n\t contains: function(name) {\n\t return this._names.indexOf(name) >= 0;\n\t }\n\t };\n\t\n\t function classedAdd(node, names) {\n\t var list = classList(node), i = -1, n = names.length;\n\t while (++i < n) list.add(names[i]);\n\t }\n\t\n\t function classedRemove(node, names) {\n\t var list = classList(node), i = -1, n = names.length;\n\t while (++i < n) list.remove(names[i]);\n\t }\n\t\n\t function classedTrue(names) {\n\t return function() {\n\t classedAdd(this, names);\n\t };\n\t }\n\t\n\t function classedFalse(names) {\n\t return function() {\n\t classedRemove(this, names);\n\t };\n\t }\n\t\n\t function classedFunction(names, value) {\n\t return function() {\n\t (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n\t };\n\t }\n\t\n\t function selection_classed(name, value) {\n\t var names = classArray(name + \"\");\n\t\n\t if (arguments.length < 2) {\n\t var list = classList(this.node()), i = -1, n = names.length;\n\t while (++i < n) if (!list.contains(names[i])) return false;\n\t return true;\n\t }\n\t\n\t return this.each((typeof value === \"function\"\n\t ? classedFunction : value\n\t ? classedTrue\n\t : classedFalse)(names, value));\n\t }\n\t\n\t function textRemove() {\n\t this.textContent = \"\";\n\t }\n\t\n\t function textConstant(value) {\n\t return function() {\n\t this.textContent = value;\n\t };\n\t }\n\t\n\t function textFunction(value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t this.textContent = v == null ? \"\" : v;\n\t };\n\t }\n\t\n\t function selection_text(value) {\n\t return arguments.length\n\t ? this.each(value == null\n\t ? textRemove : (typeof value === \"function\"\n\t ? textFunction\n\t : textConstant)(value))\n\t : this.node().textContent;\n\t }\n\t\n\t function htmlRemove() {\n\t this.innerHTML = \"\";\n\t }\n\t\n\t function htmlConstant(value) {\n\t return function() {\n\t this.innerHTML = value;\n\t };\n\t }\n\t\n\t function htmlFunction(value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t this.innerHTML = v == null ? \"\" : v;\n\t };\n\t }\n\t\n\t function selection_html(value) {\n\t return arguments.length\n\t ? this.each(value == null\n\t ? htmlRemove : (typeof value === \"function\"\n\t ? htmlFunction\n\t : htmlConstant)(value))\n\t : this.node().innerHTML;\n\t }\n\t\n\t function raise$1() {\n\t if (this.nextSibling) this.parentNode.appendChild(this);\n\t }\n\t\n\t function selection_raise() {\n\t return this.each(raise$1);\n\t }\n\t\n\t function lower() {\n\t if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n\t }\n\t\n\t function selection_lower() {\n\t return this.each(lower);\n\t }\n\t\n\t function selection_append(name) {\n\t var create = typeof name === \"function\" ? name : creator(name);\n\t return this.select(function() {\n\t return this.appendChild(create.apply(this, arguments));\n\t });\n\t }\n\t\n\t function constantNull() {\n\t return null;\n\t }\n\t\n\t function selection_insert(name, before) {\n\t var create = typeof name === \"function\" ? name : creator(name),\n\t select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n\t return this.select(function() {\n\t return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n\t });\n\t }\n\t\n\t function remove() {\n\t var parent = this.parentNode;\n\t if (parent) parent.removeChild(this);\n\t }\n\t\n\t function selection_remove() {\n\t return this.each(remove);\n\t }\n\t\n\t function selection_datum(value) {\n\t return arguments.length\n\t ? this.property(\"__data__\", value)\n\t : this.node().__data__;\n\t }\n\t\n\t function dispatchEvent(node, type, params) {\n\t var window$$ = window(node),\n\t event = window$$.CustomEvent;\n\t\n\t if (event) {\n\t event = new event(type, params);\n\t } else {\n\t event = window$$.document.createEvent(\"Event\");\n\t if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n\t else event.initEvent(type, false, false);\n\t }\n\t\n\t node.dispatchEvent(event);\n\t }\n\t\n\t function dispatchConstant(type, params) {\n\t return function() {\n\t return dispatchEvent(this, type, params);\n\t };\n\t }\n\t\n\t function dispatchFunction(type, params) {\n\t return function() {\n\t return dispatchEvent(this, type, params.apply(this, arguments));\n\t };\n\t }\n\t\n\t function selection_dispatch(type, params) {\n\t return this.each((typeof params === \"function\"\n\t ? dispatchFunction\n\t : dispatchConstant)(type, params));\n\t }\n\t\n\t var root = [null];\n\t\n\t function Selection(groups, parents) {\n\t this._groups = groups;\n\t this._parents = parents;\n\t }\n\t\n\t function selection() {\n\t return new Selection([[document.documentElement]], root);\n\t }\n\t\n\t Selection.prototype = selection.prototype = {\n\t constructor: Selection,\n\t select: selection_select,\n\t selectAll: selection_selectAll,\n\t filter: selection_filter,\n\t data: selection_data,\n\t enter: selection_enter,\n\t exit: selection_exit,\n\t merge: selection_merge,\n\t order: selection_order,\n\t sort: selection_sort,\n\t call: selection_call,\n\t nodes: selection_nodes,\n\t node: selection_node,\n\t size: selection_size,\n\t empty: selection_empty,\n\t each: selection_each,\n\t attr: selection_attr,\n\t style: selection_style,\n\t property: selection_property,\n\t classed: selection_classed,\n\t text: selection_text,\n\t html: selection_html,\n\t raise: selection_raise,\n\t lower: selection_lower,\n\t append: selection_append,\n\t insert: selection_insert,\n\t remove: selection_remove,\n\t datum: selection_datum,\n\t on: selection_on,\n\t dispatch: selection_dispatch\n\t };\n\t\n\t function select(selector) {\n\t return typeof selector === \"string\"\n\t ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n\t : new Selection([[selector]], root);\n\t }\n\t\n\t function selectAll(selector) {\n\t return typeof selector === \"string\"\n\t ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n\t : new Selection([selector == null ? [] : selector], root);\n\t }\n\t\n\t function touch(node, touches, identifier) {\n\t if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\t\n\t for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n\t if ((touch = touches[i]).identifier === identifier) {\n\t return point$5(node, touch);\n\t }\n\t }\n\t\n\t return null;\n\t }\n\t\n\t function touches(node, touches) {\n\t if (touches == null) touches = sourceEvent().touches;\n\t\n\t for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n\t points[i] = point$5(node, touches[i]);\n\t }\n\t\n\t return points;\n\t }\n\t\n\t var emptyOn = dispatch(\"start\", \"end\", \"interrupt\");\n\t var emptyTween = [];\n\t\n\t var CREATED = 0;\n\t var SCHEDULED = 1;\n\t var STARTING = 2;\n\t var STARTED = 3;\n\t var ENDING = 4;\n\t var ENDED = 5;\n\t\n\t function schedule(node, name, id, index, group, timing) {\n\t var schedules = node.__transition;\n\t if (!schedules) node.__transition = {};\n\t else if (id in schedules) return;\n\t create(node, id, {\n\t name: name,\n\t index: index, // For context during callback.\n\t group: group, // For context during callback.\n\t on: emptyOn,\n\t tween: emptyTween,\n\t time: timing.time,\n\t delay: timing.delay,\n\t duration: timing.duration,\n\t ease: timing.ease,\n\t timer: null,\n\t state: CREATED\n\t });\n\t }\n\t\n\t function init(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error(\"too late\");\n\t return schedule;\n\t }\n\t\n\t function set$2(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error(\"too late\");\n\t return schedule;\n\t }\n\t\n\t function get$1(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id])) throw new Error(\"too late\");\n\t return schedule;\n\t }\n\t\n\t function create(node, id, self) {\n\t var schedules = node.__transition,\n\t tween;\n\t\n\t // Initialize the self timer when the transition is created.\n\t // Note the actual delay is not known until the first callback!\n\t schedules[id] = self;\n\t self.timer = timer(schedule, 0, self.time);\n\t\n\t // If the delay is greater than this first sleep, sleep some more;\n\t // otherwise, start immediately.\n\t function schedule(elapsed) {\n\t self.state = SCHEDULED;\n\t if (self.delay <= elapsed) start(elapsed - self.delay);\n\t else self.timer.restart(start, self.delay, self.time);\n\t }\n\t\n\t function start(elapsed) {\n\t var i, j, n, o;\n\t\n\t for (i in schedules) {\n\t o = schedules[i];\n\t if (o.name !== self.name) continue;\n\t\n\t // Interrupt the active transition, if any.\n\t // Dispatch the interrupt event.\n\t if (o.state === STARTED) {\n\t o.state = ENDED;\n\t o.timer.stop();\n\t o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n\t delete schedules[i];\n\t }\n\t\n\t // Cancel any pre-empted transitions. No interrupt event is dispatched\n\t // because the cancelled transitions never started. Note that this also\n\t // removes this transition from the pending list!\n\t else if (+i < id) {\n\t o.state = ENDED;\n\t o.timer.stop();\n\t delete schedules[i];\n\t }\n\t }\n\t\n\t // Defer the first tick to end of the current frame; see mbostock/d3#1576.\n\t // Note the transition may be canceled after start and before the first tick!\n\t // Note this must be scheduled before the start event; see d3/d3-transition#16!\n\t // Assuming this is successful, subsequent callbacks go straight to tick.\n\t timeout$1(function() {\n\t if (self.state === STARTED) {\n\t self.timer.restart(tick, self.delay, self.time);\n\t tick(elapsed);\n\t }\n\t });\n\t\n\t // Dispatch the start event.\n\t // Note this must be done before the tween are initialized.\n\t self.state = STARTING;\n\t self.on.call(\"start\", node, node.__data__, self.index, self.group);\n\t if (self.state !== STARTING) return; // interrupted\n\t self.state = STARTED;\n\t\n\t // Initialize the tween, deleting null tween.\n\t tween = new Array(n = self.tween.length);\n\t for (i = 0, j = -1; i < n; ++i) {\n\t if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n\t tween[++j] = o;\n\t }\n\t }\n\t tween.length = j + 1;\n\t }\n\t\n\t function tick(elapsed) {\n\t var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.state = ENDING, 1),\n\t i = -1,\n\t n = tween.length;\n\t\n\t while (++i < n) {\n\t tween[i].call(null, t);\n\t }\n\t\n\t // Dispatch the end event.\n\t if (self.state === ENDING) {\n\t self.state = ENDED;\n\t self.timer.stop();\n\t self.on.call(\"end\", node, node.__data__, self.index, self.group);\n\t for (i in schedules) if (+i !== id) return void delete schedules[id];\n\t delete node.__transition;\n\t }\n\t }\n\t }\n\t\n\t function interrupt(node, name) {\n\t var schedules = node.__transition,\n\t schedule,\n\t active,\n\t empty = true,\n\t i;\n\t\n\t if (!schedules) return;\n\t\n\t name = name == null ? null : name + \"\";\n\t\n\t for (i in schedules) {\n\t if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n\t active = schedule.state === STARTED;\n\t schedule.state = ENDED;\n\t schedule.timer.stop();\n\t if (active) schedule.on.call(\"interrupt\", node, node.__data__, schedule.index, schedule.group);\n\t delete schedules[i];\n\t }\n\t\n\t if (empty) delete node.__transition;\n\t }\n\t\n\t function selection_interrupt(name) {\n\t return this.each(function() {\n\t interrupt(this, name);\n\t });\n\t }\n\t\n\t function tweenRemove(id, name) {\n\t var tween0, tween1;\n\t return function() {\n\t var schedule = set$2(this, id),\n\t tween = schedule.tween;\n\t\n\t // If this node shared tween with the previous node,\n\t // just assign the updated shared tween and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (tween !== tween0) {\n\t tween1 = tween0 = tween;\n\t for (var i = 0, n = tween1.length; i < n; ++i) {\n\t if (tween1[i].name === name) {\n\t tween1 = tween1.slice();\n\t tween1.splice(i, 1);\n\t break;\n\t }\n\t }\n\t }\n\t\n\t schedule.tween = tween1;\n\t };\n\t }\n\t\n\t function tweenFunction(id, name, value) {\n\t var tween0, tween1;\n\t if (typeof value !== \"function\") throw new Error;\n\t return function() {\n\t var schedule = set$2(this, id),\n\t tween = schedule.tween;\n\t\n\t // If this node shared tween with the previous node,\n\t // just assign the updated shared tween and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (tween !== tween0) {\n\t tween1 = (tween0 = tween).slice();\n\t for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n\t if (tween1[i].name === name) {\n\t tween1[i] = t;\n\t break;\n\t }\n\t }\n\t if (i === n) tween1.push(t);\n\t }\n\t\n\t schedule.tween = tween1;\n\t };\n\t }\n\t\n\t function transition_tween(name, value) {\n\t var id = this._id;\n\t\n\t name += \"\";\n\t\n\t if (arguments.length < 2) {\n\t var tween = get$1(this.node(), id).tween;\n\t for (var i = 0, n = tween.length, t; i < n; ++i) {\n\t if ((t = tween[i]).name === name) {\n\t return t.value;\n\t }\n\t }\n\t return null;\n\t }\n\t\n\t return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n\t }\n\t\n\t function tweenValue(transition, name, value) {\n\t var id = transition._id;\n\t\n\t transition.each(function() {\n\t var schedule = set$2(this, id);\n\t (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n\t });\n\t\n\t return function(node) {\n\t return get$1(node, id).value[name];\n\t };\n\t }\n\t\n\t function interpolate$1(a, b) {\n\t var c;\n\t return (typeof b === \"number\" ? interpolateNumber\n\t : b instanceof color ? interpolateRgb\n\t : (c = color(b)) ? (b = c, interpolateRgb)\n\t : interpolateString)(a, b);\n\t }\n\t\n\t function attrRemove$1(name) {\n\t return function() {\n\t this.removeAttribute(name);\n\t };\n\t }\n\t\n\t function attrRemoveNS$1(fullname) {\n\t return function() {\n\t this.removeAttributeNS(fullname.space, fullname.local);\n\t };\n\t }\n\t\n\t function attrConstant$1(name, interpolate, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = this.getAttribute(name);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate(value00 = value0, value1);\n\t };\n\t }\n\t\n\t function attrConstantNS$1(fullname, interpolate, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = this.getAttributeNS(fullname.space, fullname.local);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate(value00 = value0, value1);\n\t };\n\t }\n\t\n\t function attrFunction$1(name, interpolate, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0, value1 = value(this);\n\t if (value1 == null) return void this.removeAttribute(name);\n\t value0 = this.getAttribute(name);\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate(value00 = value0, value10 = value1);\n\t };\n\t }\n\t\n\t function attrFunctionNS$1(fullname, interpolate, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0, value1 = value(this);\n\t if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n\t value0 = this.getAttributeNS(fullname.space, fullname.local);\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate(value00 = value0, value10 = value1);\n\t };\n\t }\n\t\n\t function transition_attr(name, value) {\n\t var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform$2 : interpolate$1;\n\t return this.attrTween(name, typeof value === \"function\"\n\t ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n\t : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname)\n\t : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value));\n\t }\n\t\n\t function attrTweenNS(fullname, value) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.setAttributeNS(fullname.space, fullname.local, i(t));\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t }\n\t\n\t function attrTween(name, value) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.setAttribute(name, i(t));\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t }\n\t\n\t function transition_attrTween(name, value) {\n\t var key = \"attr.\" + name;\n\t if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n\t if (value == null) return this.tween(key, null);\n\t if (typeof value !== \"function\") throw new Error;\n\t var fullname = namespace(name);\n\t return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n\t }\n\t\n\t function delayFunction(id, value) {\n\t return function() {\n\t init(this, id).delay = +value.apply(this, arguments);\n\t };\n\t }\n\t\n\t function delayConstant(id, value) {\n\t return value = +value, function() {\n\t init(this, id).delay = value;\n\t };\n\t }\n\t\n\t function transition_delay(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each((typeof value === \"function\"\n\t ? delayFunction\n\t : delayConstant)(id, value))\n\t : get$1(this.node(), id).delay;\n\t }\n\t\n\t function durationFunction(id, value) {\n\t return function() {\n\t set$2(this, id).duration = +value.apply(this, arguments);\n\t };\n\t }\n\t\n\t function durationConstant(id, value) {\n\t return value = +value, function() {\n\t set$2(this, id).duration = value;\n\t };\n\t }\n\t\n\t function transition_duration(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each((typeof value === \"function\"\n\t ? durationFunction\n\t : durationConstant)(id, value))\n\t : get$1(this.node(), id).duration;\n\t }\n\t\n\t function easeConstant(id, value) {\n\t if (typeof value !== \"function\") throw new Error;\n\t return function() {\n\t set$2(this, id).ease = value;\n\t };\n\t }\n\t\n\t function transition_ease(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each(easeConstant(id, value))\n\t : get$1(this.node(), id).ease;\n\t }\n\t\n\t function transition_filter(match) {\n\t if (typeof match !== \"function\") match = matcher$1(match);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, this._parents, this._name, this._id);\n\t }\n\t\n\t function transition_merge(transition) {\n\t if (transition._id !== this._id) throw new Error;\n\t\n\t for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n\t for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group0[i] || group1[i]) {\n\t merge[i] = node;\n\t }\n\t }\n\t }\n\t\n\t for (; j < m0; ++j) {\n\t merges[j] = groups0[j];\n\t }\n\t\n\t return new Transition(merges, this._parents, this._name, this._id);\n\t }\n\t\n\t function start$1(name) {\n\t return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n\t var i = t.indexOf(\".\");\n\t if (i >= 0) t = t.slice(0, i);\n\t return !t || t === \"start\";\n\t });\n\t }\n\t\n\t function onFunction(id, name, listener) {\n\t var on0, on1, sit = start$1(name) ? init : set$2;\n\t return function() {\n\t var schedule = sit(this, id),\n\t on = schedule.on;\n\t\n\t // If this node shared a dispatch with the previous node,\n\t // just assign the updated shared dispatch and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\t\n\t schedule.on = on1;\n\t };\n\t }\n\t\n\t function transition_on(name, listener) {\n\t var id = this._id;\n\t\n\t return arguments.length < 2\n\t ? get$1(this.node(), id).on.on(name)\n\t : this.each(onFunction(id, name, listener));\n\t }\n\t\n\t function removeFunction(id) {\n\t return function() {\n\t var parent = this.parentNode;\n\t for (var i in this.__transition) if (+i !== id) return;\n\t if (parent) parent.removeChild(this);\n\t };\n\t }\n\t\n\t function transition_remove() {\n\t return this.on(\"end.remove\", removeFunction(this._id));\n\t }\n\t\n\t function transition_select(select) {\n\t var name = this._name,\n\t id = this._id;\n\t\n\t if (typeof select !== \"function\") select = selector(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t subgroup[i] = subnode;\n\t schedule(subgroup[i], name, id, i, subgroup, get$1(node, id));\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, this._parents, name, id);\n\t }\n\t\n\t function transition_selectAll(select) {\n\t var name = this._name,\n\t id = this._id;\n\t\n\t if (typeof select !== \"function\") select = selectorAll(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) {\n\t if (child = children[k]) {\n\t schedule(child, name, id, k, children, inherit);\n\t }\n\t }\n\t subgroups.push(children);\n\t parents.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, parents, name, id);\n\t }\n\t\n\t var Selection$1 = selection.prototype.constructor;\n\t\n\t function transition_selection() {\n\t return new Selection$1(this._groups, this._parents);\n\t }\n\t\n\t function styleRemove$1(name, interpolate) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var style = window(this).getComputedStyle(this, null),\n\t value0 = style.getPropertyValue(name),\n\t value1 = (this.style.removeProperty(name), style.getPropertyValue(name));\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate(value00 = value0, value10 = value1);\n\t };\n\t }\n\t\n\t function styleRemoveEnd(name) {\n\t return function() {\n\t this.style.removeProperty(name);\n\t };\n\t }\n\t\n\t function styleConstant$1(name, interpolate, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = window(this).getComputedStyle(this, null).getPropertyValue(name);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate(value00 = value0, value1);\n\t };\n\t }\n\t\n\t function styleFunction$1(name, interpolate, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var style = window(this).getComputedStyle(this, null),\n\t value0 = style.getPropertyValue(name),\n\t value1 = value(this);\n\t if (value1 == null) value1 = (this.style.removeProperty(name), style.getPropertyValue(name));\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate(value00 = value0, value10 = value1);\n\t };\n\t }\n\t\n\t function transition_style(name, value, priority) {\n\t var i = (name += \"\") === \"transform\" ? interpolateTransform$1 : interpolate$1;\n\t return value == null ? this\n\t .styleTween(name, styleRemove$1(name, i))\n\t .on(\"end.style.\" + name, styleRemoveEnd(name))\n\t : this.styleTween(name, typeof value === \"function\"\n\t ? styleFunction$1(name, i, tweenValue(this, \"style.\" + name, value))\n\t : styleConstant$1(name, i, value), priority);\n\t }\n\t\n\t function styleTween(name, value, priority) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.style.setProperty(name, i(t), priority);\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t }\n\t\n\t function transition_styleTween(name, value, priority) {\n\t var key = \"style.\" + (name += \"\");\n\t if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n\t if (value == null) return this.tween(key, null);\n\t if (typeof value !== \"function\") throw new Error;\n\t return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n\t }\n\t\n\t function textConstant$1(value) {\n\t return function() {\n\t this.textContent = value;\n\t };\n\t }\n\t\n\t function textFunction$1(value) {\n\t return function() {\n\t var value1 = value(this);\n\t this.textContent = value1 == null ? \"\" : value1;\n\t };\n\t }\n\t\n\t function transition_text(value) {\n\t return this.tween(\"text\", typeof value === \"function\"\n\t ? textFunction$1(tweenValue(this, \"text\", value))\n\t : textConstant$1(value == null ? \"\" : value + \"\"));\n\t }\n\t\n\t function transition_transition() {\n\t var name = this._name,\n\t id0 = this._id,\n\t id1 = newId();\n\t\n\t for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t var inherit = get$1(node, id0);\n\t schedule(node, name, id1, i, group, {\n\t time: inherit.time + inherit.delay + inherit.duration,\n\t delay: 0,\n\t duration: inherit.duration,\n\t ease: inherit.ease\n\t });\n\t }\n\t }\n\t }\n\t\n\t return new Transition(groups, this._parents, name, id1);\n\t }\n\t\n\t var id = 0;\n\t\n\t function Transition(groups, parents, name, id) {\n\t this._groups = groups;\n\t this._parents = parents;\n\t this._name = name;\n\t this._id = id;\n\t }\n\t\n\t function transition(name) {\n\t return selection().transition(name);\n\t }\n\t\n\t function newId() {\n\t return ++id;\n\t }\n\t\n\t var selection_prototype = selection.prototype;\n\t\n\t Transition.prototype = transition.prototype = {\n\t constructor: Transition,\n\t select: transition_select,\n\t selectAll: transition_selectAll,\n\t filter: transition_filter,\n\t merge: transition_merge,\n\t selection: transition_selection,\n\t transition: transition_transition,\n\t call: selection_prototype.call,\n\t nodes: selection_prototype.nodes,\n\t node: selection_prototype.node,\n\t size: selection_prototype.size,\n\t empty: selection_prototype.empty,\n\t each: selection_prototype.each,\n\t on: transition_on,\n\t attr: transition_attr,\n\t attrTween: transition_attrTween,\n\t style: transition_style,\n\t styleTween: transition_styleTween,\n\t text: transition_text,\n\t remove: transition_remove,\n\t tween: transition_tween,\n\t delay: transition_delay,\n\t duration: transition_duration,\n\t ease: transition_ease\n\t };\n\t\n\t var defaultTiming = {\n\t time: null, // Set on use.\n\t delay: 0,\n\t duration: 250,\n\t ease: easeCubicInOut\n\t };\n\t\n\t function inherit(node, id) {\n\t var timing;\n\t while (!(timing = node.__transition) || !(timing = timing[id])) {\n\t if (!(node = node.parentNode)) {\n\t return defaultTiming.time = now(), defaultTiming;\n\t }\n\t }\n\t return timing;\n\t }\n\t\n\t function selection_transition(name) {\n\t var id,\n\t timing;\n\t\n\t if (name instanceof Transition) {\n\t id = name._id, name = name._name;\n\t } else {\n\t id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n\t }\n\t\n\t for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t schedule(node, name, id, i, group, timing || inherit(node, id));\n\t }\n\t }\n\t }\n\t\n\t return new Transition(groups, this._parents, name, id);\n\t }\n\t\n\t selection.prototype.interrupt = selection_interrupt;\n\t selection.prototype.transition = selection_transition;\n\t\n\t var root$1 = [null];\n\t\n\t function active(node, name) {\n\t var schedules = node.__transition,\n\t schedule,\n\t i;\n\t\n\t if (schedules) {\n\t name = name == null ? null : name + \"\";\n\t for (i in schedules) {\n\t if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n\t return new Transition([[node]], root$1, name, +i);\n\t }\n\t }\n\t }\n\t\n\t return null;\n\t }\n\t\n\t var slice$4 = Array.prototype.slice;\n\t\n\t function identity$5(x) {\n\t return x;\n\t }\n\t\n\t var top = 1;\n\t var right = 2;\n\t var bottom = 3;\n\t var left = 4;\n\tvar epsilon$2 = 1e-6;\n\t function translateX(scale0, scale1, d) {\n\t var x = scale0(d);\n\t return \"translate(\" + (isFinite(x) ? x : scale1(d)) + \",0)\";\n\t }\n\t\n\t function translateY(scale0, scale1, d) {\n\t var y = scale0(d);\n\t return \"translate(0,\" + (isFinite(y) ? y : scale1(d)) + \")\";\n\t }\n\t\n\t function center(scale) {\n\t var offset = scale.bandwidth() / 2;\n\t if (scale.round()) offset = Math.round(offset);\n\t return function(d) {\n\t return scale(d) + offset;\n\t };\n\t }\n\t\n\t function entering() {\n\t return !this.__axis;\n\t }\n\t\n\t function axis(orient, scale) {\n\t var tickArguments = [],\n\t tickValues = null,\n\t tickFormat = null,\n\t tickSizeInner = 6,\n\t tickSizeOuter = 6,\n\t tickPadding = 3;\n\t\n\t function axis(context) {\n\t var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n\t format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$5) : tickFormat,\n\t spacing = Math.max(tickSizeInner, 0) + tickPadding,\n\t transform = orient === top || orient === bottom ? translateX : translateY,\n\t range = scale.range(),\n\t range0 = range[0] + 0.5,\n\t range1 = range[range.length - 1] + 0.5,\n\t position = (scale.bandwidth ? center : identity$5)(scale.copy()),\n\t selection = context.selection ? context.selection() : context,\n\t path = selection.selectAll(\".domain\").data([null]),\n\t tick = selection.selectAll(\".tick\").data(values, scale).order(),\n\t tickExit = tick.exit(),\n\t tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n\t line = tick.select(\"line\"),\n\t text = tick.select(\"text\"),\n\t k = orient === top || orient === left ? -1 : 1,\n\t x, y = orient === left || orient === right ? (x = \"x\", \"y\") : (x = \"y\", \"x\");\n\t\n\t path = path.merge(path.enter().insert(\"path\", \".tick\")\n\t .attr(\"class\", \"domain\")\n\t .attr(\"stroke\", \"#000\"));\n\t\n\t tick = tick.merge(tickEnter);\n\t\n\t line = line.merge(tickEnter.append(\"line\")\n\t .attr(\"stroke\", \"#000\")\n\t .attr(x + \"2\", k * tickSizeInner)\n\t .attr(y + \"1\", 0.5)\n\t .attr(y + \"2\", 0.5));\n\t\n\t text = text.merge(tickEnter.append(\"text\")\n\t .attr(\"fill\", \"#000\")\n\t .attr(x, k * spacing)\n\t .attr(y, 0.5)\n\t .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\t\n\t if (context !== selection) {\n\t path = path.transition(context);\n\t tick = tick.transition(context);\n\t line = line.transition(context);\n\t text = text.transition(context);\n\t\n\t tickExit = tickExit.transition(context)\n\t .attr(\"opacity\", epsilon$2)\n\t .attr(\"transform\", function(d) { return transform(position, this.parentNode.__axis || position, d); });\n\t\n\t tickEnter\n\t .attr(\"opacity\", epsilon$2)\n\t .attr(\"transform\", function(d) { return transform(this.parentNode.__axis || position, position, d); });\n\t }\n\t\n\t tickExit.remove();\n\t\n\t path\n\t .attr(\"d\", orient === left || orient == right\n\t ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter\n\t : \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter);\n\t\n\t tick\n\t .attr(\"opacity\", 1)\n\t .attr(\"transform\", function(d) { return transform(position, position, d); });\n\t\n\t line\n\t .attr(x + \"2\", k * tickSizeInner);\n\t\n\t text\n\t .attr(x, k * spacing)\n\t .text(format);\n\t\n\t selection.filter(entering)\n\t .attr(\"fill\", \"none\")\n\t .attr(\"font-size\", 10)\n\t .attr(\"font-family\", \"sans-serif\")\n\t .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\t\n\t selection\n\t .each(function() { this.__axis = position; });\n\t }\n\t\n\t axis.scale = function(_) {\n\t return arguments.length ? (scale = _, axis) : scale;\n\t };\n\t\n\t axis.ticks = function() {\n\t return tickArguments = slice$4.call(arguments), axis;\n\t };\n\t\n\t axis.tickArguments = function(_) {\n\t return arguments.length ? (tickArguments = _ == null ? [] : slice$4.call(_), axis) : tickArguments.slice();\n\t };\n\t\n\t axis.tickValues = function(_) {\n\t return arguments.length ? (tickValues = _ == null ? null : slice$4.call(_), axis) : tickValues && tickValues.slice();\n\t };\n\t\n\t axis.tickFormat = function(_) {\n\t return arguments.length ? (tickFormat = _, axis) : tickFormat;\n\t };\n\t\n\t axis.tickSize = function(_) {\n\t return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n\t };\n\t\n\t axis.tickSizeInner = function(_) {\n\t return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n\t };\n\t\n\t axis.tickSizeOuter = function(_) {\n\t return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n\t };\n\t\n\t axis.tickPadding = function(_) {\n\t return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n\t };\n\t\n\t return axis;\n\t }\n\t\n\t function axisTop(scale) {\n\t return axis(top, scale);\n\t }\n\t\n\t function axisRight(scale) {\n\t return axis(right, scale);\n\t }\n\t\n\t function axisBottom(scale) {\n\t return axis(bottom, scale);\n\t }\n\t\n\t function axisLeft(scale) {\n\t return axis(left, scale);\n\t }\n\t\n\t function defaultSeparation(a, b) {\n\t return a.parent === b.parent ? 1 : 2;\n\t }\n\t\n\t function meanX(children) {\n\t return children.reduce(meanXReduce, 0) / children.length;\n\t }\n\t\n\t function meanXReduce(x, c) {\n\t return x + c.x;\n\t }\n\t\n\t function maxY(children) {\n\t return 1 + children.reduce(maxYReduce, 0);\n\t }\n\t\n\t function maxYReduce(y, c) {\n\t return Math.max(y, c.y);\n\t }\n\t\n\t function leafLeft(node) {\n\t var children;\n\t while (children = node.children) node = children[0];\n\t return node;\n\t }\n\t\n\t function leafRight(node) {\n\t var children;\n\t while (children = node.children) node = children[children.length - 1];\n\t return node;\n\t }\n\t\n\t function cluster() {\n\t var separation = defaultSeparation,\n\t dx = 1,\n\t dy = 1,\n\t nodeSize = false;\n\t\n\t function cluster(root) {\n\t var previousNode,\n\t x = 0;\n\t\n\t // First walk, computing the initial x & y values.\n\t root.eachAfter(function(node) {\n\t var children = node.children;\n\t if (children) {\n\t node.x = meanX(children);\n\t node.y = maxY(children);\n\t } else {\n\t node.x = previousNode ? x += separation(node, previousNode) : 0;\n\t node.y = 0;\n\t previousNode = node;\n\t }\n\t });\n\t\n\t var left = leafLeft(root),\n\t right = leafRight(root),\n\t x0 = left.x - separation(left, right) / 2,\n\t x1 = right.x + separation(right, left) / 2;\n\t\n\t // Second walk, normalizing x & y to the desired size.\n\t return root.eachAfter(nodeSize ? function(node) {\n\t node.x = (node.x - root.x) * dx;\n\t node.y = (root.y - node.y) * dy;\n\t } : function(node) {\n\t node.x = (node.x - x0) / (x1 - x0) * dx;\n\t node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n\t });\n\t }\n\t\n\t cluster.separation = function(x) {\n\t return arguments.length ? (separation = x, cluster) : separation;\n\t };\n\t\n\t cluster.size = function(x) {\n\t return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n\t };\n\t\n\t cluster.nodeSize = function(x) {\n\t return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n\t };\n\t\n\t return cluster;\n\t }\n\t\n\t function node_each(callback) {\n\t var node = this, current, next = [node], children, i, n;\n\t do {\n\t current = next.reverse(), next = [];\n\t while (node = current.pop()) {\n\t callback(node), children = node.children;\n\t if (children) for (i = 0, n = children.length; i < n; ++i) {\n\t next.push(children[i]);\n\t }\n\t }\n\t } while (next.length);\n\t return this;\n\t }\n\t\n\t function node_eachBefore(callback) {\n\t var node = this, nodes = [node], children, i;\n\t while (node = nodes.pop()) {\n\t callback(node), children = node.children;\n\t if (children) for (i = children.length - 1; i >= 0; --i) {\n\t nodes.push(children[i]);\n\t }\n\t }\n\t return this;\n\t }\n\t\n\t function node_eachAfter(callback) {\n\t var node = this, nodes = [node], next = [], children, i, n;\n\t while (node = nodes.pop()) {\n\t next.push(node), children = node.children;\n\t if (children) for (i = 0, n = children.length; i < n; ++i) {\n\t nodes.push(children[i]);\n\t }\n\t }\n\t while (node = next.pop()) {\n\t callback(node);\n\t }\n\t return this;\n\t }\n\t\n\t function node_sum(value) {\n\t return this.eachAfter(function(node) {\n\t var sum = +value(node.data) || 0,\n\t children = node.children,\n\t i = children && children.length;\n\t while (--i >= 0) sum += children[i].value;\n\t node.value = sum;\n\t });\n\t }\n\t\n\t function node_sort(compare) {\n\t return this.eachBefore(function(node) {\n\t if (node.children) {\n\t node.children.sort(compare);\n\t }\n\t });\n\t }\n\t\n\t function node_path(end) {\n\t var start = this,\n\t ancestor = leastCommonAncestor(start, end),\n\t nodes = [start];\n\t while (start !== ancestor) {\n\t start = start.parent;\n\t nodes.push(start);\n\t }\n\t var k = nodes.length;\n\t while (end !== ancestor) {\n\t nodes.splice(k, 0, end);\n\t end = end.parent;\n\t }\n\t return nodes;\n\t }\n\t\n\t function leastCommonAncestor(a, b) {\n\t if (a === b) return a;\n\t var aNodes = a.ancestors(),\n\t bNodes = b.ancestors(),\n\t c = null;\n\t a = aNodes.pop();\n\t b = bNodes.pop();\n\t while (a === b) {\n\t c = a;\n\t a = aNodes.pop();\n\t b = bNodes.pop();\n\t }\n\t return c;\n\t }\n\t\n\t function node_ancestors() {\n\t var node = this, nodes = [node];\n\t while (node = node.parent) {\n\t nodes.push(node);\n\t }\n\t return nodes;\n\t }\n\t\n\t function node_descendants() {\n\t var nodes = [];\n\t this.each(function(node) {\n\t nodes.push(node);\n\t });\n\t return nodes;\n\t }\n\t\n\t function node_leaves() {\n\t var leaves = [];\n\t this.eachBefore(function(node) {\n\t if (!node.children) {\n\t leaves.push(node);\n\t }\n\t });\n\t return leaves;\n\t }\n\t\n\t function node_links() {\n\t var root = this, links = [];\n\t root.each(function(node) {\n\t if (node !== root) { // Don’t include the root’s parent, if any.\n\t links.push({source: node.parent, target: node});\n\t }\n\t });\n\t return links;\n\t }\n\t\n\t function hierarchy(data, children) {\n\t var root = new Node(data),\n\t valued = +data.value && (root.value = data.value),\n\t node,\n\t nodes = [root],\n\t child,\n\t childs,\n\t i,\n\t n;\n\t\n\t if (children == null) children = defaultChildren;\n\t\n\t while (node = nodes.pop()) {\n\t if (valued) node.value = +node.data.value;\n\t if ((childs = children(node.data)) && (n = childs.length)) {\n\t node.children = new Array(n);\n\t for (i = n - 1; i >= 0; --i) {\n\t nodes.push(child = node.children[i] = new Node(childs[i]));\n\t child.parent = node;\n\t child.depth = node.depth + 1;\n\t }\n\t }\n\t }\n\t\n\t return root.eachBefore(computeHeight);\n\t }\n\t\n\t function node_copy() {\n\t return hierarchy(this).eachBefore(copyData);\n\t }\n\t\n\t function defaultChildren(d) {\n\t return d.children;\n\t }\n\t\n\t function copyData(node) {\n\t node.data = node.data.data;\n\t }\n\t\n\t function computeHeight(node) {\n\t var height = 0;\n\t do node.height = height;\n\t while ((node = node.parent) && (node.height < ++height));\n\t }\n\t\n\t function Node(data) {\n\t this.data = data;\n\t this.depth =\n\t this.height = 0;\n\t this.parent = null;\n\t }\n\t\n\t Node.prototype = hierarchy.prototype = {\n\t constructor: Node,\n\t each: node_each,\n\t eachAfter: node_eachAfter,\n\t eachBefore: node_eachBefore,\n\t sum: node_sum,\n\t sort: node_sort,\n\t path: node_path,\n\t ancestors: node_ancestors,\n\t descendants: node_descendants,\n\t leaves: node_leaves,\n\t links: node_links,\n\t copy: node_copy\n\t };\n\t\n\t function Node$2(value) {\n\t this._ = value;\n\t this.next = null;\n\t }\n\t\n\t function shuffle$1(array) {\n\t var i,\n\t n = (array = array.slice()).length,\n\t head = null,\n\t node = head;\n\t\n\t while (n) {\n\t var next = new Node$2(array[n - 1]);\n\t if (node) node = node.next = next;\n\t else node = head = next;\n\t array[i] = array[--n];\n\t }\n\t\n\t return {\n\t head: head,\n\t tail: node\n\t };\n\t }\n\t\n\t function enclose(circles) {\n\t return encloseN(shuffle$1(circles), []);\n\t }\n\t\n\t function encloses(a, b) {\n\t var dx = b.x - a.x,\n\t dy = b.y - a.y,\n\t dr = a.r - b.r;\n\t return dr * dr + 1e-6 > dx * dx + dy * dy;\n\t }\n\t\n\t // Returns the smallest circle that contains circles L and intersects circles B.\n\t function encloseN(L, B) {\n\t var circle,\n\t l0 = null,\n\t l1 = L.head,\n\t l2,\n\t p1;\n\t\n\t switch (B.length) {\n\t case 1: circle = enclose1(B[0]); break;\n\t case 2: circle = enclose2(B[0], B[1]); break;\n\t case 3: circle = enclose3(B[0], B[1], B[2]); break;\n\t }\n\t\n\t while (l1) {\n\t p1 = l1._, l2 = l1.next;\n\t if (!circle || !encloses(circle, p1)) {\n\t\n\t // Temporarily truncate L before l1.\n\t if (l0) L.tail = l0, l0.next = null;\n\t else L.head = L.tail = null;\n\t\n\t B.push(p1);\n\t circle = encloseN(L, B); // Note: reorders L!\n\t B.pop();\n\t\n\t // Move l1 to the front of L and reconnect the truncated list L.\n\t if (L.head) l1.next = L.head, L.head = l1;\n\t else l1.next = null, L.head = L.tail = l1;\n\t l0 = L.tail, l0.next = l2;\n\t\n\t } else {\n\t l0 = l1;\n\t }\n\t l1 = l2;\n\t }\n\t\n\t L.tail = l0;\n\t return circle;\n\t }\n\t\n\t function enclose1(a) {\n\t return {\n\t x: a.x,\n\t y: a.y,\n\t r: a.r\n\t };\n\t }\n\t\n\t function enclose2(a, b) {\n\t var x1 = a.x, y1 = a.y, r1 = a.r,\n\t x2 = b.x, y2 = b.y, r2 = b.r,\n\t x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n\t l = Math.sqrt(x21 * x21 + y21 * y21);\n\t return {\n\t x: (x1 + x2 + x21 / l * r21) / 2,\n\t y: (y1 + y2 + y21 / l * r21) / 2,\n\t r: (l + r1 + r2) / 2\n\t };\n\t }\n\t\n\t function enclose3(a, b, c) {\n\t var x1 = a.x, y1 = a.y, r1 = a.r,\n\t x2 = b.x, y2 = b.y, r2 = b.r,\n\t x3 = c.x, y3 = c.y, r3 = c.r,\n\t a2 = 2 * (x1 - x2),\n\t b2 = 2 * (y1 - y2),\n\t c2 = 2 * (r2 - r1),\n\t d2 = x1 * x1 + y1 * y1 - r1 * r1 - x2 * x2 - y2 * y2 + r2 * r2,\n\t a3 = 2 * (x1 - x3),\n\t b3 = 2 * (y1 - y3),\n\t c3 = 2 * (r3 - r1),\n\t d3 = x1 * x1 + y1 * y1 - r1 * r1 - x3 * x3 - y3 * y3 + r3 * r3,\n\t ab = a3 * b2 - a2 * b3,\n\t xa = (b2 * d3 - b3 * d2) / ab - x1,\n\t xb = (b3 * c2 - b2 * c3) / ab,\n\t ya = (a3 * d2 - a2 * d3) / ab - y1,\n\t yb = (a2 * c3 - a3 * c2) / ab,\n\t A = xb * xb + yb * yb - 1,\n\t B = 2 * (xa * xb + ya * yb + r1),\n\t C = xa * xa + ya * ya - r1 * r1,\n\t r = (-B - Math.sqrt(B * B - 4 * A * C)) / (2 * A);\n\t return {\n\t x: xa + xb * r + x1,\n\t y: ya + yb * r + y1,\n\t r: r\n\t };\n\t }\n\t\n\t function place(a, b, c) {\n\t var ax = a.x,\n\t ay = a.y,\n\t da = b.r + c.r,\n\t db = a.r + c.r,\n\t dx = b.x - ax,\n\t dy = b.y - ay,\n\t dc = dx * dx + dy * dy;\n\t if (dc) {\n\t var x = 0.5 + ((db *= db) - (da *= da)) / (2 * dc),\n\t y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n\t c.x = ax + x * dx + y * dy;\n\t c.y = ay + x * dy - y * dx;\n\t } else {\n\t c.x = ax + db;\n\t c.y = ay;\n\t }\n\t }\n\t\n\t function intersects(a, b) {\n\t var dx = b.x - a.x,\n\t dy = b.y - a.y,\n\t dr = a.r + b.r;\n\t return dr * dr > dx * dx + dy * dy;\n\t }\n\t\n\t function distance2(circle, x, y) {\n\t var dx = circle.x - x,\n\t dy = circle.y - y;\n\t return dx * dx + dy * dy;\n\t }\n\t\n\t function Node$1(circle) {\n\t this._ = circle;\n\t this.next = null;\n\t this.previous = null;\n\t }\n\t\n\t function packEnclose(circles) {\n\t if (!(n = circles.length)) return 0;\n\t\n\t var a, b, c, n;\n\t\n\t // Place the first circle.\n\t a = circles[0], a.x = 0, a.y = 0;\n\t if (!(n > 1)) return a.r;\n\t\n\t // Place the second circle.\n\t b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n\t if (!(n > 2)) return a.r + b.r;\n\t\n\t // Place the third circle.\n\t place(b, a, c = circles[2]);\n\t\n\t // Initialize the weighted centroid.\n\t var aa = a.r * a.r,\n\t ba = b.r * b.r,\n\t ca = c.r * c.r,\n\t oa = aa + ba + ca,\n\t ox = aa * a.x + ba * b.x + ca * c.x,\n\t oy = aa * a.y + ba * b.y + ca * c.y,\n\t cx, cy, i, j, k, sj, sk;\n\t\n\t // Initialize the front-chain using the first three circles a, b and c.\n\t a = new Node$1(a), b = new Node$1(b), c = new Node$1(c);\n\t a.next = c.previous = b;\n\t b.next = a.previous = c;\n\t c.next = b.previous = a;\n\t\n\t // Attempt to place each remaining circle…\n\t pack: for (i = 3; i < n; ++i) {\n\t place(a._, b._, c = circles[i]), c = new Node$1(c);\n\t\n\t // If there are only three elements in the front-chain…\n\t if ((k = a.previous) === (j = b.next)) {\n\t // If the new circle intersects the third circle,\n\t // rotate the front chain to try the next position.\n\t if (intersects(j._, c._)) {\n\t a = b, b = j, --i;\n\t continue pack;\n\t }\n\t }\n\t\n\t // Find the closest intersecting circle on the front-chain, if any.\n\t else {\n\t sj = j._.r, sk = k._.r;\n\t do {\n\t if (sj <= sk) {\n\t if (intersects(j._, c._)) {\n\t b = j, a.next = b, b.previous = a, --i;\n\t continue pack;\n\t }\n\t j = j.next, sj += j._.r;\n\t } else {\n\t if (intersects(k._, c._)) {\n\t a = k, a.next = b, b.previous = a, --i;\n\t continue pack;\n\t }\n\t k = k.previous, sk += k._.r;\n\t }\n\t } while (j !== k.next);\n\t }\n\t\n\t // Success! Insert the new circle c between a and b.\n\t c.previous = a, c.next = b, a.next = b.previous = b = c;\n\t\n\t // Update the weighted centroid.\n\t oa += ca = c._.r * c._.r;\n\t ox += ca * c._.x;\n\t oy += ca * c._.y;\n\t\n\t // Compute the new closest circle a to centroid.\n\t aa = distance2(a._, cx = ox / oa, cy = oy / oa);\n\t while ((c = c.next) !== b) {\n\t if ((ca = distance2(c._, cx, cy)) < aa) {\n\t a = c, aa = ca;\n\t }\n\t }\n\t b = a.next;\n\t }\n\t\n\t // Compute the enclosing circle of the front chain.\n\t a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\t\n\t // Translate the circles to put the enclosing circle around the origin.\n\t for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\t\n\t return c.r;\n\t }\n\t\n\t function siblings(circles) {\n\t packEnclose(circles);\n\t return circles;\n\t }\n\t\n\t function optional(f) {\n\t return f == null ? null : required(f);\n\t }\n\t\n\t function required(f) {\n\t if (typeof f !== \"function\") throw new Error;\n\t return f;\n\t }\n\t\n\t function constantZero() {\n\t return 0;\n\t }\n\t\n\t function constant$5(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function defaultRadius(d) {\n\t return Math.sqrt(d.value);\n\t }\n\t\n\t function index() {\n\t var radius = null,\n\t dx = 1,\n\t dy = 1,\n\t padding = constantZero;\n\t\n\t function pack(root) {\n\t root.x = dx / 2, root.y = dy / 2;\n\t if (radius) {\n\t root.eachBefore(radiusLeaf(radius))\n\t .eachAfter(packChildren(padding, 0.5))\n\t .eachBefore(translateChild(1));\n\t } else {\n\t root.eachBefore(radiusLeaf(defaultRadius))\n\t .eachAfter(packChildren(constantZero, 1))\n\t .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n\t .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n\t }\n\t return root;\n\t }\n\t\n\t pack.radius = function(x) {\n\t return arguments.length ? (radius = optional(x), pack) : radius;\n\t };\n\t\n\t pack.size = function(x) {\n\t return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n\t };\n\t\n\t pack.padding = function(x) {\n\t return arguments.length ? (padding = typeof x === \"function\" ? x : constant$5(+x), pack) : padding;\n\t };\n\t\n\t return pack;\n\t }\n\t\n\t function radiusLeaf(radius) {\n\t return function(node) {\n\t if (!node.children) {\n\t node.r = Math.max(0, +radius(node) || 0);\n\t }\n\t };\n\t }\n\t\n\t function packChildren(padding, k) {\n\t return function(node) {\n\t if (children = node.children) {\n\t var children,\n\t i,\n\t n = children.length,\n\t r = padding(node) * k || 0,\n\t e;\n\t\n\t if (r) for (i = 0; i < n; ++i) children[i].r += r;\n\t e = packEnclose(children);\n\t if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n\t node.r = e + r;\n\t }\n\t };\n\t }\n\t\n\t function translateChild(k) {\n\t return function(node) {\n\t var parent = node.parent;\n\t node.r *= k;\n\t if (parent) {\n\t node.x = parent.x + k * node.x;\n\t node.y = parent.y + k * node.y;\n\t }\n\t };\n\t }\n\t\n\t function roundNode(node) {\n\t node.x0 = Math.round(node.x0);\n\t node.y0 = Math.round(node.y0);\n\t node.x1 = Math.round(node.x1);\n\t node.y1 = Math.round(node.y1);\n\t }\n\t\n\t function treemapDice(parent, x0, y0, x1, y1) {\n\t var nodes = parent.children,\n\t node,\n\t i = -1,\n\t n = nodes.length,\n\t k = parent.value && (x1 - x0) / parent.value;\n\t\n\t while (++i < n) {\n\t node = nodes[i], node.y0 = y0, node.y1 = y1;\n\t node.x0 = x0, node.x1 = x0 += node.value * k;\n\t }\n\t }\n\t\n\t function partition() {\n\t var dx = 1,\n\t dy = 1,\n\t padding = 0,\n\t round = false;\n\t\n\t function partition(root) {\n\t var n = root.height + 1;\n\t root.x0 =\n\t root.y0 = padding;\n\t root.x1 = dx;\n\t root.y1 = dy / n;\n\t root.eachBefore(positionNode(dy, n));\n\t if (round) root.eachBefore(roundNode);\n\t return root;\n\t }\n\t\n\t function positionNode(dy, n) {\n\t return function(node) {\n\t if (node.children) {\n\t treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n\t }\n\t var x0 = node.x0,\n\t y0 = node.y0,\n\t x1 = node.x1 - padding,\n\t y1 = node.y1 - padding;\n\t if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n\t if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n\t node.x0 = x0;\n\t node.y0 = y0;\n\t node.x1 = x1;\n\t node.y1 = y1;\n\t };\n\t }\n\t\n\t partition.round = function(x) {\n\t return arguments.length ? (round = !!x, partition) : round;\n\t };\n\t\n\t partition.size = function(x) {\n\t return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n\t };\n\t\n\t partition.padding = function(x) {\n\t return arguments.length ? (padding = +x, partition) : padding;\n\t };\n\t\n\t return partition;\n\t }\n\t\n\tvar keyPrefix$1 = \"$\";\n\t var preroot = {depth: -1};\n\t var ambiguous = {};\n\t function defaultId(d) {\n\t return d.id;\n\t }\n\t\n\t function defaultParentId(d) {\n\t return d.parentId;\n\t }\n\t\n\t function stratify() {\n\t var id = defaultId,\n\t parentId = defaultParentId;\n\t\n\t function stratify(data) {\n\t var d,\n\t i,\n\t n = data.length,\n\t root,\n\t parent,\n\t node,\n\t nodes = new Array(n),\n\t nodeId,\n\t nodeKey,\n\t nodeByKey = {};\n\t\n\t for (i = 0; i < n; ++i) {\n\t d = data[i], node = nodes[i] = new Node(d);\n\t if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n\t nodeKey = keyPrefix$1 + (node.id = nodeId);\n\t nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n\t }\n\t }\n\t\n\t for (i = 0; i < n; ++i) {\n\t node = nodes[i], nodeId = parentId(data[i], i, data);\n\t if (nodeId == null || !(nodeId += \"\")) {\n\t if (root) throw new Error(\"multiple roots\");\n\t root = node;\n\t } else {\n\t parent = nodeByKey[keyPrefix$1 + nodeId];\n\t if (!parent) throw new Error(\"missing: \" + nodeId);\n\t if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n\t if (parent.children) parent.children.push(node);\n\t else parent.children = [node];\n\t node.parent = parent;\n\t }\n\t }\n\t\n\t if (!root) throw new Error(\"no root\");\n\t root.parent = preroot;\n\t root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n\t root.parent = null;\n\t if (n > 0) throw new Error(\"cycle\");\n\t\n\t return root;\n\t }\n\t\n\t stratify.id = function(x) {\n\t return arguments.length ? (id = required(x), stratify) : id;\n\t };\n\t\n\t stratify.parentId = function(x) {\n\t return arguments.length ? (parentId = required(x), stratify) : parentId;\n\t };\n\t\n\t return stratify;\n\t }\n\t\n\t function defaultSeparation$1(a, b) {\n\t return a.parent === b.parent ? 1 : 2;\n\t }\n\t\n\t // function radialSeparation(a, b) {\n\t // return (a.parent === b.parent ? 1 : 2) / a.depth;\n\t // }\n\t\n\t // This function is used to traverse the left contour of a subtree (or\n\t // subforest). It returns the successor of v on this contour. This successor is\n\t // either given by the leftmost child of v or by the thread of v. The function\n\t // returns null if and only if v is on the highest level of its subtree.\n\t function nextLeft(v) {\n\t var children = v.children;\n\t return children ? children[0] : v.t;\n\t }\n\t\n\t // This function works analogously to nextLeft.\n\t function nextRight(v) {\n\t var children = v.children;\n\t return children ? children[children.length - 1] : v.t;\n\t }\n\t\n\t // Shifts the current subtree rooted at w+. This is done by increasing\n\t // prelim(w+) and mod(w+) by shift.\n\t function moveSubtree(wm, wp, shift) {\n\t var change = shift / (wp.i - wm.i);\n\t wp.c -= change;\n\t wp.s += shift;\n\t wm.c += change;\n\t wp.z += shift;\n\t wp.m += shift;\n\t }\n\t\n\t // All other shifts, applied to the smaller subtrees between w- and w+, are\n\t // performed by this function. To prepare the shifts, we have to adjust\n\t // change(w+), shift(w+), and change(w-).\n\t function executeShifts(v) {\n\t var shift = 0,\n\t change = 0,\n\t children = v.children,\n\t i = children.length,\n\t w;\n\t while (--i >= 0) {\n\t w = children[i];\n\t w.z += shift;\n\t w.m += shift;\n\t shift += w.s + (change += w.c);\n\t }\n\t }\n\t\n\t // If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n\t // returns the specified (default) ancestor.\n\t function nextAncestor(vim, v, ancestor) {\n\t return vim.a.parent === v.parent ? vim.a : ancestor;\n\t }\n\t\n\t function TreeNode(node, i) {\n\t this._ = node;\n\t this.parent = null;\n\t this.children = null;\n\t this.A = null; // default ancestor\n\t this.a = this; // ancestor\n\t this.z = 0; // prelim\n\t this.m = 0; // mod\n\t this.c = 0; // change\n\t this.s = 0; // shift\n\t this.t = null; // thread\n\t this.i = i; // number\n\t }\n\t\n\t TreeNode.prototype = Object.create(Node.prototype);\n\t\n\t function treeRoot(root) {\n\t var tree = new TreeNode(root, 0),\n\t node,\n\t nodes = [tree],\n\t child,\n\t children,\n\t i,\n\t n;\n\t\n\t while (node = nodes.pop()) {\n\t if (children = node._.children) {\n\t node.children = new Array(n = children.length);\n\t for (i = n - 1; i >= 0; --i) {\n\t nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n\t child.parent = node;\n\t }\n\t }\n\t }\n\t\n\t (tree.parent = new TreeNode(null, 0)).children = [tree];\n\t return tree;\n\t }\n\t\n\t // Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\n\t function tree() {\n\t var separation = defaultSeparation$1,\n\t dx = 1,\n\t dy = 1,\n\t nodeSize = null;\n\t\n\t function tree(root) {\n\t var t = treeRoot(root);\n\t\n\t // Compute the layout using Buchheim et al.’s algorithm.\n\t t.eachAfter(firstWalk), t.parent.m = -t.z;\n\t t.eachBefore(secondWalk);\n\t\n\t // If a fixed node size is specified, scale x and y.\n\t if (nodeSize) root.eachBefore(sizeNode);\n\t\n\t // If a fixed tree size is specified, scale x and y based on the extent.\n\t // Compute the left-most, right-most, and depth-most nodes for extents.\n\t else {\n\t var left = root,\n\t right = root,\n\t bottom = root;\n\t root.eachBefore(function(node) {\n\t if (node.x < left.x) left = node;\n\t if (node.x > right.x) right = node;\n\t if (node.depth > bottom.depth) bottom = node;\n\t });\n\t var s = left === right ? 1 : separation(left, right) / 2,\n\t tx = s - left.x,\n\t kx = dx / (right.x + s + tx),\n\t ky = dy / (bottom.depth || 1);\n\t root.eachBefore(function(node) {\n\t node.x = (node.x + tx) * kx;\n\t node.y = node.depth * ky;\n\t });\n\t }\n\t\n\t return root;\n\t }\n\t\n\t // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n\t // applied recursively to the children of v, as well as the function\n\t // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n\t // node v is placed to the midpoint of its outermost children.\n\t function firstWalk(v) {\n\t var children = v.children,\n\t siblings = v.parent.children,\n\t w = v.i ? siblings[v.i - 1] : null;\n\t if (children) {\n\t executeShifts(v);\n\t var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n\t if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t v.m = v.z - midpoint;\n\t } else {\n\t v.z = midpoint;\n\t }\n\t } else if (w) {\n\t v.z = w.z + separation(v._, w._);\n\t }\n\t v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n\t }\n\t\n\t // Computes all real x-coordinates by summing up the modifiers recursively.\n\t function secondWalk(v) {\n\t v._.x = v.z + v.parent.m;\n\t v.m += v.parent.m;\n\t }\n\t\n\t // The core of the algorithm. Here, a new subtree is combined with the\n\t // previous subtrees. Threads are used to traverse the inside and outside\n\t // contours of the left and right subtree up to the highest common level. The\n\t // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n\t // superscript o means outside and i means inside, the subscript - means left\n\t // subtree and + means right subtree. For summing up the modifiers along the\n\t // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n\t // nodes of the inside contours conflict, we compute the left one of the\n\t // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n\t // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n\t // Finally, we add a new thread (if necessary).\n\t function apportion(v, w, ancestor) {\n\t if (w) {\n\t var vip = v,\n\t vop = v,\n\t vim = w,\n\t vom = vip.parent.children[0],\n\t sip = vip.m,\n\t sop = vop.m,\n\t sim = vim.m,\n\t som = vom.m,\n\t shift;\n\t while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n\t vom = nextLeft(vom);\n\t vop = nextRight(vop);\n\t vop.a = v;\n\t shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n\t if (shift > 0) {\n\t moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n\t sip += shift;\n\t sop += shift;\n\t }\n\t sim += vim.m;\n\t sip += vip.m;\n\t som += vom.m;\n\t sop += vop.m;\n\t }\n\t if (vim && !nextRight(vop)) {\n\t vop.t = vim;\n\t vop.m += sim - sop;\n\t }\n\t if (vip && !nextLeft(vom)) {\n\t vom.t = vip;\n\t vom.m += sip - som;\n\t ancestor = v;\n\t }\n\t }\n\t return ancestor;\n\t }\n\t\n\t function sizeNode(node) {\n\t node.x *= dx;\n\t node.y = node.depth * dy;\n\t }\n\t\n\t tree.separation = function(x) {\n\t return arguments.length ? (separation = x, tree) : separation;\n\t };\n\t\n\t tree.size = function(x) {\n\t return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n\t };\n\t\n\t tree.nodeSize = function(x) {\n\t return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n\t };\n\t\n\t return tree;\n\t }\n\t\n\t function treemapSlice(parent, x0, y0, x1, y1) {\n\t var nodes = parent.children,\n\t node,\n\t i = -1,\n\t n = nodes.length,\n\t k = parent.value && (y1 - y0) / parent.value;\n\t\n\t while (++i < n) {\n\t node = nodes[i], node.x0 = x0, node.x1 = x1;\n\t node.y0 = y0, node.y1 = y0 += node.value * k;\n\t }\n\t }\n\t\n\t var phi = (1 + Math.sqrt(5)) / 2;\n\t\n\t function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n\t var rows = [],\n\t nodes = parent.children,\n\t row,\n\t nodeValue,\n\t i0 = 0,\n\t i1,\n\t n = nodes.length,\n\t dx, dy,\n\t value = parent.value,\n\t sumValue,\n\t minValue,\n\t maxValue,\n\t newRatio,\n\t minRatio,\n\t alpha,\n\t beta;\n\t\n\t while (i0 < n) {\n\t dx = x1 - x0, dy = y1 - y0;\n\t minValue = maxValue = sumValue = nodes[i0].value;\n\t alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n\t beta = sumValue * sumValue * alpha;\n\t minRatio = Math.max(maxValue / beta, beta / minValue);\n\t\n\t // Keep adding nodes while the aspect ratio maintains or improves.\n\t for (i1 = i0 + 1; i1 < n; ++i1) {\n\t sumValue += nodeValue = nodes[i1].value;\n\t if (nodeValue < minValue) minValue = nodeValue;\n\t if (nodeValue > maxValue) maxValue = nodeValue;\n\t beta = sumValue * sumValue * alpha;\n\t newRatio = Math.max(maxValue / beta, beta / minValue);\n\t if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n\t minRatio = newRatio;\n\t }\n\t\n\t // Position and record the row orientation.\n\t rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n\t if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n\t else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n\t value -= sumValue, i0 = i1;\n\t }\n\t\n\t return rows;\n\t }\n\t\n\t var squarify = (function custom(ratio) {\n\t\n\t function squarify(parent, x0, y0, x1, y1) {\n\t squarifyRatio(ratio, parent, x0, y0, x1, y1);\n\t }\n\t\n\t squarify.ratio = function(x) {\n\t return custom((x = +x) > 1 ? x : 1);\n\t };\n\t\n\t return squarify;\n\t })(phi);\n\t\n\t function index$1() {\n\t var tile = squarify,\n\t round = false,\n\t dx = 1,\n\t dy = 1,\n\t paddingStack = [0],\n\t paddingInner = constantZero,\n\t paddingTop = constantZero,\n\t paddingRight = constantZero,\n\t paddingBottom = constantZero,\n\t paddingLeft = constantZero;\n\t\n\t function treemap(root) {\n\t root.x0 =\n\t root.y0 = 0;\n\t root.x1 = dx;\n\t root.y1 = dy;\n\t root.eachBefore(positionNode);\n\t paddingStack = [0];\n\t if (round) root.eachBefore(roundNode);\n\t return root;\n\t }\n\t\n\t function positionNode(node) {\n\t var p = paddingStack[node.depth],\n\t x0 = node.x0 + p,\n\t y0 = node.y0 + p,\n\t x1 = node.x1 - p,\n\t y1 = node.y1 - p;\n\t if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n\t if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n\t node.x0 = x0;\n\t node.y0 = y0;\n\t node.x1 = x1;\n\t node.y1 = y1;\n\t if (node.children) {\n\t p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n\t x0 += paddingLeft(node) - p;\n\t y0 += paddingTop(node) - p;\n\t x1 -= paddingRight(node) - p;\n\t y1 -= paddingBottom(node) - p;\n\t if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n\t if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n\t tile(node, x0, y0, x1, y1);\n\t }\n\t }\n\t\n\t treemap.round = function(x) {\n\t return arguments.length ? (round = !!x, treemap) : round;\n\t };\n\t\n\t treemap.size = function(x) {\n\t return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n\t };\n\t\n\t treemap.tile = function(x) {\n\t return arguments.length ? (tile = required(x), treemap) : tile;\n\t };\n\t\n\t treemap.padding = function(x) {\n\t return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n\t };\n\t\n\t treemap.paddingInner = function(x) {\n\t return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant$5(+x), treemap) : paddingInner;\n\t };\n\t\n\t treemap.paddingOuter = function(x) {\n\t return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n\t };\n\t\n\t treemap.paddingTop = function(x) {\n\t return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant$5(+x), treemap) : paddingTop;\n\t };\n\t\n\t treemap.paddingRight = function(x) {\n\t return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant$5(+x), treemap) : paddingRight;\n\t };\n\t\n\t treemap.paddingBottom = function(x) {\n\t return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant$5(+x), treemap) : paddingBottom;\n\t };\n\t\n\t treemap.paddingLeft = function(x) {\n\t return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant$5(+x), treemap) : paddingLeft;\n\t };\n\t\n\t return treemap;\n\t }\n\t\n\t function binary(parent, x0, y0, x1, y1) {\n\t var nodes = parent.children,\n\t i, n = nodes.length,\n\t sum, sums = new Array(n + 1);\n\t\n\t for (sums[0] = sum = i = 0; i < n; ++i) {\n\t sums[i + 1] = sum += nodes[i].value;\n\t }\n\t\n\t partition(0, n, parent.value, x0, y0, x1, y1);\n\t\n\t function partition(i, j, value, x0, y0, x1, y1) {\n\t if (i >= j - 1) {\n\t var node = nodes[i];\n\t node.x0 = x0, node.y0 = y0;\n\t node.x1 = x1, node.y1 = y1;\n\t return;\n\t }\n\t\n\t var valueOffset = sums[i],\n\t valueTarget = (value / 2) + valueOffset,\n\t k = i + 1,\n\t hi = j - 1;\n\t\n\t while (k < hi) {\n\t var mid = k + hi >>> 1;\n\t if (sums[mid] < valueTarget) k = mid + 1;\n\t else hi = mid;\n\t }\n\t\n\t var valueLeft = sums[k] - valueOffset,\n\t valueRight = value - valueLeft;\n\t\n\t if ((y1 - y0) > (x1 - x0)) {\n\t var yk = (y0 * valueRight + y1 * valueLeft) / value;\n\t partition(i, k, valueLeft, x0, y0, x1, yk);\n\t partition(k, j, valueRight, x0, yk, x1, y1);\n\t } else {\n\t var xk = (x0 * valueRight + x1 * valueLeft) / value;\n\t partition(i, k, valueLeft, x0, y0, xk, y1);\n\t partition(k, j, valueRight, xk, y0, x1, y1);\n\t }\n\t }\n\t }\n\t\n\t function sliceDice(parent, x0, y0, x1, y1) {\n\t (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1);\n\t }\n\t\n\t var resquarify = (function custom(ratio) {\n\t\n\t function resquarify(parent, x0, y0, x1, y1) {\n\t if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n\t var rows,\n\t row,\n\t nodes,\n\t i,\n\t j = -1,\n\t n,\n\t m = rows.length,\n\t value = parent.value;\n\t\n\t while (++j < m) {\n\t row = rows[j], nodes = row.children;\n\t for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n\t if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n\t else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n\t value -= row.value;\n\t }\n\t } else {\n\t parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n\t rows.ratio = ratio;\n\t }\n\t }\n\t\n\t resquarify.ratio = function(x) {\n\t return custom((x = +x) > 1 ? x : 1);\n\t };\n\t\n\t return resquarify;\n\t })(phi);\n\t\n\t function center$1(x, y) {\n\t var nodes;\n\t\n\t if (x == null) x = 0;\n\t if (y == null) y = 0;\n\t\n\t function force() {\n\t var i,\n\t n = nodes.length,\n\t node,\n\t sx = 0,\n\t sy = 0;\n\t\n\t for (i = 0; i < n; ++i) {\n\t node = nodes[i], sx += node.x, sy += node.y;\n\t }\n\t\n\t for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n\t node = nodes[i], node.x -= sx, node.y -= sy;\n\t }\n\t }\n\t\n\t force.initialize = function(_) {\n\t nodes = _;\n\t };\n\t\n\t force.x = function(_) {\n\t return arguments.length ? (x = +_, force) : x;\n\t };\n\t\n\t force.y = function(_) {\n\t return arguments.length ? (y = +_, force) : y;\n\t };\n\t\n\t return force;\n\t }\n\t\n\t function constant$6(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function jiggle() {\n\t return (Math.random() - 0.5) * 1e-6;\n\t }\n\t\n\t function x$1(d) {\n\t return d.x + d.vx;\n\t }\n\t\n\t function y$1(d) {\n\t return d.y + d.vy;\n\t }\n\t\n\t function collide(radius) {\n\t var nodes,\n\t radii,\n\t strength = 1,\n\t iterations = 1;\n\t\n\t if (typeof radius !== \"function\") radius = constant$6(radius == null ? 1 : +radius);\n\t\n\t function force() {\n\t var i, n = nodes.length,\n\t tree,\n\t node,\n\t xi,\n\t yi,\n\t ri,\n\t ri2;\n\t\n\t for (var k = 0; k < iterations; ++k) {\n\t tree = quadtree(nodes, x$1, y$1).visitAfter(prepare);\n\t for (i = 0; i < n; ++i) {\n\t node = nodes[i];\n\t ri = radii[i], ri2 = ri * ri;\n\t xi = node.x + node.vx;\n\t yi = node.y + node.vy;\n\t tree.visit(apply);\n\t }\n\t }\n\t\n\t function apply(quad, x0, y0, x1, y1) {\n\t var data = quad.data, rj = quad.r, r = ri + rj;\n\t if (data) {\n\t if (data.index > i) {\n\t var x = xi - data.x - data.vx,\n\t y = yi - data.y - data.vy,\n\t l = x * x + y * y;\n\t if (l < r * r) {\n\t if (x === 0) x = jiggle(), l += x * x;\n\t if (y === 0) y = jiggle(), l += y * y;\n\t l = (r - (l = Math.sqrt(l))) / l * strength;\n\t node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n\t node.vy += (y *= l) * r;\n\t data.vx -= x * (r = 1 - r);\n\t data.vy -= y * r;\n\t }\n\t }\n\t return;\n\t }\n\t return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n\t }\n\t }\n\t\n\t function prepare(quad) {\n\t if (quad.data) return quad.r = radii[quad.data.index];\n\t for (var i = quad.r = 0; i < 4; ++i) {\n\t if (quad[i] && quad[i].r > quad.r) {\n\t quad.r = quad[i].r;\n\t }\n\t }\n\t }\n\t\n\t force.initialize = function(_) {\n\t var i, n = (nodes = _).length; radii = new Array(n);\n\t for (i = 0; i < n; ++i) radii[i] = +radius(nodes[i], i, nodes);\n\t };\n\t\n\t force.iterations = function(_) {\n\t return arguments.length ? (iterations = +_, force) : iterations;\n\t };\n\t\n\t force.strength = function(_) {\n\t return arguments.length ? (strength = +_, force) : strength;\n\t };\n\t\n\t force.radius = function(_) {\n\t return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$6(+_), force) : radius;\n\t };\n\t\n\t return force;\n\t }\n\t\n\t function index$2(d, i) {\n\t return i;\n\t }\n\t\n\t function link(links) {\n\t var id = index$2,\n\t strength = defaultStrength,\n\t strengths,\n\t distance = constant$6(30),\n\t distances,\n\t nodes,\n\t count,\n\t bias,\n\t iterations = 1;\n\t\n\t if (links == null) links = [];\n\t\n\t function defaultStrength(link) {\n\t return 1 / Math.min(count[link.source.index], count[link.target.index]);\n\t }\n\t\n\t function force(alpha) {\n\t for (var k = 0, n = links.length; k < iterations; ++k) {\n\t for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n\t link = links[i], source = link.source, target = link.target;\n\t x = target.x + target.vx - source.x - source.vx || jiggle();\n\t y = target.y + target.vy - source.y - source.vy || jiggle();\n\t l = Math.sqrt(x * x + y * y);\n\t l = (l - distances[i]) / l * alpha * strengths[i];\n\t x *= l, y *= l;\n\t target.vx -= x * (b = bias[i]);\n\t target.vy -= y * b;\n\t source.vx += x * (b = 1 - b);\n\t source.vy += y * b;\n\t }\n\t }\n\t }\n\t\n\t function initialize() {\n\t if (!nodes) return;\n\t\n\t var i,\n\t n = nodes.length,\n\t m = links.length,\n\t nodeById = map$1(nodes, id),\n\t link;\n\t\n\t for (i = 0, count = new Array(n); i < n; ++i) {\n\t count[i] = 0;\n\t }\n\t\n\t for (i = 0; i < m; ++i) {\n\t link = links[i], link.index = i;\n\t if (typeof link.source !== \"object\") link.source = nodeById.get(link.source);\n\t if (typeof link.target !== \"object\") link.target = nodeById.get(link.target);\n\t ++count[link.source.index], ++count[link.target.index];\n\t }\n\t\n\t for (i = 0, bias = new Array(m); i < m; ++i) {\n\t link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n\t }\n\t\n\t strengths = new Array(m), initializeStrength();\n\t distances = new Array(m), initializeDistance();\n\t }\n\t\n\t function initializeStrength() {\n\t if (!nodes) return;\n\t\n\t for (var i = 0, n = links.length; i < n; ++i) {\n\t strengths[i] = +strength(links[i], i, links);\n\t }\n\t }\n\t\n\t function initializeDistance() {\n\t if (!nodes) return;\n\t\n\t for (var i = 0, n = links.length; i < n; ++i) {\n\t distances[i] = +distance(links[i], i, links);\n\t }\n\t }\n\t\n\t force.initialize = function(_) {\n\t nodes = _;\n\t initialize();\n\t };\n\t\n\t force.links = function(_) {\n\t return arguments.length ? (links = _, initialize(), force) : links;\n\t };\n\t\n\t force.id = function(_) {\n\t return arguments.length ? (id = _, force) : id;\n\t };\n\t\n\t force.iterations = function(_) {\n\t return arguments.length ? (iterations = +_, force) : iterations;\n\t };\n\t\n\t force.strength = function(_) {\n\t return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initializeStrength(), force) : strength;\n\t };\n\t\n\t force.distance = function(_) {\n\t return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant$6(+_), initializeDistance(), force) : distance;\n\t };\n\t\n\t return force;\n\t }\n\t\n\t function x$2(d) {\n\t return d.x;\n\t }\n\t\n\t function y$2(d) {\n\t return d.y;\n\t }\n\t\n\t var initialRadius = 10;\n\t var initialAngle = Math.PI * (3 - Math.sqrt(5));\n\t function simulation(nodes) {\n\t var simulation,\n\t alpha = 1,\n\t alphaMin = 0.001,\n\t alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n\t alphaTarget = 0,\n\t velocityDecay = 0.6,\n\t forces = map$1(),\n\t stepper = timer(step),\n\t event = dispatch(\"tick\", \"end\");\n\t\n\t if (nodes == null) nodes = [];\n\t\n\t function step() {\n\t tick();\n\t event.call(\"tick\", simulation);\n\t if (alpha < alphaMin) {\n\t stepper.stop();\n\t event.call(\"end\", simulation);\n\t }\n\t }\n\t\n\t function tick() {\n\t var i, n = nodes.length, node;\n\t\n\t alpha += (alphaTarget - alpha) * alphaDecay;\n\t\n\t forces.each(function(force) {\n\t force(alpha);\n\t });\n\t\n\t for (i = 0; i < n; ++i) {\n\t node = nodes[i];\n\t if (node.fx == null) node.x += node.vx *= velocityDecay;\n\t else node.x = node.fx, node.vx = 0;\n\t if (node.fy == null) node.y += node.vy *= velocityDecay;\n\t else node.y = node.fy, node.vy = 0;\n\t }\n\t }\n\t\n\t function initializeNodes() {\n\t for (var i = 0, n = nodes.length, node; i < n; ++i) {\n\t node = nodes[i], node.index = i;\n\t if (isNaN(node.x) || isNaN(node.y)) {\n\t var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n\t node.x = radius * Math.cos(angle);\n\t node.y = radius * Math.sin(angle);\n\t }\n\t if (isNaN(node.vx) || isNaN(node.vy)) {\n\t node.vx = node.vy = 0;\n\t }\n\t }\n\t }\n\t\n\t function initializeForce(force) {\n\t if (force.initialize) force.initialize(nodes);\n\t return force;\n\t }\n\t\n\t initializeNodes();\n\t\n\t return simulation = {\n\t tick: tick,\n\t\n\t restart: function() {\n\t return stepper.restart(step), simulation;\n\t },\n\t\n\t stop: function() {\n\t return stepper.stop(), simulation;\n\t },\n\t\n\t nodes: function(_) {\n\t return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n\t },\n\t\n\t alpha: function(_) {\n\t return arguments.length ? (alpha = +_, simulation) : alpha;\n\t },\n\t\n\t alphaMin: function(_) {\n\t return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n\t },\n\t\n\t alphaDecay: function(_) {\n\t return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n\t },\n\t\n\t alphaTarget: function(_) {\n\t return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n\t },\n\t\n\t velocityDecay: function(_) {\n\t return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n\t },\n\t\n\t force: function(name, _) {\n\t return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n\t },\n\t\n\t find: function(x, y, radius) {\n\t var i = 0,\n\t n = nodes.length,\n\t dx,\n\t dy,\n\t d2,\n\t node,\n\t closest;\n\t\n\t if (radius == null) radius = Infinity;\n\t else radius *= radius;\n\t\n\t for (i = 0; i < n; ++i) {\n\t node = nodes[i];\n\t dx = x - node.x;\n\t dy = y - node.y;\n\t d2 = dx * dx + dy * dy;\n\t if (d2 < radius) closest = node, radius = d2;\n\t }\n\t\n\t return closest;\n\t },\n\t\n\t on: function(name, _) {\n\t return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n\t }\n\t };\n\t }\n\t\n\t function manyBody() {\n\t var nodes,\n\t node,\n\t alpha,\n\t strength = constant$6(-30),\n\t strengths,\n\t distanceMin2 = 1,\n\t distanceMax2 = Infinity,\n\t theta2 = 0.81;\n\t\n\t function force(_) {\n\t var i, n = nodes.length, tree = quadtree(nodes, x$2, y$2).visitAfter(accumulate);\n\t for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n\t }\n\t\n\t function initialize() {\n\t if (!nodes) return;\n\t var i, n = nodes.length;\n\t strengths = new Array(n);\n\t for (i = 0; i < n; ++i) strengths[i] = +strength(nodes[i], i, nodes);\n\t }\n\t\n\t function accumulate(quad) {\n\t var strength = 0, q, c, x, y, i;\n\t\n\t // For internal nodes, accumulate forces from child quadrants.\n\t if (quad.length) {\n\t for (x = y = i = 0; i < 4; ++i) {\n\t if ((q = quad[i]) && (c = q.value)) {\n\t strength += c, x += c * q.x, y += c * q.y;\n\t }\n\t }\n\t quad.x = x / strength;\n\t quad.y = y / strength;\n\t }\n\t\n\t // For leaf nodes, accumulate forces from coincident quadrants.\n\t else {\n\t q = quad;\n\t q.x = q.data.x;\n\t q.y = q.data.y;\n\t do strength += strengths[q.data.index];\n\t while (q = q.next);\n\t }\n\t\n\t quad.value = strength;\n\t }\n\t\n\t function apply(quad, x1, _, x2) {\n\t if (!quad.value) return true;\n\t\n\t var x = quad.x - node.x,\n\t y = quad.y - node.y,\n\t w = x2 - x1,\n\t l = x * x + y * y;\n\t\n\t // Apply the Barnes-Hut approximation if possible.\n\t // Limit forces for very close nodes; randomize direction if coincident.\n\t if (w * w / theta2 < l) {\n\t if (l < distanceMax2) {\n\t if (x === 0) x = jiggle(), l += x * x;\n\t if (y === 0) y = jiggle(), l += y * y;\n\t if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n\t node.vx += x * quad.value * alpha / l;\n\t node.vy += y * quad.value * alpha / l;\n\t }\n\t return true;\n\t }\n\t\n\t // Otherwise, process points directly.\n\t else if (quad.length || l >= distanceMax2) return;\n\t\n\t // Limit forces for very close nodes; randomize direction if coincident.\n\t if (quad.data !== node || quad.next) {\n\t if (x === 0) x = jiggle(), l += x * x;\n\t if (y === 0) y = jiggle(), l += y * y;\n\t if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n\t }\n\t\n\t do if (quad.data !== node) {\n\t w = strengths[quad.data.index] * alpha / l;\n\t node.vx += x * w;\n\t node.vy += y * w;\n\t } while (quad = quad.next);\n\t }\n\t\n\t force.initialize = function(_) {\n\t nodes = _;\n\t initialize();\n\t };\n\t\n\t force.strength = function(_) {\n\t return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : strength;\n\t };\n\t\n\t force.distanceMin = function(_) {\n\t return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n\t };\n\t\n\t force.distanceMax = function(_) {\n\t return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n\t };\n\t\n\t force.theta = function(_) {\n\t return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n\t };\n\t\n\t return force;\n\t }\n\t\n\t function x$3(x) {\n\t var strength = constant$6(0.1),\n\t nodes,\n\t strengths,\n\t xz;\n\t\n\t if (typeof x !== \"function\") x = constant$6(x == null ? 0 : +x);\n\t\n\t function force(alpha) {\n\t for (var i = 0, n = nodes.length, node; i < n; ++i) {\n\t node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n\t }\n\t }\n\t\n\t function initialize() {\n\t if (!nodes) return;\n\t var i, n = nodes.length;\n\t strengths = new Array(n);\n\t xz = new Array(n);\n\t for (i = 0; i < n; ++i) {\n\t strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n\t }\n\t }\n\t\n\t force.initialize = function(_) {\n\t nodes = _;\n\t initialize();\n\t };\n\t\n\t force.strength = function(_) {\n\t return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : strength;\n\t };\n\t\n\t force.x = function(_) {\n\t return arguments.length ? (x = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : x;\n\t };\n\t\n\t return force;\n\t }\n\t\n\t function y$3(y) {\n\t var strength = constant$6(0.1),\n\t nodes,\n\t strengths,\n\t yz;\n\t\n\t if (typeof y !== \"function\") y = constant$6(y == null ? 0 : +y);\n\t\n\t function force(alpha) {\n\t for (var i = 0, n = nodes.length, node; i < n; ++i) {\n\t node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n\t }\n\t }\n\t\n\t function initialize() {\n\t if (!nodes) return;\n\t var i, n = nodes.length;\n\t strengths = new Array(n);\n\t yz = new Array(n);\n\t for (i = 0; i < n; ++i) {\n\t strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n\t }\n\t }\n\t\n\t force.initialize = function(_) {\n\t nodes = _;\n\t initialize();\n\t };\n\t\n\t force.strength = function(_) {\n\t return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : strength;\n\t };\n\t\n\t force.y = function(_) {\n\t return arguments.length ? (y = typeof _ === \"function\" ? _ : constant$6(+_), initialize(), force) : y;\n\t };\n\t\n\t return force;\n\t }\n\t\n\t function nopropagation() {\n\t exports.event.stopImmediatePropagation();\n\t }\n\t\n\t function noevent() {\n\t exports.event.preventDefault();\n\t exports.event.stopImmediatePropagation();\n\t }\n\t\n\t function dragDisable(view) {\n\t var root = view.document.documentElement,\n\t selection = select(view).on(\"dragstart.drag\", noevent, true);\n\t if (\"onselectstart\" in root) {\n\t selection.on(\"selectstart.drag\", noevent, true);\n\t } else {\n\t root.__noselect = root.style.MozUserSelect;\n\t root.style.MozUserSelect = \"none\";\n\t }\n\t }\n\t\n\t function dragEnable(view, noclick) {\n\t var root = view.document.documentElement,\n\t selection = select(view).on(\"dragstart.drag\", null);\n\t if (noclick) {\n\t selection.on(\"click.drag\", noevent, true);\n\t setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n\t }\n\t if (\"onselectstart\" in root) {\n\t selection.on(\"selectstart.drag\", null);\n\t } else {\n\t root.style.MozUserSelect = root.__noselect;\n\t delete root.__noselect;\n\t }\n\t }\n\t\n\t function constant$7(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n\t this.target = target;\n\t this.type = type;\n\t this.subject = subject;\n\t this.identifier = id;\n\t this.active = active;\n\t this.x = x;\n\t this.y = y;\n\t this.dx = dx;\n\t this.dy = dy;\n\t this._ = dispatch;\n\t }\n\t\n\t DragEvent.prototype.on = function() {\n\t var value = this._.on.apply(this._, arguments);\n\t return value === this._ ? this : value;\n\t };\n\t\n\t // Ignore right-click, since that should open the context menu.\n\t function defaultFilter() {\n\t return !exports.event.button;\n\t }\n\t\n\t function defaultContainer() {\n\t return this.parentNode;\n\t }\n\t\n\t function defaultSubject(d) {\n\t return d == null ? {x: exports.event.x, y: exports.event.y} : d;\n\t }\n\t\n\t function drag() {\n\t var filter = defaultFilter,\n\t container = defaultContainer,\n\t subject = defaultSubject,\n\t gestures = {},\n\t listeners = dispatch(\"start\", \"drag\", \"end\"),\n\t active = 0,\n\t mousemoving,\n\t touchending;\n\t\n\t function drag(selection) {\n\t selection\n\t .on(\"mousedown.drag\", mousedowned)\n\t .on(\"touchstart.drag\", touchstarted)\n\t .on(\"touchmove.drag\", touchmoved)\n\t .on(\"touchend.drag touchcancel.drag\", touchended)\n\t .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n\t }\n\t\n\t function mousedowned() {\n\t if (touchending || !filter.apply(this, arguments)) return;\n\t var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n\t if (!gesture) return;\n\t select(exports.event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n\t dragDisable(exports.event.view);\n\t nopropagation();\n\t mousemoving = false;\n\t gesture(\"start\");\n\t }\n\t\n\t function mousemoved() {\n\t noevent();\n\t mousemoving = true;\n\t gestures.mouse(\"drag\");\n\t }\n\t\n\t function mouseupped() {\n\t select(exports.event.view).on(\"mousemove.drag mouseup.drag\", null);\n\t dragEnable(exports.event.view, mousemoving);\n\t noevent();\n\t gestures.mouse(\"end\");\n\t }\n\t\n\t function touchstarted() {\n\t if (!filter.apply(this, arguments)) return;\n\t var touches = exports.event.changedTouches,\n\t c = container.apply(this, arguments),\n\t n = touches.length, i, gesture;\n\t\n\t for (i = 0; i < n; ++i) {\n\t if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n\t nopropagation();\n\t gesture(\"start\");\n\t }\n\t }\n\t }\n\t\n\t function touchmoved() {\n\t var touches = exports.event.changedTouches,\n\t n = touches.length, i, gesture;\n\t\n\t for (i = 0; i < n; ++i) {\n\t if (gesture = gestures[touches[i].identifier]) {\n\t noevent();\n\t gesture(\"drag\");\n\t }\n\t }\n\t }\n\t\n\t function touchended() {\n\t var touches = exports.event.changedTouches,\n\t n = touches.length, i, gesture;\n\t\n\t if (touchending) clearTimeout(touchending);\n\t touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n\t for (i = 0; i < n; ++i) {\n\t if (gesture = gestures[touches[i].identifier]) {\n\t nopropagation();\n\t gesture(\"end\");\n\t }\n\t }\n\t }\n\t\n\t function beforestart(id, container, point, that, args) {\n\t var p = point(container, id), s, dx, dy,\n\t sublisteners = listeners.copy();\n\t\n\t if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n\t if ((exports.event.subject = s = subject.apply(that, args)) == null) return false;\n\t dx = s.x - p[0] || 0;\n\t dy = s.y - p[1] || 0;\n\t return true;\n\t })) return;\n\t\n\t return function gesture(type) {\n\t var p0 = p, n;\n\t switch (type) {\n\t case \"start\": gestures[id] = gesture, n = active++; break;\n\t case \"end\": delete gestures[id], --active; // nobreak\n\t case \"drag\": p = point(container, id), n = active; break;\n\t }\n\t customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n\t };\n\t }\n\t\n\t drag.filter = function(_) {\n\t return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$7(!!_), drag) : filter;\n\t };\n\t\n\t drag.container = function(_) {\n\t return arguments.length ? (container = typeof _ === \"function\" ? _ : constant$7(_), drag) : container;\n\t };\n\t\n\t drag.subject = function(_) {\n\t return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant$7(_), drag) : subject;\n\t };\n\t\n\t drag.on = function() {\n\t var value = listeners.on.apply(listeners, arguments);\n\t return value === listeners ? drag : value;\n\t };\n\t\n\t return drag;\n\t }\n\t\n\t function constant$8(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function x$4(d) {\n\t return d[0];\n\t }\n\t\n\t function y$4(d) {\n\t return d[1];\n\t }\n\t\n\t function RedBlackTree() {\n\t this._ = null; // root node\n\t }\n\t\n\t function RedBlackNode(node) {\n\t node.U = // parent node\n\t node.C = // color - true for red, false for black\n\t node.L = // left node\n\t node.R = // right node\n\t node.P = // previous node\n\t node.N = null; // next node\n\t }\n\t\n\t RedBlackTree.prototype = {\n\t constructor: RedBlackTree,\n\t\n\t insert: function(after, node) {\n\t var parent, grandpa, uncle;\n\t\n\t if (after) {\n\t node.P = after;\n\t node.N = after.N;\n\t if (after.N) after.N.P = node;\n\t after.N = node;\n\t if (after.R) {\n\t after = after.R;\n\t while (after.L) after = after.L;\n\t after.L = node;\n\t } else {\n\t after.R = node;\n\t }\n\t parent = after;\n\t } else if (this._) {\n\t after = RedBlackFirst(this._);\n\t node.P = null;\n\t node.N = after;\n\t after.P = after.L = node;\n\t parent = after;\n\t } else {\n\t node.P = node.N = null;\n\t this._ = node;\n\t parent = null;\n\t }\n\t node.L = node.R = null;\n\t node.U = parent;\n\t node.C = true;\n\t\n\t after = node;\n\t while (parent && parent.C) {\n\t grandpa = parent.U;\n\t if (parent === grandpa.L) {\n\t uncle = grandpa.R;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.R) {\n\t RedBlackRotateLeft(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t RedBlackRotateRight(this, grandpa);\n\t }\n\t } else {\n\t uncle = grandpa.L;\n\t if (uncle && uncle.C) {\n\t parent.C = uncle.C = false;\n\t grandpa.C = true;\n\t after = grandpa;\n\t } else {\n\t if (after === parent.L) {\n\t RedBlackRotateRight(this, parent);\n\t after = parent;\n\t parent = after.U;\n\t }\n\t parent.C = false;\n\t grandpa.C = true;\n\t RedBlackRotateLeft(this, grandpa);\n\t }\n\t }\n\t parent = after.U;\n\t }\n\t this._.C = false;\n\t },\n\t\n\t remove: function(node) {\n\t if (node.N) node.N.P = node.P;\n\t if (node.P) node.P.N = node.N;\n\t node.N = node.P = null;\n\t\n\t var parent = node.U,\n\t sibling,\n\t left = node.L,\n\t right = node.R,\n\t next,\n\t red;\n\t\n\t if (!left) next = right;\n\t else if (!right) next = left;\n\t else next = RedBlackFirst(right);\n\t\n\t if (parent) {\n\t if (parent.L === node) parent.L = next;\n\t else parent.R = next;\n\t } else {\n\t this._ = next;\n\t }\n\t\n\t if (left && right) {\n\t red = next.C;\n\t next.C = node.C;\n\t next.L = left;\n\t left.U = next;\n\t if (next !== right) {\n\t parent = next.U;\n\t next.U = node.U;\n\t node = next.R;\n\t parent.L = node;\n\t next.R = right;\n\t right.U = next;\n\t } else {\n\t next.U = parent;\n\t parent = next;\n\t node = next.R;\n\t }\n\t } else {\n\t red = node.C;\n\t node = next;\n\t }\n\t\n\t if (node) node.U = parent;\n\t if (red) return;\n\t if (node && node.C) { node.C = false; return; }\n\t\n\t do {\n\t if (node === this._) break;\n\t if (node === parent.L) {\n\t sibling = parent.R;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t RedBlackRotateLeft(this, parent);\n\t sibling = parent.R;\n\t }\n\t if ((sibling.L && sibling.L.C)\n\t || (sibling.R && sibling.R.C)) {\n\t if (!sibling.R || !sibling.R.C) {\n\t sibling.L.C = false;\n\t sibling.C = true;\n\t RedBlackRotateRight(this, sibling);\n\t sibling = parent.R;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.R.C = false;\n\t RedBlackRotateLeft(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t } else {\n\t sibling = parent.L;\n\t if (sibling.C) {\n\t sibling.C = false;\n\t parent.C = true;\n\t RedBlackRotateRight(this, parent);\n\t sibling = parent.L;\n\t }\n\t if ((sibling.L && sibling.L.C)\n\t || (sibling.R && sibling.R.C)) {\n\t if (!sibling.L || !sibling.L.C) {\n\t sibling.R.C = false;\n\t sibling.C = true;\n\t RedBlackRotateLeft(this, sibling);\n\t sibling = parent.L;\n\t }\n\t sibling.C = parent.C;\n\t parent.C = sibling.L.C = false;\n\t RedBlackRotateRight(this, parent);\n\t node = this._;\n\t break;\n\t }\n\t }\n\t sibling.C = true;\n\t node = parent;\n\t parent = parent.U;\n\t } while (!node.C);\n\t\n\t if (node) node.C = false;\n\t }\n\t };\n\t\n\t function RedBlackRotateLeft(tree, node) {\n\t var p = node,\n\t q = node.R,\n\t parent = p.U;\n\t\n\t if (parent) {\n\t if (parent.L === p) parent.L = q;\n\t else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t\n\t q.U = parent;\n\t p.U = q;\n\t p.R = q.L;\n\t if (p.R) p.R.U = p;\n\t q.L = p;\n\t }\n\t\n\t function RedBlackRotateRight(tree, node) {\n\t var p = node,\n\t q = node.L,\n\t parent = p.U;\n\t\n\t if (parent) {\n\t if (parent.L === p) parent.L = q;\n\t else parent.R = q;\n\t } else {\n\t tree._ = q;\n\t }\n\t\n\t q.U = parent;\n\t p.U = q;\n\t p.L = q.R;\n\t if (p.L) p.L.U = p;\n\t q.R = p;\n\t }\n\t\n\t function RedBlackFirst(node) {\n\t while (node.L) node = node.L;\n\t return node;\n\t }\n\t\n\t function createEdge(left, right, v0, v1) {\n\t var edge = [null, null],\n\t index = edges.push(edge) - 1;\n\t edge.left = left;\n\t edge.right = right;\n\t if (v0) setEdgeEnd(edge, left, right, v0);\n\t if (v1) setEdgeEnd(edge, right, left, v1);\n\t cells[left.index].halfedges.push(index);\n\t cells[right.index].halfedges.push(index);\n\t return edge;\n\t }\n\t\n\t function createBorderEdge(left, v0, v1) {\n\t var edge = [v0, v1];\n\t edge.left = left;\n\t return edge;\n\t }\n\t\n\t function setEdgeEnd(edge, left, right, vertex) {\n\t if (!edge[0] && !edge[1]) {\n\t edge[0] = vertex;\n\t edge.left = left;\n\t edge.right = right;\n\t } else if (edge.left === right) {\n\t edge[1] = vertex;\n\t } else {\n\t edge[0] = vertex;\n\t }\n\t }\n\t\n\t // Liang–Barsky line clipping.\n\t function clipEdge(edge, x0, y0, x1, y1) {\n\t var a = edge[0],\n\t b = edge[1],\n\t ax = a[0],\n\t ay = a[1],\n\t bx = b[0],\n\t by = b[1],\n\t t0 = 0,\n\t t1 = 1,\n\t dx = bx - ax,\n\t dy = by - ay,\n\t r;\n\t\n\t r = x0 - ax;\n\t if (!dx && r > 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dx > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t\n\t r = x1 - ax;\n\t if (!dx && r < 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dx > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t\n\t r = y0 - ay;\n\t if (!dy && r > 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dy > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t\n\t r = y1 - ay;\n\t if (!dy && r < 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dy > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t\n\t if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\t\n\t if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n\t if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n\t return true;\n\t }\n\t\n\t function connectEdge(edge, x0, y0, x1, y1) {\n\t var v1 = edge[1];\n\t if (v1) return true;\n\t\n\t var v0 = edge[0],\n\t left = edge.left,\n\t right = edge.right,\n\t lx = left[0],\n\t ly = left[1],\n\t rx = right[0],\n\t ry = right[1],\n\t fx = (lx + rx) / 2,\n\t fy = (ly + ry) / 2,\n\t fm,\n\t fb;\n\t\n\t if (ry === ly) {\n\t if (fx < x0 || fx >= x1) return;\n\t if (lx > rx) {\n\t if (!v0) v0 = [fx, y0];\n\t else if (v0[1] >= y1) return;\n\t v1 = [fx, y1];\n\t } else {\n\t if (!v0) v0 = [fx, y1];\n\t else if (v0[1] < y0) return;\n\t v1 = [fx, y0];\n\t }\n\t } else {\n\t fm = (lx - rx) / (ry - ly);\n\t fb = fy - fm * fx;\n\t if (fm < -1 || fm > 1) {\n\t if (lx > rx) {\n\t if (!v0) v0 = [(y0 - fb) / fm, y0];\n\t else if (v0[1] >= y1) return;\n\t v1 = [(y1 - fb) / fm, y1];\n\t } else {\n\t if (!v0) v0 = [(y1 - fb) / fm, y1];\n\t else if (v0[1] < y0) return;\n\t v1 = [(y0 - fb) / fm, y0];\n\t }\n\t } else {\n\t if (ly < ry) {\n\t if (!v0) v0 = [x0, fm * x0 + fb];\n\t else if (v0[0] >= x1) return;\n\t v1 = [x1, fm * x1 + fb];\n\t } else {\n\t if (!v0) v0 = [x1, fm * x1 + fb];\n\t else if (v0[0] < x0) return;\n\t v1 = [x0, fm * x0 + fb];\n\t }\n\t }\n\t }\n\t\n\t edge[0] = v0;\n\t edge[1] = v1;\n\t return true;\n\t }\n\t\n\t function clipEdges(x0, y0, x1, y1) {\n\t var i = edges.length,\n\t edge;\n\t\n\t while (i--) {\n\t if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n\t || !clipEdge(edge, x0, y0, x1, y1)\n\t || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon$3\n\t || Math.abs(edge[0][1] - edge[1][1]) > epsilon$3)) {\n\t delete edges[i];\n\t }\n\t }\n\t }\n\t\n\t function createCell(site) {\n\t return cells[site.index] = {\n\t site: site,\n\t halfedges: []\n\t };\n\t }\n\t\n\t function cellHalfedgeAngle(cell, edge) {\n\t var site = cell.site,\n\t va = edge.left,\n\t vb = edge.right;\n\t if (site === vb) vb = va, va = site;\n\t if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n\t if (site === va) va = edge[1], vb = edge[0];\n\t else va = edge[0], vb = edge[1];\n\t return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n\t }\n\t\n\t function cellHalfedgeStart(cell, edge) {\n\t return edge[+(edge.left !== cell.site)];\n\t }\n\t\n\t function cellHalfedgeEnd(cell, edge) {\n\t return edge[+(edge.left === cell.site)];\n\t }\n\t\n\t function sortCellHalfedges() {\n\t for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n\t if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n\t var index = new Array(m),\n\t array = new Array(m);\n\t for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n\t index.sort(function(i, j) { return array[j] - array[i]; });\n\t for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n\t for (j = 0; j < m; ++j) halfedges[j] = array[j];\n\t }\n\t }\n\t }\n\t\n\t function clipCells(x0, y0, x1, y1) {\n\t var nCells = cells.length,\n\t iCell,\n\t cell,\n\t site,\n\t iHalfedge,\n\t halfedges,\n\t nHalfedges,\n\t start,\n\t startX,\n\t startY,\n\t end,\n\t endX,\n\t endY,\n\t cover = true;\n\t\n\t for (iCell = 0; iCell < nCells; ++iCell) {\n\t if (cell = cells[iCell]) {\n\t site = cell.site;\n\t halfedges = cell.halfedges;\n\t iHalfedge = halfedges.length;\n\t\n\t // Remove any dangling clipped edges.\n\t while (iHalfedge--) {\n\t if (!edges[halfedges[iHalfedge]]) {\n\t halfedges.splice(iHalfedge, 1);\n\t }\n\t }\n\t\n\t // Insert any border edges as necessary.\n\t iHalfedge = 0, nHalfedges = halfedges.length;\n\t while (iHalfedge < nHalfedges) {\n\t end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n\t start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n\t if (Math.abs(endX - startX) > epsilon$3 || Math.abs(endY - startY) > epsilon$3) {\n\t halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n\t Math.abs(endX - x0) < epsilon$3 && y1 - endY > epsilon$3 ? [x0, Math.abs(startX - x0) < epsilon$3 ? startY : y1]\n\t : Math.abs(endY - y1) < epsilon$3 && x1 - endX > epsilon$3 ? [Math.abs(startY - y1) < epsilon$3 ? startX : x1, y1]\n\t : Math.abs(endX - x1) < epsilon$3 && endY - y0 > epsilon$3 ? [x1, Math.abs(startX - x1) < epsilon$3 ? startY : y0]\n\t : Math.abs(endY - y0) < epsilon$3 && endX - x0 > epsilon$3 ? [Math.abs(startY - y0) < epsilon$3 ? startX : x0, y0]\n\t : null)) - 1);\n\t ++nHalfedges;\n\t }\n\t }\n\t\n\t if (nHalfedges) cover = false;\n\t }\n\t }\n\t\n\t // If there weren’t any edges, have the closest site cover the extent.\n\t // It doesn’t matter which corner of the extent we measure!\n\t if (cover) {\n\t var dx, dy, d2, dc = Infinity;\n\t\n\t for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n\t if (cell = cells[iCell]) {\n\t site = cell.site;\n\t dx = site[0] - x0;\n\t dy = site[1] - y0;\n\t d2 = dx * dx + dy * dy;\n\t if (d2 < dc) dc = d2, cover = cell;\n\t }\n\t }\n\t\n\t if (cover) {\n\t var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n\t cover.halfedges.push(\n\t edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n\t edges.push(createBorderEdge(site, v01, v11)) - 1,\n\t edges.push(createBorderEdge(site, v11, v10)) - 1,\n\t edges.push(createBorderEdge(site, v10, v00)) - 1\n\t );\n\t }\n\t }\n\t\n\t // Lastly delete any cells with no edges; these were entirely clipped.\n\t for (iCell = 0; iCell < nCells; ++iCell) {\n\t if (cell = cells[iCell]) {\n\t if (!cell.halfedges.length) {\n\t delete cells[iCell];\n\t }\n\t }\n\t }\n\t }\n\t\n\t var circlePool = [];\n\t\n\t var firstCircle;\n\t\n\t function Circle() {\n\t RedBlackNode(this);\n\t this.x =\n\t this.y =\n\t this.arc =\n\t this.site =\n\t this.cy = null;\n\t }\n\t\n\t function attachCircle(arc) {\n\t var lArc = arc.P,\n\t rArc = arc.N;\n\t\n\t if (!lArc || !rArc) return;\n\t\n\t var lSite = lArc.site,\n\t cSite = arc.site,\n\t rSite = rArc.site;\n\t\n\t if (lSite === rSite) return;\n\t\n\t var bx = cSite[0],\n\t by = cSite[1],\n\t ax = lSite[0] - bx,\n\t ay = lSite[1] - by,\n\t cx = rSite[0] - bx,\n\t cy = rSite[1] - by;\n\t\n\t var d = 2 * (ax * cy - ay * cx);\n\t if (d >= -epsilon2$1) return;\n\t\n\t var ha = ax * ax + ay * ay,\n\t hc = cx * cx + cy * cy,\n\t x = (cy * ha - ay * hc) / d,\n\t y = (ax * hc - cx * ha) / d;\n\t\n\t var circle = circlePool.pop() || new Circle;\n\t circle.arc = arc;\n\t circle.site = cSite;\n\t circle.x = x + bx;\n\t circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\t\n\t arc.circle = circle;\n\t\n\t var before = null,\n\t node = circles._;\n\t\n\t while (node) {\n\t if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n\t if (node.L) node = node.L;\n\t else { before = node.P; break; }\n\t } else {\n\t if (node.R) node = node.R;\n\t else { before = node; break; }\n\t }\n\t }\n\t\n\t circles.insert(before, circle);\n\t if (!before) firstCircle = circle;\n\t }\n\t\n\t function detachCircle(arc) {\n\t var circle = arc.circle;\n\t if (circle) {\n\t if (!circle.P) firstCircle = circle.N;\n\t circles.remove(circle);\n\t circlePool.push(circle);\n\t RedBlackNode(circle);\n\t arc.circle = null;\n\t }\n\t }\n\t\n\t var beachPool = [];\n\t\n\t function Beach() {\n\t RedBlackNode(this);\n\t this.edge =\n\t this.site =\n\t this.circle = null;\n\t }\n\t\n\t function createBeach(site) {\n\t var beach = beachPool.pop() || new Beach;\n\t beach.site = site;\n\t return beach;\n\t }\n\t\n\t function detachBeach(beach) {\n\t detachCircle(beach);\n\t beaches.remove(beach);\n\t beachPool.push(beach);\n\t RedBlackNode(beach);\n\t }\n\t\n\t function removeBeach(beach) {\n\t var circle = beach.circle,\n\t x = circle.x,\n\t y = circle.cy,\n\t vertex = [x, y],\n\t previous = beach.P,\n\t next = beach.N,\n\t disappearing = [beach];\n\t\n\t detachBeach(beach);\n\t\n\t var lArc = previous;\n\t while (lArc.circle\n\t && Math.abs(x - lArc.circle.x) < epsilon$3\n\t && Math.abs(y - lArc.circle.cy) < epsilon$3) {\n\t previous = lArc.P;\n\t disappearing.unshift(lArc);\n\t detachBeach(lArc);\n\t lArc = previous;\n\t }\n\t\n\t disappearing.unshift(lArc);\n\t detachCircle(lArc);\n\t\n\t var rArc = next;\n\t while (rArc.circle\n\t && Math.abs(x - rArc.circle.x) < epsilon$3\n\t && Math.abs(y - rArc.circle.cy) < epsilon$3) {\n\t next = rArc.N;\n\t disappearing.push(rArc);\n\t detachBeach(rArc);\n\t rArc = next;\n\t }\n\t\n\t disappearing.push(rArc);\n\t detachCircle(rArc);\n\t\n\t var nArcs = disappearing.length,\n\t iArc;\n\t for (iArc = 1; iArc < nArcs; ++iArc) {\n\t rArc = disappearing[iArc];\n\t lArc = disappearing[iArc - 1];\n\t setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n\t }\n\t\n\t lArc = disappearing[0];\n\t rArc = disappearing[nArcs - 1];\n\t rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\t\n\t attachCircle(lArc);\n\t attachCircle(rArc);\n\t }\n\t\n\t function addBeach(site) {\n\t var x = site[0],\n\t directrix = site[1],\n\t lArc,\n\t rArc,\n\t dxl,\n\t dxr,\n\t node = beaches._;\n\t\n\t while (node) {\n\t dxl = leftBreakPoint(node, directrix) - x;\n\t if (dxl > epsilon$3) node = node.L; else {\n\t dxr = x - rightBreakPoint(node, directrix);\n\t if (dxr > epsilon$3) {\n\t if (!node.R) {\n\t lArc = node;\n\t break;\n\t }\n\t node = node.R;\n\t } else {\n\t if (dxl > -epsilon$3) {\n\t lArc = node.P;\n\t rArc = node;\n\t } else if (dxr > -epsilon$3) {\n\t lArc = node;\n\t rArc = node.N;\n\t } else {\n\t lArc = rArc = node;\n\t }\n\t break;\n\t }\n\t }\n\t }\n\t\n\t createCell(site);\n\t var newArc = createBeach(site);\n\t beaches.insert(lArc, newArc);\n\t\n\t if (!lArc && !rArc) return;\n\t\n\t if (lArc === rArc) {\n\t detachCircle(lArc);\n\t rArc = createBeach(lArc.site);\n\t beaches.insert(newArc, rArc);\n\t newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n\t attachCircle(lArc);\n\t attachCircle(rArc);\n\t return;\n\t }\n\t\n\t if (!rArc) { // && lArc\n\t newArc.edge = createEdge(lArc.site, newArc.site);\n\t return;\n\t }\n\t\n\t // else lArc !== rArc\n\t detachCircle(lArc);\n\t detachCircle(rArc);\n\t\n\t var lSite = lArc.site,\n\t ax = lSite[0],\n\t ay = lSite[1],\n\t bx = site[0] - ax,\n\t by = site[1] - ay,\n\t rSite = rArc.site,\n\t cx = rSite[0] - ax,\n\t cy = rSite[1] - ay,\n\t d = 2 * (bx * cy - by * cx),\n\t hb = bx * bx + by * by,\n\t hc = cx * cx + cy * cy,\n\t vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\t\n\t setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n\t newArc.edge = createEdge(lSite, site, null, vertex);\n\t rArc.edge = createEdge(site, rSite, null, vertex);\n\t attachCircle(lArc);\n\t attachCircle(rArc);\n\t }\n\t\n\t function leftBreakPoint(arc, directrix) {\n\t var site = arc.site,\n\t rfocx = site[0],\n\t rfocy = site[1],\n\t pby2 = rfocy - directrix;\n\t\n\t if (!pby2) return rfocx;\n\t\n\t var lArc = arc.P;\n\t if (!lArc) return -Infinity;\n\t\n\t site = lArc.site;\n\t var lfocx = site[0],\n\t lfocy = site[1],\n\t plby2 = lfocy - directrix;\n\t\n\t if (!plby2) return lfocx;\n\t\n\t var hl = lfocx - rfocx,\n\t aby2 = 1 / pby2 - 1 / plby2,\n\t b = hl / plby2;\n\t\n\t if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\t\n\t return (rfocx + lfocx) / 2;\n\t }\n\t\n\t function rightBreakPoint(arc, directrix) {\n\t var rArc = arc.N;\n\t if (rArc) return leftBreakPoint(rArc, directrix);\n\t var site = arc.site;\n\t return site[1] === directrix ? site[0] : Infinity;\n\t }\n\t\n\t var epsilon$3 = 1e-6;\n\t var epsilon2$1 = 1e-12;\n\t var beaches;\n\t var cells;\n\t var circles;\n\t var edges;\n\t\n\t function triangleArea(a, b, c) {\n\t return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n\t }\n\t\n\t function lexicographic(a, b) {\n\t return b[1] - a[1]\n\t || b[0] - a[0];\n\t }\n\t\n\t function Diagram(sites, extent) {\n\t var site = sites.sort(lexicographic).pop(),\n\t x,\n\t y,\n\t circle;\n\t\n\t edges = [];\n\t cells = new Array(sites.length);\n\t beaches = new RedBlackTree;\n\t circles = new RedBlackTree;\n\t\n\t while (true) {\n\t circle = firstCircle;\n\t if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n\t if (site[0] !== x || site[1] !== y) {\n\t addBeach(site);\n\t x = site[0], y = site[1];\n\t }\n\t site = sites.pop();\n\t } else if (circle) {\n\t removeBeach(circle.arc);\n\t } else {\n\t break;\n\t }\n\t }\n\t\n\t sortCellHalfedges();\n\t\n\t if (extent) {\n\t var x0 = +extent[0][0],\n\t y0 = +extent[0][1],\n\t x1 = +extent[1][0],\n\t y1 = +extent[1][1];\n\t clipEdges(x0, y0, x1, y1);\n\t clipCells(x0, y0, x1, y1);\n\t }\n\t\n\t this.edges = edges;\n\t this.cells = cells;\n\t\n\t beaches =\n\t circles =\n\t edges =\n\t cells = null;\n\t }\n\t\n\t Diagram.prototype = {\n\t constructor: Diagram,\n\t\n\t polygons: function() {\n\t var edges = this.edges;\n\t\n\t return this.cells.map(function(cell) {\n\t var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n\t polygon.data = cell.site.data;\n\t return polygon;\n\t });\n\t },\n\t\n\t triangles: function() {\n\t var triangles = [],\n\t edges = this.edges;\n\t\n\t this.cells.forEach(function(cell, i) {\n\t var site = cell.site,\n\t halfedges = cell.halfedges,\n\t j = -1,\n\t m = halfedges.length,\n\t s0,\n\t e1 = edges[halfedges[m - 1]],\n\t s1 = e1.left === site ? e1.right : e1.left;\n\t\n\t while (++j < m) {\n\t s0 = s1;\n\t e1 = edges[halfedges[j]];\n\t s1 = e1.left === site ? e1.right : e1.left;\n\t if (i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n\t triangles.push([site.data, s0.data, s1.data]);\n\t }\n\t }\n\t });\n\t\n\t return triangles;\n\t },\n\t\n\t links: function() {\n\t return this.edges.filter(function(edge) {\n\t return edge.right;\n\t }).map(function(edge) {\n\t return {\n\t source: edge.left.data,\n\t target: edge.right.data\n\t };\n\t });\n\t }\n\t }\n\t\n\t function voronoi() {\n\t var x = x$4,\n\t y = y$4,\n\t extent = null;\n\t\n\t function voronoi(data) {\n\t return new Diagram(data.map(function(d, i) {\n\t var s = [Math.round(x(d, i, data) / epsilon$3) * epsilon$3, Math.round(y(d, i, data) / epsilon$3) * epsilon$3];\n\t s.index = i;\n\t s.data = d;\n\t return s;\n\t }), extent);\n\t }\n\t\n\t voronoi.polygons = function(data) {\n\t return voronoi(data).polygons();\n\t };\n\t\n\t voronoi.links = function(data) {\n\t return voronoi(data).links();\n\t };\n\t\n\t voronoi.triangles = function(data) {\n\t return voronoi(data).triangles();\n\t };\n\t\n\t voronoi.x = function(_) {\n\t return arguments.length ? (x = typeof _ === \"function\" ? _ : constant$8(+_), voronoi) : x;\n\t };\n\t\n\t voronoi.y = function(_) {\n\t return arguments.length ? (y = typeof _ === \"function\" ? _ : constant$8(+_), voronoi) : y;\n\t };\n\t\n\t voronoi.extent = function(_) {\n\t return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n\t };\n\t\n\t voronoi.size = function(_) {\n\t return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n\t };\n\t\n\t return voronoi;\n\t }\n\t\n\t function constant$9(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function ZoomEvent(target, type, transform) {\n\t this.target = target;\n\t this.type = type;\n\t this.transform = transform;\n\t }\n\t\n\t function Transform(k, x, y) {\n\t this.k = k;\n\t this.x = x;\n\t this.y = y;\n\t }\n\t\n\t Transform.prototype = {\n\t constructor: Transform,\n\t scale: function(k) {\n\t return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n\t },\n\t translate: function(x, y) {\n\t return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n\t },\n\t apply: function(point) {\n\t return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n\t },\n\t applyX: function(x) {\n\t return x * this.k + this.x;\n\t },\n\t applyY: function(y) {\n\t return y * this.k + this.y;\n\t },\n\t invert: function(location) {\n\t return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n\t },\n\t invertX: function(x) {\n\t return (x - this.x) / this.k;\n\t },\n\t invertY: function(y) {\n\t return (y - this.y) / this.k;\n\t },\n\t rescaleX: function(x) {\n\t return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n\t },\n\t rescaleY: function(y) {\n\t return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n\t },\n\t toString: function() {\n\t return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n\t }\n\t };\n\t\n\t var identity$6 = new Transform(1, 0, 0);\n\t\n\t transform.prototype = Transform.prototype;\n\t\n\t function transform(node) {\n\t return node.__zoom || identity$6;\n\t }\n\t\n\t function nopropagation$1() {\n\t exports.event.stopImmediatePropagation();\n\t }\n\t\n\t function noevent$1() {\n\t exports.event.preventDefault();\n\t exports.event.stopImmediatePropagation();\n\t }\n\t\n\t // Ignore right-click, since that should open the context menu.\n\t function defaultFilter$1() {\n\t return !exports.event.button;\n\t }\n\t\n\t function defaultExtent() {\n\t var e = this, w, h;\n\t if (e instanceof SVGElement) {\n\t e = e.ownerSVGElement || e;\n\t w = e.width.baseVal.value;\n\t h = e.height.baseVal.value;\n\t } else {\n\t w = e.clientWidth;\n\t h = e.clientHeight;\n\t }\n\t return [[0, 0], [w, h]];\n\t }\n\t\n\t function defaultTransform() {\n\t return this.__zoom || identity$6;\n\t }\n\t\n\t function zoom() {\n\t var filter = defaultFilter$1,\n\t extent = defaultExtent,\n\t k0 = 0,\n\t k1 = Infinity,\n\t x0 = -k1,\n\t x1 = k1,\n\t y0 = x0,\n\t y1 = x1,\n\t duration = 250,\n\t gestures = [],\n\t listeners = dispatch(\"start\", \"zoom\", \"end\"),\n\t touchstarting,\n\t touchending,\n\t touchDelay = 500,\n\t wheelDelay = 150;\n\t\n\t function zoom(selection) {\n\t selection\n\t .on(\"wheel.zoom\", wheeled)\n\t .on(\"mousedown.zoom\", mousedowned)\n\t .on(\"dblclick.zoom\", dblclicked)\n\t .on(\"touchstart.zoom\", touchstarted)\n\t .on(\"touchmove.zoom\", touchmoved)\n\t .on(\"touchend.zoom touchcancel.zoom\", touchended)\n\t .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n\t .property(\"__zoom\", defaultTransform);\n\t }\n\t\n\t zoom.transform = function(collection, transform) {\n\t var selection = collection.selection ? collection.selection() : collection;\n\t selection.property(\"__zoom\", defaultTransform);\n\t if (collection !== selection) {\n\t schedule(collection, transform);\n\t } else {\n\t selection.interrupt().each(function() {\n\t gesture(this, arguments)\n\t .start()\n\t .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n\t .end();\n\t });\n\t }\n\t };\n\t\n\t zoom.scaleBy = function(selection, k) {\n\t zoom.scaleTo(selection, function() {\n\t var k0 = this.__zoom.k,\n\t k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n\t return k0 * k1;\n\t });\n\t };\n\t\n\t zoom.scaleTo = function(selection, k) {\n\t zoom.transform(selection, function() {\n\t var e = extent.apply(this, arguments),\n\t t0 = this.__zoom,\n\t p0 = centroid(e),\n\t p1 = t0.invert(p0),\n\t k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n\t return constrain(translate(scale(t0, k1), p0, p1), e);\n\t });\n\t };\n\t\n\t zoom.translateBy = function(selection, x, y) {\n\t zoom.transform(selection, function() {\n\t return constrain(this.__zoom.translate(\n\t typeof x === \"function\" ? x.apply(this, arguments) : x,\n\t typeof y === \"function\" ? y.apply(this, arguments) : y\n\t ), extent.apply(this, arguments));\n\t });\n\t };\n\t\n\t function scale(transform, k) {\n\t k = Math.max(k0, Math.min(k1, k));\n\t return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n\t }\n\t\n\t function translate(transform, p0, p1) {\n\t var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n\t return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n\t }\n\t\n\t function constrain(transform, extent) {\n\t var dx = Math.min(0, transform.invertX(extent[0][0]) - x0) || Math.max(0, transform.invertX(extent[1][0]) - x1),\n\t dy = Math.min(0, transform.invertY(extent[0][1]) - y0) || Math.max(0, transform.invertY(extent[1][1]) - y1);\n\t return dx || dy ? transform.translate(dx, dy) : transform;\n\t }\n\t\n\t function centroid(extent) {\n\t return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n\t }\n\t\n\t function schedule(transition, transform, center) {\n\t transition\n\t .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n\t .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n\t .tween(\"zoom\", function() {\n\t var that = this,\n\t args = arguments,\n\t g = gesture(that, args),\n\t e = extent.apply(that, args),\n\t p = center || centroid(e),\n\t w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n\t a = that.__zoom,\n\t b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n\t i = interpolateZoom(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n\t return function(t) {\n\t if (t === 1) t = b; // Avoid rounding error on end.\n\t else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n\t g.zoom(null, t);\n\t };\n\t });\n\t }\n\t\n\t function gesture(that, args) {\n\t for (var i = 0, n = gestures.length, g; i < n; ++i) {\n\t if ((g = gestures[i]).that === that) {\n\t return g;\n\t }\n\t }\n\t return new Gesture(that, args);\n\t }\n\t\n\t function Gesture(that, args) {\n\t this.that = that;\n\t this.args = args;\n\t this.index = -1;\n\t this.active = 0;\n\t this.extent = extent.apply(that, args);\n\t }\n\t\n\t Gesture.prototype = {\n\t start: function() {\n\t if (++this.active === 1) {\n\t this.index = gestures.push(this) - 1;\n\t this.emit(\"start\");\n\t }\n\t return this;\n\t },\n\t zoom: function(key, transform) {\n\t if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n\t if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n\t if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n\t this.that.__zoom = transform;\n\t this.emit(\"zoom\");\n\t return this;\n\t },\n\t end: function() {\n\t if (--this.active === 0) {\n\t gestures.splice(this.index, 1);\n\t this.index = -1;\n\t this.emit(\"end\");\n\t }\n\t return this;\n\t },\n\t emit: function(type) {\n\t customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n\t }\n\t };\n\t\n\t function wheeled() {\n\t if (!filter.apply(this, arguments)) return;\n\t var g = gesture(this, arguments),\n\t t = this.__zoom,\n\t k = Math.max(k0, Math.min(k1, t.k * Math.pow(2, -exports.event.deltaY * (exports.event.deltaMode ? 120 : 1) / 500))),\n\t p = mouse(this);\n\t\n\t // If the mouse is in the same location as before, reuse it.\n\t // If there were recent wheel events, reset the wheel idle timeout.\n\t if (g.wheel) {\n\t if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n\t g.mouse[1] = t.invert(g.mouse[0] = p);\n\t }\n\t clearTimeout(g.wheel);\n\t }\n\t\n\t // If this wheel event won’t trigger a transform change, ignore it.\n\t else if (t.k === k) return;\n\t\n\t // Otherwise, capture the mouse point and location at the start.\n\t else {\n\t g.mouse = [p, t.invert(p)];\n\t interrupt(this);\n\t g.start();\n\t }\n\t\n\t noevent$1();\n\t g.wheel = setTimeout(wheelidled, wheelDelay);\n\t g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent));\n\t\n\t function wheelidled() {\n\t g.wheel = null;\n\t g.end();\n\t }\n\t }\n\t\n\t function mousedowned() {\n\t if (touchending || !filter.apply(this, arguments)) return;\n\t var g = gesture(this, arguments),\n\t v = select(exports.event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n\t p = mouse(this);\n\t\n\t dragDisable(exports.event.view);\n\t nopropagation$1();\n\t g.mouse = [p, this.__zoom.invert(p)];\n\t interrupt(this);\n\t g.start();\n\t\n\t function mousemoved() {\n\t noevent$1();\n\t g.moved = true;\n\t g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent));\n\t }\n\t\n\t function mouseupped() {\n\t v.on(\"mousemove.zoom mouseup.zoom\", null);\n\t dragEnable(exports.event.view, g.moved);\n\t noevent$1();\n\t g.end();\n\t }\n\t }\n\t\n\t function dblclicked() {\n\t if (!filter.apply(this, arguments)) return;\n\t var t0 = this.__zoom,\n\t p0 = mouse(this),\n\t p1 = t0.invert(p0),\n\t k1 = t0.k * (exports.event.shiftKey ? 0.5 : 2),\n\t t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments));\n\t\n\t noevent$1();\n\t if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n\t else select(this).call(zoom.transform, t1);\n\t }\n\t\n\t function touchstarted() {\n\t if (!filter.apply(this, arguments)) return;\n\t var g = gesture(this, arguments),\n\t touches = exports.event.changedTouches,\n\t n = touches.length, i, t, p;\n\t\n\t nopropagation$1();\n\t for (i = 0; i < n; ++i) {\n\t t = touches[i], p = touch(this, touches, t.identifier);\n\t p = [p, this.__zoom.invert(p), t.identifier];\n\t if (!g.touch0) g.touch0 = p;\n\t else if (!g.touch1) g.touch1 = p;\n\t }\n\t if (touchstarting) {\n\t touchstarting = clearTimeout(touchstarting);\n\t if (!g.touch1) return g.end(), dblclicked.apply(this, arguments);\n\t }\n\t if (exports.event.touches.length === n) {\n\t touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n\t interrupt(this);\n\t g.start();\n\t }\n\t }\n\t\n\t function touchmoved() {\n\t var g = gesture(this, arguments),\n\t touches = exports.event.changedTouches,\n\t n = touches.length, i, t, p, l;\n\t\n\t noevent$1();\n\t if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\t for (i = 0; i < n; ++i) {\n\t t = touches[i], p = touch(this, touches, t.identifier);\n\t if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n\t else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n\t }\n\t t = g.that.__zoom;\n\t if (g.touch1) {\n\t var p0 = g.touch0[0], l0 = g.touch0[1],\n\t p1 = g.touch1[0], l1 = g.touch1[1],\n\t dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n\t dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n\t t = scale(t, Math.sqrt(dp / dl));\n\t p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n\t l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n\t }\n\t else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n\t else return;\n\t g.zoom(\"touch\", constrain(translate(t, p, l), g.extent));\n\t }\n\t\n\t function touchended() {\n\t var g = gesture(this, arguments),\n\t touches = exports.event.changedTouches,\n\t n = touches.length, i, t;\n\t\n\t nopropagation$1();\n\t if (touchending) clearTimeout(touchending);\n\t touchending = setTimeout(function() { touchending = null; }, touchDelay);\n\t for (i = 0; i < n; ++i) {\n\t t = touches[i];\n\t if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n\t else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n\t }\n\t if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n\t if (!g.touch0) g.end();\n\t }\n\t\n\t zoom.filter = function(_) {\n\t return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$9(!!_), zoom) : filter;\n\t };\n\t\n\t zoom.extent = function(_) {\n\t return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant$9([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n\t };\n\t\n\t zoom.scaleExtent = function(_) {\n\t return arguments.length ? (k0 = +_[0], k1 = +_[1], zoom) : [k0, k1];\n\t };\n\t\n\t zoom.translateExtent = function(_) {\n\t return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], zoom) : [[x0, y0], [x1, y1]];\n\t };\n\t\n\t zoom.duration = function(_) {\n\t return arguments.length ? (duration = +_, zoom) : duration;\n\t };\n\t\n\t zoom.on = function() {\n\t var value = listeners.on.apply(listeners, arguments);\n\t return value === listeners ? zoom : value;\n\t };\n\t\n\t return zoom;\n\t }\n\t\n\t function constant$10(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function BrushEvent(target, type, selection) {\n\t this.target = target;\n\t this.type = type;\n\t this.selection = selection;\n\t }\n\t\n\t function nopropagation$2() {\n\t exports.event.stopImmediatePropagation();\n\t }\n\t\n\t function noevent$2() {\n\t exports.event.preventDefault();\n\t exports.event.stopImmediatePropagation();\n\t }\n\t\n\t var MODE_DRAG = {name: \"drag\"};\n\t var MODE_SPACE = {name: \"space\"};\n\t var MODE_HANDLE = {name: \"handle\"};\n\t var MODE_CENTER = {name: \"center\"};\n\t var X = {\n\t name: \"x\",\n\t handles: [\"e\", \"w\"].map(type$1),\n\t input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; },\n\t output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n\t };\n\t\n\t var Y = {\n\t name: \"y\",\n\t handles: [\"n\", \"s\"].map(type$1),\n\t input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; },\n\t output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n\t };\n\t\n\t var XY = {\n\t name: \"xy\",\n\t handles: [\"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"].map(type$1),\n\t input: function(xy) { return xy; },\n\t output: function(xy) { return xy; }\n\t };\n\t\n\t var cursors = {\n\t overlay: \"crosshair\",\n\t selection: \"move\",\n\t n: \"ns-resize\",\n\t e: \"ew-resize\",\n\t s: \"ns-resize\",\n\t w: \"ew-resize\",\n\t nw: \"nwse-resize\",\n\t ne: \"nesw-resize\",\n\t se: \"nwse-resize\",\n\t sw: \"nesw-resize\"\n\t };\n\t\n\t var flipX = {\n\t e: \"w\",\n\t w: \"e\",\n\t nw: \"ne\",\n\t ne: \"nw\",\n\t se: \"sw\",\n\t sw: \"se\"\n\t };\n\t\n\t var flipY = {\n\t n: \"s\",\n\t s: \"n\",\n\t nw: \"sw\",\n\t ne: \"se\",\n\t se: \"ne\",\n\t sw: \"nw\"\n\t };\n\t\n\t var signsX = {\n\t overlay: +1,\n\t selection: +1,\n\t n: null,\n\t e: +1,\n\t s: null,\n\t w: -1,\n\t nw: -1,\n\t ne: +1,\n\t se: +1,\n\t sw: -1\n\t };\n\t\n\t var signsY = {\n\t overlay: +1,\n\t selection: +1,\n\t n: -1,\n\t e: null,\n\t s: +1,\n\t w: null,\n\t nw: -1,\n\t ne: -1,\n\t se: +1,\n\t sw: +1\n\t };\n\t\n\t function type$1(t) {\n\t return {type: t};\n\t }\n\t\n\t // Ignore right-click, since that should open the context menu.\n\t function defaultFilter$2() {\n\t return !exports.event.button;\n\t }\n\t\n\t function defaultExtent$1() {\n\t var svg = this.ownerSVGElement || this;\n\t return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n\t }\n\t\n\t // Like d3.local, but with the name “__brush” rather than auto-generated.\n\t function local$1(node) {\n\t while (!node.__brush) if (!(node = node.parentNode)) return;\n\t return node.__brush;\n\t }\n\t\n\t function empty$1(extent) {\n\t return extent[0][0] === extent[1][0]\n\t || extent[0][1] === extent[1][1];\n\t }\n\t\n\t function brushSelection(node) {\n\t var state = node.__brush;\n\t return state ? state.dim.output(state.selection) : null;\n\t }\n\t\n\t function brushX() {\n\t return brush$1(X);\n\t }\n\t\n\t function brushY() {\n\t return brush$1(Y);\n\t }\n\t\n\t function brush() {\n\t return brush$1(XY);\n\t }\n\t\n\t function brush$1(dim) {\n\t var extent = defaultExtent$1,\n\t filter = defaultFilter$2,\n\t listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n\t handleSize = 6,\n\t touchending;\n\t\n\t function brush(group) {\n\t var overlay = group\n\t .property(\"__brush\", initialize)\n\t .selectAll(\".overlay\")\n\t .data([type$1(\"overlay\")]);\n\t\n\t overlay.enter().append(\"rect\")\n\t .attr(\"class\", \"overlay\")\n\t .attr(\"pointer-events\", \"all\")\n\t .attr(\"cursor\", cursors.overlay)\n\t .merge(overlay)\n\t .each(function() {\n\t var extent = local$1(this).extent;\n\t select(this)\n\t .attr(\"x\", extent[0][0])\n\t .attr(\"y\", extent[0][1])\n\t .attr(\"width\", extent[1][0] - extent[0][0])\n\t .attr(\"height\", extent[1][1] - extent[0][1]);\n\t });\n\t\n\t group.selectAll(\".selection\")\n\t .data([type$1(\"selection\")])\n\t .enter().append(\"rect\")\n\t .attr(\"class\", \"selection\")\n\t .attr(\"cursor\", cursors.selection)\n\t .attr(\"fill\", \"#777\")\n\t .attr(\"fill-opacity\", 0.3)\n\t .attr(\"stroke\", \"#fff\")\n\t .attr(\"shape-rendering\", \"crispEdges\");\n\t\n\t var handle = group.selectAll(\".handle\")\n\t .data(dim.handles, function(d) { return d.type; });\n\t\n\t handle.exit().remove();\n\t\n\t handle.enter().append(\"rect\")\n\t .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n\t .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\t\n\t group\n\t .each(redraw)\n\t .attr(\"fill\", \"none\")\n\t .attr(\"pointer-events\", \"all\")\n\t .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n\t .on(\"mousedown.brush touchstart.brush\", started);\n\t }\n\t\n\t brush.move = function(group, selection) {\n\t if (group.selection) {\n\t group\n\t .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n\t .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n\t .tween(\"brush\", function() {\n\t var that = this,\n\t state = that.__brush,\n\t emit = emitter(that, arguments),\n\t selection0 = state.selection,\n\t selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n\t i = interpolate(selection0, selection1);\n\t\n\t function tween(t) {\n\t state.selection = t === 1 && empty$1(selection1) ? null : i(t);\n\t redraw.call(that);\n\t emit.brush();\n\t }\n\t\n\t return selection0 && selection1 ? tween : tween(1);\n\t });\n\t } else {\n\t group\n\t .each(function() {\n\t var that = this,\n\t args = arguments,\n\t state = that.__brush,\n\t selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n\t emit = emitter(that, args).beforestart();\n\t\n\t interrupt(that);\n\t state.selection = selection1 == null || empty$1(selection1) ? null : selection1;\n\t redraw.call(that);\n\t emit.start().brush().end();\n\t });\n\t }\n\t };\n\t\n\t function redraw() {\n\t var group = select(this),\n\t selection = local$1(this).selection;\n\t\n\t if (selection) {\n\t group.selectAll(\".selection\")\n\t .style(\"display\", null)\n\t .attr(\"x\", selection[0][0])\n\t .attr(\"y\", selection[0][1])\n\t .attr(\"width\", selection[1][0] - selection[0][0])\n\t .attr(\"height\", selection[1][1] - selection[0][1]);\n\t\n\t group.selectAll(\".handle\")\n\t .style(\"display\", null)\n\t .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n\t .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n\t .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n\t .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n\t }\n\t\n\t else {\n\t group.selectAll(\".selection,.handle\")\n\t .style(\"display\", \"none\")\n\t .attr(\"x\", null)\n\t .attr(\"y\", null)\n\t .attr(\"width\", null)\n\t .attr(\"height\", null);\n\t }\n\t }\n\t\n\t function emitter(that, args) {\n\t return that.__brush.emitter || new Emitter(that, args);\n\t }\n\t\n\t function Emitter(that, args) {\n\t this.that = that;\n\t this.args = args;\n\t this.state = that.__brush;\n\t this.active = 0;\n\t }\n\t\n\t Emitter.prototype = {\n\t beforestart: function() {\n\t if (++this.active === 1) this.state.emitter = this, this.starting = true;\n\t return this;\n\t },\n\t start: function() {\n\t if (this.starting) this.starting = false, this.emit(\"start\");\n\t return this;\n\t },\n\t brush: function() {\n\t this.emit(\"brush\");\n\t return this;\n\t },\n\t end: function() {\n\t if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n\t return this;\n\t },\n\t emit: function(type) {\n\t customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n\t }\n\t };\n\t\n\t function started() {\n\t if (exports.event.touches) { if (exports.event.changedTouches.length < exports.event.touches.length) return noevent$2(); }\n\t else if (touchending) return;\n\t if (!filter.apply(this, arguments)) return;\n\t\n\t var that = this,\n\t type = exports.event.target.__data__.type,\n\t mode = (exports.event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (exports.event.altKey ? MODE_CENTER : MODE_HANDLE),\n\t signX = dim === Y ? null : signsX[type],\n\t signY = dim === X ? null : signsY[type],\n\t state = local$1(that),\n\t extent = state.extent,\n\t selection = state.selection,\n\t W = extent[0][0], w0, w1,\n\t N = extent[0][1], n0, n1,\n\t E = extent[1][0], e0, e1,\n\t S = extent[1][1], s0, s1,\n\t dx,\n\t dy,\n\t moving,\n\t shifting = signX && signY && exports.event.shiftKey,\n\t lockX,\n\t lockY,\n\t point0 = mouse(that),\n\t point = point0,\n\t emit = emitter(that, arguments).beforestart();\n\t\n\t if (type === \"overlay\") {\n\t state.selection = selection = [\n\t [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n\t [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n\t ];\n\t } else {\n\t w0 = selection[0][0];\n\t n0 = selection[0][1];\n\t e0 = selection[1][0];\n\t s0 = selection[1][1];\n\t }\n\t\n\t w1 = w0;\n\t n1 = n0;\n\t e1 = e0;\n\t s1 = s0;\n\t\n\t var group = select(that)\n\t .attr(\"pointer-events\", \"none\");\n\t\n\t var overlay = group.selectAll(\".overlay\")\n\t .attr(\"cursor\", cursors[type]);\n\t\n\t if (exports.event.touches) {\n\t group\n\t .on(\"touchmove.brush\", moved, true)\n\t .on(\"touchend.brush touchcancel.brush\", ended, true);\n\t } else {\n\t var view = select(exports.event.view)\n\t .on(\"keydown.brush\", keydowned, true)\n\t .on(\"keyup.brush\", keyupped, true)\n\t .on(\"mousemove.brush\", moved, true)\n\t .on(\"mouseup.brush\", ended, true);\n\t\n\t dragDisable(exports.event.view);\n\t }\n\t\n\t nopropagation$2();\n\t interrupt(that);\n\t redraw.call(that);\n\t emit.start();\n\t\n\t function moved() {\n\t var point1 = mouse(that);\n\t if (shifting && !lockX && !lockY) {\n\t if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n\t else lockX = true;\n\t }\n\t point = point1;\n\t moving = true;\n\t noevent$2();\n\t move();\n\t }\n\t\n\t function move() {\n\t var t;\n\t\n\t dx = point[0] - point0[0];\n\t dy = point[1] - point0[1];\n\t\n\t switch (mode) {\n\t case MODE_SPACE:\n\t case MODE_DRAG: {\n\t if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n\t if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n\t break;\n\t }\n\t case MODE_HANDLE: {\n\t if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n\t else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n\t if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n\t else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n\t break;\n\t }\n\t case MODE_CENTER: {\n\t if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n\t if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n\t break;\n\t }\n\t }\n\t\n\t if (e1 < w1) {\n\t signX *= -1;\n\t t = w0, w0 = e0, e0 = t;\n\t t = w1, w1 = e1, e1 = t;\n\t if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n\t }\n\t\n\t if (s1 < n1) {\n\t signY *= -1;\n\t t = n0, n0 = s0, s0 = t;\n\t t = n1, n1 = s1, s1 = t;\n\t if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n\t }\n\t\n\t selection = state.selection; // May be set by brush.move!\n\t\n\t if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n\t if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\t\n\t if (selection[0][0] !== w1\n\t || selection[0][1] !== n1\n\t || selection[1][0] !== e1\n\t || selection[1][1] !== s1) {\n\t state.selection = [[w1, n1], [e1, s1]];\n\t redraw.call(that);\n\t emit.brush();\n\t }\n\t }\n\t\n\t function ended() {\n\t nopropagation$2();\n\t if (exports.event.touches) {\n\t if (exports.event.touches.length) return;\n\t if (touchending) clearTimeout(touchending);\n\t touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n\t group.on(\"touchmove.brush touchend.brush touchcancel.brush\", null);\n\t } else {\n\t dragEnable(exports.event.view, moving);\n\t view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n\t }\n\t group.attr(\"pointer-events\", \"all\");\n\t overlay.attr(\"cursor\", cursors.overlay);\n\t if (empty$1(selection)) state.selection = null, redraw.call(that);\n\t emit.end();\n\t }\n\t\n\t function keydowned() {\n\t switch (exports.event.keyCode) {\n\t case 16: { // SHIFT\n\t shifting = signX && signY;\n\t break;\n\t }\n\t case 18: { // ALT\n\t if (mode === MODE_HANDLE) {\n\t if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n\t if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n\t mode = MODE_CENTER;\n\t move();\n\t }\n\t break;\n\t }\n\t case 32: { // SPACE; takes priority over ALT\n\t if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n\t if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n\t if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n\t mode = MODE_SPACE;\n\t overlay.attr(\"cursor\", cursors.selection);\n\t move();\n\t }\n\t break;\n\t }\n\t default: return;\n\t }\n\t noevent$2();\n\t }\n\t\n\t function keyupped() {\n\t switch (exports.event.keyCode) {\n\t case 16: { // SHIFT\n\t if (shifting) {\n\t lockX = lockY = shifting = false;\n\t move();\n\t }\n\t break;\n\t }\n\t case 18: { // ALT\n\t if (mode === MODE_CENTER) {\n\t if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n\t if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n\t mode = MODE_HANDLE;\n\t move();\n\t }\n\t break;\n\t }\n\t case 32: { // SPACE\n\t if (mode === MODE_SPACE) {\n\t if (exports.event.altKey) {\n\t if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n\t if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n\t mode = MODE_CENTER;\n\t } else {\n\t if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n\t if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n\t mode = MODE_HANDLE;\n\t }\n\t overlay.attr(\"cursor\", cursors[type]);\n\t move();\n\t }\n\t break;\n\t }\n\t default: return;\n\t }\n\t noevent$2();\n\t }\n\t }\n\t\n\t function initialize() {\n\t var state = this.__brush || {selection: null};\n\t state.extent = extent.apply(this, arguments);\n\t state.dim = dim;\n\t return state;\n\t }\n\t\n\t brush.extent = function(_) {\n\t return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant$10([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;\n\t };\n\t\n\t brush.filter = function(_) {\n\t return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$10(!!_), brush) : filter;\n\t };\n\t\n\t brush.handleSize = function(_) {\n\t return arguments.length ? (handleSize = +_, brush) : handleSize;\n\t };\n\t\n\t brush.on = function() {\n\t var value = listeners.on.apply(listeners, arguments);\n\t return value === listeners ? brush : value;\n\t };\n\t\n\t return brush;\n\t }\n\t\n\t var cos = Math.cos;\n\t var sin = Math.sin;\n\t var pi$3 = Math.PI;\n\t var halfPi$2 = pi$3 / 2;\n\t var tau$3 = pi$3 * 2;\n\t var max$1 = Math.max;\n\t\n\t function compareValue(compare) {\n\t return function(a, b) {\n\t return compare(\n\t a.source.value + a.target.value,\n\t b.source.value + b.target.value\n\t );\n\t };\n\t }\n\t\n\t function chord() {\n\t var padAngle = 0,\n\t sortGroups = null,\n\t sortSubgroups = null,\n\t sortChords = null;\n\t\n\t function chord(matrix) {\n\t var n = matrix.length,\n\t groupSums = [],\n\t groupIndex = range(n),\n\t subgroupIndex = [],\n\t chords = [],\n\t groups = chords.groups = new Array(n),\n\t subgroups = new Array(n * n),\n\t k,\n\t x,\n\t x0,\n\t dx,\n\t i,\n\t j;\n\t\n\t // Compute the sum.\n\t k = 0, i = -1; while (++i < n) {\n\t x = 0, j = -1; while (++j < n) {\n\t x += matrix[i][j];\n\t }\n\t groupSums.push(x);\n\t subgroupIndex.push(range(n));\n\t k += x;\n\t }\n\t\n\t // Sort groups…\n\t if (sortGroups) groupIndex.sort(function(a, b) {\n\t return sortGroups(groupSums[a], groupSums[b]);\n\t });\n\t\n\t // Sort subgroups…\n\t if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n\t d.sort(function(a, b) {\n\t return sortSubgroups(matrix[i][a], matrix[i][b]);\n\t });\n\t });\n\t\n\t // Convert the sum to scaling factor for [0, 2pi].\n\t // TODO Allow start and end angle to be specified?\n\t // TODO Allow padding to be specified as percentage?\n\t k = max$1(0, tau$3 - padAngle * n) / k;\n\t dx = k ? padAngle : tau$3 / n;\n\t\n\t // Compute the start and end angle for each group and subgroup.\n\t // Note: Opera has a bug reordering object literal properties!\n\t x = 0, i = -1; while (++i < n) {\n\t x0 = x, j = -1; while (++j < n) {\n\t var di = groupIndex[i],\n\t dj = subgroupIndex[di][j],\n\t v = matrix[di][dj],\n\t a0 = x,\n\t a1 = x += v * k;\n\t subgroups[dj * n + di] = {\n\t index: di,\n\t subindex: dj,\n\t startAngle: a0,\n\t endAngle: a1,\n\t value: v\n\t };\n\t }\n\t groups[di] = {\n\t index: di,\n\t startAngle: x0,\n\t endAngle: x,\n\t value: groupSums[di]\n\t };\n\t x += dx;\n\t }\n\t\n\t // Generate chords for each (non-empty) subgroup-subgroup link.\n\t i = -1; while (++i < n) {\n\t j = i - 1; while (++j < n) {\n\t var source = subgroups[j * n + i],\n\t target = subgroups[i * n + j];\n\t if (source.value || target.value) {\n\t chords.push(source.value < target.value\n\t ? {source: target, target: source}\n\t : {source: source, target: target});\n\t }\n\t }\n\t }\n\t\n\t return sortChords ? chords.sort(sortChords) : chords;\n\t }\n\t\n\t chord.padAngle = function(_) {\n\t return arguments.length ? (padAngle = max$1(0, _), chord) : padAngle;\n\t };\n\t\n\t chord.sortGroups = function(_) {\n\t return arguments.length ? (sortGroups = _, chord) : sortGroups;\n\t };\n\t\n\t chord.sortSubgroups = function(_) {\n\t return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n\t };\n\t\n\t chord.sortChords = function(_) {\n\t return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n\t };\n\t\n\t return chord;\n\t }\n\t\n\t var slice$5 = Array.prototype.slice;\n\t\n\t function constant$11(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function defaultSource(d) {\n\t return d.source;\n\t }\n\t\n\t function defaultTarget(d) {\n\t return d.target;\n\t }\n\t\n\t function defaultRadius$1(d) {\n\t return d.radius;\n\t }\n\t\n\t function defaultStartAngle(d) {\n\t return d.startAngle;\n\t }\n\t\n\t function defaultEndAngle(d) {\n\t return d.endAngle;\n\t }\n\t\n\t function ribbon() {\n\t var source = defaultSource,\n\t target = defaultTarget,\n\t radius = defaultRadius$1,\n\t startAngle = defaultStartAngle,\n\t endAngle = defaultEndAngle,\n\t context = null;\n\t\n\t function ribbon() {\n\t var buffer,\n\t argv = slice$5.call(arguments),\n\t s = source.apply(this, argv),\n\t t = target.apply(this, argv),\n\t sr = +radius.apply(this, (argv[0] = s, argv)),\n\t sa0 = startAngle.apply(this, argv) - halfPi$2,\n\t sa1 = endAngle.apply(this, argv) - halfPi$2,\n\t sx0 = sr * cos(sa0),\n\t sy0 = sr * sin(sa0),\n\t tr = +radius.apply(this, (argv[0] = t, argv)),\n\t ta0 = startAngle.apply(this, argv) - halfPi$2,\n\t ta1 = endAngle.apply(this, argv) - halfPi$2;\n\t\n\t if (!context) context = buffer = path();\n\t\n\t context.moveTo(sx0, sy0);\n\t context.arc(0, 0, sr, sa0, sa1);\n\t if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n\t context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n\t context.arc(0, 0, tr, ta0, ta1);\n\t }\n\t context.quadraticCurveTo(0, 0, sx0, sy0);\n\t context.closePath();\n\t\n\t if (buffer) return context = null, buffer + \"\" || null;\n\t }\n\t\n\t ribbon.radius = function(_) {\n\t return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$11(+_), ribbon) : radius;\n\t };\n\t\n\t ribbon.startAngle = function(_) {\n\t return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant$11(+_), ribbon) : startAngle;\n\t };\n\t\n\t ribbon.endAngle = function(_) {\n\t return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant$11(+_), ribbon) : endAngle;\n\t };\n\t\n\t ribbon.source = function(_) {\n\t return arguments.length ? (source = _, ribbon) : source;\n\t };\n\t\n\t ribbon.target = function(_) {\n\t return arguments.length ? (target = _, ribbon) : target;\n\t };\n\t\n\t ribbon.context = function(_) {\n\t return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n\t };\n\t\n\t return ribbon;\n\t }\n\t\n\t // Adds floating point numbers with twice the normal precision.\n\t // Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n\t // Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n\t // 305–363 (1997).\n\t // Code adapted from GeographicLib by Charles F. F. Karney,\n\t // http://geographiclib.sourceforge.net/\n\t\n\t function adder() {\n\t return new Adder;\n\t }\n\t\n\t function Adder() {\n\t this.reset();\n\t }\n\t\n\t Adder.prototype = {\n\t constructor: Adder,\n\t reset: function() {\n\t this.s = // rounded value\n\t this.t = 0; // exact error\n\t },\n\t add: function(y) {\n\t add$1(temp, y, this.t);\n\t add$1(this, temp.s, this.s);\n\t if (this.s) this.t += temp.t;\n\t else this.s = temp.t;\n\t },\n\t valueOf: function() {\n\t return this.s;\n\t }\n\t };\n\t\n\t var temp = new Adder;\n\t\n\t function add$1(adder, a, b) {\n\t var x = adder.s = a + b,\n\t bv = x - a,\n\t av = x - bv;\n\t adder.t = (a - av) + (b - bv);\n\t }\n\t\n\t var epsilon$4 = 1e-6;\n\t var epsilon2$2 = 1e-12;\n\t var pi$4 = Math.PI;\n\t var halfPi$3 = pi$4 / 2;\n\t var quarterPi = pi$4 / 4;\n\t var tau$4 = pi$4 * 2;\n\t\n\t var degrees$1 = 180 / pi$4;\n\t var radians = pi$4 / 180;\n\t\n\t var abs = Math.abs;\n\t var atan = Math.atan;\n\t var atan2 = Math.atan2;\n\t var cos$1 = Math.cos;\n\t var ceil = Math.ceil;\n\t var exp = Math.exp;\n\t var log$1 = Math.log;\n\t var pow$1 = Math.pow;\n\t var sin$1 = Math.sin;\n\t var sign$1 = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\n\t var sqrt$1 = Math.sqrt;\n\t var tan = Math.tan;\n\t\n\t function acos(x) {\n\t return x > 1 ? 0 : x < -1 ? pi$4 : Math.acos(x);\n\t }\n\t\n\t function asin$1(x) {\n\t return x > 1 ? halfPi$3 : x < -1 ? -halfPi$3 : Math.asin(x);\n\t }\n\t\n\t function haversin(x) {\n\t return (x = sin$1(x / 2)) * x;\n\t }\n\t\n\t function noop$2() {}\n\t\n\t function streamGeometry(geometry, stream) {\n\t if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n\t streamGeometryType[geometry.type](geometry, stream);\n\t }\n\t }\n\t\n\t var streamObjectType = {\n\t Feature: function(feature, stream) {\n\t streamGeometry(feature.geometry, stream);\n\t },\n\t FeatureCollection: function(object, stream) {\n\t var features = object.features, i = -1, n = features.length;\n\t while (++i < n) streamGeometry(features[i].geometry, stream);\n\t }\n\t };\n\t\n\t var streamGeometryType = {\n\t Sphere: function(object, stream) {\n\t stream.sphere();\n\t },\n\t Point: function(object, stream) {\n\t object = object.coordinates;\n\t stream.point(object[0], object[1], object[2]);\n\t },\n\t MultiPoint: function(object, stream) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n\t },\n\t LineString: function(object, stream) {\n\t streamLine(object.coordinates, stream, 0);\n\t },\n\t MultiLineString: function(object, stream) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) streamLine(coordinates[i], stream, 0);\n\t },\n\t Polygon: function(object, stream) {\n\t streamPolygon(object.coordinates, stream);\n\t },\n\t MultiPolygon: function(object, stream) {\n\t var coordinates = object.coordinates, i = -1, n = coordinates.length;\n\t while (++i < n) streamPolygon(coordinates[i], stream);\n\t },\n\t GeometryCollection: function(object, stream) {\n\t var geometries = object.geometries, i = -1, n = geometries.length;\n\t while (++i < n) streamGeometry(geometries[i], stream);\n\t }\n\t };\n\t\n\t function streamLine(coordinates, stream, closed) {\n\t var i = -1, n = coordinates.length - closed, coordinate;\n\t stream.lineStart();\n\t while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n\t stream.lineEnd();\n\t }\n\t\n\t function streamPolygon(coordinates, stream) {\n\t var i = -1, n = coordinates.length;\n\t stream.polygonStart();\n\t while (++i < n) streamLine(coordinates[i], stream, 1);\n\t stream.polygonEnd();\n\t }\n\t\n\t function geoStream(object, stream) {\n\t if (object && streamObjectType.hasOwnProperty(object.type)) {\n\t streamObjectType[object.type](object, stream);\n\t } else {\n\t streamGeometry(object, stream);\n\t }\n\t }\n\t\n\t var areaRingSum = adder();\n\t\n\t var areaSum = adder();\n\t var lambda00;\n\t var phi00;\n\t var lambda0;\n\t var cosPhi0;\n\t var sinPhi0;\n\t var areaStream = {\n\t point: noop$2,\n\t lineStart: noop$2,\n\t lineEnd: noop$2,\n\t polygonStart: function() {\n\t areaRingSum.reset();\n\t areaStream.lineStart = areaRingStart;\n\t areaStream.lineEnd = areaRingEnd;\n\t },\n\t polygonEnd: function() {\n\t var areaRing = +areaRingSum;\n\t areaSum.add(areaRing < 0 ? tau$4 + areaRing : areaRing);\n\t this.lineStart = this.lineEnd = this.point = noop$2;\n\t },\n\t sphere: function() {\n\t areaSum.add(tau$4);\n\t }\n\t };\n\t\n\t function areaRingStart() {\n\t areaStream.point = areaPointFirst;\n\t }\n\t\n\t function areaRingEnd() {\n\t areaPoint(lambda00, phi00);\n\t }\n\t\n\t function areaPointFirst(lambda, phi) {\n\t areaStream.point = areaPoint;\n\t lambda00 = lambda, phi00 = phi;\n\t lambda *= radians, phi *= radians;\n\t lambda0 = lambda, cosPhi0 = cos$1(phi = phi / 2 + quarterPi), sinPhi0 = sin$1(phi);\n\t }\n\t\n\t function areaPoint(lambda, phi) {\n\t lambda *= radians, phi *= radians;\n\t phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\t\n\t // Spherical excess E for a spherical triangle with vertices: south pole,\n\t // previous point, current point. Uses a formula derived from Cagnoli’s\n\t // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n\t var dLambda = lambda - lambda0,\n\t sdLambda = dLambda >= 0 ? 1 : -1,\n\t adLambda = sdLambda * dLambda,\n\t cosPhi = cos$1(phi),\n\t sinPhi = sin$1(phi),\n\t k = sinPhi0 * sinPhi,\n\t u = cosPhi0 * cosPhi + k * cos$1(adLambda),\n\t v = k * sdLambda * sin$1(adLambda);\n\t areaRingSum.add(atan2(v, u));\n\t\n\t // Advance the previous points.\n\t lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n\t }\n\t\n\t function area$2(object) {\n\t areaSum.reset();\n\t geoStream(object, areaStream);\n\t return areaSum * 2;\n\t }\n\t\n\t function spherical(cartesian) {\n\t return [atan2(cartesian[1], cartesian[0]), asin$1(cartesian[2])];\n\t }\n\t\n\t function cartesian(spherical) {\n\t var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi);\n\t return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)];\n\t }\n\t\n\t function cartesianDot(a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t }\n\t\n\t function cartesianCross(a, b) {\n\t return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n\t }\n\t\n\t // TODO return a\n\t function cartesianAddInPlace(a, b) {\n\t a[0] += b[0], a[1] += b[1], a[2] += b[2];\n\t }\n\t\n\t function cartesianScale(vector, k) {\n\t return [vector[0] * k, vector[1] * k, vector[2] * k];\n\t }\n\t\n\t // TODO return d\n\t function cartesianNormalizeInPlace(d) {\n\t var l = sqrt$1(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n\t d[0] /= l, d[1] /= l, d[2] /= l;\n\t }\n\t\n\tvar lambda0$1;\n\t var phi0;\n\t var lambda1;\n\t var phi1;\n\t var lambda2;\n\tvar lambda00$1;\n\tvar phi00$1;\n\t var p0;\n\t var deltaSum = adder();\n\t var ranges;\n\tvar range$1;\n\t var boundsStream = {\n\t point: boundsPoint,\n\t lineStart: boundsLineStart,\n\t lineEnd: boundsLineEnd,\n\t polygonStart: function() {\n\t boundsStream.point = boundsRingPoint;\n\t boundsStream.lineStart = boundsRingStart;\n\t boundsStream.lineEnd = boundsRingEnd;\n\t deltaSum.reset();\n\t areaStream.polygonStart();\n\t },\n\t polygonEnd: function() {\n\t areaStream.polygonEnd();\n\t boundsStream.point = boundsPoint;\n\t boundsStream.lineStart = boundsLineStart;\n\t boundsStream.lineEnd = boundsLineEnd;\n\t if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n\t else if (deltaSum > epsilon$4) phi1 = 90;\n\t else if (deltaSum < -epsilon$4) phi0 = -90;\n\t range$1[0] = lambda0$1, range$1[1] = lambda1;\n\t }\n\t };\n\t\n\t function boundsPoint(lambda, phi) {\n\t ranges.push(range$1 = [lambda0$1 = lambda, lambda1 = lambda]);\n\t if (phi < phi0) phi0 = phi;\n\t if (phi > phi1) phi1 = phi;\n\t }\n\t\n\t function linePoint(lambda, phi) {\n\t var p = cartesian([lambda * radians, phi * radians]);\n\t if (p0) {\n\t var normal = cartesianCross(p0, p),\n\t equatorial = [normal[1], -normal[0], 0],\n\t inflection = cartesianCross(equatorial, normal);\n\t cartesianNormalizeInPlace(inflection);\n\t inflection = spherical(inflection);\n\t var delta = lambda - lambda2,\n\t sign = delta > 0 ? 1 : -1,\n\t lambdai = inflection[0] * degrees$1 * sign,\n\t phii,\n\t antimeridian = abs(delta) > 180;\n\t if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n\t phii = inflection[1] * degrees$1;\n\t if (phii > phi1) phi1 = phii;\n\t } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n\t phii = -inflection[1] * degrees$1;\n\t if (phii < phi0) phi0 = phii;\n\t } else {\n\t if (phi < phi0) phi0 = phi;\n\t if (phi > phi1) phi1 = phi;\n\t }\n\t if (antimeridian) {\n\t if (lambda < lambda2) {\n\t if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;\n\t } else {\n\t if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;\n\t }\n\t } else {\n\t if (lambda1 >= lambda0$1) {\n\t if (lambda < lambda0$1) lambda0$1 = lambda;\n\t if (lambda > lambda1) lambda1 = lambda;\n\t } else {\n\t if (lambda > lambda2) {\n\t if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;\n\t } else {\n\t if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;\n\t }\n\t }\n\t }\n\t } else {\n\t boundsPoint(lambda, phi);\n\t }\n\t p0 = p, lambda2 = lambda;\n\t }\n\t\n\t function boundsLineStart() {\n\t boundsStream.point = linePoint;\n\t }\n\t\n\t function boundsLineEnd() {\n\t range$1[0] = lambda0$1, range$1[1] = lambda1;\n\t boundsStream.point = boundsPoint;\n\t p0 = null;\n\t }\n\t\n\t function boundsRingPoint(lambda, phi) {\n\t if (p0) {\n\t var delta = lambda - lambda2;\n\t deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n\t } else {\n\t lambda00$1 = lambda, phi00$1 = phi;\n\t }\n\t areaStream.point(lambda, phi);\n\t linePoint(lambda, phi);\n\t }\n\t\n\t function boundsRingStart() {\n\t areaStream.lineStart();\n\t }\n\t\n\t function boundsRingEnd() {\n\t boundsRingPoint(lambda00$1, phi00$1);\n\t areaStream.lineEnd();\n\t if (abs(deltaSum) > epsilon$4) lambda0$1 = -(lambda1 = 180);\n\t range$1[0] = lambda0$1, range$1[1] = lambda1;\n\t p0 = null;\n\t }\n\t\n\t // Finds the left-right distance between two longitudes.\n\t // This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n\t // the distance between ±180° to be 360°.\n\t function angle(lambda0, lambda1) {\n\t return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n\t }\n\t\n\t function rangeCompare(a, b) {\n\t return a[0] - b[0];\n\t }\n\t\n\t function rangeContains(range, x) {\n\t return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n\t }\n\t\n\t function bounds(feature) {\n\t var i, n, a, b, merged, deltaMax, delta;\n\t\n\t phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity);\n\t ranges = [];\n\t geoStream(feature, boundsStream);\n\t\n\t // First, sort ranges by their minimum longitudes.\n\t if (n = ranges.length) {\n\t ranges.sort(rangeCompare);\n\t\n\t // Then, merge any ranges that overlap.\n\t for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n\t b = ranges[i];\n\t if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n\t if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n\t if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n\t } else {\n\t merged.push(a = b);\n\t }\n\t }\n\t\n\t // Finally, find the largest gap between the merged ranges.\n\t // The final bounding box will be the inverse of this gap.\n\t for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n\t b = merged[i];\n\t if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1];\n\t }\n\t }\n\t\n\t ranges = range$1 = null;\n\t\n\t return lambda0$1 === Infinity || phi0 === Infinity\n\t ? [[NaN, NaN], [NaN, NaN]]\n\t : [[lambda0$1, phi0], [lambda1, phi1]];\n\t }\n\t\n\t var W0;\n\t var W1;\n\t var X0;\n\t var Y0;\n\t var Z0;\n\t var X1;\n\t var Y1;\n\t var Z1;\n\t var X2;\n\t var Y2;\n\t var Z2;\n\tvar lambda00$2;\n\tvar phi00$2;\n\t var x0;\n\t var y0;\n\t var z0;\n\t // previous point\n\t\n\t var centroidStream = {\n\t sphere: noop$2,\n\t point: centroidPoint,\n\t lineStart: centroidLineStart,\n\t lineEnd: centroidLineEnd,\n\t polygonStart: function() {\n\t centroidStream.lineStart = centroidRingStart;\n\t centroidStream.lineEnd = centroidRingEnd;\n\t },\n\t polygonEnd: function() {\n\t centroidStream.lineStart = centroidLineStart;\n\t centroidStream.lineEnd = centroidLineEnd;\n\t }\n\t };\n\t\n\t // Arithmetic mean of Cartesian vectors.\n\t function centroidPoint(lambda, phi) {\n\t lambda *= radians, phi *= radians;\n\t var cosPhi = cos$1(phi);\n\t centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi));\n\t }\n\t\n\t function centroidPointCartesian(x, y, z) {\n\t ++W0;\n\t X0 += (x - X0) / W0;\n\t Y0 += (y - Y0) / W0;\n\t Z0 += (z - Z0) / W0;\n\t }\n\t\n\t function centroidLineStart() {\n\t centroidStream.point = centroidLinePointFirst;\n\t }\n\t\n\t function centroidLinePointFirst(lambda, phi) {\n\t lambda *= radians, phi *= radians;\n\t var cosPhi = cos$1(phi);\n\t x0 = cosPhi * cos$1(lambda);\n\t y0 = cosPhi * sin$1(lambda);\n\t z0 = sin$1(phi);\n\t centroidStream.point = centroidLinePoint;\n\t centroidPointCartesian(x0, y0, z0);\n\t }\n\t\n\t function centroidLinePoint(lambda, phi) {\n\t lambda *= radians, phi *= radians;\n\t var cosPhi = cos$1(phi),\n\t x = cosPhi * cos$1(lambda),\n\t y = cosPhi * sin$1(lambda),\n\t z = sin$1(phi),\n\t w = atan2(sqrt$1((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n\t W1 += w;\n\t X1 += w * (x0 + (x0 = x));\n\t Y1 += w * (y0 + (y0 = y));\n\t Z1 += w * (z0 + (z0 = z));\n\t centroidPointCartesian(x0, y0, z0);\n\t }\n\t\n\t function centroidLineEnd() {\n\t centroidStream.point = centroidPoint;\n\t }\n\t\n\t // See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n\t // J. Applied Mechanics 42, 239 (1975).\n\t function centroidRingStart() {\n\t centroidStream.point = centroidRingPointFirst;\n\t }\n\t\n\t function centroidRingEnd() {\n\t centroidRingPoint(lambda00$2, phi00$2);\n\t centroidStream.point = centroidPoint;\n\t }\n\t\n\t function centroidRingPointFirst(lambda, phi) {\n\t lambda00$2 = lambda, phi00$2 = phi;\n\t lambda *= radians, phi *= radians;\n\t centroidStream.point = centroidRingPoint;\n\t var cosPhi = cos$1(phi);\n\t x0 = cosPhi * cos$1(lambda);\n\t y0 = cosPhi * sin$1(lambda);\n\t z0 = sin$1(phi);\n\t centroidPointCartesian(x0, y0, z0);\n\t }\n\t\n\t function centroidRingPoint(lambda, phi) {\n\t lambda *= radians, phi *= radians;\n\t var cosPhi = cos$1(phi),\n\t x = cosPhi * cos$1(lambda),\n\t y = cosPhi * sin$1(lambda),\n\t z = sin$1(phi),\n\t cx = y0 * z - z0 * y,\n\t cy = z0 * x - x0 * z,\n\t cz = x0 * y - y0 * x,\n\t m = sqrt$1(cx * cx + cy * cy + cz * cz),\n\t u = x0 * x + y0 * y + z0 * z,\n\t v = m && -acos(u) / m, // area weight\n\t w = atan2(m, u); // line weight\n\t X2 += v * cx;\n\t Y2 += v * cy;\n\t Z2 += v * cz;\n\t W1 += w;\n\t X1 += w * (x0 + (x0 = x));\n\t Y1 += w * (y0 + (y0 = y));\n\t Z1 += w * (z0 + (z0 = z));\n\t centroidPointCartesian(x0, y0, z0);\n\t }\n\t\n\t function centroid$1(object) {\n\t W0 = W1 =\n\t X0 = Y0 = Z0 =\n\t X1 = Y1 = Z1 =\n\t X2 = Y2 = Z2 = 0;\n\t geoStream(object, centroidStream);\n\t\n\t var x = X2,\n\t y = Y2,\n\t z = Z2,\n\t m = x * x + y * y + z * z;\n\t\n\t // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n\t if (m < epsilon2$2) {\n\t x = X1, y = Y1, z = Z1;\n\t // If the feature has zero length, fall back to arithmetic mean of point vectors.\n\t if (W1 < epsilon$4) x = X0, y = Y0, z = Z0;\n\t m = x * x + y * y + z * z;\n\t // If the feature still has an undefined ccentroid, then return.\n\t if (m < epsilon2$2) return [NaN, NaN];\n\t }\n\t\n\t return [atan2(y, x) * degrees$1, asin$1(z / sqrt$1(m)) * degrees$1];\n\t }\n\t\n\t function constant$12(x) {\n\t return function() {\n\t return x;\n\t };\n\t }\n\t\n\t function compose(a, b) {\n\t\n\t function compose(x, y) {\n\t return x = a(x, y), b(x[0], x[1]);\n\t }\n\t\n\t if (a.invert && b.invert) compose.invert = function(x, y) {\n\t return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n\t };\n\t\n\t return compose;\n\t }\n\t\n\t function rotationIdentity(lambda, phi) {\n\t return [lambda > pi$4 ? lambda - tau$4 : lambda < -pi$4 ? lambda + tau$4 : lambda, phi];\n\t }\n\t\n\t rotationIdentity.invert = rotationIdentity;\n\t\n\t function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n\t return (deltaLambda %= tau$4) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n\t : rotationLambda(deltaLambda))\n\t : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n\t : rotationIdentity);\n\t }\n\t\n\t function forwardRotationLambda(deltaLambda) {\n\t return function(lambda, phi) {\n\t return lambda += deltaLambda, [lambda > pi$4 ? lambda - tau$4 : lambda < -pi$4 ? lambda + tau$4 : lambda, phi];\n\t };\n\t }\n\t\n\t function rotationLambda(deltaLambda) {\n\t var rotation = forwardRotationLambda(deltaLambda);\n\t rotation.invert = forwardRotationLambda(-deltaLambda);\n\t return rotation;\n\t }\n\t\n\t function rotationPhiGamma(deltaPhi, deltaGamma) {\n\t var cosDeltaPhi = cos$1(deltaPhi),\n\t sinDeltaPhi = sin$1(deltaPhi),\n\t cosDeltaGamma = cos$1(deltaGamma),\n\t sinDeltaGamma = sin$1(deltaGamma);\n\t\n\t function rotation(lambda, phi) {\n\t var cosPhi = cos$1(phi),\n\t x = cos$1(lambda) * cosPhi,\n\t y = sin$1(lambda) * cosPhi,\n\t z = sin$1(phi),\n\t k = z * cosDeltaPhi + x * sinDeltaPhi;\n\t return [\n\t atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n\t asin$1(k * cosDeltaGamma + y * sinDeltaGamma)\n\t ];\n\t }\n\t\n\t rotation.invert = function(lambda, phi) {\n\t var cosPhi = cos$1(phi),\n\t x = cos$1(lambda) * cosPhi,\n\t y = sin$1(lambda) * cosPhi,\n\t z = sin$1(phi),\n\t k = z * cosDeltaGamma - y * sinDeltaGamma;\n\t return [\n\t atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n\t asin$1(k * cosDeltaPhi - x * sinDeltaPhi)\n\t ];\n\t };\n\t\n\t return rotation;\n\t }\n\t\n\t function rotation(rotate) {\n\t rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\t\n\t function forward(coordinates) {\n\t coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n\t return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates;\n\t }\n\t\n\t forward.invert = function(coordinates) {\n\t coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n\t return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates;\n\t };\n\t\n\t return forward;\n\t }\n\t\n\t // Generates a circle centered at [0°, 0°], with a given radius and precision.\n\t function circleStream(stream, radius, delta, direction, t0, t1) {\n\t if (!delta) return;\n\t var cosRadius = cos$1(radius),\n\t sinRadius = sin$1(radius),\n\t step = direction * delta;\n\t if (t0 == null) {\n\t t0 = radius + direction * tau$4;\n\t t1 = radius - step / 2;\n\t } else {\n\t t0 = circleRadius(cosRadius, t0);\n\t t1 = circleRadius(cosRadius, t1);\n\t if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$4;\n\t }\n\t for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n\t point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]);\n\t stream.point(point[0], point[1]);\n\t }\n\t }\n\t\n\t // Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\n\t function circleRadius(cosRadius, point) {\n\t point = cartesian(point), point[0] -= cosRadius;\n\t cartesianNormalizeInPlace(point);\n\t var radius = acos(-point[1]);\n\t return ((-point[2] < 0 ? -radius : radius) + tau$4 - epsilon$4) % tau$4;\n\t }\n\t\n\t function circle$1() {\n\t var center = constant$12([0, 0]),\n\t radius = constant$12(90),\n\t precision = constant$12(6),\n\t ring,\n\t rotate,\n\t stream = {point: point};\n\t\n\t function point(x, y) {\n\t ring.push(x = rotate(x, y));\n\t x[0] *= degrees$1, x[1] *= degrees$1;\n\t }\n\t\n\t function circle() {\n\t var c = center.apply(this, arguments),\n\t r = radius.apply(this, arguments) * radians,\n\t p = precision.apply(this, arguments) * radians;\n\t ring = [];\n\t rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n\t circleStream(stream, r, p, 1);\n\t c = {type: \"Polygon\", coordinates: [ring]};\n\t ring = rotate = null;\n\t return c;\n\t }\n\t\n\t circle.center = function(_) {\n\t return arguments.length ? (center = typeof _ === \"function\" ? _ : constant$12([+_[0], +_[1]]), circle) : center;\n\t };\n\t\n\t circle.radius = function(_) {\n\t return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$12(+_), circle) : radius;\n\t };\n\t\n\t circle.precision = function(_) {\n\t return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant$12(+_), circle) : precision;\n\t };\n\t\n\t return circle;\n\t }\n\t\n\t function clipBuffer() {\n\t var lines = [],\n\t line;\n\t return {\n\t point: function(x, y) {\n\t line.push([x, y]);\n\t },\n\t lineStart: function() {\n\t lines.push(line = []);\n\t },\n\t lineEnd: noop$2,\n\t rejoin: function() {\n\t if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n\t },\n\t result: function() {\n\t var result = lines;\n\t lines = [];\n\t line = null;\n\t return result;\n\t }\n\t };\n\t }\n\t\n\t function clipLine(a, b, x0, y0, x1, y1) {\n\t var ax = a[0],\n\t ay = a[1],\n\t bx = b[0],\n\t by = b[1],\n\t t0 = 0,\n\t t1 = 1,\n\t dx = bx - ax,\n\t dy = by - ay,\n\t r;\n\t\n\t r = x0 - ax;\n\t if (!dx && r > 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dx > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t\n\t r = x1 - ax;\n\t if (!dx && r < 0) return;\n\t r /= dx;\n\t if (dx < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dx > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t\n\t r = y0 - ay;\n\t if (!dy && r > 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t } else if (dy > 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t }\n\t\n\t r = y1 - ay;\n\t if (!dy && r < 0) return;\n\t r /= dy;\n\t if (dy < 0) {\n\t if (r > t1) return;\n\t if (r > t0) t0 = r;\n\t } else if (dy > 0) {\n\t if (r < t0) return;\n\t if (r < t1) t1 = r;\n\t }\n\t\n\t if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n\t if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n\t return true;\n\t }\n\t\n\t function pointEqual(a, b) {\n\t return abs(a[0] - b[0]) < epsilon$4 && abs(a[1] - b[1]) < epsilon$4;\n\t }\n\t\n\t function Intersection(point, points, other, entry) {\n\t this.x = point;\n\t this.z = points;\n\t this.o = other; // another intersection\n\t this.e = entry; // is an entry?\n\t this.v = false; // visited\n\t this.n = this.p = null; // next & previous\n\t }\n\t\n\t // A generalized polygon clipping algorithm: given a polygon that has been cut\n\t // into its visible line segments, and rejoins the segments by interpolating\n\t // along the clip edge.\n\t function clipPolygon(segments, compareIntersection, startInside, interpolate, stream) {\n\t var subject = [],\n\t clip = [],\n\t i,\n\t n;\n\t\n\t segments.forEach(function(segment) {\n\t if ((n = segment.length - 1) <= 0) return;\n\t var n, p0 = segment[0], p1 = segment[n], x;\n\t\n\t // If the first and last points of a segment are coincident, then treat as a\n\t // closed ring. TODO if all rings are closed, then the winding order of the\n\t // exterior ring should be checked.\n\t if (pointEqual(p0, p1)) {\n\t stream.lineStart();\n\t for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n\t stream.lineEnd();\n\t return;\n\t }\n\t\n\t subject.push(x = new Intersection(p0, segment, null, true));\n\t clip.push(x.o = new Intersection(p0, null, x, false));\n\t subject.push(x = new Intersection(p1, segment, null, false));\n\t clip.push(x.o = new Intersection(p1, null, x, true));\n\t });\n\t\n\t if (!subject.length) return;\n\t\n\t clip.sort(compareIntersection);\n\t link$1(subject);\n\t link$1(clip);\n\t\n\t for (i = 0, n = clip.length; i < n; ++i) {\n\t clip[i].e = startInside = !startInside;\n\t }\n\t\n\t var start = subject[0],\n\t points,\n\t point;\n\t\n\t while (1) {\n\t // Find first unvisited intersection.\n\t var current = start,\n\t isSubject = true;\n\t while (current.v) if ((current = current.n) === start) return;\n\t points = current.z;\n\t stream.lineStart();\n\t do {\n\t current.v = current.o.v = true;\n\t if (current.e) {\n\t if (isSubject) {\n\t for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.n.x, 1, stream);\n\t }\n\t current = current.n;\n\t } else {\n\t if (isSubject) {\n\t points = current.p.z;\n\t for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n\t } else {\n\t interpolate(current.x, current.p.x, -1, stream);\n\t }\n\t current = current.p;\n\t }\n\t current = current.o;\n\t points = current.z;\n\t isSubject = !isSubject;\n\t } while (!current.v);\n\t stream.lineEnd();\n\t }\n\t }\n\t\n\t function link$1(array) {\n\t if (!(n = array.length)) return;\n\t var n,\n\t i = 0,\n\t a = array[0],\n\t b;\n\t while (++i < n) {\n\t a.n = b = array[i];\n\t b.p = a;\n\t a = b;\n\t }\n\t a.n = b = array[0];\n\t b.p = a;\n\t }\n\t\n\t var clipMax = 1e9;\n\t var clipMin = -clipMax;\n\t // TODO Use d3-polygon’s polygonContains here for the ring check?\n\t // TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\t\n\t function clipExtent(x0, y0, x1, y1) {\n\t\n\t function visible(x, y) {\n\t return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n\t }\n\t\n\t function interpolate(from, to, direction, stream) {\n\t var a = 0, a1 = 0;\n\t if (from == null\n\t || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n\t || comparePoint(from, to) < 0 ^ direction > 0) {\n\t do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n\t while ((a = (a + direction + 4) % 4) !== a1);\n\t } else {\n\t stream.point(to[0], to[1]);\n\t }\n\t }\n\t\n\t function corner(p, direction) {\n\t return abs(p[0] - x0) < epsilon$4 ? direction > 0 ? 0 : 3\n\t : abs(p[0] - x1) < epsilon$4 ? direction > 0 ? 2 : 1\n\t : abs(p[1] - y0) < epsilon$4 ? direction > 0 ? 1 : 0\n\t : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n\t }\n\t\n\t function compareIntersection(a, b) {\n\t return comparePoint(a.x, b.x);\n\t }\n\t\n\t function comparePoint(a, b) {\n\t var ca = corner(a, 1),\n\t cb = corner(b, 1);\n\t return ca !== cb ? ca - cb\n\t : ca === 0 ? b[1] - a[1]\n\t : ca === 1 ? a[0] - b[0]\n\t : ca === 2 ? a[1] - b[1]\n\t : b[0] - a[0];\n\t }\n\t\n\t return function(stream) {\n\t var activeStream = stream,\n\t bufferStream = clipBuffer(),\n\t segments,\n\t polygon,\n\t ring,\n\t x__, y__, v__, // first point\n\t x_, y_, v_, // previous point\n\t first,\n\t clean;\n\t\n\t var clipStream = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: polygonStart,\n\t polygonEnd: polygonEnd\n\t };\n\t\n\t function point(x, y) {\n\t if (visible(x, y)) activeStream.point(x, y);\n\t }\n\t\n\t function polygonInside() {\n\t var winding = 0;\n\t\n\t for (var i = 0, n = polygon.length; i < n; ++i) {\n\t for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n\t a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n\t if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n\t else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n\t }\n\t }\n\t\n\t return winding;\n\t }\n\t\n\t // Buffer geometry within a polygon and then clip it en masse.\n\t function polygonStart() {\n\t activeStream = bufferStream, segments = [], polygon = [], clean = true;\n\t }\n\t\n\t function polygonEnd() {\n\t var startInside = polygonInside(),\n\t cleanInside = clean && startInside,\n\t visible = (segments = merge(segments)).length;\n\t if (cleanInside || visible) {\n\t stream.polygonStart();\n\t if (cleanInside) {\n\t stream.lineStart();\n\t interpolate(null, null, 1, stream);\n\t stream.lineEnd();\n\t }\n\t if (visible) {\n\t clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n\t }\n\t stream.polygonEnd();\n\t }\n\t activeStream = stream, segments = polygon = ring = null;\n\t }\n\t\n\t function lineStart() {\n\t clipStream.point = linePoint;\n\t if (polygon) polygon.push(ring = []);\n\t first = true;\n\t v_ = false;\n\t x_ = y_ = NaN;\n\t }\n\t\n\t // TODO rather than special-case polygons, simply handle them separately.\n\t // Ideally, coincident intersection points should be jittered to avoid\n\t // clipping issues.\n\t function lineEnd() {\n\t if (segments) {\n\t linePoint(x__, y__);\n\t if (v__ && v_) bufferStream.rejoin();\n\t segments.push(bufferStream.result());\n\t }\n\t clipStream.point = point;\n\t if (v_) activeStream.lineEnd();\n\t }\n\t\n\t function linePoint(x, y) {\n\t var v = visible(x, y);\n\t if (polygon) ring.push([x, y]);\n\t if (first) {\n\t x__ = x, y__ = y, v__ = v;\n\t first = false;\n\t if (v) {\n\t activeStream.lineStart();\n\t activeStream.point(x, y);\n\t }\n\t } else {\n\t if (v && v_) activeStream.point(x, y);\n\t else {\n\t var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n\t b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n\t if (clipLine(a, b, x0, y0, x1, y1)) {\n\t if (!v_) {\n\t activeStream.lineStart();\n\t activeStream.point(a[0], a[1]);\n\t }\n\t activeStream.point(b[0], b[1]);\n\t if (!v) activeStream.lineEnd();\n\t clean = false;\n\t } else if (v) {\n\t activeStream.lineStart();\n\t activeStream.point(x, y);\n\t clean = false;\n\t }\n\t }\n\t }\n\t x_ = x, y_ = y, v_ = v;\n\t }\n\t\n\t return clipStream;\n\t };\n\t }\n\t\n\t function extent$1() {\n\t var x0 = 0,\n\t y0 = 0,\n\t x1 = 960,\n\t y1 = 500,\n\t cache,\n\t cacheStream,\n\t clip;\n\t\n\t return clip = {\n\t stream: function(stream) {\n\t return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n\t },\n\t extent: function(_) {\n\t return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n\t }\n\t };\n\t }\n\t\n\t var lengthSum = adder();\n\tvar lambda0$2;\n\tvar sinPhi0$1;\n\tvar cosPhi0$1;\n\t var lengthStream = {\n\t sphere: noop$2,\n\t point: noop$2,\n\t lineStart: lengthLineStart,\n\t lineEnd: noop$2,\n\t polygonStart: noop$2,\n\t polygonEnd: noop$2\n\t };\n\t\n\t function lengthLineStart() {\n\t lengthStream.point = lengthPointFirst;\n\t lengthStream.lineEnd = lengthLineEnd;\n\t }\n\t\n\t function lengthLineEnd() {\n\t lengthStream.point = lengthStream.lineEnd = noop$2;\n\t }\n\t\n\t function lengthPointFirst(lambda, phi) {\n\t lambda *= radians, phi *= radians;\n\t lambda0$2 = lambda, sinPhi0$1 = sin$1(phi), cosPhi0$1 = cos$1(phi);\n\t lengthStream.point = lengthPoint;\n\t }\n\t\n\t function lengthPoint(lambda, phi) {\n\t lambda *= radians, phi *= radians;\n\t var sinPhi = sin$1(phi),\n\t cosPhi = cos$1(phi),\n\t delta = abs(lambda - lambda0$2),\n\t cosDelta = cos$1(delta),\n\t sinDelta = sin$1(delta),\n\t x = cosPhi * sinDelta,\n\t y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta,\n\t z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta;\n\t lengthSum.add(atan2(sqrt$1(x * x + y * y), z));\n\t lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi;\n\t }\n\t\n\t function length$2(object) {\n\t lengthSum.reset();\n\t geoStream(object, lengthStream);\n\t return +lengthSum;\n\t }\n\t\n\t var coordinates = [null, null];\n\tvar object$1 = {type: \"LineString\", coordinates: coordinates};\n\t function distance(a, b) {\n\t coordinates[0] = a;\n\t coordinates[1] = b;\n\t return length$2(object$1);\n\t }\n\t\n\t function graticuleX(y0, y1, dy) {\n\t var y = range(y0, y1 - epsilon$4, dy).concat(y1);\n\t return function(x) { return y.map(function(y) { return [x, y]; }); };\n\t }\n\t\n\t function graticuleY(x0, x1, dx) {\n\t var x = range(x0, x1 - epsilon$4, dx).concat(x1);\n\t return function(y) { return x.map(function(x) { return [x, y]; }); };\n\t }\n\t\n\t function graticule() {\n\t var x1, x0, X1, X0,\n\t y1, y0, Y1, Y0,\n\t dx = 10, dy = dx, DX = 90, DY = 360,\n\t x, y, X, Y,\n\t precision = 2.5;\n\t\n\t function graticule() {\n\t return {type: \"MultiLineString\", coordinates: lines()};\n\t }\n\t\n\t function lines() {\n\t return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n\t .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n\t .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon$4; }).map(x))\n\t .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon$4; }).map(y));\n\t }\n\t\n\t graticule.lines = function() {\n\t return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n\t };\n\t\n\t graticule.outline = function() {\n\t return {\n\t type: \"Polygon\",\n\t coordinates: [\n\t X(X0).concat(\n\t Y(Y1).slice(1),\n\t X(X1).reverse().slice(1),\n\t Y(Y0).reverse().slice(1))\n\t ]\n\t };\n\t };\n\t\n\t graticule.extent = function(_) {\n\t if (!arguments.length) return graticule.extentMinor();\n\t return graticule.extentMajor(_).extentMinor(_);\n\t };\n\t\n\t graticule.extentMajor = function(_) {\n\t if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n\t X0 = +_[0][0], X1 = +_[1][0];\n\t Y0 = +_[0][1], Y1 = +_[1][1];\n\t if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n\t if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t\n\t graticule.extentMinor = function(_) {\n\t if (!arguments.length) return [[x0, y0], [x1, y1]];\n\t x0 = +_[0][0], x1 = +_[1][0];\n\t y0 = +_[0][1], y1 = +_[1][1];\n\t if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n\t if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n\t return graticule.precision(precision);\n\t };\n\t\n\t graticule.step = function(_) {\n\t if (!arguments.length) return graticule.stepMinor();\n\t return graticule.stepMajor(_).stepMinor(_);\n\t };\n\t\n\t graticule.stepMajor = function(_) {\n\t if (!arguments.length) return [DX, DY];\n\t DX = +_[0], DY = +_[1];\n\t return graticule;\n\t };\n\t\n\t graticule.stepMinor = function(_) {\n\t if (!arguments.length) return [dx, dy];\n\t dx = +_[0], dy = +_[1];\n\t return graticule;\n\t };\n\t\n\t graticule.precision = function(_) {\n\t if (!arguments.length) return precision;\n\t precision = +_;\n\t x = graticuleX(y0, y1, 90);\n\t y = graticuleY(x0, x1, precision);\n\t X = graticuleX(Y0, Y1, 90);\n\t Y = graticuleY(X0, X1, precision);\n\t return graticule;\n\t };\n\t\n\t return graticule\n\t .extentMajor([[-180, -90 + epsilon$4], [180, 90 - epsilon$4]])\n\t .extentMinor([[-180, -80 - epsilon$4], [180, 80 + epsilon$4]]);\n\t }\n\t\n\t function interpolate$2(a, b) {\n\t var x0 = a[0] * radians,\n\t y0 = a[1] * radians,\n\t x1 = b[0] * radians,\n\t y1 = b[1] * radians,\n\t cy0 = cos$1(y0),\n\t sy0 = sin$1(y0),\n\t cy1 = cos$1(y1),\n\t sy1 = sin$1(y1),\n\t kx0 = cy0 * cos$1(x0),\n\t ky0 = cy0 * sin$1(x0),\n\t kx1 = cy1 * cos$1(x1),\n\t ky1 = cy1 * sin$1(x1),\n\t d = 2 * asin$1(sqrt$1(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n\t k = sin$1(d);\n\t\n\t var interpolate = d ? function(t) {\n\t var B = sin$1(t *= d) / k,\n\t A = sin$1(d - t) / k,\n\t x = A * kx0 + B * kx1,\n\t y = A * ky0 + B * ky1,\n\t z = A * sy0 + B * sy1;\n\t return [\n\t atan2(y, x) * degrees$1,\n\t atan2(z, sqrt$1(x * x + y * y)) * degrees$1\n\t ];\n\t } : function() {\n\t return [x0 * degrees$1, y0 * degrees$1];\n\t };\n\t\n\t interpolate.distance = d;\n\t\n\t return interpolate;\n\t }\n\t\n\t function identity$7(x) {\n\t return x;\n\t }\n\t\n\tvar areaSum$1 = adder();\n\tvar areaRingSum$1 = adder();\n\t var x00;\n\t var y00;\n\tvar x0$1;\n\tvar y0$1;\n\t var areaStream$1 = {\n\t point: noop$2,\n\t lineStart: noop$2,\n\t lineEnd: noop$2,\n\t polygonStart: function() {\n\t areaStream$1.lineStart = areaRingStart$1;\n\t areaStream$1.lineEnd = areaRingEnd$1;\n\t },\n\t polygonEnd: function() {\n\t areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop$2;\n\t areaSum$1.add(abs(areaRingSum$1));\n\t areaRingSum$1.reset();\n\t },\n\t result: function() {\n\t var area = areaSum$1 / 2;\n\t areaSum$1.reset();\n\t return area;\n\t }\n\t };\n\t\n\t function areaRingStart$1() {\n\t areaStream$1.point = areaPointFirst$1;\n\t }\n\t\n\t function areaPointFirst$1(x, y) {\n\t areaStream$1.point = areaPoint$1;\n\t x00 = x0$1 = x, y00 = y0$1 = y;\n\t }\n\t\n\t function areaPoint$1(x, y) {\n\t areaRingSum$1.add(y0$1 * x - x0$1 * y);\n\t x0$1 = x, y0$1 = y;\n\t }\n\t\n\t function areaRingEnd$1() {\n\t areaPoint$1(x00, y00);\n\t }\n\t\n\tvar x0$2 = Infinity;\n\tvar y0$2 = x0$2;\n\t var x1 = -x0$2;\n\t var y1 = x1;\n\t var boundsStream$1 = {\n\t point: boundsPoint$1,\n\t lineStart: noop$2,\n\t lineEnd: noop$2,\n\t polygonStart: noop$2,\n\t polygonEnd: noop$2,\n\t result: function() {\n\t var bounds = [[x0$2, y0$2], [x1, y1]];\n\t x1 = y1 = -(y0$2 = x0$2 = Infinity);\n\t return bounds;\n\t }\n\t };\n\t\n\t function boundsPoint$1(x, y) {\n\t if (x < x0$2) x0$2 = x;\n\t if (x > x1) x1 = x;\n\t if (y < y0$2) y0$2 = y;\n\t if (y > y1) y1 = y;\n\t }\n\t\n\tvar X0$1 = 0;\n\tvar Y0$1 = 0;\n\tvar Z0$1 = 0;\n\tvar X1$1 = 0;\n\tvar Y1$1 = 0;\n\tvar Z1$1 = 0;\n\tvar X2$1 = 0;\n\tvar Y2$1 = 0;\n\tvar Z2$1 = 0;\n\tvar x00$1;\n\tvar y00$1;\n\tvar x0$3;\n\tvar y0$3;\n\t var centroidStream$1 = {\n\t point: centroidPoint$1,\n\t lineStart: centroidLineStart$1,\n\t lineEnd: centroidLineEnd$1,\n\t polygonStart: function() {\n\t centroidStream$1.lineStart = centroidRingStart$1;\n\t centroidStream$1.lineEnd = centroidRingEnd$1;\n\t },\n\t polygonEnd: function() {\n\t centroidStream$1.point = centroidPoint$1;\n\t centroidStream$1.lineStart = centroidLineStart$1;\n\t centroidStream$1.lineEnd = centroidLineEnd$1;\n\t },\n\t result: function() {\n\t var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1]\n\t : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1]\n\t : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1]\n\t : [NaN, NaN];\n\t X0$1 = Y0$1 = Z0$1 =\n\t X1$1 = Y1$1 = Z1$1 =\n\t X2$1 = Y2$1 = Z2$1 = 0;\n\t return centroid;\n\t }\n\t };\n\t\n\t function centroidPoint$1(x, y) {\n\t X0$1 += x;\n\t Y0$1 += y;\n\t ++Z0$1;\n\t }\n\t\n\t function centroidLineStart$1() {\n\t centroidStream$1.point = centroidPointFirstLine;\n\t }\n\t\n\t function centroidPointFirstLine(x, y) {\n\t centroidStream$1.point = centroidPointLine;\n\t centroidPoint$1(x0$3 = x, y0$3 = y);\n\t }\n\t\n\t function centroidPointLine(x, y) {\n\t var dx = x - x0$3, dy = y - y0$3, z = sqrt$1(dx * dx + dy * dy);\n\t X1$1 += z * (x0$3 + x) / 2;\n\t Y1$1 += z * (y0$3 + y) / 2;\n\t Z1$1 += z;\n\t centroidPoint$1(x0$3 = x, y0$3 = y);\n\t }\n\t\n\t function centroidLineEnd$1() {\n\t centroidStream$1.point = centroidPoint$1;\n\t }\n\t\n\t function centroidRingStart$1() {\n\t centroidStream$1.point = centroidPointFirstRing;\n\t }\n\t\n\t function centroidRingEnd$1() {\n\t centroidPointRing(x00$1, y00$1);\n\t }\n\t\n\t function centroidPointFirstRing(x, y) {\n\t centroidStream$1.point = centroidPointRing;\n\t centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y);\n\t }\n\t\n\t function centroidPointRing(x, y) {\n\t var dx = x - x0$3,\n\t dy = y - y0$3,\n\t z = sqrt$1(dx * dx + dy * dy);\n\t\n\t X1$1 += z * (x0$3 + x) / 2;\n\t Y1$1 += z * (y0$3 + y) / 2;\n\t Z1$1 += z;\n\t\n\t z = y0$3 * x - x0$3 * y;\n\t X2$1 += z * (x0$3 + x);\n\t Y2$1 += z * (y0$3 + y);\n\t Z2$1 += z * 3;\n\t centroidPoint$1(x0$3 = x, y0$3 = y);\n\t }\n\t\n\t function PathContext(context) {\n\t var pointRadius = 4.5;\n\t\n\t var stream = {\n\t point: point,\n\t\n\t // While inside a line, override point to moveTo then lineTo.\n\t lineStart: function() { stream.point = pointLineStart; },\n\t lineEnd: lineEnd,\n\t\n\t // While inside a polygon, override lineEnd to closePath.\n\t polygonStart: function() { stream.lineEnd = lineEndPolygon; },\n\t polygonEnd: function() { stream.lineEnd = lineEnd; stream.point = point; },\n\t\n\t pointRadius: function(_) {\n\t pointRadius = _;\n\t return stream;\n\t },\n\t\n\t result: noop$2\n\t };\n\t\n\t function point(x, y) {\n\t context.moveTo(x + pointRadius, y);\n\t context.arc(x, y, pointRadius, 0, tau$4);\n\t }\n\t\n\t function pointLineStart(x, y) {\n\t context.moveTo(x, y);\n\t stream.point = pointLine;\n\t }\n\t\n\t function pointLine(x, y) {\n\t context.lineTo(x, y);\n\t }\n\t\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t\n\t function lineEndPolygon() {\n\t context.closePath();\n\t }\n\t\n\t return stream;\n\t }\n\t\n\t function PathString() {\n\t var pointCircle = circle$2(4.5),\n\t string = [];\n\t\n\t var stream = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t stream.lineEnd = lineEndPolygon;\n\t },\n\t polygonEnd: function() {\n\t stream.lineEnd = lineEnd;\n\t stream.point = point;\n\t },\n\t pointRadius: function(_) {\n\t pointCircle = circle$2(_);\n\t return stream;\n\t },\n\t result: function() {\n\t if (string.length) {\n\t var result = string.join(\"\");\n\t string = [];\n\t return result;\n\t }\n\t }\n\t };\n\t\n\t function point(x, y) {\n\t string.push(\"M\", x, \",\", y, pointCircle);\n\t }\n\t\n\t function pointLineStart(x, y) {\n\t string.push(\"M\", x, \",\", y);\n\t stream.point = pointLine;\n\t }\n\t\n\t function pointLine(x, y) {\n\t string.push(\"L\", x, \",\", y);\n\t }\n\t\n\t function lineStart() {\n\t stream.point = pointLineStart;\n\t }\n\t\n\t function lineEnd() {\n\t stream.point = point;\n\t }\n\t\n\t function lineEndPolygon() {\n\t string.push(\"Z\");\n\t }\n\t\n\t return stream;\n\t }\n\t\n\t function circle$2(radius) {\n\t return \"m0,\" + radius\n\t + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n\t + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n\t + \"z\";\n\t }\n\t\n\t function index$3() {\n\t var pointRadius = 4.5,\n\t projection,\n\t projectionStream,\n\t context,\n\t contextStream;\n\t\n\t function path(object) {\n\t if (object) {\n\t if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n\t geoStream(object, projectionStream(contextStream));\n\t }\n\t return contextStream.result();\n\t }\n\t\n\t path.area = function(object) {\n\t geoStream(object, projectionStream(areaStream$1));\n\t return areaStream$1.result();\n\t };\n\t\n\t path.bounds = function(object) {\n\t geoStream(object, projectionStream(boundsStream$1));\n\t return boundsStream$1.result();\n\t };\n\t\n\t path.centroid = function(object) {\n\t geoStream(object, projectionStream(centroidStream$1));\n\t return centroidStream$1.result();\n\t };\n\t\n\t path.projection = function(_) {\n\t return arguments.length ? (projectionStream = (projection = _) == null ? identity$7 : _.stream, path) : projection;\n\t };\n\t\n\t path.context = function(_) {\n\t if (!arguments.length) return context;\n\t contextStream = (context = _) == null ? new PathString : new PathContext(_);\n\t if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n\t return path;\n\t };\n\t\n\t path.pointRadius = function(_) {\n\t if (!arguments.length) return pointRadius;\n\t pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n\t return path;\n\t };\n\t\n\t return path.projection(null).context(null);\n\t }\n\t\n\t var sum$2 = adder();\n\t\n\t function polygonContains(polygon, point) {\n\t var lambda = point[0],\n\t phi = point[1],\n\t normal = [sin$1(lambda), -cos$1(lambda), 0],\n\t angle = 0,\n\t winding = 0;\n\t\n\t sum$2.reset();\n\t\n\t for (var i = 0, n = polygon.length; i < n; ++i) {\n\t if (!(m = (ring = polygon[i]).length)) continue;\n\t var ring,\n\t m,\n\t point0 = ring[m - 1],\n\t lambda0 = point0[0],\n\t phi0 = point0[1] / 2 + quarterPi,\n\t sinPhi0 = sin$1(phi0),\n\t cosPhi0 = cos$1(phi0);\n\t\n\t for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n\t var point1 = ring[j],\n\t lambda1 = point1[0],\n\t phi1 = point1[1] / 2 + quarterPi,\n\t sinPhi1 = sin$1(phi1),\n\t cosPhi1 = cos$1(phi1),\n\t delta = lambda1 - lambda0,\n\t sign = delta >= 0 ? 1 : -1,\n\t absDelta = sign * delta,\n\t antimeridian = absDelta > pi$4,\n\t k = sinPhi0 * sinPhi1;\n\t\n\t sum$2.add(atan2(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta)));\n\t angle += antimeridian ? delta + sign * tau$4 : delta;\n\t\n\t // Are the longitudes either side of the point’s meridian (lambda),\n\t // and are the latitudes smaller than the parallel (phi)?\n\t if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n\t var arc = cartesianCross(cartesian(point0), cartesian(point1));\n\t cartesianNormalizeInPlace(arc);\n\t var intersection = cartesianCross(normal, arc);\n\t cartesianNormalizeInPlace(intersection);\n\t var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin$1(intersection[2]);\n\t if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n\t winding += antimeridian ^ delta >= 0 ? 1 : -1;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // First, determine whether the South pole is inside or outside:\n\t //\n\t // It is inside if:\n\t // * the polygon winds around it in a clockwise direction.\n\t // * the polygon does not (cumulatively) wind around it, but has a negative\n\t // (counter-clockwise) area.\n\t //\n\t // Second, count the (signed) number of times a segment crosses a lambda\n\t // from the point to the South pole. If it is zero, then the point is the\n\t // same side as the South pole.\n\t\n\t return (angle < -epsilon$4 || angle < epsilon$4 && sum$2 < -epsilon$4) ^ (winding & 1);\n\t }\n\t\n\t function clip(pointVisible, clipLine, interpolate, start) {\n\t return function(rotate, sink) {\n\t var line = clipLine(sink),\n\t rotatedStart = rotate.invert(start[0], start[1]),\n\t ringBuffer = clipBuffer(),\n\t ringSink = clipLine(ringBuffer),\n\t polygonStarted = false,\n\t polygon,\n\t segments,\n\t ring;\n\t\n\t var clip = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() {\n\t clip.point = pointRing;\n\t clip.lineStart = ringStart;\n\t clip.lineEnd = ringEnd;\n\t segments = [];\n\t polygon = [];\n\t },\n\t polygonEnd: function() {\n\t clip.point = point;\n\t clip.lineStart = lineStart;\n\t clip.lineEnd = lineEnd;\n\t segments = merge(segments);\n\t var startInside = polygonContains(polygon, rotatedStart);\n\t if (segments.length) {\n\t if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n\t clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n\t } else if (startInside) {\n\t if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n\t sink.lineStart();\n\t interpolate(null, null, 1, sink);\n\t sink.lineEnd();\n\t }\n\t if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n\t segments = polygon = null;\n\t },\n\t sphere: function() {\n\t sink.polygonStart();\n\t sink.lineStart();\n\t interpolate(null, null, 1, sink);\n\t sink.lineEnd();\n\t sink.polygonEnd();\n\t }\n\t };\n\t\n\t function point(lambda, phi) {\n\t var point = rotate(lambda, phi);\n\t if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n\t }\n\t\n\t function pointLine(lambda, phi) {\n\t var point = rotate(lambda, phi);\n\t line.point(point[0], point[1]);\n\t }\n\t\n\t function lineStart() {\n\t clip.point = pointLine;\n\t line.lineStart();\n\t }\n\t\n\t function lineEnd() {\n\t clip.point = point;\n\t line.lineEnd();\n\t }\n\t\n\t function pointRing(lambda, phi) {\n\t ring.push([lambda, phi]);\n\t var point = rotate(lambda, phi);\n\t ringSink.point(point[0], point[1]);\n\t }\n\t\n\t function ringStart() {\n\t ringSink.lineStart();\n\t ring = [];\n\t }\n\t\n\t function ringEnd() {\n\t pointRing(ring[0][0], ring[0][1]);\n\t ringSink.lineEnd();\n\t\n\t var clean = ringSink.clean(),\n\t ringSegments = ringBuffer.result(),\n\t i, n = ringSegments.length, m,\n\t segment,\n\t point;\n\t\n\t ring.pop();\n\t polygon.push(ring);\n\t ring = null;\n\t\n\t if (!n) return;\n\t\n\t // No intersections.\n\t if (clean & 1) {\n\t segment = ringSegments[0];\n\t if ((m = segment.length - 1) > 0) {\n\t if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n\t sink.lineStart();\n\t for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n\t sink.lineEnd();\n\t }\n\t return;\n\t }\n\t\n\t // Rejoin connected segments.\n\t // TODO reuse ringBuffer.rejoin()?\n\t if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\t\n\t segments.push(ringSegments.filter(validSegment));\n\t }\n\t\n\t return clip;\n\t };\n\t }\n\t\n\t function validSegment(segment) {\n\t return segment.length > 1;\n\t }\n\t\n\t // Intersections are sorted along the clip edge. For both antimeridian cutting\n\t // and circle clipping, the same comparison is used.\n\t function compareIntersection(a, b) {\n\t return ((a = a.x)[0] < 0 ? a[1] - halfPi$3 - epsilon$4 : halfPi$3 - a[1])\n\t - ((b = b.x)[0] < 0 ? b[1] - halfPi$3 - epsilon$4 : halfPi$3 - b[1]);\n\t }\n\t\n\t var clipAntimeridian = clip(\n\t function() { return true; },\n\t clipAntimeridianLine,\n\t clipAntimeridianInterpolate,\n\t [-pi$4, -halfPi$3]\n\t );\n\t\n\t // Takes a line and cuts into visible segments. Return values: 0 - there were\n\t // intersections or the line was empty; 1 - no intersections; 2 - there were\n\t // intersections, and the first and last segments should be rejoined.\n\t function clipAntimeridianLine(stream) {\n\t var lambda0 = NaN,\n\t phi0 = NaN,\n\t sign0 = NaN,\n\t clean; // no intersections\n\t\n\t return {\n\t lineStart: function() {\n\t stream.lineStart();\n\t clean = 1;\n\t },\n\t point: function(lambda1, phi1) {\n\t var sign1 = lambda1 > 0 ? pi$4 : -pi$4,\n\t delta = abs(lambda1 - lambda0);\n\t if (abs(delta - pi$4) < epsilon$4) { // line crosses a pole\n\t stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$3 : -halfPi$3);\n\t stream.point(sign0, phi0);\n\t stream.lineEnd();\n\t stream.lineStart();\n\t stream.point(sign1, phi0);\n\t stream.point(lambda1, phi0);\n\t clean = 0;\n\t } else if (sign0 !== sign1 && delta >= pi$4) { // line crosses antimeridian\n\t if (abs(lambda0 - sign0) < epsilon$4) lambda0 -= sign0 * epsilon$4; // handle degeneracies\n\t if (abs(lambda1 - sign1) < epsilon$4) lambda1 -= sign1 * epsilon$4;\n\t phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n\t stream.point(sign0, phi0);\n\t stream.lineEnd();\n\t stream.lineStart();\n\t stream.point(sign1, phi0);\n\t clean = 0;\n\t }\n\t stream.point(lambda0 = lambda1, phi0 = phi1);\n\t sign0 = sign1;\n\t },\n\t lineEnd: function() {\n\t stream.lineEnd();\n\t lambda0 = phi0 = NaN;\n\t },\n\t clean: function() {\n\t return 2 - clean; // if intersections, rejoin first and last segments\n\t }\n\t };\n\t }\n\t\n\t function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n\t var cosPhi0,\n\t cosPhi1,\n\t sinLambda0Lambda1 = sin$1(lambda0 - lambda1);\n\t return abs(sinLambda0Lambda1) > epsilon$4\n\t ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1)\n\t - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0))\n\t / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n\t : (phi0 + phi1) / 2;\n\t }\n\t\n\t function clipAntimeridianInterpolate(from, to, direction, stream) {\n\t var phi;\n\t if (from == null) {\n\t phi = direction * halfPi$3;\n\t stream.point(-pi$4, phi);\n\t stream.point(0, phi);\n\t stream.point(pi$4, phi);\n\t stream.point(pi$4, 0);\n\t stream.point(pi$4, -phi);\n\t stream.point(0, -phi);\n\t stream.point(-pi$4, -phi);\n\t stream.point(-pi$4, 0);\n\t stream.point(-pi$4, phi);\n\t } else if (abs(from[0] - to[0]) > epsilon$4) {\n\t var lambda = from[0] < to[0] ? pi$4 : -pi$4;\n\t phi = direction * lambda / 2;\n\t stream.point(-lambda, phi);\n\t stream.point(0, phi);\n\t stream.point(lambda, phi);\n\t } else {\n\t stream.point(to[0], to[1]);\n\t }\n\t }\n\t\n\t function clipCircle(radius, delta) {\n\t var cr = cos$1(radius),\n\t smallRadius = cr > 0,\n\t notHemisphere = abs(cr) > epsilon$4; // TODO optimise for this common case\n\t\n\t function interpolate(from, to, direction, stream) {\n\t circleStream(stream, radius, delta, direction, from, to);\n\t }\n\t\n\t function visible(lambda, phi) {\n\t return cos$1(lambda) * cos$1(phi) > cr;\n\t }\n\t\n\t // Takes a line and cuts into visible segments. Return values used for polygon\n\t // clipping: 0 - there were intersections or the line was empty; 1 - no\n\t // intersections 2 - there were intersections, and the first and last segments\n\t // should be rejoined.\n\t function clipLine(stream) {\n\t var point0, // previous point\n\t c0, // code for previous point\n\t v0, // visibility of previous point\n\t v00, // visibility of first point\n\t clean; // no intersections\n\t return {\n\t lineStart: function() {\n\t v00 = v0 = false;\n\t clean = 1;\n\t },\n\t point: function(lambda, phi) {\n\t var point1 = [lambda, phi],\n\t point2,\n\t v = visible(lambda, phi),\n\t c = smallRadius\n\t ? v ? 0 : code(lambda, phi)\n\t : v ? code(lambda + (lambda < 0 ? pi$4 : -pi$4), phi) : 0;\n\t if (!point0 && (v00 = v0 = v)) stream.lineStart();\n\t // Handle degeneracies.\n\t // TODO ignore if not clipping polygons.\n\t if (v !== v0) {\n\t point2 = intersect(point0, point1);\n\t if (pointEqual(point0, point2) || pointEqual(point1, point2)) {\n\t point1[0] += epsilon$4;\n\t point1[1] += epsilon$4;\n\t v = visible(point1[0], point1[1]);\n\t }\n\t }\n\t if (v !== v0) {\n\t clean = 0;\n\t if (v) {\n\t // outside going in\n\t stream.lineStart();\n\t point2 = intersect(point1, point0);\n\t stream.point(point2[0], point2[1]);\n\t } else {\n\t // inside going out\n\t point2 = intersect(point0, point1);\n\t stream.point(point2[0], point2[1]);\n\t stream.lineEnd();\n\t }\n\t point0 = point2;\n\t } else if (notHemisphere && point0 && smallRadius ^ v) {\n\t var t;\n\t // If the codes for two points are different, or are both zero,\n\t // and there this segment intersects with the small circle.\n\t if (!(c & c0) && (t = intersect(point1, point0, true))) {\n\t clean = 0;\n\t if (smallRadius) {\n\t stream.lineStart();\n\t stream.point(t[0][0], t[0][1]);\n\t stream.point(t[1][0], t[1][1]);\n\t stream.lineEnd();\n\t } else {\n\t stream.point(t[1][0], t[1][1]);\n\t stream.lineEnd();\n\t stream.lineStart();\n\t stream.point(t[0][0], t[0][1]);\n\t }\n\t }\n\t }\n\t if (v && (!point0 || !pointEqual(point0, point1))) {\n\t stream.point(point1[0], point1[1]);\n\t }\n\t point0 = point1, v0 = v, c0 = c;\n\t },\n\t lineEnd: function() {\n\t if (v0) stream.lineEnd();\n\t point0 = null;\n\t },\n\t // Rejoin first and last segments if there were intersections and the first\n\t // and last points were visible.\n\t clean: function() {\n\t return clean | ((v00 && v0) << 1);\n\t }\n\t };\n\t }\n\t\n\t // Intersects the great circle between a and b with the clip circle.\n\t function intersect(a, b, two) {\n\t var pa = cartesian(a),\n\t pb = cartesian(b);\n\t\n\t // We have two planes, n1.p = d1 and n2.p = d2.\n\t // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n\t var n1 = [1, 0, 0], // normal\n\t n2 = cartesianCross(pa, pb),\n\t n2n2 = cartesianDot(n2, n2),\n\t n1n2 = n2[0], // cartesianDot(n1, n2),\n\t determinant = n2n2 - n1n2 * n1n2;\n\t\n\t // Two polar points.\n\t if (!determinant) return !two && a;\n\t\n\t var c1 = cr * n2n2 / determinant,\n\t c2 = -cr * n1n2 / determinant,\n\t n1xn2 = cartesianCross(n1, n2),\n\t A = cartesianScale(n1, c1),\n\t B = cartesianScale(n2, c2);\n\t cartesianAddInPlace(A, B);\n\t\n\t // Solve |p(t)|^2 = 1.\n\t var u = n1xn2,\n\t w = cartesianDot(A, u),\n\t uu = cartesianDot(u, u),\n\t t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\t\n\t if (t2 < 0) return;\n\t\n\t var t = sqrt$1(t2),\n\t q = cartesianScale(u, (-w - t) / uu);\n\t cartesianAddInPlace(q, A);\n\t q = spherical(q);\n\t\n\t if (!two) return q;\n\t\n\t // Two intersection points.\n\t var lambda0 = a[0],\n\t lambda1 = b[0],\n\t phi0 = a[1],\n\t phi1 = b[1],\n\t z;\n\t\n\t if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\t\n\t var delta = lambda1 - lambda0,\n\t polar = abs(delta - pi$4) < epsilon$4,\n\t meridian = polar || delta < epsilon$4;\n\t\n\t if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\t\n\t // Check that the first point is between a and b.\n\t if (meridian\n\t ? polar\n\t ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon$4 ? phi0 : phi1)\n\t : phi0 <= q[1] && q[1] <= phi1\n\t : delta > pi$4 ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n\t var q1 = cartesianScale(u, (-w + t) / uu);\n\t cartesianAddInPlace(q1, A);\n\t return [q, spherical(q1)];\n\t }\n\t }\n\t\n\t // Generates a 4-bit vector representing the location of a point relative to\n\t // the small circle's bounding box.\n\t function code(lambda, phi) {\n\t var r = smallRadius ? radius : pi$4 - radius,\n\t code = 0;\n\t if (lambda < -r) code |= 1; // left\n\t else if (lambda > r) code |= 2; // right\n\t if (phi < -r) code |= 4; // below\n\t else if (phi > r) code |= 8; // above\n\t return code;\n\t }\n\t\n\t return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$4, radius - pi$4]);\n\t }\n\t\n\t function transform$1(prototype) {\n\t return {\n\t stream: transform$2(prototype)\n\t };\n\t }\n\t\n\t function transform$2(prototype) {\n\t function T() {}\n\t var p = T.prototype = Object.create(Transform$1.prototype);\n\t for (var k in prototype) p[k] = prototype[k];\n\t return function(stream) {\n\t var t = new T;\n\t t.stream = stream;\n\t return t;\n\t };\n\t }\n\t\n\t function Transform$1() {}\n\t\n\t Transform$1.prototype = {\n\t point: function(x, y) { this.stream.point(x, y); },\n\t sphere: function() { this.stream.sphere(); },\n\t lineStart: function() { this.stream.lineStart(); },\n\t lineEnd: function() { this.stream.lineEnd(); },\n\t polygonStart: function() { this.stream.polygonStart(); },\n\t polygonEnd: function() { this.stream.polygonEnd(); }\n\t };\n\t\n\t function fit(project, extent, object) {\n\t var w = extent[1][0] - extent[0][0],\n\t h = extent[1][1] - extent[0][1],\n\t clip = project.clipExtent && project.clipExtent();\n\t\n\t project\n\t .scale(150)\n\t .translate([0, 0]);\n\t\n\t if (clip != null) project.clipExtent(null);\n\t\n\t geoStream(object, project.stream(boundsStream$1));\n\t\n\t var b = boundsStream$1.result(),\n\t k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n\t x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n\t y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\t\n\t if (clip != null) project.clipExtent(clip);\n\t\n\t return project\n\t .scale(k * 150)\n\t .translate([x, y]);\n\t }\n\t\n\t function fitSize(project) {\n\t return function(size, object) {\n\t return fit(project, [[0, 0], size], object);\n\t };\n\t }\n\t\n\t function fitExtent(project) {\n\t return function(extent, object) {\n\t return fit(project, extent, object);\n\t };\n\t }\n\t\n\t var maxDepth = 16;\n\t var cosMinDistance = cos$1(30 * radians);\n\t // cos(minimum angular distance)\n\t\n\t function resample(project, delta2) {\n\t return +delta2 ? resample$1(project, delta2) : resampleNone(project);\n\t }\n\t\n\t function resampleNone(project) {\n\t return transform$2({\n\t point: function(x, y) {\n\t x = project(x, y);\n\t this.stream.point(x[0], x[1]);\n\t }\n\t });\n\t }\n\t\n\t function resample$1(project, delta2) {\n\t\n\t function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n\t var dx = x1 - x0,\n\t dy = y1 - y0,\n\t d2 = dx * dx + dy * dy;\n\t if (d2 > 4 * delta2 && depth--) {\n\t var a = a0 + a1,\n\t b = b0 + b1,\n\t c = c0 + c1,\n\t m = sqrt$1(a * a + b * b + c * c),\n\t phi2 = asin$1(c /= m),\n\t lambda2 = abs(abs(c) - 1) < epsilon$4 || abs(lambda0 - lambda1) < epsilon$4 ? (lambda0 + lambda1) / 2 : atan2(b, a),\n\t p = project(lambda2, phi2),\n\t x2 = p[0],\n\t y2 = p[1],\n\t dx2 = x2 - x0,\n\t dy2 = y2 - y0,\n\t dz = dy * dx2 - dx * dy2;\n\t if (dz * dz / d2 > delta2 // perpendicular projected distance\n\t || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n\t || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n\t resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n\t stream.point(x2, y2);\n\t resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n\t }\n\t }\n\t }\n\t return function(stream) {\n\t var lambda00, x00, y00, a00, b00, c00, // first point\n\t lambda0, x0, y0, a0, b0, c0; // previous point\n\t\n\t var resampleStream = {\n\t point: point,\n\t lineStart: lineStart,\n\t lineEnd: lineEnd,\n\t polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n\t polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n\t };\n\t\n\t function point(x, y) {\n\t x = project(x, y);\n\t stream.point(x[0], x[1]);\n\t }\n\t\n\t function lineStart() {\n\t x0 = NaN;\n\t resampleStream.point = linePoint;\n\t stream.lineStart();\n\t }\n\t\n\t function linePoint(lambda, phi) {\n\t var c = cartesian([lambda, phi]), p = project(lambda, phi);\n\t resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n\t stream.point(x0, y0);\n\t }\n\t\n\t function lineEnd() {\n\t resampleStream.point = point;\n\t stream.lineEnd();\n\t }\n\t\n\t function ringStart() {\n\t lineStart();\n\t resampleStream.point = ringPoint;\n\t resampleStream.lineEnd = ringEnd;\n\t }\n\t\n\t function ringPoint(lambda, phi) {\n\t linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n\t resampleStream.point = linePoint;\n\t }\n\t\n\t function ringEnd() {\n\t resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n\t resampleStream.lineEnd = lineEnd;\n\t lineEnd();\n\t }\n\t\n\t return resampleStream;\n\t };\n\t }\n\t\n\t var transformRadians = transform$2({\n\t point: function(x, y) {\n\t this.stream.point(x * radians, y * radians);\n\t }\n\t });\n\t\n\t function projection(project) {\n\t return projectionMutator(function() { return project; })();\n\t }\n\t\n\t function projectionMutator(projectAt) {\n\t var project,\n\t k = 150, // scale\n\t x = 480, y = 250, // translate\n\t dx, dy, lambda = 0, phi = 0, // center\n\t deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n\t theta = null, preclip = clipAntimeridian, // clip angle\n\t x0 = null, y0, x1, y1, postclip = identity$7, // clip extent\n\t delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n\t cache,\n\t cacheStream;\n\t\n\t function projection(point) {\n\t point = projectRotate(point[0] * radians, point[1] * radians);\n\t return [point[0] * k + dx, dy - point[1] * k];\n\t }\n\t\n\t function invert(point) {\n\t point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n\t return point && [point[0] * degrees$1, point[1] * degrees$1];\n\t }\n\t\n\t function projectTransform(x, y) {\n\t return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n\t }\n\t\n\t projection.stream = function(stream) {\n\t return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n\t };\n\t\n\t projection.clipAngle = function(_) {\n\t return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees$1;\n\t };\n\t\n\t projection.clipExtent = function(_) {\n\t return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$7) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n\t };\n\t\n\t projection.scale = function(_) {\n\t return arguments.length ? (k = +_, recenter()) : k;\n\t };\n\t\n\t projection.translate = function(_) {\n\t return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n\t };\n\t\n\t projection.center = function(_) {\n\t return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees$1, phi * degrees$1];\n\t };\n\t\n\t projection.rotate = function(_) {\n\t return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees$1, deltaPhi * degrees$1, deltaGamma * degrees$1];\n\t };\n\t\n\t projection.precision = function(_) {\n\t return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt$1(delta2);\n\t };\n\t\n\t projection.fitExtent = fitExtent(projection);\n\t\n\t projection.fitSize = fitSize(projection);\n\t\n\t function recenter() {\n\t projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n\t var center = project(lambda, phi);\n\t dx = x - center[0] * k;\n\t dy = y + center[1] * k;\n\t return reset();\n\t }\n\t\n\t function reset() {\n\t cache = cacheStream = null;\n\t return projection;\n\t }\n\t\n\t return function() {\n\t project = projectAt.apply(this, arguments);\n\t projection.invert = project.invert && invert;\n\t return recenter();\n\t };\n\t }\n\t\n\t function conicProjection(projectAt) {\n\t var phi0 = 0,\n\t phi1 = pi$4 / 3,\n\t m = projectionMutator(projectAt),\n\t p = m(phi0, phi1);\n\t\n\t p.parallels = function(_) {\n\t return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees$1, phi1 * degrees$1];\n\t };\n\t\n\t return p;\n\t }\n\t\n\t function conicEqualAreaRaw(y0, y1) {\n\t var sy0 = sin$1(y0),\n\t n = (sy0 + sin$1(y1)) / 2,\n\t c = 1 + sy0 * (2 * n - sy0),\n\t r0 = sqrt$1(c) / n;\n\t\n\t function project(x, y) {\n\t var r = sqrt$1(c - 2 * n * sin$1(y)) / n;\n\t return [r * sin$1(x *= n), r0 - r * cos$1(x)];\n\t }\n\t\n\t project.invert = function(x, y) {\n\t var r0y = r0 - y;\n\t return [atan2(x, r0y) / n, asin$1((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n\t };\n\t\n\t return project;\n\t }\n\t\n\t function conicEqualArea() {\n\t return conicProjection(conicEqualAreaRaw)\n\t .scale(155.424)\n\t .center([0, 33.6442]);\n\t }\n\t\n\t function albers() {\n\t return conicEqualArea()\n\t .parallels([29.5, 45.5])\n\t .scale(1070)\n\t .translate([480, 250])\n\t .rotate([96, 0])\n\t .center([-0.6, 38.7]);\n\t }\n\t\n\t // The projections must have mutually exclusive clip regions on the sphere,\n\t // as this will avoid emitting interleaving lines and polygons.\n\t function multiplex(streams) {\n\t var n = streams.length;\n\t return {\n\t point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n\t sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n\t lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n\t lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n\t polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n\t polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n\t };\n\t }\n\t\n\t // A composite projection for the United States, configured by default for\n\t // 960×500. The projection also works quite well at 960×600 if you change the\n\t // scale to 1285 and adjust the translate accordingly. The set of standard\n\t // parallels for each region comes from USGS, which is published here:\n\t // http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\n\t function albersUsa() {\n\t var cache,\n\t cacheStream,\n\t lower48 = albers(), lower48Point,\n\t alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n\t hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n\t point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\t\n\t function albersUsa(coordinates) {\n\t var x = coordinates[0], y = coordinates[1];\n\t return point = null,\n\t (lower48Point.point(x, y), point)\n\t || (alaskaPoint.point(x, y), point)\n\t || (hawaiiPoint.point(x, y), point);\n\t }\n\t\n\t albersUsa.invert = function(coordinates) {\n\t var k = lower48.scale(),\n\t t = lower48.translate(),\n\t x = (coordinates[0] - t[0]) / k,\n\t y = (coordinates[1] - t[1]) / k;\n\t return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n\t : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n\t : lower48).invert(coordinates);\n\t };\n\t\n\t albersUsa.stream = function(stream) {\n\t return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n\t };\n\t\n\t albersUsa.precision = function(_) {\n\t if (!arguments.length) return lower48.precision();\n\t lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n\t return albersUsa;\n\t };\n\t\n\t albersUsa.scale = function(_) {\n\t if (!arguments.length) return lower48.scale();\n\t lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n\t return albersUsa.translate(lower48.translate());\n\t };\n\t\n\t albersUsa.translate = function(_) {\n\t if (!arguments.length) return lower48.translate();\n\t var k = lower48.scale(), x = +_[0], y = +_[1];\n\t\n\t lower48Point = lower48\n\t .translate(_)\n\t .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n\t .stream(pointStream);\n\t\n\t alaskaPoint = alaska\n\t .translate([x - 0.307 * k, y + 0.201 * k])\n\t .clipExtent([[x - 0.425 * k + epsilon$4, y + 0.120 * k + epsilon$4], [x - 0.214 * k - epsilon$4, y + 0.234 * k - epsilon$4]])\n\t .stream(pointStream);\n\t\n\t hawaiiPoint = hawaii\n\t .translate([x - 0.205 * k, y + 0.212 * k])\n\t .clipExtent([[x - 0.214 * k + epsilon$4, y + 0.166 * k + epsilon$4], [x - 0.115 * k - epsilon$4, y + 0.234 * k - epsilon$4]])\n\t .stream(pointStream);\n\t\n\t return albersUsa;\n\t };\n\t\n\t albersUsa.fitExtent = fitExtent(albersUsa);\n\t\n\t albersUsa.fitSize = fitSize(albersUsa);\n\t\n\t return albersUsa.scale(1070);\n\t }\n\t\n\t function azimuthalRaw(scale) {\n\t return function(x, y) {\n\t var cx = cos$1(x),\n\t cy = cos$1(y),\n\t k = scale(cx * cy);\n\t return [\n\t k * cy * sin$1(x),\n\t k * sin$1(y)\n\t ];\n\t }\n\t }\n\t\n\t function azimuthalInvert(angle) {\n\t return function(x, y) {\n\t var z = sqrt$1(x * x + y * y),\n\t c = angle(z),\n\t sc = sin$1(c),\n\t cc = cos$1(c);\n\t return [\n\t atan2(x * sc, z * cc),\n\t asin$1(z && y * sc / z)\n\t ];\n\t }\n\t }\n\t\n\t var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n\t return sqrt$1(2 / (1 + cxcy));\n\t });\n\t\n\t azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n\t return 2 * asin$1(z / 2);\n\t });\n\t\n\t function azimuthalEqualArea() {\n\t return projection(azimuthalEqualAreaRaw)\n\t .scale(124.75)\n\t .clipAngle(180 - 1e-3);\n\t }\n\t\n\t var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n\t return (c = acos(c)) && c / sin$1(c);\n\t });\n\t\n\t azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n\t return z;\n\t });\n\t\n\t function azimuthalEquidistant() {\n\t return projection(azimuthalEquidistantRaw)\n\t .scale(79.4188)\n\t .clipAngle(180 - 1e-3);\n\t }\n\t\n\t function mercatorRaw(lambda, phi) {\n\t return [lambda, log$1(tan((halfPi$3 + phi) / 2))];\n\t }\n\t\n\t mercatorRaw.invert = function(x, y) {\n\t return [x, 2 * atan(exp(y)) - halfPi$3];\n\t };\n\t\n\t function mercator() {\n\t return mercatorProjection(mercatorRaw)\n\t .scale(961 / tau$4);\n\t }\n\t\n\t function mercatorProjection(project) {\n\t var m = projection(project),\n\t scale = m.scale,\n\t translate = m.translate,\n\t clipExtent = m.clipExtent,\n\t clipAuto;\n\t\n\t m.scale = function(_) {\n\t return arguments.length ? (scale(_), clipAuto && m.clipExtent(null), m) : scale();\n\t };\n\t\n\t m.translate = function(_) {\n\t return arguments.length ? (translate(_), clipAuto && m.clipExtent(null), m) : translate();\n\t };\n\t\n\t m.clipExtent = function(_) {\n\t if (!arguments.length) return clipAuto ? null : clipExtent();\n\t if (clipAuto = _ == null) {\n\t var k = pi$4 * scale(),\n\t t = translate();\n\t _ = [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]];\n\t }\n\t clipExtent(_);\n\t return m;\n\t };\n\t\n\t return m.clipExtent(null);\n\t }\n\t\n\t function tany(y) {\n\t return tan((halfPi$3 + y) / 2);\n\t }\n\t\n\t function conicConformalRaw(y0, y1) {\n\t var cy0 = cos$1(y0),\n\t n = y0 === y1 ? sin$1(y0) : log$1(cy0 / cos$1(y1)) / log$1(tany(y1) / tany(y0)),\n\t f = cy0 * pow$1(tany(y0), n) / n;\n\t\n\t if (!n) return mercatorRaw;\n\t\n\t function project(x, y) {\n\t if (f > 0) { if (y < -halfPi$3 + epsilon$4) y = -halfPi$3 + epsilon$4; }\n\t else { if (y > halfPi$3 - epsilon$4) y = halfPi$3 - epsilon$4; }\n\t var r = f / pow$1(tany(y), n);\n\t return [r * sin$1(n * x), f - r * cos$1(n * x)];\n\t }\n\t\n\t project.invert = function(x, y) {\n\t var fy = f - y, r = sign$1(n) * sqrt$1(x * x + fy * fy);\n\t return [atan2(x, fy) / n, 2 * atan(pow$1(f / r, 1 / n)) - halfPi$3];\n\t };\n\t\n\t return project;\n\t }\n\t\n\t function conicConformal() {\n\t return conicProjection(conicConformalRaw)\n\t .scale(109.5)\n\t .parallels([30, 30]);\n\t }\n\t\n\t function equirectangularRaw(lambda, phi) {\n\t return [lambda, phi];\n\t }\n\t\n\t equirectangularRaw.invert = equirectangularRaw;\n\t\n\t function equirectangular() {\n\t return projection(equirectangularRaw)\n\t .scale(152.63);\n\t }\n\t\n\t function conicEquidistantRaw(y0, y1) {\n\t var cy0 = cos$1(y0),\n\t n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0),\n\t g = cy0 / n + y0;\n\t\n\t if (abs(n) < epsilon$4) return equirectangularRaw;\n\t\n\t function project(x, y) {\n\t var gy = g - y, nx = n * x;\n\t return [gy * sin$1(nx), g - gy * cos$1(nx)];\n\t }\n\t\n\t project.invert = function(x, y) {\n\t var gy = g - y;\n\t return [atan2(x, gy) / n, g - sign$1(n) * sqrt$1(x * x + gy * gy)];\n\t };\n\t\n\t return project;\n\t }\n\t\n\t function conicEquidistant() {\n\t return conicProjection(conicEquidistantRaw)\n\t .scale(131.154)\n\t .center([0, 13.9389]);\n\t }\n\t\n\t function gnomonicRaw(x, y) {\n\t var cy = cos$1(y), k = cos$1(x) * cy;\n\t return [cy * sin$1(x) / k, sin$1(y) / k];\n\t }\n\t\n\t gnomonicRaw.invert = azimuthalInvert(atan);\n\t\n\t function gnomonic() {\n\t return projection(gnomonicRaw)\n\t .scale(144.049)\n\t .clipAngle(60);\n\t }\n\t\n\t function orthographicRaw(x, y) {\n\t return [cos$1(y) * sin$1(x), sin$1(y)];\n\t }\n\t\n\t orthographicRaw.invert = azimuthalInvert(asin$1);\n\t\n\t function orthographic() {\n\t return projection(orthographicRaw)\n\t .scale(249.5)\n\t .clipAngle(90 + epsilon$4);\n\t }\n\t\n\t function stereographicRaw(x, y) {\n\t var cy = cos$1(y), k = 1 + cos$1(x) * cy;\n\t return [cy * sin$1(x) / k, sin$1(y) / k];\n\t }\n\t\n\t stereographicRaw.invert = azimuthalInvert(function(z) {\n\t return 2 + atan(z);\n\t });\n\t\n\t function stereographic() {\n\t return projection(stereographicRaw)\n\t .scale(250)\n\t .clipAngle(142);\n\t }\n\t\n\t function transverseMercatorRaw(lambda, phi) {\n\t return [log$1(tan((halfPi$3 + phi) / 2)), -lambda];\n\t }\n\t\n\t transverseMercatorRaw.invert = function(x, y) {\n\t return [-y, 2 * atan(exp(x)) - halfPi$3];\n\t };\n\t\n\t function transverseMercator() {\n\t var m = mercatorProjection(transverseMercatorRaw),\n\t center = m.center,\n\t rotate = m.rotate;\n\t\n\t m.center = function(_) {\n\t return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n\t };\n\t\n\t m.rotate = function(_) {\n\t return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n\t };\n\t\n\t return rotate([0, 0, 90])\n\t .scale(159.155);\n\t }\n\t\n\t exports.version = version;\n\t exports.bisect = bisectRight;\n\t exports.bisectRight = bisectRight;\n\t exports.bisectLeft = bisectLeft;\n\t exports.ascending = ascending;\n\t exports.bisector = bisector;\n\t exports.descending = descending;\n\t exports.deviation = deviation;\n\t exports.extent = extent;\n\t exports.histogram = histogram;\n\t exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n\t exports.thresholdScott = scott;\n\t exports.thresholdSturges = sturges;\n\t exports.max = max;\n\t exports.mean = mean;\n\t exports.median = median;\n\t exports.merge = merge;\n\t exports.min = min;\n\t exports.pairs = pairs;\n\t exports.permute = permute;\n\t exports.quantile = threshold;\n\t exports.range = range;\n\t exports.scan = scan;\n\t exports.shuffle = shuffle;\n\t exports.sum = sum;\n\t exports.ticks = ticks;\n\t exports.tickStep = tickStep;\n\t exports.transpose = transpose;\n\t exports.variance = variance;\n\t exports.zip = zip;\n\t exports.entries = entries;\n\t exports.keys = keys;\n\t exports.values = values;\n\t exports.map = map$1;\n\t exports.set = set;\n\t exports.nest = nest;\n\t exports.randomUniform = uniform;\n\t exports.randomNormal = normal;\n\t exports.randomLogNormal = logNormal;\n\t exports.randomBates = bates;\n\t exports.randomIrwinHall = irwinHall;\n\t exports.randomExponential = exponential;\n\t exports.easeLinear = linear;\n\t exports.easeQuad = quadInOut;\n\t exports.easeQuadIn = quadIn;\n\t exports.easeQuadOut = quadOut;\n\t exports.easeQuadInOut = quadInOut;\n\t exports.easeCubic = easeCubicInOut;\n\t exports.easeCubicIn = cubicIn;\n\t exports.easeCubicOut = cubicOut;\n\t exports.easeCubicInOut = easeCubicInOut;\n\t exports.easePoly = polyInOut;\n\t exports.easePolyIn = polyIn;\n\t exports.easePolyOut = polyOut;\n\t exports.easePolyInOut = polyInOut;\n\t exports.easeSin = sinInOut;\n\t exports.easeSinIn = sinIn;\n\t exports.easeSinOut = sinOut;\n\t exports.easeSinInOut = sinInOut;\n\t exports.easeExp = expInOut;\n\t exports.easeExpIn = expIn;\n\t exports.easeExpOut = expOut;\n\t exports.easeExpInOut = expInOut;\n\t exports.easeCircle = circleInOut;\n\t exports.easeCircleIn = circleIn;\n\t exports.easeCircleOut = circleOut;\n\t exports.easeCircleInOut = circleInOut;\n\t exports.easeBounce = bounceOut;\n\t exports.easeBounceIn = bounceIn;\n\t exports.easeBounceOut = bounceOut;\n\t exports.easeBounceInOut = bounceInOut;\n\t exports.easeBack = backInOut;\n\t exports.easeBackIn = backIn;\n\t exports.easeBackOut = backOut;\n\t exports.easeBackInOut = backInOut;\n\t exports.easeElastic = elasticOut;\n\t exports.easeElasticIn = elasticIn;\n\t exports.easeElasticOut = elasticOut;\n\t exports.easeElasticInOut = elasticInOut;\n\t exports.polygonArea = area;\n\t exports.polygonCentroid = centroid;\n\t exports.polygonHull = hull;\n\t exports.polygonContains = contains;\n\t exports.polygonLength = length$1;\n\t exports.path = path;\n\t exports.quadtree = quadtree;\n\t exports.queue = queue;\n\t exports.arc = arc;\n\t exports.area = area$1;\n\t exports.line = line;\n\t exports.pie = pie;\n\t exports.radialArea = radialArea;\n\t exports.radialLine = radialLine$1;\n\t exports.symbol = symbol;\n\t exports.symbols = symbols;\n\t exports.symbolCircle = circle;\n\t exports.symbolCross = cross$1;\n\t exports.symbolDiamond = diamond;\n\t exports.symbolSquare = square;\n\t exports.symbolStar = star;\n\t exports.symbolTriangle = triangle;\n\t exports.symbolWye = wye;\n\t exports.curveBasisClosed = basisClosed;\n\t exports.curveBasisOpen = basisOpen;\n\t exports.curveBasis = basis;\n\t exports.curveBundle = bundle;\n\t exports.curveCardinalClosed = cardinalClosed;\n\t exports.curveCardinalOpen = cardinalOpen;\n\t exports.curveCardinal = cardinal;\n\t exports.curveCatmullRomClosed = catmullRomClosed;\n\t exports.curveCatmullRomOpen = catmullRomOpen;\n\t exports.curveCatmullRom = catmullRom;\n\t exports.curveLinearClosed = linearClosed;\n\t exports.curveLinear = curveLinear;\n\t exports.curveMonotoneX = monotoneX;\n\t exports.curveMonotoneY = monotoneY;\n\t exports.curveNatural = natural;\n\t exports.curveStep = step;\n\t exports.curveStepAfter = stepAfter;\n\t exports.curveStepBefore = stepBefore;\n\t exports.stack = stack;\n\t exports.stackOffsetExpand = expand;\n\t exports.stackOffsetNone = none;\n\t exports.stackOffsetSilhouette = silhouette;\n\t exports.stackOffsetWiggle = wiggle;\n\t exports.stackOrderAscending = ascending$1;\n\t exports.stackOrderDescending = descending$2;\n\t exports.stackOrderInsideOut = insideOut;\n\t exports.stackOrderNone = none$1;\n\t exports.stackOrderReverse = reverse;\n\t exports.color = color;\n\t exports.rgb = colorRgb;\n\t exports.hsl = colorHsl;\n\t exports.lab = lab;\n\t exports.hcl = colorHcl;\n\t exports.cubehelix = cubehelix;\n\t exports.interpolate = interpolate;\n\t exports.interpolateArray = array$1;\n\t exports.interpolateDate = date;\n\t exports.interpolateNumber = interpolateNumber;\n\t exports.interpolateObject = object;\n\t exports.interpolateRound = interpolateRound;\n\t exports.interpolateString = interpolateString;\n\t exports.interpolateTransformCss = interpolateTransform$1;\n\t exports.interpolateTransformSvg = interpolateTransform$2;\n\t exports.interpolateZoom = interpolateZoom;\n\t exports.interpolateRgb = interpolateRgb;\n\t exports.interpolateRgbBasis = rgbBasis;\n\t exports.interpolateRgbBasisClosed = rgbBasisClosed;\n\t exports.interpolateHsl = hsl$1;\n\t exports.interpolateHslLong = hslLong;\n\t exports.interpolateLab = lab$1;\n\t exports.interpolateHcl = hcl$1;\n\t exports.interpolateHclLong = hclLong;\n\t exports.interpolateCubehelix = cubehelix$2;\n\t exports.interpolateCubehelixLong = interpolateCubehelixLong;\n\t exports.interpolateBasis = basis$2;\n\t exports.interpolateBasisClosed = basisClosed$1;\n\t exports.quantize = quantize;\n\t exports.dispatch = dispatch;\n\t exports.dsvFormat = dsv;\n\t exports.csvParse = csvParse;\n\t exports.csvParseRows = csvParseRows;\n\t exports.csvFormat = csvFormat;\n\t exports.csvFormatRows = csvFormatRows;\n\t exports.tsvParse = tsvParse;\n\t exports.tsvParseRows = tsvParseRows;\n\t exports.tsvFormat = tsvFormat;\n\t exports.tsvFormatRows = tsvFormatRows;\n\t exports.request = request;\n\t exports.html = html;\n\t exports.json = json;\n\t exports.text = text;\n\t exports.xml = xml;\n\t exports.csv = csv$1;\n\t exports.tsv = tsv$1;\n\t exports.now = now;\n\t exports.timer = timer;\n\t exports.timerFlush = timerFlush;\n\t exports.timeout = timeout$1;\n\t exports.interval = interval$1;\n\t exports.timeInterval = newInterval;\n\t exports.timeMillisecond = millisecond;\n\t exports.timeMilliseconds = milliseconds;\n\t exports.timeSecond = second;\n\t exports.timeSeconds = seconds;\n\t exports.timeMinute = minute;\n\t exports.timeMinutes = minutes;\n\t exports.timeHour = hour;\n\t exports.timeHours = hours;\n\t exports.timeDay = day;\n\t exports.timeDays = days;\n\t exports.timeWeek = timeWeek;\n\t exports.timeWeeks = sundays;\n\t exports.timeSunday = timeWeek;\n\t exports.timeSundays = sundays;\n\t exports.timeMonday = timeMonday;\n\t exports.timeMondays = mondays;\n\t exports.timeTuesday = tuesday;\n\t exports.timeTuesdays = tuesdays;\n\t exports.timeWednesday = wednesday;\n\t exports.timeWednesdays = wednesdays;\n\t exports.timeThursday = thursday;\n\t exports.timeThursdays = thursdays;\n\t exports.timeFriday = friday;\n\t exports.timeFridays = fridays;\n\t exports.timeSaturday = saturday;\n\t exports.timeSaturdays = saturdays;\n\t exports.timeMonth = month;\n\t exports.timeMonths = months;\n\t exports.timeYear = year;\n\t exports.timeYears = years;\n\t exports.utcMillisecond = millisecond;\n\t exports.utcMilliseconds = milliseconds;\n\t exports.utcSecond = second;\n\t exports.utcSeconds = seconds;\n\t exports.utcMinute = utcMinute;\n\t exports.utcMinutes = utcMinutes;\n\t exports.utcHour = utcHour;\n\t exports.utcHours = utcHours;\n\t exports.utcDay = utcDay;\n\t exports.utcDays = utcDays;\n\t exports.utcWeek = utcWeek;\n\t exports.utcWeeks = utcSundays;\n\t exports.utcSunday = utcWeek;\n\t exports.utcSundays = utcSundays;\n\t exports.utcMonday = utcMonday;\n\t exports.utcMondays = utcMondays;\n\t exports.utcTuesday = utcTuesday;\n\t exports.utcTuesdays = utcTuesdays;\n\t exports.utcWednesday = utcWednesday;\n\t exports.utcWednesdays = utcWednesdays;\n\t exports.utcThursday = utcThursday;\n\t exports.utcThursdays = utcThursdays;\n\t exports.utcFriday = utcFriday;\n\t exports.utcFridays = utcFridays;\n\t exports.utcSaturday = utcSaturday;\n\t exports.utcSaturdays = utcSaturdays;\n\t exports.utcMonth = utcMonth;\n\t exports.utcMonths = utcMonths;\n\t exports.utcYear = utcYear;\n\t exports.utcYears = utcYears;\n\t exports.formatLocale = formatLocale;\n\t exports.formatDefaultLocale = defaultLocale;\n\t exports.formatSpecifier = formatSpecifier;\n\t exports.precisionFixed = precisionFixed;\n\t exports.precisionPrefix = precisionPrefix;\n\t exports.precisionRound = precisionRound;\n\t exports.isoFormat = formatIso;\n\t exports.isoParse = parseIso;\n\t exports.timeFormatLocale = formatLocale$1;\n\t exports.timeFormatDefaultLocale = defaultLocale$1;\n\t exports.scaleBand = band;\n\t exports.scalePoint = point$4;\n\t exports.scaleIdentity = identity$4;\n\t exports.scaleLinear = linear$2;\n\t exports.scaleLog = log;\n\t exports.scaleOrdinal = ordinal;\n\t exports.scaleImplicit = implicit;\n\t exports.scalePow = pow;\n\t exports.scaleSqrt = sqrt;\n\t exports.scaleQuantile = quantile;\n\t exports.scaleQuantize = quantize$1;\n\t exports.scaleThreshold = threshold$1;\n\t exports.scaleTime = time;\n\t exports.scaleUtc = utcTime;\n\t exports.schemeCategory10 = category10;\n\t exports.schemeCategory20b = category20b;\n\t exports.schemeCategory20c = category20c;\n\t exports.schemeCategory20 = category20;\n\t exports.scaleSequential = sequential;\n\t exports.interpolateCubehelixDefault = cubehelix$3;\n\t exports.interpolateRainbow = rainbow$1;\n\t exports.interpolateWarm = warm;\n\t exports.interpolateCool = cool;\n\t exports.interpolateViridis = viridis;\n\t exports.interpolateMagma = magma;\n\t exports.interpolateInferno = inferno;\n\t exports.interpolatePlasma = plasma;\n\t exports.creator = creator;\n\t exports.customEvent = customEvent;\n\t exports.local = local;\n\t exports.matcher = matcher$1;\n\t exports.mouse = mouse;\n\t exports.namespace = namespace;\n\t exports.namespaces = namespaces;\n\t exports.select = select;\n\t exports.selectAll = selectAll;\n\t exports.selection = selection;\n\t exports.selector = selector;\n\t exports.selectorAll = selectorAll;\n\t exports.touch = touch;\n\t exports.touches = touches;\n\t exports.window = window;\n\t exports.active = active;\n\t exports.interrupt = interrupt;\n\t exports.transition = transition;\n\t exports.axisTop = axisTop;\n\t exports.axisRight = axisRight;\n\t exports.axisBottom = axisBottom;\n\t exports.axisLeft = axisLeft;\n\t exports.cluster = cluster;\n\t exports.hierarchy = hierarchy;\n\t exports.pack = index;\n\t exports.packSiblings = siblings;\n\t exports.packEnclose = enclose;\n\t exports.partition = partition;\n\t exports.stratify = stratify;\n\t exports.tree = tree;\n\t exports.treemap = index$1;\n\t exports.treemapBinary = binary;\n\t exports.treemapDice = treemapDice;\n\t exports.treemapSlice = treemapSlice;\n\t exports.treemapSliceDice = sliceDice;\n\t exports.treemapSquarify = squarify;\n\t exports.treemapResquarify = resquarify;\n\t exports.forceCenter = center$1;\n\t exports.forceCollide = collide;\n\t exports.forceLink = link;\n\t exports.forceManyBody = manyBody;\n\t exports.forceSimulation = simulation;\n\t exports.forceX = x$3;\n\t exports.forceY = y$3;\n\t exports.drag = drag;\n\t exports.dragDisable = dragDisable;\n\t exports.dragEnable = dragEnable;\n\t exports.voronoi = voronoi;\n\t exports.zoom = zoom;\n\t exports.zoomIdentity = identity$6;\n\t exports.zoomTransform = transform;\n\t exports.brush = brush;\n\t exports.brushX = brushX;\n\t exports.brushY = brushY;\n\t exports.brushSelection = brushSelection;\n\t exports.chord = chord;\n\t exports.ribbon = ribbon;\n\t exports.geoAlbers = albers;\n\t exports.geoAlbersUsa = albersUsa;\n\t exports.geoArea = area$2;\n\t exports.geoAzimuthalEqualArea = azimuthalEqualArea;\n\t exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw;\n\t exports.geoAzimuthalEquidistant = azimuthalEquidistant;\n\t exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw;\n\t exports.geoBounds = bounds;\n\t exports.geoCentroid = centroid$1;\n\t exports.geoCircle = circle$1;\n\t exports.geoClipExtent = extent$1;\n\t exports.geoConicConformal = conicConformal;\n\t exports.geoConicConformalRaw = conicConformalRaw;\n\t exports.geoConicEqualArea = conicEqualArea;\n\t exports.geoConicEqualAreaRaw = conicEqualAreaRaw;\n\t exports.geoConicEquidistant = conicEquidistant;\n\t exports.geoConicEquidistantRaw = conicEquidistantRaw;\n\t exports.geoDistance = distance;\n\t exports.geoEquirectangular = equirectangular;\n\t exports.geoEquirectangularRaw = equirectangularRaw;\n\t exports.geoGnomonic = gnomonic;\n\t exports.geoGnomonicRaw = gnomonicRaw;\n\t exports.geoGraticule = graticule;\n\t exports.geoInterpolate = interpolate$2;\n\t exports.geoLength = length$2;\n\t exports.geoMercator = mercator;\n\t exports.geoMercatorRaw = mercatorRaw;\n\t exports.geoOrthographic = orthographic;\n\t exports.geoOrthographicRaw = orthographicRaw;\n\t exports.geoPath = index$3;\n\t exports.geoProjection = projection;\n\t exports.geoProjectionMutator = projectionMutator;\n\t exports.geoRotation = rotation;\n\t exports.geoStereographic = stereographic;\n\t exports.geoStereographicRaw = stereographicRaw;\n\t exports.geoStream = geoStream;\n\t exports.geoTransform = transform$1;\n\t exports.geoTransverseMercator = transverseMercator;\n\t exports.geoTransverseMercatorRaw = transverseMercatorRaw;\n\t\n\t Object.defineProperty(exports, '__esModule', { value: true });\n\t\n\t}));\n\n/***/ },\n/* 157 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar ResponsiveComponentsManager_1 = __webpack_require__(137);\n\tvar ResponsiveComponentsUtils_1 = __webpack_require__(141);\n\tvar Component_1 = __webpack_require__(109);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Facet_1 = __webpack_require__(158);\n\tvar FacetSlider_1 = __webpack_require__(146);\n\tvar ResponsiveDropdown_1 = __webpack_require__(145);\n\tvar ResponsiveDropdownContent_1 = __webpack_require__(143);\n\tvar ResponsiveDropdownHeader_1 = __webpack_require__(144);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar ResponsiveComponents_1 = __webpack_require__(19);\n\tvar _ = __webpack_require__(16);\n\tvar ResponsiveFacets = (function () {\n\t function ResponsiveFacets(coveoRoot, ID, options, responsiveDropdown) {\n\t this.coveoRoot = coveoRoot;\n\t this.ID = ID;\n\t this.facets = [];\n\t this.facetSliders = [];\n\t this.preservePositionOriginalValues = [];\n\t this.dropdownHeaderLabel = this.getDropdownHeaderLabel();\n\t this.dropdown = this.buildDropdown(responsiveDropdown);\n\t this.searchInterface = Component_1.Component.get(this.coveoRoot.el, SearchInterface_1.SearchInterface, false);\n\t this.bindDropdownContentEvents();\n\t this.registerOnOpenHandler();\n\t this.registerOnCloseHandler();\n\t this.registerQueryEvents();\n\t this.logger = new Logger_1.Logger(this);\n\t if (Utils_1.Utils.isNullOrUndefined(options.responsiveBreakpoint)) {\n\t this.breakpoint = this.searchInterface ? this.searchInterface.responsiveComponents.getMediumScreenWidth() : new ResponsiveComponents_1.ResponsiveComponents().getMediumScreenWidth();\n\t }\n\t else {\n\t this.breakpoint = options.responsiveBreakpoint;\n\t }\n\t }\n\t ResponsiveFacets.init = function (root, component, options) {\n\t if (!Dom_1.$$(root).find('.coveo-facet-column')) {\n\t var logger = new Logger_1.Logger('ResponsiveFacets');\n\t logger.info('No element with class coveo-facet-column. Responsive facets cannot be enabled');\n\t return;\n\t }\n\t ResponsiveComponentsManager_1.ResponsiveComponentsManager.register(ResponsiveFacets, Dom_1.$$(root), Facet_1.Facet.ID, component, options);\n\t };\n\t ResponsiveFacets.prototype.registerComponent = function (accept) {\n\t if (accept instanceof Facet_1.Facet) {\n\t this.facets.push(accept);\n\t this.preservePositionOriginalValues.push(accept.options.preservePosition);\n\t return true;\n\t }\n\t else if (accept instanceof FacetSlider_1.FacetSlider) {\n\t this.facetSliders.push(accept);\n\t return false;\n\t }\n\t return false;\n\t };\n\t ResponsiveFacets.prototype.needDropdownWrapper = function () {\n\t return this.needSmallMode();\n\t };\n\t ResponsiveFacets.prototype.handleResizeEvent = function () {\n\t if (this.needSmallMode() && !ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n\t this.changeToSmallMode();\n\t }\n\t else if (!this.needSmallMode() && ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n\t this.changeToLargeMode();\n\t }\n\t if (this.dropdown.isOpened) {\n\t this.dropdown.dropdownContent.positionDropdown();\n\t }\n\t };\n\t ResponsiveFacets.prototype.dismissFacetSearches = function () {\n\t _.each(this.facets, function (facet) {\n\t if (facet.facetSearch && facet.facetSearch.currentlyDisplayedResults) {\n\t facet.facetSearch.completelyDismissSearch();\n\t }\n\t });\n\t };\n\t ResponsiveFacets.prototype.drawFacetSliderGraphs = function () {\n\t _.each(this.facetSliders, function (facetSlider) { return facetSlider.drawDelayedGraphData(); });\n\t };\n\t ResponsiveFacets.prototype.needSmallMode = function () {\n\t return this.coveoRoot.width() <= this.breakpoint;\n\t };\n\t ResponsiveFacets.prototype.changeToSmallMode = function () {\n\t this.dropdown.close();\n\t this.disableFacetPreservePosition();\n\t Dom_1.$$(this.coveoRoot.find(\".\" + ResponsiveComponentsManager_1.ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS)).append(this.dropdown.dropdownHeader.element.el);\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.activateSmallFacet(this.coveoRoot);\n\t };\n\t ResponsiveFacets.prototype.changeToLargeMode = function () {\n\t this.restoreFacetPreservePositionValue();\n\t this.dropdown.cleanUp();\n\t ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.deactivateSmallFacet(this.coveoRoot);\n\t };\n\t ResponsiveFacets.prototype.buildDropdown = function (responsiveDropdown) {\n\t var dropdownContent = this.buildDropdownContent();\n\t var dropdownHeader = this.buildDropdownHeader();\n\t var dropdown = responsiveDropdown ? responsiveDropdown : new ResponsiveDropdown_1.ResponsiveDropdown(dropdownContent, dropdownHeader, this.coveoRoot);\n\t return dropdown;\n\t };\n\t ResponsiveFacets.prototype.buildDropdownContent = function () {\n\t var dropdownContentElement = Dom_1.$$(this.coveoRoot.find('.coveo-facet-column'));\n\t var filterByContainer = Dom_1.$$('div', { className: 'coveo-facet-header-filter-by-container', style: 'display: none' });\n\t var filterBy = Dom_1.$$('div', { className: 'coveo-facet-header-filter-by' });\n\t filterBy.text(Strings_1.l('Filter by:'));\n\t filterByContainer.append(filterBy.el);\n\t dropdownContentElement.prepend(filterByContainer.el);\n\t var dropdownContent = new ResponsiveDropdownContent_1.ResponsiveDropdownContent('facet', dropdownContentElement, this.coveoRoot, ResponsiveFacets.DROPDOWN_MIN_WIDTH, ResponsiveFacets.DROPDOWN_WIDTH_RATIO);\n\t return dropdownContent;\n\t };\n\t ResponsiveFacets.prototype.buildDropdownHeader = function () {\n\t var dropdownHeaderElement = Dom_1.$$('a');\n\t var content = Dom_1.$$('p');\n\t content.text(this.dropdownHeaderLabel);\n\t dropdownHeaderElement.el.appendChild(content.el);\n\t var dropdownHeader = new ResponsiveDropdownHeader_1.ResponsiveDropdownHeader('facet', dropdownHeaderElement);\n\t return dropdownHeader;\n\t };\n\t ResponsiveFacets.prototype.registerOnOpenHandler = function () {\n\t this.dropdown.registerOnOpenHandler(this.drawFacetSliderGraphs, this);\n\t };\n\t ResponsiveFacets.prototype.registerOnCloseHandler = function () {\n\t this.dropdown.registerOnCloseHandler(this.dismissFacetSearches, this);\n\t };\n\t ResponsiveFacets.prototype.registerQueryEvents = function () {\n\t var _this = this;\n\t this.coveoRoot.on(QueryEvents_1.QueryEvents.noResults, function () { return _this.handleNoResults(); });\n\t this.coveoRoot.on(QueryEvents_1.QueryEvents.querySuccess, function (e, data) { return _this.handleQuerySuccess(data); });\n\t this.coveoRoot.on(QueryEvents_1.QueryEvents.queryError, function () { return _this.handleQueryError(); });\n\t };\n\t ResponsiveFacets.prototype.bindDropdownContentEvents = function () {\n\t var _this = this;\n\t this.dropdown.dropdownContent.element.on('scroll', _.debounce(function () {\n\t _.each(_this.facets, function (facet) {\n\t var facetSearch = facet.facetSearch;\n\t if (facetSearch && facetSearch.currentlyDisplayedResults && !_this.isFacetSearchScrolledIntoView(facetSearch.search)) {\n\t facet.facetSearch.positionSearchResults(_this.dropdown.dropdownContent.element.el);\n\t }\n\t else if (facetSearch && facet.facetSearch.currentlyDisplayedResults) {\n\t facet.facetSearch.positionSearchResults();\n\t }\n\t });\n\t }, ResponsiveFacets.DEBOUNCE_SCROLL_WAIT));\n\t };\n\t ResponsiveFacets.prototype.restoreFacetPreservePositionValue = function () {\n\t var _this = this;\n\t _.each(this.facets, function (facet, index) { return facet.options.preservePosition = _this.preservePositionOriginalValues[index]; });\n\t };\n\t ResponsiveFacets.prototype.disableFacetPreservePosition = function () {\n\t _.each(this.facets, function (facet) { return facet.options.preservePosition = false; });\n\t };\n\t ResponsiveFacets.prototype.isFacetSearchScrolledIntoView = function (facetSearchElement) {\n\t var facetTop = facetSearchElement.getBoundingClientRect().top;\n\t var facetBottom = facetSearchElement.getBoundingClientRect().bottom;\n\t var dropdownTop = this.dropdown.dropdownContent.element.el.getBoundingClientRect().top;\n\t var dropdownBottom = this.dropdown.dropdownContent.element.el.getBoundingClientRect().bottom;\n\t dropdownTop = dropdownTop >= 0 ? dropdownTop : 0;\n\t return (facetTop >= dropdownTop) && (facetBottom <= dropdownBottom);\n\t };\n\t ResponsiveFacets.prototype.getDropdownHeaderLabel = function () {\n\t var dropdownHeaderLabel;\n\t var selector = \".\" + Component_1.Component.computeCssClassName(Facet_1.Facet) + \", .\" + Component_1.Component.computeCssClassName(FacetSlider_1.FacetSlider);\n\t _.each(Dom_1.$$(this.coveoRoot.find('.coveo-facet-column')).findAll(selector), function (facetElement) {\n\t var facet;\n\t if (Dom_1.$$(facetElement).hasClass(Component_1.Component.computeCssClassName(Facet_1.Facet))) {\n\t facet = Component_1.Component.get(facetElement, Facet_1.Facet);\n\t }\n\t else {\n\t facet = Component_1.Component.get(facetElement, FacetSlider_1.FacetSlider);\n\t }\n\t if (!dropdownHeaderLabel && facet.options.dropdownHeaderLabel) {\n\t dropdownHeaderLabel = facet.options.dropdownHeaderLabel;\n\t }\n\t });\n\t if (!dropdownHeaderLabel) {\n\t dropdownHeaderLabel = Strings_1.l(ResponsiveFacets.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE);\n\t }\n\t return dropdownHeaderLabel;\n\t };\n\t ResponsiveFacets.prototype.handleNoResults = function () {\n\t this.dropdown.dropdownHeader.hide();\n\t };\n\t ResponsiveFacets.prototype.handleQueryError = function () {\n\t this.dropdown.dropdownHeader.hide();\n\t };\n\t ResponsiveFacets.prototype.handleQuerySuccess = function (data) {\n\t if (data.results.totalCount === 0) {\n\t this.dropdown.dropdownHeader.hide();\n\t }\n\t else {\n\t this.dropdown.dropdownHeader.show();\n\t }\n\t };\n\t return ResponsiveFacets;\n\t}());\n\tResponsiveFacets.DEBOUNCE_SCROLL_WAIT = 250;\n\tResponsiveFacets.DROPDOWN_MIN_WIDTH = 280;\n\tResponsiveFacets.DROPDOWN_WIDTH_RATIO = 0.35; // Used to set the width relative to the coveo root.\n\tResponsiveFacets.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE = 'Filters';\n\texports.ResponsiveFacets = ResponsiveFacets;\n\n\n/***/ },\n/* 158 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t/// \n\t/// \n\t/// \n\t/// \n\t/// \n\t/// \n\t/// \n\t/// \n\t/// \n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar FacetValues_1 = __webpack_require__(159);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar FacetQueryController_1 = __webpack_require__(93);\n\tvar FacetSearch_1 = __webpack_require__(160);\n\tvar FacetSettings_1 = __webpack_require__(165);\n\tvar FacetSort_1 = __webpack_require__(166);\n\tvar FacetValuesList_1 = __webpack_require__(167);\n\tvar FacetHeader_1 = __webpack_require__(168);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar BreadcrumbValueElement_1 = __webpack_require__(169);\n\tvar BreadcrumbValuesList_1 = __webpack_require__(170);\n\tvar FacetValueElement_1 = __webpack_require__(161);\n\tvar FacetSearchValuesList_1 = __webpack_require__(171);\n\tvar Defer_1 = __webpack_require__(34);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar Model_1 = __webpack_require__(100);\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar OmniboxValueElement_1 = __webpack_require__(172);\n\tvar OmniboxValuesList_1 = __webpack_require__(173);\n\tvar ValueElementRenderer_1 = __webpack_require__(163);\n\tvar FacetSearchParameters_1 = __webpack_require__(94);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar BreadcrumbEvents_1 = __webpack_require__(44);\n\tvar ResponsiveFacets_1 = __webpack_require__(157);\n\tvar KeyboardUtils_1 = __webpack_require__(70);\n\tvar FacetValuesOrder_1 = __webpack_require__(164);\n\tvar SearchAlertEvents_1 = __webpack_require__(53);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The Facet component displays a *facet* of the results for the current query. A facet consists of a list of values for\n\t * a given field occurring in the results, ordered using a configurable criteria.\n\t *\n\t * The list of values is obtained using an {@link IGroupByRequest} operation performed at the same time as the main\n\t * query.\n\t *\n\t * The Facet component allows the user to drill down inside results by restricting them to certain field values. It also\n\t * allows filtering out values from the Facet itself, and can provide a search box to look for specific values inside\n\t * larger sets.\n\t *\n\t * This is probably the most complex component in the Coveo JavaScript Search Framework and as such, it allows for many\n\t * different configuration options.\n\t *\n\t * See also {@link FacetRange} and {@link HierarchicalFacet} (which extend this component), and {@link FacetSlider}\n\t * (which does not properly extend this component, but is very similar).\n\t */\n\tvar Facet = (function (_super) {\n\t __extends(Facet, _super);\n\t /**\n\t * Creates a new Facet component. Binds multiple query events as well.\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the Facet component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t * @param facetClassId The ID to use for this facet (as Facet inherited from by other component\n\t * (e.g.: {@link FacetRange}). Default value is `Facet`.\n\t */\n\t function Facet(element, options, bindings, facetClassId) {\n\t if (facetClassId === void 0) { facetClassId = Facet.ID; }\n\t var _this = _super.call(this, element, facetClassId, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.keepDisplayedValuesNextTime = false;\n\t _this.values = new FacetValues_1.FacetValues();\n\t _this.currentPage = 0;\n\t _this.firstQuery = true;\n\t _this.canFetchMore = true;\n\t _this.showingWaitAnimation = false;\n\t _this.listenToQueryStateChange = true;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Facet, options);\n\t if (_this.options.valueCaption != null) {\n\t _this.options.availableSorts = _.filter(_this.options.availableSorts, function (sort) { return !/^alpha.*$/.test(sort); });\n\t }\n\t ResponsiveFacets_1.ResponsiveFacets.init(_this.root, _this, _this.options);\n\t // Serves as a way to render facet in the omnibox in the order in which they are instantiated\n\t _this.omniboxZIndex = Facet.omniboxIndex;\n\t Facet.omniboxIndex--;\n\t _this.checkForComputedFieldAndSort();\n\t _this.checkForValueCaptionType();\n\t _this.checkForCustomSort();\n\t _this.initFacetQueryController();\n\t _this.initQueryEvents();\n\t _this.initQueryStateEvents();\n\t _this.initComponentStateEvents();\n\t _this.initOmniboxEvents();\n\t _this.initBreadCrumbEvents();\n\t _this.initSearchAlertEvents();\n\t _this.updateNumberOfValues();\n\t _this.resize = function () {\n\t if (!_this.disabled) {\n\t FacetUtils_1.FacetUtils.clipCaptionsToAvoidOverflowingTheirContainer(_this);\n\t }\n\t };\n\t window.addEventListener('resize', _.debounce(_this.resize, 200));\n\t _this.bind.onRootElement(InitializationEvents_1.InitializationEvents.nuke, function () { return _this.handleNuke(); });\n\t _this.bind.oneRootElement(QueryEvents_1.QueryEvents.querySuccess, function () {\n\t _this.firstQuery = false;\n\t });\n\t return _this;\n\t }\n\t Facet.prototype.createDom = function () {\n\t var _this = this;\n\t this.initBottomAndTopSpacer();\n\t this.buildFacetContent();\n\t this.updateAppearanceDependingOnState();\n\t // After the facet has been created (and before the first query is applied)\n\t // Try to load a state from the setting, if it's available\n\t // Execute only _.once (only the first query, or the first time the user switch to a tab that contains a newly set of active facet)\n\t if (this.facetSettings && this.options.enableSettingsFacetState) {\n\t var loadOnce = _.once(function () {\n\t _this.facetSettings.loadSavedState.apply(_this.facetSettings);\n\t });\n\t this.bind.onRootElement(QueryEvents_1.QueryEvents.newQuery, loadOnce);\n\t }\n\t };\n\t Facet.prototype.selectValue = function (value) {\n\t Assert_1.Assert.exists(value);\n\t this.ensureDom();\n\t this.logger.info('Selecting facet value', this.facetValuesList.select(value));\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.selectMultipleValues = function (values) {\n\t var _this = this;\n\t Assert_1.Assert.exists(values);\n\t this.ensureDom();\n\t _.each(values, function (value) {\n\t _this.logger.info('Selecting facet value', _this.facetValuesList.select(value));\n\t });\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.deselectValue = function (value) {\n\t Assert_1.Assert.exists(value);\n\t this.ensureDom();\n\t this.logger.info('Deselecting facet value', this.facetValuesList.unselect(value));\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.deselectMultipleValues = function (values) {\n\t var _this = this;\n\t Assert_1.Assert.exists(values);\n\t this.ensureDom();\n\t _.each(values, function (value) {\n\t _this.logger.info('Deselecting facet value', _this.facetValuesList.unselect(value));\n\t });\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.excludeValue = function (value) {\n\t Assert_1.Assert.exists(value);\n\t this.ensureDom();\n\t this.logger.info('Excluding facet value', this.facetValuesList.exclude(value));\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.excludeMultipleValues = function (values) {\n\t var _this = this;\n\t Assert_1.Assert.exists(values);\n\t this.ensureDom();\n\t _.each(values, function (value) {\n\t _this.logger.info('Excluding facet value', _this.facetValuesList.exclude(value));\n\t });\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.unexcludeValue = function (value) {\n\t Assert_1.Assert.exists(value);\n\t this.ensureDom();\n\t this.logger.info('Unexcluding facet value', this.facetValuesList.unExclude(value));\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.unexcludeMultipleValues = function (values) {\n\t var _this = this;\n\t Assert_1.Assert.exists(values);\n\t this.ensureDom();\n\t _.each(values, function (value) {\n\t _this.logger.info('Unexcluding facet value', _this.facetValuesList.unExclude(value));\n\t });\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.toggleSelectValue = function (value) {\n\t Assert_1.Assert.exists(value);\n\t this.ensureDom();\n\t this.logger.info('Toggle select facet value', this.facetValuesList.toggleSelect(value));\n\t this.facetValueHasChanged();\n\t };\n\t Facet.prototype.toggleExcludeValue = function (value) {\n\t Assert_1.Assert.exists(value);\n\t this.ensureDom();\n\t this.logger.info('Toggle exclude facet value', this.facetValuesList.toggleExclude(value));\n\t this.facetValueHasChanged();\n\t };\n\t /**\n\t * Returns the currently displayed values as a string array.\n\t *\n\t * @returns {any[]} The currently displayed values.\n\t */\n\t Facet.prototype.getDisplayedValues = function () {\n\t return _.pluck(this.getDisplayedFacetValues(), 'value');\n\t };\n\t /**\n\t * Returns the currently displayed values as an array of {@link FacetValue}.\n\t *\n\t * @returns {T[]} The currently displayed values.\n\t */\n\t Facet.prototype.getDisplayedFacetValues = function () {\n\t this.ensureDom();\n\t var displayed = this.facetValuesList.getAllCurrentlyDisplayed();\n\t return _.map(displayed, function (value) {\n\t return value.facetValue;\n\t });\n\t };\n\t /**\n\t * Returns the currently selected values as an array of string.\n\t * @returns {string[]} The currently selected values.\n\t */\n\t Facet.prototype.getSelectedValues = function () {\n\t this.ensureDom();\n\t return _.map(this.values.getSelected(), function (value) { return value.value; });\n\t };\n\t /**\n\t * Returns the currently excluded values as an array of string.\n\t * @returns {string[]} The currently excluded values.\n\t */\n\t Facet.prototype.getExcludedValues = function () {\n\t this.ensureDom();\n\t return _.map(this.values.getExcluded(), function (value) { return value.value; });\n\t };\n\t /**\n\t * Resets the Facet by un-selecting all values, une-xcluding all values, and redrawing the Facet.\n\t */\n\t Facet.prototype.reset = function () {\n\t this.ensureDom();\n\t this.values.reset();\n\t this.rebuildValueElements();\n\t this.updateAppearanceDependingOnState();\n\t this.updateQueryStateModel();\n\t };\n\t /**\n\t * Switches the Facet to `AND` mode.\n\t *\n\t * See {@link Facet.options.useAnd} and {@link Facet.options.enableTogglingOperator}.\n\t */\n\t Facet.prototype.switchToAnd = function () {\n\t this.ensureDom();\n\t this.logger.info('Switching to AND');\n\t this.facetHeader.switchToAnd();\n\t };\n\t /**\n\t * Switches the Facet to `OR` mode.\n\t *\n\t * See {@link Facet.options.useAnd} and {@link Facet.options.enableTogglingOperator}.\n\t */\n\t Facet.prototype.switchToOr = function () {\n\t this.ensureDom();\n\t this.logger.info('Switching to OR');\n\t this.facetHeader.switchToOr();\n\t };\n\t /**\n\t * Returns the endpoint for the Facet.\n\t * @returns {ISearchEndpoint} The endpoint for the Facet.\n\t */\n\t Facet.prototype.getEndpoint = function () {\n\t return this.queryController.getEndpoint();\n\t };\n\t /**\n\t * Changes the sort parameter for the Facet.\n\t *\n\t * See {@link Facet.options.availableSorts} for the list of possible values.\n\t *\n\t * Also triggers a new query.\n\t *\n\t * @param criteria The new sort parameter for the Facet.\n\t */\n\t Facet.prototype.updateSort = function (criteria) {\n\t this.ensureDom();\n\t if (this.options.sortCriteria != criteria) {\n\t this.options.sortCriteria = criteria;\n\t this.triggerNewQuery();\n\t }\n\t };\n\t Facet.prototype.unfadeInactiveValuesInMainList = function () {\n\t Dom_1.$$(this.element).removeClass('coveo-facet-fade');\n\t };\n\t Facet.prototype.fadeInactiveValuesInMainList = function (delay) {\n\t Dom_1.$$(this.element).addClass('coveo-facet-fade');\n\t };\n\t /**\n\t * Shows a waiting animation in the Facet header (a spinner).\n\t */\n\t Facet.prototype.showWaitingAnimation = function () {\n\t this.ensureDom();\n\t if (!this.showingWaitAnimation) {\n\t // in old design : icon before the facet title needs to be hidden to show animation\n\t // new design : no need to hide this icon since it's not there\n\t if (!this.searchInterface.isNewDesign()) {\n\t Dom_1.$$(this.headerElement).find('.coveo-icon').style.display = 'none';\n\t Dom_1.$$(this.headerElement).find('.coveo-facet-header-wait-animation').style.display = '';\n\t }\n\t else {\n\t Dom_1.$$(this.headerElement).find('.coveo-facet-header-wait-animation').style.visibility = 'visible';\n\t }\n\t this.showingWaitAnimation = true;\n\t }\n\t };\n\t /**\n\t * Hides the waiting animation in the Facet header.\n\t */\n\t Facet.prototype.hideWaitingAnimation = function () {\n\t this.ensureDom();\n\t if (this.showingWaitAnimation) {\n\t Dom_1.$$(this.headerElement).find('.coveo-icon').style.display = '';\n\t if (!this.searchInterface.isNewDesign()) {\n\t Dom_1.$$(this.headerElement).find('.coveo-facet-header-wait-animation').style.display = 'none';\n\t }\n\t else {\n\t Dom_1.$$(this.headerElement).find('.coveo-facet-header-wait-animation').style.visibility = 'hidden';\n\t }\n\t this.showingWaitAnimation = false;\n\t }\n\t };\n\t Facet.prototype.processFacetSearchAllResultsSelected = function (facetValues) {\n\t var _this = this;\n\t var valuesForAnalytics = [];\n\t _.each(facetValues, function (facetValue) {\n\t _this.ensureFacetValueIsInList(facetValue);\n\t valuesForAnalytics.push(facetValue.value);\n\t });\n\t // Calculate the correct number of values from the current selected/excluded values (those will stay no matter what next rendering)\n\t // add the new one that will be selected (and are not already selected in the facet)\n\t // The minimum number of values is the number of values set in the option\n\t var valuesThatStays = this.values.getSelected().concat(this.values.getExcluded());\n\t this.numberOfValues = valuesThatStays.length + _.difference(valuesThatStays, facetValues).length;\n\t this.numberOfValues = Math.max(this.numberOfValues, this.options.numberOfValues);\n\t // Then, we set current page as the last \"full\" page (math.floor)\n\t // This is so there is no additional values displayed requested to fill the current page\n\t // Also, when the user hit more, it will request the current page and fill it with more values\n\t this.currentPage = Math.floor((this.numberOfValues - this.options.numberOfValues) / this.options.pageSize);\n\t this.updateQueryStateModel();\n\t this.triggerNewQuery(function () { return _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetSelectAll, {\n\t facetId: _this.options.id,\n\t facetTitle: _this.options.title\n\t }); });\n\t };\n\t Facet.prototype.pinFacetPosition = function () {\n\t if (this.options.preservePosition) {\n\t this.pinnedViewportPosition = this.element.getBoundingClientRect().top;\n\t }\n\t };\n\t Facet.prototype.getValueCaption = function (facetValue) {\n\t Assert_1.Assert.exists(facetValue);\n\t var lookupValue = facetValue.lookupValue || facetValue.value;\n\t var ret = lookupValue;\n\t ret = FacetUtils_1.FacetUtils.tryToGetTranslatedCaption(this.options.field, lookupValue);\n\t if (Utils_1.Utils.exists(this.options.valueCaption)) {\n\t if (typeof this.options.valueCaption == 'object') {\n\t ret = this.options.valueCaption[lookupValue] || ret;\n\t }\n\t if (typeof this.options.valueCaption == 'function') {\n\t this.values.get(lookupValue);\n\t ret = this.options.valueCaption.call(this, this.facetValuesList.get(lookupValue).facetValue);\n\t }\n\t }\n\t return ret;\n\t };\n\t /**\n\t * Shows the next page of results in the Facet.\n\t *\n\t * Triggers a query if needed, or displays the already available values.\n\t */\n\t Facet.prototype.showMore = function () {\n\t this.currentPage++;\n\t this.updateNumberOfValues();\n\t if (this.nbAvailableValues >= this.numberOfValues || !this.canFetchMore) {\n\t this.rebuildValueElements();\n\t }\n\t else {\n\t this.triggerMoreQuery();\n\t }\n\t };\n\t /**\n\t * Shows less elements in the Facet (up to the original number of values).\n\t *\n\t * See {@link Facet.options.numberOfValues}.\n\t */\n\t Facet.prototype.showLess = function () {\n\t Dom_1.$$(this.lessElement).removeClass('coveo-active');\n\t this.currentPage = 0;\n\t this.updateNumberOfValues();\n\t Dom_1.$$(this.moreElement).addClass('coveo-active');\n\t this.values.sortValuesDependingOnStatus(this.numberOfValues);\n\t this.rebuildValueElements();\n\t };\n\t /**\n\t * Collapses the Facet.\n\t */\n\t Facet.prototype.collapse = function () {\n\t this.ensureDom();\n\t if (this.facetHeader) {\n\t this.facetHeader.collapseFacet();\n\t }\n\t };\n\t /**\n\t * Expands the facet.\n\t */\n\t Facet.prototype.expand = function () {\n\t this.ensureDom();\n\t if (this.facetHeader) {\n\t this.facetHeader.expandFacet();\n\t }\n\t };\n\t Facet.prototype.triggerNewQuery = function (beforeExecuteQuery) {\n\t if (!beforeExecuteQuery) {\n\t this.queryController.executeQuery({ ignoreWarningSearchEvent: true });\n\t }\n\t else {\n\t this.queryController.executeQuery({ beforeExecuteQuery: beforeExecuteQuery });\n\t }\n\t this.showWaitingAnimation();\n\t };\n\t Facet.prototype.handleDeferredQuerySuccess = function (data) {\n\t Assert_1.Assert.exists(data);\n\t this.unfadeInactiveValuesInMainList();\n\t this.hideWaitingAnimation();\n\t this.updateVisibilityBasedOnDependsOn();\n\t var groupByResult = data.results.groupByResults[this.facetQueryController.lastGroupByRequestIndex];\n\t this.facetQueryController.lastGroupByResult = groupByResult;\n\t if (!groupByResult) {\n\t this.keepDisplayedValuesNextTime = false;\n\t }\n\t this.processNewGroupByResults(groupByResult);\n\t };\n\t Facet.prototype.handlePopulateBreadcrumb = function (args) {\n\t Assert_1.Assert.exists(args);\n\t if (this.values.hasSelectedOrExcludedValues()) {\n\t var element = new BreadcrumbValuesList_1.BreadcrumbValueList(this, this.values.getSelected().concat(this.values.getExcluded()), BreadcrumbValueElement_1.BreadcrumbValueElement).build();\n\t args.breadcrumbs.push({\n\t element: element\n\t });\n\t }\n\t };\n\t Facet.prototype.handlePopulateSearchAlerts = function (args) {\n\t if (this.values.hasSelectedOrExcludedValues()) {\n\t var excludedValues = this.values.getExcluded();\n\t var selectedValues = this.values.getSelected();\n\t if (!_.isEmpty(excludedValues)) {\n\t args.text.push({\n\t value: new BreadcrumbValuesList_1.BreadcrumbValueList(this, excludedValues, BreadcrumbValueElement_1.BreadcrumbValueElement).buildAsString(),\n\t lineThrough: true\n\t });\n\t }\n\t if (!_.isEmpty(selectedValues)) {\n\t args.text.push({\n\t value: new BreadcrumbValuesList_1.BreadcrumbValueList(this, selectedValues, BreadcrumbValueElement_1.BreadcrumbValueElement).buildAsString(),\n\t lineThrough: false\n\t });\n\t }\n\t }\n\t };\n\t Facet.prototype.initFacetQueryController = function () {\n\t this.facetQueryController = new FacetQueryController_1.FacetQueryController(this);\n\t };\n\t Facet.prototype.initFacetValuesList = function () {\n\t this.facetValuesList = new FacetValuesList_1.FacetValuesList(this, FacetValueElement_1.FacetValueElement);\n\t this.element.appendChild(this.facetValuesList.build());\n\t };\n\t Facet.prototype.initFacetSearch = function () {\n\t this.facetSearch = new FacetSearch_1.FacetSearch(this, FacetSearchValuesList_1.FacetSearchValuesList, this.root);\n\t this.element.appendChild(this.facetSearch.build());\n\t };\n\t Facet.prototype.facetValueHasChanged = function () {\n\t var _this = this;\n\t this.updateQueryStateModel();\n\t this.rebuildValueElements();\n\t Defer_1.Defer.defer(function () {\n\t _this.updateAppearanceDependingOnState();\n\t });\n\t };\n\t Facet.prototype.updateAppearanceDependingOnState = function () {\n\t Dom_1.$$(this.element).toggleClass('coveo-active', this.values.hasSelectedOrExcludedValues());\n\t Dom_1.$$(this.element).toggleClass('coveo-facet-empty', !this.isAnyValueCurrentlyDisplayed());\n\t if (this.searchInterface.isNewDesign()) {\n\t Dom_1.$$(this.facetHeader.eraserElement).toggleClass('coveo-facet-header-eraser-visible', this.values.hasSelectedOrExcludedValues());\n\t }\n\t else {\n\t Dom_1.$$(this.facetHeader.eraserElement).toggle(this.values.hasSelectedOrExcludedValues());\n\t }\n\t };\n\t Facet.prototype.initQueryEvents = function () {\n\t var _this = this;\n\t this.bind.onRootElement(QueryEvents_1.QueryEvents.duringQuery, function () { return _this.handleDuringQuery(); });\n\t this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (args) { return _this.handleBuildingQuery(args); });\n\t this.bind.onRootElement(QueryEvents_1.QueryEvents.doneBuildingQuery, function (args) { return _this.handleDoneBuildingQuery(args); });\n\t this.bind.onRootElement(QueryEvents_1.QueryEvents.deferredQuerySuccess, function (args) { return _this.handleDeferredQuerySuccess(args); });\n\t };\n\t Facet.prototype.initQueryStateEvents = function () {\n\t var _this = this;\n\t this.includedAttributeId = QueryStateModel_1.QueryStateModel.getFacetId(this.options.id);\n\t this.excludedAttributeId = QueryStateModel_1.QueryStateModel.getFacetId(this.options.id, false);\n\t this.operatorAttributeId = QueryStateModel_1.QueryStateModel.getFacetOperator(this.options.id);\n\t this.lookupValueAttributeId = QueryStateModel_1.QueryStateModel.getFacetLookupValue(this.options.id);\n\t this.queryStateModel.registerNewAttribute(this.includedAttributeId, []);\n\t this.queryStateModel.registerNewAttribute(this.excludedAttributeId, []);\n\t this.queryStateModel.registerNewAttribute(this.operatorAttributeId, '');\n\t this.queryStateModel.registerNewAttribute(this.lookupValueAttributeId, {});\n\t this.bind.onQueryState(Model_1.MODEL_EVENTS.CHANGE, undefined, function (args) { return _this.handleQueryStateChanged(args); });\n\t };\n\t Facet.prototype.initComponentStateEvents = function () {\n\t this.componentStateId = QueryStateModel_1.QueryStateModel.getFacetId(this.options.id);\n\t this.componentStateModel.registerComponent(this.componentStateId, this);\n\t };\n\t Facet.prototype.initOmniboxEvents = function () {\n\t var _this = this;\n\t if (this.options.includeInOmnibox) {\n\t this.bind.onRootElement(OmniboxEvents_1.OmniboxEvents.populateOmnibox, function (args) { return _this.handlePopulateOmnibox(args); });\n\t }\n\t };\n\t Facet.prototype.initBreadCrumbEvents = function () {\n\t var _this = this;\n\t if (this.options.includeInBreadcrumb) {\n\t this.bind.onRootElement(BreadcrumbEvents_1.BreadcrumbEvents.populateBreadcrumb, function (args) { return _this.handlePopulateBreadcrumb(args); });\n\t this.bind.onRootElement(BreadcrumbEvents_1.BreadcrumbEvents.clearBreadcrumb, function (args) { return _this.handleClearBreadcrumb(); });\n\t }\n\t };\n\t Facet.prototype.initSearchAlertEvents = function () {\n\t var _this = this;\n\t this.bind.onRootElement(SearchAlertEvents_1.SearchAlertsEvents.searchAlertsPopulateMessage, function (args) { return _this.handlePopulateSearchAlerts(args); });\n\t };\n\t Facet.prototype.handleOmniboxWithStaticValue = function (eventArg) {\n\t var _this = this;\n\t var regex = new RegExp('^' + eventArg.completeQueryExpression.regex.source, 'i');\n\t var match = _.first(_.filter(this.getDisplayedValues(), function (displayedValue) {\n\t var value = _this.getValueCaption(_this.facetValuesList.get(displayedValue).facetValue);\n\t return regex.test(value);\n\t }), this.options.numberOfValuesInOmnibox);\n\t var facetValues = _.map(match, function (gotAMatch) {\n\t return _this.facetValuesList.get(gotAMatch).facetValue;\n\t });\n\t var element = new OmniboxValuesList_1.OmniboxValuesList(this, facetValues, eventArg, OmniboxValueElement_1.OmniboxValueElement).build();\n\t eventArg.rows.push({\n\t element: element,\n\t zIndex: this.omniboxZIndex\n\t });\n\t };\n\t Facet.prototype.processNewGroupByResults = function (groupByResult) {\n\t this.logger.trace('Displaying group by results', groupByResult);\n\t if (groupByResult != undefined && groupByResult.values != undefined) {\n\t this.nbAvailableValues = groupByResult.values.length;\n\t }\n\t var newFacetValues = new FacetValues_1.FacetValues(groupByResult);\n\t this.updateValues(newFacetValues);\n\t this.canFetchMore = this.numberOfValues < this.nbAvailableValues;\n\t if (this.values.hasSelectedOrExcludedValues() && !this.options.useAnd && this.options.isMultiValueField) {\n\t this.triggerUpdateDeltaQuery(_.filter(this.values.getAll(), function (facetValue) {\n\t return !facetValue.selected && !facetValue.excluded;\n\t }));\n\t }\n\t else if (this.values.getSelected().length > 0 && !this.options.useAnd) {\n\t this.values.updateDeltaWithFilteredFacetValues(new FacetValues_1.FacetValues());\n\t }\n\t if (!this.values.hasSelectedOrExcludedValues() || this.options.useAnd || !this.options.isMultiValueField) {\n\t this.rebuildValueElements();\n\t this.updateAppearanceDependingOnState();\n\t this.ensurePinnedFacetHasntMoved();\n\t }\n\t this.keepDisplayedValuesNextTime = false;\n\t };\n\t Facet.prototype.updateQueryStateModel = function () {\n\t this.listenToQueryStateChange = false;\n\t this.updateExcludedQueryStateModel();\n\t this.updateIncludedQueryStateModel();\n\t this.facetHeader.updateOperatorQueryStateModel();\n\t this.updateLookupValueQueryStateModel();\n\t this.listenToQueryStateChange = true;\n\t };\n\t Facet.prototype.rebuildValueElements = function () {\n\t this.updateNumberOfValues();\n\t this.facetValuesList.rebuild(this.numberOfValues);\n\t if (this.searchInterface.isNewDesign()) {\n\t if (this.shouldRenderMoreLess()) {\n\t this.updateMoreLess();\n\t if (this.shouldRenderFacetSearch()) {\n\t this.updateSearchInNewDesign(this.nbAvailableValues > this.numberOfValues);\n\t }\n\t }\n\t else if (this.shouldRenderFacetSearch()) {\n\t this.updateSearchInNewDesign();\n\t }\n\t }\n\t else {\n\t if (this.shouldRenderMoreLess()) {\n\t this.updateMoreLess();\n\t }\n\t }\n\t };\n\t Facet.prototype.updateSearchInNewDesign = function (moreValuesAvailable) {\n\t var _this = this;\n\t if (moreValuesAvailable === void 0) { moreValuesAvailable = true; }\n\t if (this.searchInterface.isNewDesign() && moreValuesAvailable) {\n\t var renderer = new ValueElementRenderer_1.ValueElementRenderer(this, FacetValues_1.FacetValue.create(Strings_1.l('Search')));\n\t var searchButton_1 = renderer.build().withNo([renderer.excludeIcon, renderer.icon]);\n\t Dom_1.$$(searchButton_1.listItem).addClass('coveo-facet-search-button');\n\t searchButton_1.stylishCheckbox.removeAttribute('tabindex');\n\t // Mobile do not like label. Use click event\n\t if (DeviceUtils_1.DeviceUtils.isMobileDevice()) {\n\t Dom_1.$$(searchButton_1.label).on('click', function (e) {\n\t if (searchButton_1.checkbox.getAttribute('checked')) {\n\t searchButton_1.checkbox.removeAttribute('checked');\n\t }\n\t else {\n\t searchButton_1.checkbox.setAttribute('checked', 'checked');\n\t }\n\t Dom_1.$$(searchButton_1.checkbox).trigger('change');\n\t e.stopPropagation();\n\t e.preventDefault();\n\t });\n\t }\n\t Dom_1.$$(searchButton_1.checkbox).on('change', function () {\n\t Dom_1.$$(_this.element).addClass('coveo-facet-searching');\n\t _this.facetSearch.focus();\n\t });\n\t this.facetValuesList.valueContainer.appendChild(searchButton_1.listItem);\n\t }\n\t };\n\t Facet.prototype.updateMoreLess = function (lessElementIsShown, moreValuesAvailable) {\n\t if (lessElementIsShown === void 0) { lessElementIsShown = this.getMinimumNumberOfValuesToDisplay() < this.numberOfValues; }\n\t if (moreValuesAvailable === void 0) { moreValuesAvailable = this.nbAvailableValues > this.numberOfValues; }\n\t if (lessElementIsShown) {\n\t Dom_1.$$(this.lessElement).addClass('coveo-active');\n\t }\n\t else {\n\t Dom_1.$$(this.lessElement).removeClass('coveo-active');\n\t }\n\t if (moreValuesAvailable) {\n\t Dom_1.$$(this.moreElement).addClass('coveo-active');\n\t }\n\t else {\n\t Dom_1.$$(this.moreElement).removeClass('coveo-active');\n\t }\n\t if (lessElementIsShown || moreValuesAvailable) {\n\t Dom_1.$$(this.footerElement).removeClass('coveo-facet-empty');\n\t }\n\t else {\n\t Dom_1.$$(this.footerElement).addClass('coveo-facet-empty');\n\t }\n\t };\n\t Facet.prototype.handleClickMore = function () {\n\t this.showMore();\n\t };\n\t Facet.prototype.handleClickLess = function () {\n\t this.showLess();\n\t };\n\t Facet.prototype.handleNuke = function () {\n\t window.removeEventListener('resize', this.resize);\n\t };\n\t Facet.prototype.checkForComputedFieldAndSort = function () {\n\t if (this.options.sortCriteria.toLowerCase().indexOf('computedfield') != -1 && Utils_1.Utils.isNullOrUndefined(this.options.computedField)) {\n\t this.logger.warn('Sort criteria is specified as ComputedField, but the facet uses no computed field. Facet will always be empty !', this);\n\t }\n\t };\n\t Facet.prototype.checkForValueCaptionType = function () {\n\t if (this.options.valueCaption && typeof this.options.valueCaption == 'function') {\n\t this.options.enableFacetSearch = false;\n\t this.options.includeInOmnibox = false;\n\t this.logger.warn('Using a function as valueCaption is now deprecated. Use a json key value pair instead. Facet search and omnibox has been disabled for this facet', this);\n\t }\n\t };\n\t Facet.prototype.checkForCustomSort = function () {\n\t if (this.options.customSort != undefined && !_.contains(this.options.availableSorts, 'custom')) {\n\t this.options.availableSorts.unshift('custom');\n\t }\n\t if (this.options.availableSorts[0] == 'custom') {\n\t this.options.sortCriteria = 'nosort';\n\t }\n\t };\n\t Facet.prototype.initBottomAndTopSpacer = function () {\n\t var _this = this;\n\t var bottomSpace = Dom_1.$$(this.options.paddingContainer).find('.coveo-bottomSpace');\n\t var topSpace = Dom_1.$$(this.options.paddingContainer).find('.coveo-topSpace');\n\t if (this.options.preservePosition) {\n\t Dom_1.$$(this.options.paddingContainer).on('mouseleave', function () { return _this.unpinFacetPosition(); });\n\t this.pinnedTopSpace = topSpace;\n\t this.pinnedBottomSpace = bottomSpace;\n\t if (!this.pinnedTopSpace) {\n\t this.pinnedTopSpace = document.createElement('div');\n\t Dom_1.$$(this.pinnedTopSpace).addClass('coveo-topSpace');\n\t Dom_1.$$(this.pinnedTopSpace).insertBefore(this.options.paddingContainer.firstChild);\n\t }\n\t if (!this.pinnedBottomSpace) {\n\t this.pinnedBottomSpace = document.createElement('div');\n\t Dom_1.$$(this.pinnedBottomSpace).addClass('coveo-bottomSpace');\n\t this.options.paddingContainer.appendChild(this.pinnedBottomSpace);\n\t }\n\t }\n\t };\n\t Facet.prototype.updateIncludedQueryStateModel = function () {\n\t var selectedValues = {\n\t included: this.getSelectedValues(),\n\t title: this.includedAttributeId\n\t };\n\t this.queryStateModel.set(this.includedAttributeId, selectedValues.included);\n\t };\n\t Facet.prototype.updateExcludedQueryStateModel = function () {\n\t var excludedValues = {\n\t title: this.excludedAttributeId,\n\t excluded: this.getExcludedValues()\n\t };\n\t this.queryStateModel.set(this.excludedAttributeId, excludedValues.excluded);\n\t };\n\t Facet.prototype.updateLookupValueQueryStateModel = function () {\n\t if (this.options.lookupField) {\n\t var valueToSet_1 = {};\n\t _.each(this.values.getSelected().concat(this.values.getExcluded()), function (value) {\n\t valueToSet_1[value.value] = value.lookupValue;\n\t });\n\t this.queryStateModel.set(this.lookupValueAttributeId, valueToSet_1);\n\t }\n\t };\n\t Facet.prototype.handleQueryStateChangedOperator = function (operator) {\n\t if (operator == 'and') {\n\t this.switchToAnd();\n\t }\n\t else if (operator == 'or') {\n\t this.switchToOr();\n\t }\n\t };\n\t Facet.prototype.handleQueryStateChangedIncluded = function (includedChanged) {\n\t var toUnSelect = _.difference(this.getSelectedValues(), includedChanged);\n\t if (Utils_1.Utils.isNonEmptyArray(toUnSelect)) {\n\t this.deselectMultipleValues(toUnSelect);\n\t }\n\t if (!Utils_1.Utils.arrayEqual(this.getSelectedValues(), includedChanged, false)) {\n\t this.selectMultipleValues(includedChanged);\n\t }\n\t };\n\t Facet.prototype.handleQueryStateChangedExcluded = function (excludedChanged) {\n\t var toUnExclude = _.difference(this.getExcludedValues(), excludedChanged);\n\t if (Utils_1.Utils.isNonEmptyArray(toUnExclude)) {\n\t this.unexcludeMultipleValues(toUnExclude);\n\t }\n\t if (!Utils_1.Utils.arrayEqual(this.getExcludedValues(), excludedChanged, false)) {\n\t this.excludeMultipleValues(excludedChanged);\n\t }\n\t };\n\t Facet.prototype.handleLookupvalueChanged = function (lookupFieldChanged) {\n\t var _this = this;\n\t _.each(lookupFieldChanged, function (lookupvalue, value) {\n\t _this.facetValuesList.get(decodeURIComponent(value)).facetValue.lookupValue = decodeURIComponent(lookupvalue);\n\t });\n\t };\n\t Facet.prototype.handleQueryStateChanged = function (data) {\n\t Assert_1.Assert.exists(data);\n\t this.ensureDom();\n\t var queryStateAttributes = data.attributes;\n\t var includedChanged = queryStateAttributes[this.includedAttributeId];\n\t var excludedChanged = queryStateAttributes[this.excludedAttributeId];\n\t var operator = queryStateAttributes[this.operatorAttributeId];\n\t var lookupValueChanged = queryStateAttributes[this.lookupValueAttributeId];\n\t if (this.listenToQueryStateChange) {\n\t if (!Utils_1.Utils.isNullOrEmptyString(operator)) {\n\t this.handleQueryStateChangedOperator(operator);\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(includedChanged)) {\n\t this.handleQueryStateChangedIncluded(includedChanged);\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(excludedChanged)) {\n\t this.handleQueryStateChangedExcluded(excludedChanged);\n\t }\n\t if (!Utils_1.Utils.isNullOrUndefined(lookupValueChanged)) {\n\t this.handleLookupvalueChanged(lookupValueChanged);\n\t }\n\t }\n\t };\n\t Facet.prototype.handlePopulateOmnibox = function (data) {\n\t Assert_1.Assert.exists(data);\n\t Assert_1.Assert.exists(data.completeQueryExpression);\n\t // The omnibox calls can come in before a first query was executed (atypical, but\n\t // if no query is auto-triggered on initialization). To ensure that we've got the\n\t // proper filters, we ensure that at least a dumbshow query builder run occured\n\t // before proceeding.\n\t this.queryController.ensureCreatedQueryBuilder();\n\t if (this.canFetchMore) {\n\t this.handleOmniboxWithSearchInFacet(data);\n\t }\n\t else {\n\t this.handleOmniboxWithStaticValue(data);\n\t }\n\t };\n\t Facet.prototype.handleOmniboxWithSearchInFacet = function (eventArg) {\n\t var _this = this;\n\t var regex = new RegExp('^' + eventArg.completeQueryExpression.regex.source, 'i');\n\t var promise = new Promise(function (resolve, reject) {\n\t var searchParameters = new FacetSearchParameters_1.FacetSearchParameters(_this);\n\t searchParameters.setValueToSearch(eventArg.completeQueryExpression.word);\n\t searchParameters.nbResults = _this.options.numberOfValuesInOmnibox;\n\t _this.facetQueryController.search(searchParameters).then(function (fieldValues) {\n\t var facetValues = _.map(_.filter(fieldValues, function (fieldValue) {\n\t return regex.test(fieldValue.lookupValue);\n\t }), function (fieldValue) {\n\t return _this.values.get(fieldValue.lookupValue) || FacetValues_1.FacetValue.create(fieldValue);\n\t });\n\t var element = new OmniboxValuesList_1.OmniboxValuesList(_this, facetValues, eventArg, OmniboxValueElement_1.OmniboxValueElement).build();\n\t resolve({\n\t element: element,\n\t zIndex: _this.omniboxZIndex\n\t });\n\t }).catch(function () {\n\t resolve({ element: undefined });\n\t });\n\t });\n\t eventArg.rows.push({ deferred: promise });\n\t };\n\t Facet.prototype.handleDuringQuery = function () {\n\t this.ensureDom();\n\t if (!this.keepDisplayedValuesNextTime) {\n\t this.fadeInactiveValuesInMainList(this.options.facetSearchDelay);\n\t }\n\t };\n\t Facet.prototype.handleBuildingQuery = function (data) {\n\t Assert_1.Assert.exists(data);\n\t Assert_1.Assert.exists(data.queryBuilder);\n\t this.facetQueryController.prepareForNewQuery();\n\t if (this.values.hasSelectedOrExcludedValues()) {\n\t var expression = this.facetQueryController.computeOurFilterExpression();\n\t this.logger.trace('Putting filter in query', expression);\n\t data.queryBuilder.advancedExpression.add(expression);\n\t }\n\t };\n\t Facet.prototype.handleDoneBuildingQuery = function (data) {\n\t Assert_1.Assert.exists(data);\n\t Assert_1.Assert.exists(data.queryBuilder);\n\t var queryBuilder = data.queryBuilder;\n\t this.facetQueryController.putGroupByIntoQueryBuilder(queryBuilder);\n\t };\n\t Facet.prototype.handleClearBreadcrumb = function () {\n\t this.reset();\n\t };\n\t Facet.prototype.updateValues = function (facetValues) {\n\t Assert_1.Assert.exists(facetValues);\n\t if (this.keepDisplayedValuesNextTime) {\n\t this.values.updateCountsFromNewValues(facetValues);\n\t }\n\t else {\n\t facetValues.importActiveValuesFromOtherList(this.values);\n\t facetValues.sortValuesDependingOnStatus(this.numberOfValues);\n\t this.values = facetValues;\n\t }\n\t this.updateNumberOfValues();\n\t };\n\t Facet.prototype.ensureFacetValueIsInList = function (facetValue) {\n\t Assert_1.Assert.exists(facetValue);\n\t if (!this.values.contains(facetValue.value)) {\n\t this.values.add(facetValue);\n\t }\n\t };\n\t Facet.prototype.isAnyValueCurrentlyDisplayed = function () {\n\t return !this.values.isEmpty();\n\t };\n\t Facet.prototype.buildFacetContent = function () {\n\t this.headerElement = this.buildHeader();\n\t this.element.appendChild(this.headerElement);\n\t this.initFacetValuesList();\n\t if (this.shouldRenderFacetSearch()) {\n\t this.initFacetSearch();\n\t }\n\t if (this.shouldRenderMoreLess()) {\n\t this.moreElement = this.buildMore();\n\t this.lessElement = this.buildLess();\n\t }\n\t this.footerElement = this.buildFooter();\n\t this.element.appendChild(this.footerElement);\n\t if (this.searchInterface.isNewDesign() && this.lessElement && this.moreElement) {\n\t this.footerElement.appendChild(this.lessElement);\n\t this.footerElement.appendChild(this.moreElement);\n\t }\n\t else if (this.moreElement && this.lessElement) {\n\t this.footerElement.appendChild(this.moreElement);\n\t this.footerElement.appendChild(this.lessElement);\n\t }\n\t };\n\t Facet.prototype.buildHeader = function () {\n\t var icon = this.options.headerIcon;\n\t if (this.searchInterface.isNewDesign() && this.options.headerIcon == this.options.field) {\n\t icon = undefined;\n\t }\n\t this.facetHeader = new FacetHeader_1.FacetHeader({\n\t facetElement: this.element,\n\t title: this.options.title,\n\t icon: icon,\n\t field: this.options.field,\n\t enableClearElement: true,\n\t enableCollapseElement: this.options.enableCollapse,\n\t facet: this,\n\t settingsKlass: this.options.enableSettings ? FacetSettings_1.FacetSettings : undefined,\n\t sortKlass: FacetSort_1.FacetSort,\n\t availableSorts: this.options.availableSorts,\n\t isNewDesign: this.getBindings().searchInterface.isNewDesign()\n\t });\n\t var built = this.facetHeader.build();\n\t this.facetSettings = this.facetHeader.settings;\n\t this.facetSort = this.facetHeader.sort;\n\t return built;\n\t };\n\t Facet.prototype.unpinFacetPosition = function () {\n\t if (this.shouldFacetUnpin() && this.options.preservePosition) {\n\t Dom_1.$$(this.pinnedTopSpace).addClass('coveo-with-animation');\n\t Dom_1.$$(this.pinnedBottomSpace).addClass('coveo-with-animation');\n\t this.pinnedTopSpace.style.height = '0px';\n\t this.pinnedBottomSpace.style.height = '0px';\n\t }\n\t this.unpinnedViewportPosition = undefined;\n\t this.pinnedViewportPosition = undefined;\n\t };\n\t Facet.prototype.isFacetPinned = function () {\n\t return Utils_1.Utils.exists(this.pinnedViewportPosition);\n\t };\n\t Facet.prototype.shouldFacetUnpin = function () {\n\t return Utils_1.Utils.exists(this.unpinnedViewportPosition);\n\t };\n\t Facet.prototype.ensurePinnedFacetHasntMoved = function () {\n\t var _this = this;\n\t if (this.isFacetPinned()) {\n\t Assert_1.Assert.exists(this.pinnedViewportPosition);\n\t Dom_1.$$(this.pinnedTopSpace).removeClass('coveo-with-animation');\n\t Dom_1.$$(this.pinnedBottomSpace).removeClass('coveo-with-animation');\n\t this.pinnedTopSpace.style.height = '0px';\n\t this.pinnedBottomSpace.style.height = '0px';\n\t // Under firefox scrolling the body doesn't work, but window does\n\t // on all browser, so we substitute those here when needed.\n\t var elementToScroll_1 = this.options.scrollContainer == document.body ? window : this.options.scrollContainer;\n\t var currentViewportPosition_1 = this.element.getBoundingClientRect().top;\n\t var offset_1 = currentViewportPosition_1 - this.pinnedViewportPosition;\n\t var scrollToOffset_1 = function () {\n\t if (elementToScroll_1 instanceof Window) {\n\t window.scrollTo(0, window.scrollY + offset_1);\n\t }\n\t else {\n\t elementToScroll_1.scrollTop = elementToScroll_1.scrollTop + offset_1;\n\t }\n\t };\n\t // First try to adjust position by scrolling the page\n\t scrollToOffset_1();\n\t currentViewportPosition_1 = this.element.getBoundingClientRect().top;\n\t offset_1 = currentViewportPosition_1 - this.pinnedViewportPosition;\n\t // If scrolling has worked (offset == 0), we're good to go, nothing to do anymore.\n\t // Otherwise try other voodoo magic.\n\t if (offset_1 < 0) {\n\t // This means the facet element is scrolled up in the viewport,\n\t // scroll it down by adding space in the top container\n\t this.pinnedTopSpace.style.height = (offset_1 * -1) + 'px';\n\t }\n\t else {\n\t // Here, this means the facet element is scrolled down in the viewport,\n\t // and there is not enough scroll space in the page / window to scroll far enough\n\t // we need to add space at the bottom so that we can finally scroll there.\n\t _.defer(function () {\n\t var heightBottom = 0;\n\t var attempts = 0;\n\t while (offset_1 > 0 && attempts++ < 100) {\n\t heightBottom += 100;\n\t _this.pinnedBottomSpace.style.height = heightBottom + 'px';\n\t currentViewportPosition_1 = _this.element.getBoundingClientRect().top;\n\t offset_1 = currentViewportPosition_1 - _this.pinnedViewportPosition;\n\t scrollToOffset_1();\n\t }\n\t });\n\t }\n\t this.unpinnedViewportPosition = this.pinnedViewportPosition;\n\t this.pinnedViewportPosition = null;\n\t }\n\t };\n\t Facet.prototype.buildFooter = function () {\n\t return Dom_1.$$('div', { className: 'coveo-facet-footer' }).el;\n\t };\n\t Facet.prototype.buildMore = function () {\n\t var _this = this;\n\t var more;\n\t if (this.searchInterface.isNewDesign()) {\n\t more = Dom_1.$$('div', { className: 'coveo-facet-more', tabindex: 0 }, Dom_1.$$('span', { className: 'coveo-icon' })).el;\n\t }\n\t else {\n\t more = Dom_1.$$('a', { className: 'coveo-facet-more' }, Strings_1.l('More')).el;\n\t }\n\t var moreAction = function () { return _this.handleClickMore(); };\n\t Dom_1.$$(more).on('click', moreAction);\n\t Dom_1.$$(more).on('keyup', KeyboardUtils_1.KeyboardUtils.keypressAction(KeyboardUtils_1.KEYBOARD.ENTER, moreAction));\n\t return more;\n\t };\n\t Facet.prototype.buildLess = function () {\n\t var _this = this;\n\t var less;\n\t if (this.searchInterface.isNewDesign()) {\n\t less = Dom_1.$$('div', { className: 'coveo-facet-less', tabindex: 0 }, Dom_1.$$('span', { className: 'coveo-icon' })).el;\n\t }\n\t else {\n\t less = Dom_1.$$('a', { className: 'coveo-facet-less' }, Strings_1.l('Less')).el;\n\t }\n\t var lessAction = function () { return _this.handleClickLess(); };\n\t Dom_1.$$(less).on('click', lessAction);\n\t Dom_1.$$(less).on('keyup', KeyboardUtils_1.KeyboardUtils.keypressAction(KeyboardUtils_1.KEYBOARD.ENTER, lessAction));\n\t return less;\n\t };\n\t Facet.prototype.triggerMoreQuery = function () {\n\t var _this = this;\n\t this.logger.info('Triggering new facet more query');\n\t this.showWaitingAnimation();\n\t // fetch 1 more value than we need, so we can see if there is more value to fetch still or if we have reached\n\t // the end of the availables values\n\t this.facetQueryController.fetchMore(this.numberOfValues + 1).then(function (queryResults) {\n\t var facetValues = new FacetValues_1.FacetValues(queryResults.groupByResults[0]);\n\t facetValues.importActiveValuesFromOtherList(_this.values);\n\t facetValues.sortValuesDependingOnStatus(_this.numberOfValues);\n\t _this.values = facetValues;\n\t _this.nbAvailableValues = _this.values.size();\n\t _this.updateNumberOfValues();\n\t _this.canFetchMore = _this.numberOfValues < _this.nbAvailableValues;\n\t if (_this.values.hasSelectedOrExcludedValues() && !_this.options.useAnd && _this.options.isMultiValueField) {\n\t _this.triggerUpdateDeltaQuery(_.filter(_this.values.getAll(), function (facetValue) { return !facetValue.selected && !facetValue.excluded; }));\n\t }\n\t else {\n\t if (_this.values.hasSelectedOrExcludedValues() && !_this.options.useAnd) {\n\t _this.values.updateDeltaWithFilteredFacetValues(new FacetValues_1.FacetValues());\n\t _this.hideWaitingAnimation();\n\t }\n\t else {\n\t _this.hideWaitingAnimation();\n\t }\n\t _this.rebuildValueElements();\n\t }\n\t }).catch(function () { return _this.hideWaitingAnimation(); });\n\t };\n\t Facet.prototype.triggerUpdateDeltaQuery = function (facetValues) {\n\t var _this = this;\n\t this.showWaitingAnimation();\n\t this.facetQueryController.searchInFacetToUpdateDelta(facetValues).then(function (queryResults) {\n\t var values = new FacetValues_1.FacetValues();\n\t _.each(queryResults.groupByResults, function (groupByResult) {\n\t _.each(groupByResult.values, function (groupByValue) {\n\t if (!values.contains(groupByValue.value)) {\n\t values.add(FacetValues_1.FacetValue.createFromGroupByValue(groupByValue));\n\t }\n\t });\n\t });\n\t _this.values.updateDeltaWithFilteredFacetValues(values);\n\t _this.rebuildValueElements();\n\t _this.hideWaitingAnimation();\n\t });\n\t };\n\t Facet.prototype.updateNumberOfValues = function () {\n\t if (this.currentPage <= 0) {\n\t // We're on the first page, let's reset the number of values to a minimum.\n\t this.currentPage = 0;\n\t this.numberOfValues = 0;\n\t }\n\t else {\n\t // Calculate the number of value with the current page.\n\t this.numberOfValues = this.options.numberOfValues + (this.currentPage * this.options.pageSize);\n\t }\n\t // Make sure we have at least the absolute minimum of value to display.\n\t this.numberOfValues = Math.max(this.numberOfValues, this.getMinimumNumberOfValuesToDisplay());\n\t };\n\t Facet.prototype.getMinimumNumberOfValuesToDisplay = function () {\n\t // The min value is the number of used values.\n\t var minValue = this.values.getExcluded().length + this.values.getSelected().length;\n\t // When using a custom sort, we have to show all values between the selected ones.\n\t // Thus, we must find the last selected value after a reorder and use that value as the number of value.\n\t if (this.options.customSort != null && this.facetSort != null && this.options.customSort.length > 0) {\n\t var lastSelectedValueIndex_1 = -1;\n\t new FacetValuesOrder_1.FacetValuesOrder(this, this.facetSort).reorderValues(this.values.getAll()).forEach(function (facetValue, index) {\n\t if (facetValue.selected) {\n\t lastSelectedValueIndex_1 = index;\n\t }\n\t });\n\t minValue = lastSelectedValueIndex_1 + 1;\n\t }\n\t return Math.max(minValue, this.options.numberOfValues);\n\t };\n\t Facet.prototype.updateVisibilityBasedOnDependsOn = function () {\n\t if (Utils_1.Utils.isNonEmptyString(this.options.dependsOn)) {\n\t Dom_1.$$(this.element).toggleClass('coveo-facet-dependent', !this.doesParentFacetHasSelectedValue() && !this.values.hasSelectedOrExcludedValues());\n\t }\n\t };\n\t Facet.prototype.doesParentFacetHasSelectedValue = function () {\n\t var id = QueryStateModel_1.QueryStateModel.getFacetId(this.options.dependsOn);\n\t var values = this.queryStateModel.get(id);\n\t return values != null && values.length != 0;\n\t };\n\t Facet.prototype.shouldRenderFacetSearch = function () {\n\t return this.options.enableFacetSearch;\n\t };\n\t Facet.prototype.shouldRenderMoreLess = function () {\n\t return this.options.enableMoreLess;\n\t };\n\t Facet.prototype.debugInfo = function () {\n\t var info = {};\n\t info[this['constructor']['ID']] = {\n\t component: this,\n\t groupByRequest: this.facetQueryController.lastGroupByRequest,\n\t groupByResult: this.facetQueryController.lastGroupByResult\n\t };\n\t return info;\n\t };\n\t return Facet;\n\t}(Component_1.Component));\n\tFacet.ID = 'Facet';\n\tFacet.omniboxIndex = 50;\n\t/**\n\t * The possible options for a facet\n\t * @componentOptions\n\t */\n\tFacet.options = {\n\t /**\n\t * Specifies the title to display at the top of the Facet.\n\t *\n\t * Default value is the localized string for `\"NoTitle\"`.\n\t */\n\t title: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({\n\t defaultValue: Strings_1.l('NoTitle'),\n\t section: 'Identification',\n\t priority: 10\n\t }),\n\t /**\n\t * Specifies the index field whose values the Facet should use.\n\t *\n\t * This requires the given field to be configured correctly in the index as a Facet field (see\n\t * [Adding Fields to a Source](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=137)).\n\t *\n\t * Specifying a value for this option is required for the Facet component to work.\n\t */\n\t field: ComponentOptions_1.ComponentOptions.buildFieldOption({ required: true, groupByField: true, section: 'Identification' }),\n\t headerIcon: ComponentOptions_1.ComponentOptions.buildIconOption({ deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.' }),\n\t /**\n\t * Specifies a unique identifier for the Facet. Among other things, this identifier serves the purpose of saving the\n\t * facet state in the URL hash.\n\t *\n\t * If you have two facets with the same field on the same page, you should specify an id value for at least one of\n\t * those two facets. This id must be unique in the page.\n\t *\n\t * Default value is the {@link Facet.options.field} option value.\n\t */\n\t id: ComponentOptions_1.ComponentOptions.buildStringOption({\n\t postProcessing: function (value, options) { return value || options.field; }\n\t }),\n\t /**\n\t * Specifies whether the field is configured in the index as a multi-value field (semicolon separated values such as\n\t * `abc;def;ghi`).\n\t *\n\t * Default value is `false`.\n\t */\n\t isMultiValueField: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t lookupField: ComponentOptions_1.ComponentOptions.buildFieldOption({ deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.' }),\n\t /**\n\t * Specifies whether to display the Facet **Settings** menu.\n\t *\n\t * See also {@link Facet.options.enableSettingsFacetState}, {@link Facet.options.availableSorts} and\n\t * {@link Facet.options.enableCollapse}.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableSettings: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'SettingsMenu', priority: 9 }),\n\t /**\n\t * If {@link Facet.options.enableSettings} is `true`, specifies whether the **Save state** menu option is available\n\t * in the Facet **Settings** menu.\n\t *\n\t * Default value is `false`.\n\t */\n\t enableSettingsFacetState: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableSettings' }),\n\t /**\n\t * If {@link Facet.options.enableSettings} is `true`, specifies the sort criteria options to display in the Facet\n\t * **Settings** menu.\n\t *\n\t * Possible values are:\n\t * - `\"occurrences\"`\n\t * - `\"score\"`\n\t * - `\"alphaAscending\"`\n\t * - `alphaDescending`\n\t * - `\"computedfieldascending\"`\n\t * - `\"computedfielddescending\"`\n\t * - `\"custom\"`\n\t *\n\t * Default value is `\"occurrences,score,alphaAscending,alphaDescending\"`.\n\t */\n\t availableSorts: ComponentOptions_1.ComponentOptions.buildListOption({\n\t defaultValue: ['occurrences', 'score', 'alphaAscending', 'alphaDescending'],\n\t values: ['Occurrences', 'Score', 'AlphaAscending', 'AlphaDescending', 'ComputedFieldAscending', 'ComputedFieldDescending', 'ChiSquare', 'NoSort'],\n\t depend: 'enableSettings'\n\t }),\n\t /**\n\t * Specifies the criteria to use to sort the Facet values.\n\t *\n\t * See {@link IGroupByRequest} for the list of possible values.\n\t *\n\t * Default value is the first sort criteria specified in the {@link Facet.options.availableSorts} option, or\n\t * `\"occurrences\"` if no sort criteria is specified.\n\t */\n\t sortCriteria: ComponentOptions_1.ComponentOptions.buildStringOption({ postProcessing: function (value, options) { return value || (options.availableSorts.length > 0 ? options.availableSorts[0] : 'occurrences'); } }),\n\t /**\n\t * Specifies a custom order by which to sort the Facet values.\n\t *\n\t * For example, you could use this to specify a logical order for support tickets, such as\n\t * `customSort : [\"New\",\"Opened\",\"Feedback\",\"Resolved\",\"Feedback\"]`\n\t */\n\t customSort: ComponentOptions_1.ComponentOptions.buildListOption({ section: 'Identification' }),\n\t /**\n\t * Specifies the maximum number of field values to display by default in the Facet before the user\n\t * clicks **More**.\n\t *\n\t * Default value is `5`. Minimum value is `0`.\n\t */\n\t numberOfValues: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0, section: 'Identification' }),\n\t /**\n\t * Specifies the *injection depth* to use for the {@link IGroupByRequest} operation.\n\t *\n\t * The injection depth determines how many results to scan in the index to ensure that the facet lists all potential\n\t * facet values. Increasing this value enhances the accuracy of the listed values at the cost of performance.\n\t *\n\t * Default value is `1000`. Minimum value is `0`.\n\t */\n\t injectionDepth: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 0 }),\n\t showIcon: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.' }),\n\t /**\n\t * Specifies whether to use the `AND` operator in the resulting filter when multiple values are selected in the\n\t * Facet.\n\t *\n\t * Setting this option to `true` means that documents must have all of the selected values to match the resulting\n\t * query.\n\t *\n\t * Default value is `false`, which means that the filter uses the `OR` operator. Thus, by default, documents must\n\t * have at least one of the selected values to match the query.\n\t */\n\t useAnd: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies whether to allow the user to toggle between the `OR` and `AND` modes in the Facet.\n\t *\n\t * Setting this option to `true` displays an icon in the top right corner of the Facet. The user can click this icon\n\t * to toggle between between the two modes.\n\t *\n\t * Default value is `false`.\n\t */\n\t enableTogglingOperator: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, alias: 'allowTogglingOperator' }),\n\t /**\n\t * Specifies whether to display a search box at the bottom of the Facet for searching among the available values.\n\t *\n\t * See also {@link Facet.options.facetSearchDelay}, {@link Facet.options.facetSearchIgnoreAccents},\n\t * {@link Facet.options.numberOfValuesInFacetSearch}.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableFacetSearch: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'FacetSearch', priority: 8 }),\n\t /**\n\t * If {@link Facet.options.enableFacetSearch} is `true`, specifies the delay (in milliseconds) before sending a\n\t * search request to the server when the user starts typing in the Facet search box.\n\t *\n\t * Specifying a smaller value means results will arrive faster. However, chances of having to cancel many requests\n\t * sent to the server will increase as the user keeps on typing new characters.\n\t *\n\t * Default value is `100`. Minimum value is `0`.\n\t */\n\t facetSearchDelay: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 100, min: 0, depend: 'enableFacetSearch' }),\n\t /**\n\t * If {@link Facet.options.enableFacetSearch} is `true`, specifies whether to ignore accents in the Facet search\n\t * box.\n\t *\n\t * Default value is `false`.\n\t */\n\t facetSearchIgnoreAccents: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableFacetSearch' }),\n\t /**\n\t * If {@link Facet.options.enableFacetSearch} is `true`, specifies the number of values to display in the Facet\n\t * search results popup.\n\t *\n\t * Default value is `15`. Minimum value is `1`.\n\t */\n\t numberOfValuesInFacetSearch: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 15, min: 1 }),\n\t /**\n\t * Specifies whether the Facet should push data to the {@link Breadcrumb} component.\n\t *\n\t * See also {@link Facet.options.numberOfValuesInBreadcrumb}.\n\t *\n\t * Default value is `true`.\n\t */\n\t includeInBreadcrumb: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * If {@link Facet.options.includeInBreadcrumb} is `true`, specifies the maximum number of values that the Facet\n\t * should display in the {@link Breadcrumb} before outputting a **See more** button.\n\t *\n\t * Default value is `5` on a desktop computer and `3` on a mobile device. Minimum value is `0`.\n\t */\n\t numberOfValuesInBreadcrumb: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultFunction: function () { return DeviceUtils_1.DeviceUtils.isMobileDevice() ? 3 : 5; }, min: 0, depend: 'includeInBreadcrumb' }),\n\t includeInOmnibox: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.' }),\n\t numberOfValuesInOmnibox: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultFunction: function () { return DeviceUtils_1.DeviceUtils.isMobileDevice() ? 3 : 5; }, min: 0, depend: 'includeInOmnibox', deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.' }),\n\t /**\n\t * Specifies the name of a field on which to execute an aggregate operation for all distinct values of the Facet\n\t * field.\n\t *\n\t * The Facet displays the result of the operation along with the number of occurrences for each value.\n\t *\n\t * You can use this option to compute the sum of a field (like a money amount) for each listed Facet value.\n\t *\n\t * Works in conjunction with {@link Facet.options.computedFieldOperation},\n\t * {@link Facet.options.computedFieldFormat} and {@link Facet.options.computedFieldCaption}.\n\t */\n\t computedField: ComponentOptions_1.ComponentOptions.buildFieldOption({ section: 'ComputedField', priority: 7 }),\n\t /**\n\t * Specifies the type of aggregate operation to perform on the {@link Facet.options.computedField}.\n\t *\n\t * The possible values are:\n\t * - `\"sum\"` - Computes the sum of the computed field values.\n\t * - `\"average\"` - Computes the average of the computed field values.\n\t * - `\"minimum\"` - Finds the minimum value of the computed field values.\n\t * - `\"maximum\"` - Finds the maximum value of the computed field values.\n\t *\n\t * Default value is `\"sum\"`.\n\t */\n\t computedFieldOperation: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: 'sum', section: 'ComputedField' }),\n\t /**\n\t * Specifies how to format the values resulting from a {@link Facet.options.computedFieldOperation}.\n\t *\n\t * The Globalize library defines all available formats (see\n\t * [Globalize](https://github.com/klaaspieter/jquery-global#globalizeformat-value-format-culture-)).\n\t *\n\t * The most commonly used formats are:\n\t * - `\"c0\"` - Formats the value as a currency.\n\t * - `\"n0\"` - Formats the value as an integer.\n\t * - `\"n2\"` - Formats the value as a floating point with 2 decimal digits.\n\t *\n\t * Default value is `\"c0\"`.\n\t */\n\t computedFieldFormat: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: 'c0', section: 'ComputedField' }),\n\t /**\n\t * Specifies what the caption of the {@link Facet.options.computedField} should be in the settings menu for sorting.\n\t *\n\t * For example, setting this option to `\"Money\"` will display `\"Money Ascending\"` for computed field ascending.\n\t *\n\t * Default value is the localized string for `\"ComputedField\"`.\n\t */\n\t computedFieldCaption: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({ defaultValue: Strings_1.l('ComputedField'), section: 'ComputedField' }),\n\t /**\n\t * Specifies whether the Facet should remain stable in its current position in the viewport while the mouse cursor\n\t * is over it.\n\t *\n\t * Whenever the value selection changes in a facet, the search interface automatically performs a query. This new\n\t * query might cause other elements in the page to resize themselves (typically, other facets above or below the\n\t * one the user is interacting with).\n\t *\n\t * This option is responsible for adding the `
` and\n\t * `
` around the Facet container. The Facet adjusts the scroll amount of the page to\n\t * ensure that it does not move relatively to the mouse when the results are updated.\n\t *\n\t * In some cases, the Facet also adds margins to the scrollContainer, if scrolling alone is not enough to\n\t * preserve position.\n\t *\n\t * See also {@link Facet.options.paddingContainer} and {@link Facet.options.scrollContainer}.\n\t *\n\t * Default value is `true`.\n\t */\n\t preservePosition: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies the parent container of the facets.\n\t *\n\t * Used by the {@link Facet.options.preservePosition}.\n\t *\n\t * Default value is `element.parentElement`.\n\t */\n\t paddingContainer: ComponentOptions_1.ComponentOptions.buildSelectorOption({ defaultFunction: function (element) { return element.parentElement; } }),\n\t /**\n\t * Specifies the HTML element (through a CSS selector) whose scroll amount the Facet should adjust to preserve its\n\t * position when results are updated.\n\t *\n\t * Used by {@link Facet.options.preservePosition}.\n\t *\n\t * Default value is `document.body`.\n\t */\n\t scrollContainer: ComponentOptions_1.ComponentOptions.buildSelectorOption({ defaultFunction: function (element) { return document.body; } }),\n\t /**\n\t * Specifies whether to enable the **More** and **Less** buttons in the Facet.\n\t *\n\t * See also {@link Facet.options.pageSize}.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableMoreLess: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * If {@link Facet.options.enableMoreLess} is `true`, specifies the number of additional results to fetch when\n\t * clicking on the **More** button in the Facet.\n\t *\n\t * Default value is `10`. Minimum value is `1`.\n\t */\n\t pageSize: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1, depend: 'enableMoreLess' }),\n\t /**\n\t * If {@link Facet.options.enableSettings} is `true`, specifies whether the **Collapse \\ Expand** menu option is\n\t * available in the Facet **Settings** menu.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableCollapse: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true, depend: 'enableSettings' }),\n\t /**\n\t * Specifies an explicit list of {@link IGroupByRequest.allowedValues} in the {@link IGroupByRequest}.\n\t *\n\t * This will whitelist the Facet content to some specific values.\n\t *\n\t * Example: `[\"File\", \"People\"]`.\n\t */\n\t allowedValues: ComponentOptions_1.ComponentOptions.buildListOption(),\n\t /**\n\t * Specifies an additional query expression (query override) to add to each {@link IGroupByRequest} that this Facet\n\t * performs.\n\t *\n\t * Example: `@date>=2014/01/01`\n\t */\n\t additionalFilter: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies whether this Facet only appears when a value is selected in its \"parent\" Facet.\n\t *\n\t * To specify the parent Facet, use its [id]{@link Facet.options.id}.\n\t *\n\t * Remember that by default, a Facet id is the same as its [field]{@link Facet.options.field}.\n\t *\n\t * **Examples:**\n\t *\n\t * First case: the \"parent\" Facet has no custom `id`:\n\t * ```html\n\t * \n\t *
\n\t *\n\t * \n\t *
\n\t * ```\n\t *\n\t * Second case: the \"parent\" Facet has a custom `id`:\n\t * ```html\n\t * \n\t *
\n\t *\n\t * \n\t *
\n\t * ```\n\t *\n\t * Default value is `undefined`\n\t */\n\t dependsOn: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies a JSON object describing a mapping of Facet values to their desired captions.\n\t *\n\t * You can only set this option in the {@link init} call of your search interface. You cannot set it directly in the\n\t * markup as an HTML attribute.\n\t *\n\t * Example:\n\t * ```\n\t * // Using a Facet for file types\n\t * var myValueCaption = { \"txt\": \"Text files\",\"html\": \"Web page\", [ etc ... ]};\n\t *\n\t * // You can set the option in the 'init' call using 'pure' JavaScript:\n\t * Coveo.init(document.querySelector('#search'), {\n\t * Facet : {\n\t * valueCaption: myValueCaption\n\t * }\n\t * })\n\t *\n\t * // Or the jQuery extension\n\t * $(\"#search\").coveo(\"init\", {\n\t * Facet: {\n\t * valueCaption: myValueCaption\n\t * }\n\t * })\n\t * ```\n\t */\n\t valueCaption: ComponentOptions_1.ComponentOptions.buildCustomOption(function () {\n\t return null;\n\t }),\n\t /**\n\t * Specifies whether to enable *responsive mode* for facets. Setting this options to `false` on any Facet or\n\t * {@link FacetSlider} in a search interface disables responsive mode for all other facets in the search interface.\n\t *\n\t * Responsive mode displays all facets under a single dropdown button whenever the width of the HTML element which\n\t * the search interface is bound to reaches or falls behind a certain threshold (see\n\t * {@link SearchInterface.responsiveComponents}).\n\t *\n\t * See also {@link Facet.options.dropdownHeaderLabel}.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableResponsiveMode: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t responsiveBreakpoint: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 800, deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.' }),\n\t /**\n\t * If {@link Facet.options.enableResponsiveMode} is `true` for all facets and\n\t * {@link FacetSlider.options.enableResponsiveMode} is also `true` for all sliders, specifies the label of the\n\t * dropdown button that allows to display the facets when in responsive mode.\n\t *\n\t * If more than one Facet or {@link FacetSlider} in the search interface specifies a value for this option, then the\n\t * framework uses the first occurrence of the option.\n\t *\n\t * Default value is `Filters`.\n\t */\n\t dropdownHeaderLabel: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption()\n\t};\n\texports.Facet = Facet;\n\tInitialization_1.Initialization.registerAutoCreateComponent(Facet);\n\n\n/***/ },\n/* 159 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Globalize = __webpack_require__(30);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * A class which holds information and operation available on a single facet value returned by a {@link IGroupByRequest}.
\n\t * This class is used extensibely in the {@link Facet} component.\n\t */\n\tvar FacetValue = (function () {\n\t function FacetValue() {\n\t this.selected = false;\n\t this.excluded = false;\n\t this.waitingForDelta = false;\n\t }\n\t FacetValue.prototype.reset = function () {\n\t this.selected = false;\n\t this.excluded = false;\n\t };\n\t FacetValue.prototype.updateCountsFromNewValue = function (newValue) {\n\t Assert_1.Assert.exists(newValue);\n\t this.occurrences = newValue.occurrences;\n\t this.delta = newValue.delta;\n\t this.computedField = newValue.computedField;\n\t };\n\t FacetValue.prototype.cloneWithZeroOccurrences = function () {\n\t this.occurrences = 0;\n\t this.computedField = undefined;\n\t this.delta = undefined;\n\t return this;\n\t };\n\t FacetValue.prototype.cloneWithDelta = function (count, delta) {\n\t Assert_1.Assert.isLargerOrEqualsThan(0, count);\n\t var clone = this.cloneWithZeroOccurrences();\n\t clone.delta = delta;\n\t clone.occurrences = count;\n\t return clone;\n\t };\n\t FacetValue.prototype.getFormattedCount = function () {\n\t var count = undefined;\n\t if (Utils_1.Utils.exists(this.delta) && this.delta > 0) {\n\t count = '+' + Globalize.format(this.delta, 'n0');\n\t }\n\t else {\n\t if (this.occurrences > 0) {\n\t count = Globalize.format(this.occurrences, 'n0');\n\t }\n\t }\n\t return count;\n\t };\n\t FacetValue.prototype.getFormattedComputedField = function (format) {\n\t if (this.computedField != 0) {\n\t return Globalize.format(this.computedField, format);\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t FacetValue.create = function (value) {\n\t if (_.isString(value)) {\n\t return FacetValue.createFromValue(value);\n\t }\n\t else if (_.isObject(value)) {\n\t if ('computedFieldResults' in value) {\n\t return FacetValue.createFromGroupByValue(value);\n\t }\n\t else {\n\t return FacetValue.createFromFieldValue(value);\n\t }\n\t }\n\t else {\n\t throw new Error('Can\\'t create value from ' + value);\n\t }\n\t };\n\t FacetValue.createFromValue = function (value) {\n\t Assert_1.Assert.isNonEmptyString(value);\n\t var facetValue = new FacetValue();\n\t facetValue.value = value;\n\t facetValue.lookupValue = value;\n\t return facetValue;\n\t };\n\t FacetValue.createFromGroupByValue = function (groupByValue) {\n\t Assert_1.Assert.exists(groupByValue);\n\t Assert_1.Assert.exists(groupByValue);\n\t var facetValue = new FacetValue();\n\t facetValue.value = groupByValue.value;\n\t facetValue.lookupValue = Utils_1.Utils.exists(groupByValue.lookupValue) ? groupByValue.lookupValue : groupByValue.value;\n\t facetValue.occurrences = groupByValue.numberOfResults;\n\t facetValue.computedField = Utils_1.Utils.isNonEmptyArray(groupByValue.computedFieldResults) ? groupByValue.computedFieldResults[0] : undefined;\n\t facetValue.score = groupByValue.score;\n\t return facetValue;\n\t };\n\t FacetValue.createFromFieldValue = function (fieldValue) {\n\t Assert_1.Assert.exists(fieldValue);\n\t var facetValue = new FacetValue();\n\t facetValue.value = fieldValue.value;\n\t facetValue.lookupValue = fieldValue.lookupValue;\n\t facetValue.occurrences = fieldValue.numberOfResults;\n\t return facetValue;\n\t };\n\t return FacetValue;\n\t}());\n\texports.FacetValue = FacetValue;\n\tvar FacetValues = (function () {\n\t function FacetValues(groupByResult) {\n\t if (Utils_1.Utils.exists(groupByResult)) {\n\t this.values = _.map(groupByResult.values, function (groupByValue) { return FacetValue.createFromGroupByValue(groupByValue); });\n\t }\n\t else {\n\t this.values = [];\n\t }\n\t }\n\t FacetValues.prototype.add = function (facetValue) {\n\t Assert_1.Assert.exists(facetValue);\n\t Assert_1.Assert.check(!this.contains(facetValue.value));\n\t this.values.push(facetValue);\n\t };\n\t FacetValues.prototype.remove = function (value) {\n\t Assert_1.Assert.isNonEmptyString(value);\n\t value = value;\n\t this.values = _.filter(this.values, function (elem) { return elem.value != value; });\n\t };\n\t FacetValues.prototype.size = function () {\n\t return this.values.length;\n\t };\n\t FacetValues.prototype.isEmpty = function () {\n\t return this.values.length == 0;\n\t };\n\t FacetValues.prototype.at = function (index) {\n\t Assert_1.Assert.isLargerOrEqualsThan(0, index);\n\t Assert_1.Assert.isSmallerThan(this.values.length, index);\n\t return this.values[index];\n\t };\n\t FacetValues.prototype.get = function (value) {\n\t return _.find(this.values, function (elem) { return elem.value.toLowerCase() == value.toLowerCase(); });\n\t };\n\t FacetValues.prototype.contains = function (value) {\n\t return Utils_1.Utils.exists(this.get(value));\n\t };\n\t FacetValues.prototype.getAll = function () {\n\t return this.values;\n\t };\n\t FacetValues.prototype.getSelected = function () {\n\t return _.filter(this.values, function (value) { return value.selected; });\n\t };\n\t FacetValues.prototype.getExcluded = function () {\n\t return _.filter(this.values, function (value) { return value.excluded; });\n\t };\n\t FacetValues.prototype.hasSelectedOrExcludedValues = function () {\n\t return this.getSelected().length != 0 || this.getExcluded().length != 0;\n\t };\n\t FacetValues.prototype.reset = function () {\n\t _.each(this.values, function (elem) { return elem.reset(); });\n\t };\n\t FacetValues.prototype.importActiveValuesFromOtherList = function (other) {\n\t var _this = this;\n\t Assert_1.Assert.exists(other);\n\t _.each(other.getSelected(), function (otherValue) {\n\t var myValue = _this.get(otherValue.value);\n\t if (Utils_1.Utils.exists(myValue)) {\n\t myValue.selected = true;\n\t }\n\t else {\n\t _this.values.push(otherValue.cloneWithZeroOccurrences());\n\t }\n\t });\n\t _.each(other.getExcluded(), function (otherValue) {\n\t var myValue = _this.get(otherValue.value);\n\t if (Utils_1.Utils.exists(myValue)) {\n\t myValue.excluded = true;\n\t }\n\t else if (otherValue.occurrences != 0) {\n\t var occurrences = otherValue.occurrences;\n\t var clone = otherValue.cloneWithZeroOccurrences();\n\t clone.occurrences = occurrences;\n\t _this.values.push(clone);\n\t }\n\t else {\n\t _this.values.push(otherValue.cloneWithZeroOccurrences());\n\t }\n\t });\n\t };\n\t FacetValues.prototype.updateCountsFromNewValues = function (newValues) {\n\t Assert_1.Assert.exists(newValues);\n\t this.values = _.map(this.values, function (myValue) {\n\t var newValue = newValues.get(myValue.value);\n\t if (Utils_1.Utils.exists(newValue)) {\n\t myValue.updateCountsFromNewValue(newValue);\n\t return myValue;\n\t }\n\t else {\n\t return myValue.cloneWithZeroOccurrences();\n\t }\n\t });\n\t };\n\t FacetValues.prototype.updateDeltaWithFilteredFacetValues = function (filtered) {\n\t Assert_1.Assert.exists(filtered);\n\t _.each(this.values, function (unfilteredValue) {\n\t var filteredValue = filtered.get(unfilteredValue.value);\n\t unfilteredValue.waitingForDelta = false;\n\t if (Utils_1.Utils.exists(filteredValue)) {\n\t if (unfilteredValue.occurrences - filteredValue.occurrences > 0) {\n\t unfilteredValue.delta = unfilteredValue.occurrences - filteredValue.occurrences;\n\t }\n\t else {\n\t unfilteredValue.delta = null;\n\t }\n\t }\n\t else if (!unfilteredValue.selected && !unfilteredValue.excluded) {\n\t unfilteredValue.delta = unfilteredValue.occurrences;\n\t }\n\t });\n\t };\n\t FacetValues.prototype.mergeWithUnfilteredFacetValues = function (unfiltered) {\n\t var _this = this;\n\t Assert_1.Assert.exists(unfiltered);\n\t var values = [];\n\t _.each(unfiltered.values, function (unfilteredValue) {\n\t var filteredValue = _this.get(unfilteredValue.value);\n\t if (Utils_1.Utils.exists(filteredValue)) {\n\t if (filteredValue.occurrences == unfilteredValue.occurrences) {\n\t values.push(filteredValue);\n\t }\n\t else {\n\t values.push(unfilteredValue.cloneWithDelta(unfilteredValue.occurrences, unfilteredValue.occurrences - filteredValue.occurrences));\n\t }\n\t }\n\t else {\n\t values.push(unfilteredValue.cloneWithDelta(unfilteredValue.occurrences, unfilteredValue.occurrences));\n\t }\n\t });\n\t var index = 0;\n\t _.each(this.values, function (value) {\n\t var unfilteredValue = unfiltered.get(value.value);\n\t if (!Utils_1.Utils.exists(unfilteredValue)) {\n\t if (value.selected || value.excluded) {\n\t values.splice(index, 0, value);\n\t index++;\n\t }\n\t }\n\t else {\n\t for (var i = 0; i < values.length; i++) {\n\t if (values[i].value == value.value) {\n\t index = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t });\n\t this.values = values;\n\t };\n\t FacetValues.prototype.sortValuesDependingOnStatus = function (excludeLastIndex) {\n\t this.values = _.sortBy(this.values, function (value) {\n\t if (value.selected) {\n\t return 1;\n\t }\n\t else if (value.excluded) {\n\t return 3;\n\t }\n\t else {\n\t return 2;\n\t }\n\t });\n\t if (excludeLastIndex != null && excludeLastIndex < this.values.length) {\n\t var nbExclude = this.getExcluded().length;\n\t var excludes = this.values.splice(this.values.length - nbExclude, nbExclude);\n\t Array.prototype.splice.apply(this.values, [excludeLastIndex - nbExclude, 0].concat(excludes));\n\t }\n\t };\n\t return FacetValues;\n\t}());\n\texports.FacetValues = FacetValues;\n\n\n/***/ },\n/* 160 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Facet_1 = __webpack_require__(158);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar InitializationEvents_1 = __webpack_require__(47);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar EventsUtils_1 = __webpack_require__(140);\n\tvar FacetSearchParameters_1 = __webpack_require__(94);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Component_1 = __webpack_require__(109);\n\tvar DomUtils_1 = __webpack_require__(62);\n\tvar PopupUtils_1 = __webpack_require__(73);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar KeyboardUtils_1 = __webpack_require__(70);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar FacetValues_1 = __webpack_require__(159);\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar FacetValueElement_1 = __webpack_require__(161);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar ResponsiveComponentsUtils_1 = __webpack_require__(141);\n\tvar FacetValuesOrder_1 = __webpack_require__(164);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * Used by the {@link Facet} component to render and handle the facet search part of each facet.\n\t */\n\tvar FacetSearch = (function () {\n\t function FacetSearch(facet, facetSearchValuesListKlass, root) {\n\t var _this = this;\n\t this.facet = facet;\n\t this.facetSearchValuesListKlass = facetSearchValuesListKlass;\n\t this.root = root;\n\t this.showingFacetSearchWaitAnimation = false;\n\t this.moreValuesToFetch = true;\n\t this.searchBarIsAnimating = false;\n\t this.lastSearchWasEmpty = true;\n\t this.searchResults = document.createElement('ul');\n\t Dom_1.$$(this.searchResults).addClass('coveo-facet-search-results');\n\t this.onResize = _.debounce(function () {\n\t // Mitigate issues in UT where the window in phantom js might get resized in the scope of another test.\n\t // These would point to random instance of a test karma object, and not a real search interface.\n\t if (_this.facet instanceof Facet_1.Facet && _this.facet.searchInterface instanceof SearchInterface_1.SearchInterface) {\n\t if (_this.shouldPositionSearchResults()) {\n\t _this.positionSearchResults();\n\t }\n\t }\n\t }, 250);\n\t this.onDocumentClick = function (e) {\n\t _this.handleClickElsewhere(e);\n\t };\n\t window.addEventListener('resize', function () { return _this.onResize(); });\n\t document.addEventListener('click', function (e) { return _this.onDocumentClick(e); });\n\t Dom_1.$$(facet.root).on(InitializationEvents_1.InitializationEvents.nuke, function () { return _this.handleNuke(); });\n\t }\n\t FacetSearch.prototype.isMobileDevice = function () {\n\t return DeviceUtils_1.DeviceUtils.isMobileDevice() && !this.facet.searchInterface.isNewDesign();\n\t };\n\t /**\n\t * Build the search component and return an `HTMLElement` which can be appended to the {@link Facet}.\n\t * @returns {HTMLElement}\n\t */\n\t FacetSearch.prototype.build = function () {\n\t if (this.isMobileDevice()) {\n\t return this.buildSearchMobile();\n\t }\n\t else {\n\t return this.buildBaseSearch();\n\t }\n\t };\n\t /**\n\t * Position the search results at the footer of the facet.\n\t */\n\t FacetSearch.prototype.positionSearchResults = function (nextTo) {\n\t if (nextTo === void 0) { nextTo = this.search; }\n\t if (this.searchResults != null) {\n\t if (!this.isMobileDevice()) {\n\t this.searchResults.style.display = 'block';\n\t this.searchResults.style.width = this.facet.element.clientWidth - 40 + 'px';\n\t }\n\t if (Dom_1.$$(this.searchResults).css('display') == 'none') {\n\t this.searchResults.style.display = '';\n\t }\n\t var searchBar = Dom_1.$$(this.search);\n\t if (searchBar.css('display') == 'none' || this.searchBarIsAnimating) {\n\t if (Dom_1.$$(this.searchResults).css('display') == 'none') {\n\t this.searchResults.style.display = '';\n\t }\n\t var self_1 = this;\n\t EventsUtils_1.EventsUtils.addPrefixedEvent(this.search, 'AnimationEnd', function (evt) {\n\t PopupUtils_1.PopupUtils.positionPopup(self_1.searchResults, nextTo, self_1.root, { horizontal: PopupUtils_1.HorizontalAlignment.CENTER, vertical: PopupUtils_1.VerticalAlignment.BOTTOM });\n\t EventsUtils_1.EventsUtils.removePrefixedEvent(self_1.search, 'AnimationEnd', this);\n\t });\n\t }\n\t else {\n\t PopupUtils_1.PopupUtils.positionPopup(this.searchResults, nextTo, this.root, { horizontal: PopupUtils_1.HorizontalAlignment.CENTER, vertical: PopupUtils_1.VerticalAlignment.BOTTOM });\n\t }\n\t }\n\t };\n\t /**\n\t * Dismiss the search results\n\t */\n\t FacetSearch.prototype.completelyDismissSearch = function () {\n\t this.cancelAnyPendingSearchOperation();\n\t this.facet.unfadeInactiveValuesInMainList();\n\t Dom_1.$$(this.searchResults).empty();\n\t this.moreValuesToFetch = true;\n\t Dom_1.$$(this.search).removeClass('coveo-facet-search-no-results');\n\t Dom_1.$$(this.facet.element).removeClass('coveo-facet-searching');\n\t this.hideSearchResultsElement();\n\t this.input.value = '';\n\t Dom_1.$$(this.clear).hide();\n\t this.currentlyDisplayedResults = undefined;\n\t };\n\t /**\n\t * Trigger a new facet search, and display the results.\n\t * @param params\n\t */\n\t FacetSearch.prototype.triggerNewFacetSearch = function (params) {\n\t var _this = this;\n\t this.cancelAnyPendingSearchOperation();\n\t this.showFacetSearchWaitingAnimation();\n\t this.facet.logger.info('Triggering new facet search');\n\t this.facetSearchPromise = this.facet.facetQueryController.search(params);\n\t if (this.facetSearchPromise) {\n\t this.facetSearchPromise.then(function (fieldValues) {\n\t _this.facet.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetSearch, {\n\t facetId: _this.facet.options.id,\n\t facetTitle: _this.facet.options.title\n\t }, _this.facet.root);\n\t _this.facet.logger.debug('Received field values', fieldValues);\n\t _this.processNewFacetSearchResults(fieldValues, params);\n\t _this.hideFacetSearchWaitingAnimation();\n\t _this.facetSearchPromise = undefined;\n\t }).catch(function (error) {\n\t // The request might be normally cancelled if another search is triggered.\n\t // In this case we do not hide the animation to prevent flicking.\n\t if (Utils_1.Utils.exists(error)) {\n\t _this.facet.logger.error('Error while retrieving facet values', error);\n\t _this.hideFacetSearchWaitingAnimation();\n\t }\n\t _this.facetSearchPromise = undefined;\n\t return null;\n\t });\n\t }\n\t };\n\t /**\n\t * Trigger the event associated with the focus of the search input.\n\t */\n\t FacetSearch.prototype.focus = function () {\n\t this.input.focus();\n\t this.handleFacetSearchFocus();\n\t };\n\t FacetSearch.prototype.shouldPositionSearchResults = function () {\n\t return !this.isMobileDevice() && !ResponsiveComponentsUtils_1.ResponsiveComponentsUtils.isSmallFacetActivated(Dom_1.$$(this.root))\n\t && Dom_1.$$(this.facet.element).hasClass('coveo-facet-searching');\n\t };\n\t FacetSearch.prototype.buildBaseSearch = function () {\n\t var _this = this;\n\t this.search = document.createElement('div');\n\t Dom_1.$$(this.search).addClass('coveo-facet-search');\n\t this.magnifier = document.createElement('div');\n\t Dom_1.$$(this.magnifier).addClass('coveo-facet-search-magnifier');\n\t this.search.appendChild(this.magnifier);\n\t this.wait = document.createElement('div');\n\t Dom_1.$$(this.wait).addClass('coveo-facet-search-wait-animation');\n\t this.search.appendChild(this.wait);\n\t this.hideFacetSearchWaitingAnimation();\n\t this.clear = document.createElement('div');\n\t Dom_1.$$(this.clear).addClass('coveo-facet-search-clear');\n\t this.clear.setAttribute('title', Strings_1.l('Clear', Strings_1.l('Search')));\n\t this.clear.style.display = 'none';\n\t this.search.appendChild(this.clear);\n\t this.clearIcon = document.createElement('span');\n\t Dom_1.$$(this.clearIcon).addClass('coveo-icon');\n\t this.clear.appendChild(this.clearIcon);\n\t this.middle = document.createElement('div');\n\t Dom_1.$$(this.middle).addClass('coveo-facet-search-middle');\n\t this.search.appendChild(this.middle);\n\t this.input = document.createElement('input');\n\t this.input.setAttribute('type', 'text');\n\t this.input.setAttribute('autocapitalize', 'off');\n\t this.input.setAttribute('autocorrect', 'off');\n\t this.input.setAttribute('placeholder', this.facet.searchInterface.isNewDesign() ? '' : Strings_1.l('SearchIn', this.facet.options.title));\n\t Dom_1.$$(this.input).addClass('coveo-facet-search-input');\n\t Component_1.Component.pointElementsToDummyForm(this.input);\n\t this.middle.appendChild(this.input);\n\t Dom_1.$$(this.input).on('keyup', function (e) { return _this.handleFacetSearchKeyUp(e); });\n\t Dom_1.$$(this.clear).on('click', function (e) { return _this.handleFacetSearchClear(); });\n\t Dom_1.$$(this.input).on('focus', function (e) { return _this.handleFacetSearchFocus(); });\n\t this.detectSearchBarAnimation();\n\t this.root.appendChild(this.searchResults);\n\t this.searchResults.style.display = 'none';\n\t return this.search;\n\t };\n\t FacetSearch.prototype.buildSearchMobile = function () {\n\t var _this = this;\n\t var button = document.createElement('div');\n\t Dom_1.$$(button).addClass('coveo-facet-search-button-mobile');\n\t Dom_1.$$(button).text(Strings_1.l('Search'));\n\t this.search = this.buildBaseSearch();\n\t Dom_1.$$(button).on('click', function () {\n\t var toOpen = document.createElement('div');\n\t toOpen.appendChild(_this.search);\n\t ExternalModulesShim_1.ModalBox.open(toOpen, {\n\t title: DomUtils_1.DomUtils.getPopUpCloseButton(Strings_1.l('Close'), Strings_1.l('SearchIn', _this.facet.options.title)),\n\t validation: function () {\n\t _this.completelyDismissSearch();\n\t return true;\n\t },\n\t className: 'coveo-mobile-facet-search',\n\t titleClose: true\n\t });\n\t _this.input.value = '';\n\t _this.input.focus();\n\t });\n\t return button;\n\t };\n\t FacetSearch.prototype.handleFacetSearchKeyUp = function (event) {\n\t Assert_1.Assert.exists(event);\n\t var isEmpty = this.input.value.trim() == '';\n\t this.showOrHideClearElement(isEmpty);\n\t if (!this.isMobileDevice()) {\n\t this.handleKeyboardNavigation(event, isEmpty);\n\t }\n\t else {\n\t this.startNewSearchTimeout(this.buildParamsForNormalSearch());\n\t }\n\t };\n\t FacetSearch.prototype.handleNuke = function () {\n\t window.removeEventListener('resize', this.onResize);\n\t document.removeEventListener('click', this.onDocumentClick);\n\t };\n\t FacetSearch.prototype.handleFacetSearchFocus = function () {\n\t if (!this.isMobileDevice()) {\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t // Trigger a query only if the results are not already rendered.\n\t // Protect against the case where user can \"focus\" out of the search box by clicking not directly on a search results\n\t // Then re-focusing the search box\n\t if (this.currentlyDisplayedResults == null) {\n\t this.startNewSearchTimeout(this.buildParamsForExcludingCurrentlyDisplayedValues());\n\t }\n\t }\n\t else {\n\t this.startNewSearchTimeout(this.buildParamsForNormalSearch());\n\t }\n\t }\n\t };\n\t FacetSearch.prototype.handleClickElsewhere = function (event) {\n\t if (this.currentlyDisplayedResults && !this.isMobileDevice() && this.search != event.target && this.searchResults != event.target && this.input != event.target) {\n\t this.completelyDismissSearch();\n\t }\n\t };\n\t FacetSearch.prototype.handleFacetSearchClear = function () {\n\t this.input.value = '';\n\t Dom_1.$$(this.clear).hide();\n\t this.completelyDismissSearch();\n\t };\n\t FacetSearch.prototype.showOrHideClearElement = function (isEmpty) {\n\t if (!isEmpty) {\n\t Dom_1.$$(this.clear).show();\n\t }\n\t else {\n\t Dom_1.$$(this.clear).hide();\n\t Dom_1.$$(this.search).removeClass('coveo-facet-search-no-results');\n\t }\n\t };\n\t FacetSearch.prototype.handleKeyboardNavigation = function (event, isEmpty) {\n\t switch (event.which) {\n\t case KeyboardUtils_1.KEYBOARD.ENTER:\n\t this.keyboardNavigationEnterPressed(event, isEmpty);\n\t break;\n\t case KeyboardUtils_1.KEYBOARD.DELETE:\n\t this.keyboardNavigationDeletePressed(event);\n\t break;\n\t case KeyboardUtils_1.KEYBOARD.ESCAPE:\n\t this.completelyDismissSearch();\n\t break;\n\t case KeyboardUtils_1.KEYBOARD.DOWN_ARROW:\n\t this.moveCurrentResultDown();\n\t break;\n\t case KeyboardUtils_1.KEYBOARD.UP_ARROW:\n\t this.moveCurrentResultUp();\n\t break;\n\t default:\n\t this.moreValuesToFetch = true;\n\t this.highlightCurrentQueryWithinSearchResults();\n\t if (!isEmpty) {\n\t this.lastSearchWasEmpty = false;\n\t this.startNewSearchTimeout(this.buildParamsForNormalSearch());\n\t }\n\t else if (!this.lastSearchWasEmpty) {\n\t // This normally happen if a user delete the search box content to go back to \"empty\" state.\n\t this.currentlyDisplayedResults = undefined;\n\t Dom_1.$$(this.searchResults).empty();\n\t this.lastSearchWasEmpty = true;\n\t this.startNewSearchTimeout(this.buildParamsForFetchingMore());\n\t }\n\t break;\n\t }\n\t };\n\t FacetSearch.prototype.keyboardNavigationEnterPressed = function (event, isEmpty) {\n\t if (event.shiftKey) {\n\t this.triggerNewFacetSearch(this.buildParamsForNormalSearch());\n\t }\n\t else {\n\t if (this.searchResults.style.display != 'none') {\n\t this.performSelectActionOnCurrentSearchResult();\n\t this.completelyDismissSearch();\n\t }\n\t else if (Dom_1.$$(this.search).is('.coveo-facet-search-no-results') && !isEmpty) {\n\t this.selectAllValuesMatchingSearch();\n\t }\n\t }\n\t };\n\t FacetSearch.prototype.keyboardNavigationDeletePressed = function (event) {\n\t if (event.shiftKey) {\n\t this.performExcludeActionOnCurrentSearchResult();\n\t this.completelyDismissSearch();\n\t this.input.value = '';\n\t }\n\t };\n\t FacetSearch.prototype.startNewSearchTimeout = function (params) {\n\t var _this = this;\n\t this.cancelAnyPendingSearchOperation();\n\t this.facetSearchTimeout = setTimeout(function () {\n\t var valueInInput = _this.getValueInInputForFacetSearch();\n\t if (valueInInput == '') {\n\t if (params.searchEvenIfEmpty) {\n\t _this.triggerNewFacetSearch(params);\n\t }\n\t else {\n\t _this.completelyDismissSearch();\n\t }\n\t }\n\t else {\n\t _this.triggerNewFacetSearch(params);\n\t }\n\t }, this.facet.options.facetSearchDelay);\n\t };\n\t FacetSearch.prototype.cancelAnyPendingSearchOperation = function () {\n\t if (Utils_1.Utils.exists(this.facetSearchTimeout)) {\n\t clearTimeout(this.facetSearchTimeout);\n\t this.facetSearchTimeout = undefined;\n\t }\n\t if (Utils_1.Utils.exists(this.facetSearchPromise)) {\n\t Promise.reject(this.facetSearchPromise).catch(function () {\n\t });\n\t this.facetSearchPromise = undefined;\n\t }\n\t this.hideFacetSearchWaitingAnimation();\n\t };\n\t FacetSearch.prototype.processNewFacetSearchResults = function (fieldValues, facetSearchParameters) {\n\t Assert_1.Assert.exists(fieldValues);\n\t fieldValues = new FacetValuesOrder_1.FacetValuesOrder(this.facet, this.facet.facetSort).reorderValues(fieldValues);\n\t if (fieldValues.length > 0) {\n\t Dom_1.$$(this.search).removeClass('coveo-facet-search-no-results');\n\t this.facet.fadeInactiveValuesInMainList(this.facet.options.facetSearchDelay);\n\t this.rebuildSearchResults(fieldValues, facetSearchParameters);\n\t if (!facetSearchParameters.fetchMore) {\n\t this.showSearchResultsElement();\n\t }\n\t this.highlightCurrentQueryWithinSearchResults();\n\t FacetUtils_1.FacetUtils.clipCaptionsToAvoidOverflowingTheirContainer(this.facet, true);\n\t this.makeFirstSearchResultTheCurrentOne();\n\t }\n\t else {\n\t if (facetSearchParameters.fetchMore) {\n\t this.moreValuesToFetch = false;\n\t }\n\t else {\n\t this.hideSearchResultsElement();\n\t Dom_1.$$(this.search).addClass('coveo-facet-search-no-results');\n\t }\n\t }\n\t };\n\t FacetSearch.prototype.rebuildSearchResults = function (fieldValues, facetSearchParameters) {\n\t var _this = this;\n\t Assert_1.Assert.exists(fieldValues);\n\t if (!facetSearchParameters.fetchMore) {\n\t Dom_1.$$(this.searchResults).empty();\n\t }\n\t var selectAll = document.createElement('li');\n\t if (Utils_1.Utils.isNonEmptyString(facetSearchParameters.valueToSearch)) {\n\t Dom_1.$$(selectAll).addClass(['coveo-facet-selectable', 'coveo-facet-search-selectable', 'coveo-facet-search-select-all']);\n\t Dom_1.$$(selectAll).text(Strings_1.l('SelectAll'));\n\t Dom_1.$$(selectAll).on('click', function () { return _this.selectAllValuesMatchingSearch(); });\n\t if (!this.isMobileDevice()) {\n\t this.searchResults.appendChild(selectAll);\n\t }\n\t }\n\t var facetValues = _.map(fieldValues, function (fieldValue) {\n\t return FacetValues_1.FacetValue.create(fieldValue);\n\t });\n\t _.each(new this.facetSearchValuesListKlass(this.facet, FacetValueElement_1.FacetValueElement).build(facetValues), function (listElement) {\n\t _this.searchResults.appendChild(listElement);\n\t });\n\t if (this.currentlyDisplayedResults) {\n\t this.currentlyDisplayedResults = this.currentlyDisplayedResults.concat(_.pluck(facetValues, 'value'));\n\t }\n\t else {\n\t this.currentlyDisplayedResults = _.pluck(facetValues, 'value');\n\t }\n\t if (this.isMobileDevice()) {\n\t var selectAllMobile = document.createElement('span');\n\t Dom_1.$$(selectAllMobile).addClass('coveo-mobile-facet-search-select-all');\n\t selectAll.appendChild(selectAllMobile);\n\t this.searchResults.appendChild(selectAll);\n\t }\n\t _.each(Dom_1.$$(this.searchResults).findAll('.coveo-facet-selectable'), function (elem) {\n\t Dom_1.$$(elem).addClass('coveo-facet-search-selectable');\n\t _this.setupFacetSearchResultsEvents(elem);\n\t });\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t Dom_1.$$(this.searchResults).on('scroll', function () { return _this.handleFacetSearchResultsScroll(); });\n\t }\n\t };\n\t FacetSearch.prototype.setupFacetSearchResultsEvents = function (elem) {\n\t var _this = this;\n\t Dom_1.$$(elem).on('mousemove', function () {\n\t _this.makeCurrentResult(elem);\n\t });\n\t // Prevent closing the search results on the end of a touch drag\n\t var touchDragging = false;\n\t var mouseDragging = false;\n\t Dom_1.$$(elem).on('mousedown', function () { return mouseDragging = false; });\n\t Dom_1.$$(elem).on('mousemove', function () { return mouseDragging = true; });\n\t Dom_1.$$(elem).on('touchmove', function () { return touchDragging = true; });\n\t Dom_1.$$(elem).on('mouseup touchend', function () {\n\t if (!touchDragging && !mouseDragging) {\n\t setTimeout(function () {\n\t _this.completelyDismissSearch();\n\t }, 0); // setTimeout is to give time to trigger the click event before hiding the search menu.\n\t }\n\t touchDragging = false;\n\t mouseDragging = false;\n\t });\n\t };\n\t FacetSearch.prototype.handleFacetSearchResultsScroll = function () {\n\t if (this.facetSearchPromise || this.getValueInInputForFacetSearch() != '' || !this.moreValuesToFetch) {\n\t return;\n\t }\n\t var elementHeight = this.searchResults.clientHeight;\n\t var scrollHeight = this.searchResults.scrollHeight;\n\t var bottomPosition = this.searchResults.scrollTop + elementHeight;\n\t if ((scrollHeight - bottomPosition) < elementHeight / 2) {\n\t this.triggerNewFacetSearch(this.buildParamsForFetchingMore());\n\t }\n\t };\n\t FacetSearch.prototype.buildParamsForNormalSearch = function () {\n\t var params = new FacetSearchParameters_1.FacetSearchParameters(this.facet);\n\t params.setValueToSearch(this.getValueInInputForFacetSearch());\n\t params.fetchMore = false;\n\t return params;\n\t };\n\t FacetSearch.prototype.buildParamsForFetchingMore = function () {\n\t var params = this.buildParamsForExcludingCurrentlyDisplayedValues();\n\t params.fetchMore = true;\n\t return params;\n\t };\n\t FacetSearch.prototype.buildParamsForExcludingCurrentlyDisplayedValues = function () {\n\t var params = new FacetSearchParameters_1.FacetSearchParameters(this.facet);\n\t params.excludeCurrentlyDisplayedValuesInSearch(this.searchResults);\n\t params.setValueToSearch(this.getValueInInputForFacetSearch());\n\t return params;\n\t };\n\t FacetSearch.prototype.showSearchResultsElement = function () {\n\t this.positionSearchResults();\n\t };\n\t FacetSearch.prototype.hideSearchResultsElement = function () {\n\t this.searchResults.style.display = 'none';\n\t };\n\t FacetSearch.prototype.highlightCurrentQueryWithinSearchResults = function () {\n\t var _this = this;\n\t var captions = Dom_1.$$(this.searchResults).findAll('.coveo-facet-value-caption');\n\t _.each(captions, function (captionElement) {\n\t var search = _this.getValueInInputForFacetSearch();\n\t var regex = new RegExp('(' + StringUtils_1.StringUtils.wildcardsToRegex(search, _this.facet.options.facetSearchIgnoreAccents) + ')', 'ig');\n\t var text = Dom_1.$$(captionElement).text();\n\t var highlighted = text.replace(regex, '$1');\n\t captionElement.innerHTML = highlighted;\n\t });\n\t };\n\t FacetSearch.prototype.makeFirstSearchResultTheCurrentOne = function () {\n\t this.makeCurrentResult(this.getSelectables()[0]);\n\t };\n\t FacetSearch.prototype.makeCurrentResult = function (result) {\n\t _.each(this.getSelectables(), function (selectable) {\n\t Dom_1.$$(selectable).removeClass('coveo-current');\n\t });\n\t Dom_1.$$(result).addClass('coveo-current');\n\t };\n\t FacetSearch.prototype.moveCurrentResultDown = function () {\n\t var current = Dom_1.$$(this.searchResults).find('.coveo-current');\n\t _.each(this.getSelectables(), function (selectable) {\n\t Dom_1.$$(selectable).removeClass('coveo-current');\n\t });\n\t var allSelectables = this.getSelectables();\n\t var idx = _.indexOf(allSelectables, current);\n\t var target;\n\t if (idx < allSelectables.length - 1) {\n\t target = Dom_1.$$(allSelectables[idx + 1]);\n\t }\n\t else {\n\t target = Dom_1.$$(allSelectables[0]);\n\t }\n\t this.highlightAndShowCurrentResultWithKeyboard(target);\n\t };\n\t FacetSearch.prototype.moveCurrentResultUp = function () {\n\t var current = Dom_1.$$(this.searchResults).find('.coveo-current');\n\t _.each(Dom_1.$$(this.searchResults).findAll('.coveo-facet-selectable'), function (s) {\n\t Dom_1.$$(s).removeClass('coveo-current');\n\t });\n\t var allSelectables = this.getSelectables();\n\t var idx = _.indexOf(allSelectables, current);\n\t var target;\n\t if (idx > 0) {\n\t target = Dom_1.$$(allSelectables[idx - 1]);\n\t }\n\t else {\n\t target = Dom_1.$$(allSelectables[allSelectables.length - 1]);\n\t }\n\t this.highlightAndShowCurrentResultWithKeyboard(target);\n\t };\n\t FacetSearch.prototype.highlightAndShowCurrentResultWithKeyboard = function (target) {\n\t target.addClass('coveo-current');\n\t this.searchResults.scrollTop = target.el.offsetTop;\n\t };\n\t FacetSearch.prototype.getSelectables = function (target) {\n\t if (target === void 0) { target = this.searchResults; }\n\t return Dom_1.$$(target).findAll('.coveo-facet-selectable');\n\t };\n\t FacetSearch.prototype.performSelectActionOnCurrentSearchResult = function () {\n\t var current = Dom_1.$$(this.searchResults).find('.coveo-current');\n\t Assert_1.Assert.check(current != undefined);\n\t var checkbox = Dom_1.$$(current).find('input[type=\"checkbox\"]');\n\t if (checkbox != undefined) {\n\t checkbox.checked = true;\n\t Dom_1.$$(checkbox).trigger('change');\n\t }\n\t else {\n\t current.click();\n\t }\n\t };\n\t FacetSearch.prototype.performExcludeActionOnCurrentSearchResult = function () {\n\t var current = Dom_1.$$(this.searchResults).find('.coveo-current');\n\t Assert_1.Assert.check(current != null);\n\t var valueCaption = Dom_1.$$(current).find('.coveo-facet-value-caption');\n\t var valueElement = this.facet.facetValuesList.get(Dom_1.$$(valueCaption).text());\n\t valueElement.toggleExcludeWithUA();\n\t };\n\t FacetSearch.prototype.getValueInInputForFacetSearch = function () {\n\t return this.input.value.trim();\n\t };\n\t FacetSearch.prototype.selectAllValuesMatchingSearch = function () {\n\t var _this = this;\n\t this.facet.showWaitingAnimation();\n\t var searchParameters = new FacetSearchParameters_1.FacetSearchParameters(this.facet);\n\t searchParameters.nbResults = 1000;\n\t searchParameters.setValueToSearch(this.getValueInInputForFacetSearch());\n\t this.facet.facetQueryController.search(searchParameters).then(function (fieldValues) {\n\t _this.completelyDismissSearch();\n\t ExternalModulesShim_1.ModalBox.close(true);\n\t var facetValues = _.map(fieldValues, function (fieldValue) {\n\t var facetValue = _this.facet.values.get(fieldValue.value);\n\t if (!Utils_1.Utils.exists(facetValue)) {\n\t facetValue = FacetValues_1.FacetValue.create(fieldValue);\n\t }\n\t facetValue.selected = true;\n\t facetValue.excluded = false;\n\t return facetValue;\n\t });\n\t _this.facet.processFacetSearchAllResultsSelected(facetValues);\n\t });\n\t this.completelyDismissSearch();\n\t };\n\t FacetSearch.prototype.showFacetSearchWaitingAnimation = function () {\n\t Dom_1.$$(this.magnifier).hide();\n\t Dom_1.$$(this.wait).show();\n\t this.showingFacetSearchWaitAnimation = true;\n\t };\n\t FacetSearch.prototype.hideFacetSearchWaitingAnimation = function () {\n\t Dom_1.$$(this.magnifier).show();\n\t Dom_1.$$(this.wait).hide();\n\t this.showingFacetSearchWaitAnimation = false;\n\t };\n\t FacetSearch.prototype.detectSearchBarAnimation = function () {\n\t var _this = this;\n\t EventsUtils_1.EventsUtils.addPrefixedEvent(this.search, 'AnimationStart', function (event) {\n\t if (event.animationName == 'grow') {\n\t _this.searchBarIsAnimating = true;\n\t }\n\t });\n\t EventsUtils_1.EventsUtils.addPrefixedEvent(this.search, 'AnimationEnd', function (event) {\n\t if (event.animationName == 'grow') {\n\t _this.searchBarIsAnimating = false;\n\t }\n\t });\n\t };\n\t return FacetSearch;\n\t}());\n\texports.FacetSearch = FacetSearch;\n\n\n/***/ },\n/* 161 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar ValueElement_1 = __webpack_require__(162);\n\tvar FacetValueElement = (function (_super) {\n\t __extends(FacetValueElement, _super);\n\t function FacetValueElement(facet, facetValue, keepDisplayedValueNextTime) {\n\t var _this = _super.call(this, facet, facetValue) || this;\n\t _this.facet = facet;\n\t _this.facetValue = facetValue;\n\t _this.keepDisplayedValueNextTime = keepDisplayedValueNextTime;\n\t _this.firstQuery = true;\n\t // The analytics code expect a first query to be made to link the user action with a query UID\n\t Dom_1.$$(facet.root).one(QueryEvents_1.QueryEvents.querySuccess, function () {\n\t _this.firstQuery = false;\n\t });\n\t return _this;\n\t }\n\t FacetValueElement.prototype.bindEvent = function () {\n\t _super.prototype.bindEvent.call(this, { displayNextTime: this.keepDisplayedValueNextTime, pinFacet: this.facet.options.preservePosition });\n\t };\n\t return FacetValueElement;\n\t}(ValueElement_1.ValueElement));\n\texports.FacetValueElement = FacetValueElement;\n\n\n/***/ },\n/* 162 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ValueElementRenderer_1 = __webpack_require__(163);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar Defer_1 = __webpack_require__(34);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar KeyboardUtils_1 = __webpack_require__(70);\n\tvar ValueElement = (function () {\n\t function ValueElement(facet, facetValue, onSelect, onExclude) {\n\t this.facet = facet;\n\t this.facetValue = facetValue;\n\t this.onSelect = onSelect;\n\t this.onExclude = onExclude;\n\t }\n\t ValueElement.prototype.build = function () {\n\t this.renderer = new ValueElementRenderer_1.ValueElementRenderer(this.facet, this.facetValue).build();\n\t this.bindEvent({ displayNextTime: true, pinFacet: this.facet.options.preservePosition });\n\t return this;\n\t };\n\t ValueElement.prototype.bindEvent = function (eventBindings) {\n\t if (!Utils_1.Utils.isNullOrUndefined(eventBindings.omniboxObject)) {\n\t this.isOmnibox = true;\n\t }\n\t else {\n\t this.isOmnibox = false;\n\t }\n\t this.handleEventForCheckboxChange(eventBindings);\n\t if (this.facetValue.excluded) {\n\t this.handleEventForExcludedValueElement(eventBindings);\n\t }\n\t else {\n\t this.handleEventForValueElement(eventBindings);\n\t }\n\t };\n\t ValueElement.prototype.select = function () {\n\t this.facetValue.selected = true;\n\t this.facetValue.excluded = false;\n\t this.renderer.setCssClassOnListValueElement();\n\t };\n\t ValueElement.prototype.unselect = function () {\n\t this.facetValue.selected = false;\n\t this.facetValue.excluded = false;\n\t this.renderer.setCssClassOnListValueElement();\n\t };\n\t ValueElement.prototype.exclude = function () {\n\t this.facetValue.selected = false;\n\t this.facetValue.excluded = true;\n\t this.renderer.setCssClassOnListValueElement();\n\t };\n\t ValueElement.prototype.unexclude = function () {\n\t this.facetValue.selected = false;\n\t this.facetValue.excluded = false;\n\t this.renderer.setCssClassOnListValueElement();\n\t };\n\t ValueElement.prototype.toggleExcludeWithUA = function () {\n\t var _this = this;\n\t var actionCause;\n\t if (this.facetValue.excluded) {\n\t actionCause = this.isOmnibox ? AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxFacetUnexclude : AnalyticsActionListMeta_1.analyticsActionCauseList.facetUnexclude;\n\t }\n\t else {\n\t actionCause = this.isOmnibox ? AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxFacetExclude : AnalyticsActionListMeta_1.analyticsActionCauseList.facetExclude;\n\t }\n\t this.facet.toggleExcludeValue(this.facetValue);\n\t if (this.onExclude) {\n\t this.facet.triggerNewQuery(function () { return _this.onExclude(_this, actionCause); });\n\t }\n\t else {\n\t this.facet.triggerNewQuery(function () { return _this.facet.usageAnalytics.logSearchEvent(actionCause, _this.getAnalyticsFacetMeta()); });\n\t }\n\t };\n\t ValueElement.prototype.handleSelectValue = function (eventBindings) {\n\t var _this = this;\n\t this.facet.keepDisplayedValuesNextTime = eventBindings.displayNextTime && !this.facet.options.useAnd;\n\t var actionCause;\n\t if (this.facetValue.excluded) {\n\t actionCause = this.isOmnibox ? AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxFacetUnexclude : AnalyticsActionListMeta_1.analyticsActionCauseList.facetUnexclude;\n\t this.facet.unexcludeValue(this.facetValue);\n\t }\n\t else {\n\t if (this.facetValue.selected) {\n\t actionCause = this.isOmnibox ? AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxFacetDeselect : AnalyticsActionListMeta_1.analyticsActionCauseList.facetDeselect;\n\t }\n\t else {\n\t actionCause = this.isOmnibox ? AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxFacetSelect : AnalyticsActionListMeta_1.analyticsActionCauseList.facetSelect;\n\t }\n\t this.facet.toggleSelectValue(this.facetValue);\n\t }\n\t if (this.onSelect) {\n\t this.facet.triggerNewQuery(function () { return _this.onSelect(_this, actionCause); });\n\t }\n\t else {\n\t this.facet.triggerNewQuery(function () { return _this.facet.usageAnalytics.logSearchEvent(actionCause, _this.getAnalyticsFacetMeta()); });\n\t }\n\t };\n\t ValueElement.prototype.handleExcludeClick = function (eventBindings) {\n\t this.facet.keepDisplayedValuesNextTime = eventBindings.displayNextTime && !this.facet.options.useAnd;\n\t this.toggleExcludeWithUA();\n\t };\n\t ValueElement.prototype.handleEventForExcludedValueElement = function (eventBindings) {\n\t var _this = this;\n\t var clickEvent = function (event) {\n\t if (eventBindings.pinFacet) {\n\t _this.facet.pinFacetPosition();\n\t }\n\t if (eventBindings.omniboxObject) {\n\t _this.omniboxCloseEvent(eventBindings.omniboxObject);\n\t }\n\t _this.handleSelectValue(eventBindings);\n\t return false;\n\t };\n\t Dom_1.$$(this.renderer.label).on('click', function (e) {\n\t e.stopPropagation();\n\t clickEvent(e);\n\t });\n\t Dom_1.$$(this.renderer.stylishCheckbox).on('keydown', KeyboardUtils_1.KeyboardUtils.keypressAction([\n\t KeyboardUtils_1.KEYBOARD.SPACEBAR,\n\t KeyboardUtils_1.KEYBOARD.ENTER\n\t ], clickEvent));\n\t };\n\t ValueElement.prototype.handleEventForValueElement = function (eventBindings) {\n\t var _this = this;\n\t var excludeAction = function (event) {\n\t if (eventBindings.omniboxObject) {\n\t _this.omniboxCloseEvent(eventBindings.omniboxObject);\n\t }\n\t _this.handleExcludeClick(eventBindings);\n\t if (_this.facet && _this.facet.facetSearch && _this.facet.facetSearch.completelyDismissSearch) {\n\t _this.facet.facetSearch.completelyDismissSearch();\n\t }\n\t event.stopPropagation();\n\t event.preventDefault();\n\t };\n\t Dom_1.$$(this.renderer.excludeIcon).on('click', excludeAction);\n\t Dom_1.$$(this.renderer.excludeIcon).on('keydown', KeyboardUtils_1.KeyboardUtils.keypressAction([\n\t KeyboardUtils_1.KEYBOARD.SPACEBAR,\n\t KeyboardUtils_1.KEYBOARD.ENTER\n\t ], excludeAction));\n\t var selectAction = function (event) {\n\t if (eventBindings.pinFacet) {\n\t _this.facet.pinFacetPosition();\n\t }\n\t Dom_1.$$(_this.renderer.checkbox).trigger('change');\n\t event.preventDefault();\n\t };\n\t Dom_1.$$(this.renderer.label).on('click', selectAction);\n\t Dom_1.$$(this.renderer.stylishCheckbox).on('keydown', KeyboardUtils_1.KeyboardUtils.keypressAction([\n\t KeyboardUtils_1.KEYBOARD.SPACEBAR,\n\t KeyboardUtils_1.KEYBOARD.ENTER\n\t ], selectAction));\n\t };\n\t ValueElement.prototype.handleEventForCheckboxChange = function (eventBindings) {\n\t var _this = this;\n\t Dom_1.$$(this.renderer.checkbox).on('change', function () {\n\t if (eventBindings.omniboxObject) {\n\t _this.omniboxCloseEvent(eventBindings.omniboxObject);\n\t }\n\t _this.handleSelectValue(eventBindings);\n\t if (DeviceUtils_1.DeviceUtils.isMobileDevice() && !_this.facet.searchInterface.isNewDesign() && _this.facet.options.enableFacetSearch) {\n\t Defer_1.Defer.defer(function () {\n\t ExternalModulesShim_1.ModalBox.close(true);\n\t _this.facet.facetSearch.completelyDismissSearch();\n\t });\n\t }\n\t });\n\t };\n\t ValueElement.prototype.omniboxCloseEvent = function (eventArg) {\n\t eventArg.closeOmnibox();\n\t eventArg.clear();\n\t };\n\t ValueElement.prototype.getAnalyticsFacetMeta = function () {\n\t return {\n\t facetId: this.facet.options.id,\n\t facetValue: this.facetValue.value,\n\t facetTitle: this.facet.options.title\n\t };\n\t };\n\t return ValueElement;\n\t}());\n\texports.ValueElement = ValueElement;\n\n\n/***/ },\n/* 163 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar Component_1 = __webpack_require__(109);\n\tvar _ = __webpack_require__(16);\n\tvar ValueElementRenderer = (function () {\n\t function ValueElementRenderer(facet, facetValue) {\n\t this.facet = facet;\n\t this.facetValue = facetValue;\n\t }\n\t ValueElementRenderer.prototype.withNo = function (element) {\n\t if (_.isArray(element)) {\n\t _.each(element, function (e) {\n\t if (e) {\n\t Dom_1.$$(e).detach();\n\t }\n\t });\n\t }\n\t else {\n\t if (element) {\n\t Dom_1.$$(element).detach();\n\t }\n\t }\n\t return this;\n\t };\n\t ValueElementRenderer.prototype.build = function () {\n\t var _this = this;\n\t this.listItem = Dom_1.$$('li', {\n\t className: 'coveo-facet-value coveo-facet-selectable'\n\t }).el;\n\t this.listItem.setAttribute('data-value', this.facetValue.value);\n\t if (!this.facet.searchInterface.isNewDesign()) {\n\t this.excludeIcon = this.buildExcludeIcon();\n\t this.listItem.appendChild(this.excludeIcon);\n\t }\n\t this.label = Dom_1.$$('label', {\n\t className: 'coveo-facet-value-label'\n\t }).el;\n\t this.listItem.appendChild(this.label);\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t this.excludeIcon = this.buildExcludeIcon();\n\t this.listItem.appendChild(this.excludeIcon);\n\t Dom_1.$$(this.excludeIcon).on('mouseover', function () {\n\t Dom_1.$$(_this.listItem).addClass('coveo-facet-value-will-exclude');\n\t });\n\t Dom_1.$$(this.excludeIcon).on('mouseout', function () {\n\t Dom_1.$$(_this.listItem).removeClass('coveo-facet-value-will-exclude');\n\t });\n\t }\n\t if (Utils_1.Utils.exists(this.facetValue.computedField)) {\n\t this.computedField = this.buildValueComputedField();\n\t if (this.computedField) {\n\t this.label.appendChild(this.computedField);\n\t }\n\t Dom_1.$$(this.label).addClass('coveo-with-computed-field');\n\t }\n\t var labelDiv = Dom_1.$$('div', {\n\t className: 'coveo-facet-value-label-wrapper'\n\t }).el;\n\t this.label.appendChild(labelDiv);\n\t this.checkbox = this.buildValueCheckbox();\n\t labelDiv.appendChild(this.checkbox);\n\t this.stylishCheckbox = this.buildValueStylishCheckbox();\n\t labelDiv.appendChild(this.stylishCheckbox);\n\t if (this.facet.options.showIcon && !this.facet.searchInterface.isNewDesign()) {\n\t this.icon = this.buildValueIcon();\n\t labelDiv.appendChild(this.icon);\n\t }\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t this.valueCount = this.buildValueCount();\n\t if (this.valueCount) {\n\t labelDiv.appendChild(this.valueCount);\n\t }\n\t this.valueCaption = this.buildValueCaption();\n\t labelDiv.appendChild(this.valueCaption);\n\t }\n\t else {\n\t this.valueCaption = this.buildValueCaption();\n\t labelDiv.appendChild(this.valueCaption);\n\t this.valueCount = this.buildValueCount();\n\t if (this.valueCount) {\n\t labelDiv.appendChild(this.valueCount);\n\t }\n\t }\n\t this.setCssClassOnListValueElement();\n\t return this;\n\t };\n\t ValueElementRenderer.prototype.setCssClassOnListValueElement = function () {\n\t Dom_1.$$(this.listItem).toggleClass('coveo-selected', this.facetValue.selected);\n\t Dom_1.$$(this.listItem).toggleClass('coveo-excluded', this.facetValue.excluded);\n\t };\n\t ValueElementRenderer.prototype.buildExcludeIcon = function () {\n\t var excludeIcon = Dom_1.$$('div', {\n\t title: Strings_1.l('Exclude', this.facet.getValueCaption(this.facetValue)),\n\t className: 'coveo-facet-value-exclude',\n\t tabindex: 0\n\t }).el;\n\t this.addFocusAndBlurEventListeners(excludeIcon);\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t excludeIcon.appendChild(Dom_1.$$('span', {\n\t className: 'coveo-icon'\n\t }).el);\n\t }\n\t if (Utils_1.Utils.exists(this.facetValue.computedField)) {\n\t Dom_1.$$(excludeIcon).addClass('coveo-facet-value-exclude-with-computed-field');\n\t }\n\t return excludeIcon;\n\t };\n\t ValueElementRenderer.prototype.buildValueComputedField = function () {\n\t var computedField = this.facetValue.getFormattedComputedField(this.facet.options.computedFieldFormat);\n\t if (Utils_1.Utils.isNonEmptyString(computedField)) {\n\t var elem = Dom_1.$$('span', {\n\t className: 'coveo-facet-value-computed-field'\n\t }).el;\n\t Dom_1.$$(elem).text(computedField);\n\t return elem;\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t ValueElementRenderer.prototype.buildValueCheckbox = function () {\n\t var checkbox = Dom_1.$$('input', {\n\t type: 'checkbox'\n\t }).el;\n\t if (this.facetValue.selected) {\n\t checkbox.setAttribute('checked', 'checked');\n\t }\n\t else {\n\t checkbox.removeAttribute('checked');\n\t }\n\t if (this.facetValue.excluded) {\n\t checkbox.setAttribute('disabled', 'disabled');\n\t }\n\t else {\n\t checkbox.removeAttribute('disabled');\n\t }\n\t Component_1.Component.pointElementsToDummyForm(checkbox);\n\t return checkbox;\n\t };\n\t ValueElementRenderer.prototype.buildValueStylishCheckbox = function () {\n\t var checkbox = Dom_1.$$('div', {\n\t className: 'coveo-facet-value-checkbox',\n\t tabindex: 0\n\t }, Dom_1.$$('span')).el;\n\t this.addFocusAndBlurEventListeners(checkbox);\n\t return checkbox;\n\t };\n\t ValueElementRenderer.prototype.buildValueIcon = function () {\n\t var icon = this.getValueIcon();\n\t if (Utils_1.Utils.exists(icon)) {\n\t return Dom_1.$$('img', {\n\t className: 'coveo-facet-value-icon coveo-icon',\n\t src: this.getValueIcon()\n\t }).el;\n\t }\n\t else {\n\t return this.buildValueIconFromSprite();\n\t }\n\t };\n\t ValueElementRenderer.prototype.getValueIcon = function () {\n\t if (Utils_1.Utils.exists(this.facet.options.valueIcon)) {\n\t return this.facet.options.valueIcon(this.facetValue);\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t ValueElementRenderer.prototype.buildValueIconFromSprite = function () {\n\t return Dom_1.$$('div', {\n\t className: 'coveo-facet-value-icon coveo-icon ' + this.facet.options.field.substr(1) + ' ' + this.facetValue.value\n\t }).el;\n\t };\n\t ValueElementRenderer.prototype.buildValueCaption = function () {\n\t var caption = this.facet.getValueCaption(this.facetValue);\n\t var valueCaption = Dom_1.$$('span', {\n\t className: 'coveo-facet-value-caption',\n\t title: caption\n\t }).el;\n\t Dom_1.$$(valueCaption).text(caption);\n\t return valueCaption;\n\t };\n\t ValueElementRenderer.prototype.buildValueCount = function () {\n\t var count = this.facetValue.getFormattedCount();\n\t if (Utils_1.Utils.isNonEmptyString(count)) {\n\t var countElement = Dom_1.$$('span', {\n\t className: 'coveo-facet-value-count'\n\t }).el;\n\t Dom_1.$$(countElement).text(count);\n\t return countElement;\n\t }\n\t else {\n\t return undefined;\n\t }\n\t };\n\t ValueElementRenderer.prototype.addFocusAndBlurEventListeners = function (elem) {\n\t var _this = this;\n\t Dom_1.$$(elem).on('focus', function () { return Dom_1.$$(_this.listItem).addClass('coveo-focused'); });\n\t Dom_1.$$(elem).on('blur', function () { return Dom_1.$$(_this.listItem).removeClass('coveo-focused'); });\n\t };\n\t return ValueElementRenderer;\n\t}());\n\texports.ValueElementRenderer = ValueElementRenderer;\n\n\n/***/ },\n/* 164 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar _ = __webpack_require__(16);\n\tvar FacetValuesOrder = (function () {\n\t function FacetValuesOrder(facet, facetSort) {\n\t this.facet = facet;\n\t this.facetSort = facetSort;\n\t }\n\t FacetValuesOrder.prototype.reorderValues = function (facetValues) {\n\t if (this.facetSort && this.facetSort.activeSort) {\n\t if (this.facetSort.activeSort.name == 'custom' && this.facet.options.customSort != undefined) {\n\t return this.reorderValuesWithCustomOrder(facetValues);\n\t }\n\t else if (this.facetSort.activeSort.name.indexOf('alpha') != -1) {\n\t return this.reorderValuesWithCustomCaption(facetValues);\n\t }\n\t }\n\t return facetValues;\n\t };\n\t FacetValuesOrder.prototype.reorderValuesWithCustomOrder = function (facetValues) {\n\t var customSortsLowercase = _.map(this.facet.options.customSort, function (customSort) { return customSort.toLowerCase(); });\n\t var valueIndexPair = _.map(facetValues, function (facetValue, i) {\n\t // Get the index of the current value in the custom sort array.\n\t // If it's not found, put it's index to it's original value + the length of customSort so that's always after the specified custom sort order.\n\t var index = _.findIndex(customSortsLowercase, function (customSort) {\n\t return StringUtils_1.StringUtils.equalsCaseInsensitive(customSort, facetValue.value) || (facetValue.lookupValue != null && StringUtils_1.StringUtils.equalsCaseInsensitive(customSort, facetValue.lookupValue));\n\t });\n\t if (index == -1) {\n\t index = i + customSortsLowercase.length;\n\t }\n\t return { facetValue: facetValue, index: index };\n\t });\n\t var sorted = _.sortBy(valueIndexPair, 'index');\n\t sorted = this.facetSort.customSortDirection == 'ascending' ? sorted : sorted.reverse();\n\t return _.pluck(sorted, 'facetValue');\n\t };\n\t FacetValuesOrder.prototype.reorderValuesWithCustomCaption = function (facetValues) {\n\t var _this = this;\n\t var sorted = _.sortBy(facetValues, function (facetValue) {\n\t return _this.facet.getValueCaption(facetValue).toLowerCase();\n\t });\n\t if (this.facetSort.activeSort.name.indexOf('descending') != -1) {\n\t sorted = sorted.reverse();\n\t }\n\t return sorted;\n\t };\n\t return FacetValuesOrder;\n\t}());\n\texports.FacetValuesOrder = FacetValuesOrder;\n\n\n/***/ },\n/* 165 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar FacetSort_1 = __webpack_require__(166);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar LocalStorageUtils_1 = __webpack_require__(71);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar PopupUtils_1 = __webpack_require__(73);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * Handle the rendering of the {@link Facet} settings menu (typically the ... in the facet header).\n\t */\n\tvar FacetSettings = (function (_super) {\n\t __extends(FacetSettings, _super);\n\t function FacetSettings(sorts, facet) {\n\t var _this = _super.call(this, sorts, facet) || this;\n\t _this.sorts = sorts;\n\t _this.facet = facet;\n\t _this.customSortDirectionChange = false;\n\t _this.enabledSortsIgnoreRenderBecauseOfPairs = [];\n\t _this.filterDuplicateForRendering();\n\t return _this;\n\t }\n\t /**\n\t * Build the menu, hook click events.\n\t * @returns {HTMLElement}\n\t */\n\t FacetSettings.prototype.build = function () {\n\t var _this = this;\n\t this.settingsButton = Dom_1.$$('div', {\n\t className: 'coveo-facet-header-settings',\n\t title: Strings_1.l('Settings'),\n\t }).el;\n\t this.settingsIcon = Dom_1.$$('span', { className: 'coveo-icon' }).el;\n\t this.settingsButton.appendChild(this.settingsIcon);\n\t this.settingsPopup = Dom_1.$$('div', { className: 'coveo-facet-settings-popup' }).el;\n\t if (Utils_1.Utils.isNonEmptyArray(this.enabledSorts)) {\n\t this.sortSection = this.buildSortSection();\n\t if (this.enabledSortsAllowDirection()) {\n\t this.directionSection = this.buildDirectionSection();\n\t }\n\t }\n\t if (this.facet.options.enableSettingsFacetState) {\n\t this.saveStateSection = this.buildSaveStateSection();\n\t this.clearStateSection = this.buildClearStateSection();\n\t }\n\t if (this.facet.options.enableCollapse) {\n\t this.hideSection = this.buildHideSection();\n\t this.showSection = this.buildShowSection();\n\t }\n\t var appendCommon = function () {\n\t _this.appendIfNotUndefined(_this.saveStateSection);\n\t _this.appendIfNotUndefined(_this.clearStateSection);\n\t _this.appendIfNotUndefined(_this.hideSection);\n\t _this.appendIfNotUndefined(_this.showSection);\n\t };\n\t this.handleMouseEventOnButton(this.sortSection);\n\t if (Utils_1.Utils.isNonEmptyArray(this.enabledSorts)) {\n\t this.settingsPopup.appendChild(this.sortSection.element);\n\t _.each(this.directionSection, function (d) {\n\t _this.appendIfNotUndefined(d);\n\t });\n\t appendCommon();\n\t }\n\t else {\n\t appendCommon();\n\t }\n\t return this.settingsButton;\n\t };\n\t /**\n\t * Restore the facet state from local storage, and apply it in the query state model.\n\t */\n\t FacetSettings.prototype.loadSavedState = function () {\n\t if (this.facetStateLocalStorage) {\n\t // set the state from the settings only if there is nothing\n\t // in the query state model for the current facet\n\t var state = this.facetStateLocalStorage.load();\n\t var currentStateIncluded = this.facet.queryStateModel.get(this.includedStateAttribute);\n\t var currentStateExcluded = this.facet.queryStateModel.get(this.excludedStateAttribute);\n\t var currentStateOperator = this.facet.queryStateModel.get(this.operatorStateAttribute);\n\t if (!Utils_1.Utils.isNullOrUndefined(state)\n\t && Utils_1.Utils.isEmptyArray(currentStateIncluded)\n\t && Utils_1.Utils.isEmptyArray(currentStateExcluded)\n\t && !Utils_1.Utils.isNonEmptyString(currentStateOperator)) {\n\t var toSet = {};\n\t toSet[this.includedStateAttribute] = state.included;\n\t toSet[this.excludedStateAttribute] = state.excluded;\n\t toSet[this.operatorStateAttribute] = state.operator;\n\t this.facet.queryStateModel.setMultiple(toSet);\n\t this.loadedFromSettings = toSet;\n\t }\n\t }\n\t else {\n\t this.facet.logger.info('Facet state local storage not enabled : See Facet.options.enableSettingsFacetState');\n\t }\n\t };\n\t /**\n\t * Take the current state of the facet and save it in the local storage.\n\t */\n\t FacetSettings.prototype.saveState = function () {\n\t if (this.facetStateLocalStorage) {\n\t this.facetStateLocalStorage.save({\n\t included: this.facet.queryStateModel.get(this.includedStateAttribute),\n\t excluded: this.facet.queryStateModel.get(this.excludedStateAttribute),\n\t operator: this.facet.queryStateModel.get(this.operatorStateAttribute),\n\t });\n\t }\n\t else {\n\t this.facet.logger.info('Facet state local storage not enabled : See Facet.options.enableSettingsFacetState');\n\t }\n\t };\n\t /**\n\t * Close the settings menu\n\t */\n\t FacetSettings.prototype.close = function () {\n\t Dom_1.$$(this.settingsPopup).detach();\n\t };\n\t /**\n\t * Open the settings menu\n\t */\n\t FacetSettings.prototype.open = function () {\n\t var _this = this;\n\t PopupUtils_1.PopupUtils.positionPopup(this.settingsPopup, this.settingsButton, this.facet.root, this.getPopupAlignment(), this.facet.root);\n\t if (this.hideSection && this.showSection) {\n\t Dom_1.$$(this.hideSection).toggle(!Dom_1.$$(this.facet.element).hasClass('coveo-facet-collapsed'));\n\t Dom_1.$$(this.showSection).toggle(Dom_1.$$(this.facet.element).hasClass('coveo-facet-collapsed'));\n\t }\n\t if (this.facet.options.enableSettingsFacetState) {\n\t Dom_1.$$(this.clearStateSection).toggle(!Utils_1.Utils.isNullOrUndefined(this.facetStateLocalStorage.load()));\n\t }\n\t _.each(this.enabledSorts, function (criteria, i) {\n\t if (!Utils_1.Utils.isNullOrUndefined(_this.sortSection.sortItems[i])) {\n\t if (_this.activeSort.name == criteria.name.toLowerCase() || _this.activeSort.relatedSort == criteria.name.toLowerCase()) {\n\t _this.selectItem(_this.sortSection.sortItems[i]);\n\t }\n\t else {\n\t _this.unselectItem(_this.sortSection.sortItems[i]);\n\t }\n\t }\n\t });\n\t };\n\t FacetSettings.prototype.buildSortSection = function () {\n\t var sortSection = this.buildSection('coveo-facet-settings-section-sort');\n\t var sortSectionIcon = this.buildIcon();\n\t var sortSectionItems = this.buildItems();\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t var sortTitle = document.createElement('div');\n\t Dom_1.$$(sortTitle).addClass('coveo-facet-settings-section-sort-title');\n\t Dom_1.$$(sortTitle).text(Strings_1.l('SortBy') + ' :');\n\t sortSectionItems.appendChild(sortTitle);\n\t }\n\t var sortItems = this.buildSortSectionItems();\n\t _.each(sortItems, function (s) {\n\t sortSectionItems.appendChild(s);\n\t });\n\t sortSection.appendChild(sortSectionIcon);\n\t sortSection.appendChild(sortSectionItems);\n\t return { element: sortSection, sortItems: sortItems };\n\t };\n\t FacetSettings.prototype.buildSortSectionItems = function () {\n\t var _this = this;\n\t var elems = _.map(this.enabledSorts, function (enabledSort) {\n\t if (_.contains(_this.enabledSortsIgnoreRenderBecauseOfPairs, enabledSort)) {\n\t return undefined;\n\t }\n\t else {\n\t var elem = _this.buildItem(Strings_1.l(enabledSort.label), enabledSort.description);\n\t Dom_1.$$(elem).on('click', function (e) { return _this.handleClickSortButton(e, enabledSort); });\n\t return elem;\n\t }\n\t });\n\t elems = _.compact(elems);\n\t return elems;\n\t };\n\t FacetSettings.prototype.closePopupAndUpdateSort = function () {\n\t this.close();\n\t if (this.activeSort.name != 'custom') {\n\t this.facet.updateSort(this.activeSort.name);\n\t }\n\t else {\n\t this.facet.updateSort('nosort');\n\t if (this.customSortDirectionChange) {\n\t this.customSortDirectionChange = false;\n\t this.facet.queryController.executeQuery();\n\t }\n\t }\n\t };\n\t FacetSettings.prototype.enabledSortsAllowDirection = function () {\n\t return _.some(this.enabledSorts, function (facetSortDescription) {\n\t return facetSortDescription.directionToggle;\n\t });\n\t };\n\t FacetSettings.prototype.buildDirectionSection = function () {\n\t var _this = this;\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t var directionAscendingSection = this.buildAscendingOrDescendingSection('Ascending');\n\t var iconAscending = this.buildIcon();\n\t var iconDescending = this.buildIcon();\n\t var directionItemsAscending = this.buildItems();\n\t var ascending = this.buildAscendingOrDescending('Ascending');\n\t directionItemsAscending.appendChild(ascending);\n\t directionAscendingSection.appendChild(iconAscending);\n\t directionAscendingSection.appendChild(directionItemsAscending);\n\t Dom_1.$$(directionAscendingSection).on('click', function (e) { return _this.handleDirectionClick(e, 'ascending'); });\n\t var directionDescendingSection = this.buildAscendingOrDescendingSection('Descending');\n\t var directionItemsDescending = this.buildItems();\n\t var descending = this.buildAscendingOrDescending('Descending');\n\t directionItemsDescending.appendChild(descending);\n\t directionDescendingSection.appendChild(iconDescending);\n\t directionDescendingSection.appendChild(directionItemsDescending);\n\t Dom_1.$$(directionDescendingSection).on('click', function (e) { return _this.handleDirectionClick(e, 'descending'); });\n\t if (!this.activeSort.directionToggle) {\n\t Dom_1.$$(directionAscendingSection).addClass('coveo-facet-settings-disabled');\n\t Dom_1.$$(directionDescendingSection).addClass('coveo-facet-settings-disabled');\n\t }\n\t else {\n\t this.selectItem(this.getItems(directionAscendingSection)[0]);\n\t }\n\t return [directionAscendingSection, directionDescendingSection];\n\t }\n\t else {\n\t var directionSection = this.buildSection('coveo-facet-settings-section-direction');\n\t var icon = this.buildIcon();\n\t var directionItems = this.buildItems();\n\t var ascending = this.buildAscendingOrDescending('Ascending');\n\t Dom_1.$$(ascending).on('click', function (e) { return _this.handleDirectionClick(e, 'ascending'); });\n\t var descending = this.buildAscendingOrDescending('Descending');\n\t Dom_1.$$(descending).on('click', function (e) { return _this.handleDirectionClick(e, 'descending'); });\n\t directionItems.appendChild(ascending);\n\t directionItems.appendChild(descending);\n\t directionSection.appendChild(icon);\n\t directionSection.appendChild(directionItems);\n\t if (!this.activeSort.directionToggle) {\n\t Dom_1.$$(directionSection).addClass('coveo-facet-settings-disabled');\n\t }\n\t else {\n\t this.selectItem(this.getCurrentDirectionItem([directionSection]));\n\t }\n\t return [directionSection];\n\t }\n\t };\n\t FacetSettings.prototype.buildSaveStateSection = function () {\n\t var _this = this;\n\t var saveStateSection = this.buildSection('coveo-facet-settings-section-save-state');\n\t var icon = this.buildIcon();\n\t var saveStateItems = this.buildItems();\n\t this.facetStateLocalStorage = new LocalStorageUtils_1.LocalStorageUtils('facet-state-' + this.facet.options.id);\n\t this.includedStateAttribute = QueryStateModel_1.QueryStateModel.getFacetId(this.facet.options.id);\n\t this.excludedStateAttribute = QueryStateModel_1.QueryStateModel.getFacetId(this.facet.options.id, false);\n\t this.operatorStateAttribute = QueryStateModel_1.QueryStateModel.getFacetOperator(this.facet.options.id);\n\t var saveStateItem = document.createElement('div');\n\t Dom_1.$$(saveStateItem).addClass('coveo-facet-settings-item');\n\t saveStateItem.setAttribute('title', _.escape(Strings_1.l('SaveFacetState')));\n\t Dom_1.$$(saveStateItem).text(_.escape(Strings_1.l('SaveFacetState')));\n\t saveStateItems.appendChild(saveStateItem);\n\t saveStateSection.appendChild(icon);\n\t saveStateSection.appendChild(saveStateItems);\n\t Dom_1.$$(saveStateSection).on('click', function (e) { return _this.handleSaveStateClick(); });\n\t return saveStateSection;\n\t };\n\t FacetSettings.prototype.buildClearStateSection = function () {\n\t var _this = this;\n\t var clearStateSection = this.buildSection('coveo-facet-settings-section-clear-state');\n\t var icon = this.buildIcon();\n\t var clearStateItems = this.buildItems();\n\t var clearStateItem = this.buildItem(Strings_1.l('ClearFacetState'));\n\t clearStateItems.appendChild(clearStateItem);\n\t clearStateSection.appendChild(icon);\n\t clearStateSection.appendChild(clearStateItems);\n\t Dom_1.$$(clearStateSection).on('click', function (e) { return _this.handleClearStateClick(); });\n\t return clearStateSection;\n\t };\n\t FacetSettings.prototype.buildHideSection = function () {\n\t var _this = this;\n\t var hideSection = this.buildSection('coveo-facet-settings-section-hide');\n\t var icon = this.buildIcon();\n\t var hideItems = this.buildItems();\n\t var hideItem = this.buildItem(Strings_1.l('Collapse'));\n\t hideItems.appendChild(hideItem);\n\t hideSection.appendChild(icon);\n\t hideSection.appendChild(hideItems);\n\t Dom_1.$$(hideSection).on('click', function (e) {\n\t _this.facet.facetHeader.collapseFacet();\n\t _this.close();\n\t });\n\t return hideSection;\n\t };\n\t FacetSettings.prototype.buildShowSection = function () {\n\t var _this = this;\n\t var showSection = this.buildSection('coveo-facet-settings-section-show');\n\t var icon = this.buildIcon();\n\t var showItems = this.buildItems();\n\t var showItem = this.buildItem(Strings_1.l('Expand'));\n\t showItems.appendChild(showItem);\n\t showSection.appendChild(icon);\n\t showSection.appendChild(showItems);\n\t Dom_1.$$(showSection).on('click', function (e) {\n\t _this.facet.facetHeader.expandFacet();\n\t _this.close();\n\t });\n\t return showSection;\n\t };\n\t FacetSettings.prototype.buildIcon = function () {\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t var icon = document.createElement('div');\n\t Dom_1.$$(icon).addClass('coveo-icon-container');\n\t var insideIcon = document.createElement('div');\n\t Dom_1.$$(insideIcon).addClass('coveo-icon');\n\t icon.appendChild(insideIcon);\n\t return icon;\n\t }\n\t else {\n\t var icon = document.createElement('div');\n\t Dom_1.$$(icon).addClass('coveo-icon');\n\t return icon;\n\t }\n\t };\n\t FacetSettings.prototype.buildAscendingOrDescending = function (direction) {\n\t var elem = this.buildItem(Strings_1.l(direction));\n\t elem.setAttribute('data-direction', direction.toLowerCase());\n\t return elem;\n\t };\n\t FacetSettings.prototype.buildAscendingOrDescendingSection = function (direction) {\n\t return this.buildSection('coveo-facet-settings-section-direction-' + direction.toLowerCase());\n\t };\n\t FacetSettings.prototype.buildItem = function (label, title) {\n\t if (title === void 0) { title = label; }\n\t return Dom_1.$$('div', {\n\t className: 'coveo-facet-settings-item',\n\t title: _.escape(title),\n\t }, _.escape(label)).el;\n\t };\n\t FacetSettings.prototype.buildItems = function () {\n\t var elem = document.createElement('div');\n\t Dom_1.$$(elem).addClass('coveo-facet-settings-items');\n\t return elem;\n\t };\n\t FacetSettings.prototype.buildSection = function (className) {\n\t var section = document.createElement('div');\n\t Dom_1.$$(section).addClass(['coveo-facet-settings-section', className]);\n\t return section;\n\t };\n\t FacetSettings.prototype.handleClickSettingsButtons = function (event, sortSection) {\n\t if (!Utils_1.Utils.isNullOrUndefined(this.settingsPopup.parentElement)) {\n\t this.close();\n\t }\n\t else {\n\t this.open();\n\t }\n\t };\n\t FacetSettings.prototype.handleClickSortButton = function (e, enabledSort) {\n\t if (this.activeSort != enabledSort && this.activeSort.relatedSort != enabledSort.name) {\n\t this.activeSort = enabledSort;\n\t if (enabledSort.directionToggle && _.contains(this.enabledSorts, FacetSettings.availableSorts[this.activeSort.relatedSort])) {\n\t this.activateDirectionSection();\n\t }\n\t else {\n\t this.disableDirectionSection();\n\t }\n\t this.selectItem(e.target);\n\t this.closePopupAndUpdateSort();\n\t }\n\t };\n\t FacetSettings.prototype.handleDirectionClick = function (e, direction) {\n\t var _this = this;\n\t if (!Dom_1.$$(e.target.parentElement.parentElement).hasClass('coveo-facet-settings-disabled') && this.activeSort.name.indexOf(direction) == -1) {\n\t this.activeSort = FacetSettings.availableSorts[this.activeSort.relatedSort];\n\t _.each(this.directionSection, function (d) {\n\t _this.unselectSection(d);\n\t });\n\t this.selectItem(e.target);\n\t if (this.activeSort.name == 'custom' && this.customSortDirection != direction) {\n\t this.customSortDirection = direction;\n\t this.customSortDirectionChange = true;\n\t }\n\t this.closePopupAndUpdateSort();\n\t }\n\t };\n\t FacetSettings.prototype.handleSaveStateClick = function () {\n\t this.saveState();\n\t this.close();\n\t };\n\t FacetSettings.prototype.handleClearStateClick = function () {\n\t var _this = this;\n\t this.facetStateLocalStorage.remove();\n\t this.facet.reset();\n\t this.close();\n\t this.facet.triggerNewQuery(function () { return _this.facet.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetClearAll, {\n\t facetId: _this.facet.options.id,\n\t facetTitle: _this.facet.options.title\n\t }); });\n\t };\n\t FacetSettings.prototype.handleMouseEventOnButton = function (sortSection) {\n\t var _this = this;\n\t var closeTimeout;\n\t Dom_1.$$(this.settingsButton).on('click', function (e) { return _this.handleClickSettingsButtons(e, sortSection); });\n\t var mouseLeave = function () {\n\t closeTimeout = setTimeout(function () {\n\t _this.close();\n\t }, 300);\n\t };\n\t var mouseEnter = function () {\n\t clearTimeout(closeTimeout);\n\t };\n\t Dom_1.$$(this.settingsIcon).on('mouseleave', mouseLeave);\n\t Dom_1.$$(this.settingsPopup).on('mouseleave', mouseLeave);\n\t Dom_1.$$(this.settingsIcon).on('mouseenter', mouseEnter);\n\t Dom_1.$$(this.settingsPopup).on('mouseenter', mouseEnter);\n\t };\n\t FacetSettings.prototype.getCurrentDirectionItem = function (directionSection) {\n\t var _this = this;\n\t if (directionSection === void 0) { directionSection = this.directionSection; }\n\t var found;\n\t _.each(directionSection, function (direction) {\n\t if (!found) {\n\t found = _.find(_this.getItems(direction), function (direction) {\n\t return _this.activeSort.name.indexOf(direction.getAttribute('data-direction')) != -1;\n\t });\n\t }\n\t });\n\t if (!found) {\n\t found = directionSection[0];\n\t }\n\t return found;\n\t };\n\t FacetSettings.prototype.activateDirectionSection = function () {\n\t var _this = this;\n\t _.each(this.directionSection, function (direction) {\n\t Dom_1.$$(direction).removeClass('coveo-facet-settings-disabled');\n\t _this.unselectSection(direction);\n\t });\n\t this.selectItem(this.getCurrentDirectionItem());\n\t };\n\t FacetSettings.prototype.disableDirectionSection = function () {\n\t var _this = this;\n\t _.each(this.directionSection, function (direction) {\n\t Dom_1.$$(direction).addClass('coveo-facet-settings-disabled');\n\t _this.unselectSection(direction);\n\t });\n\t };\n\t FacetSettings.prototype.getItems = function (section) {\n\t return Dom_1.$$(section).findAll('.coveo-facet-settings-item');\n\t };\n\t FacetSettings.prototype.unselectSection = function (section) {\n\t _.each(this.getItems(section), function (i) {\n\t Dom_1.$$(i).removeClass('coveo-selected');\n\t });\n\t };\n\t FacetSettings.prototype.selectItem = function (item) {\n\t Dom_1.$$(item).addClass('coveo-selected');\n\t };\n\t FacetSettings.prototype.unselectItem = function (item) {\n\t Dom_1.$$(item).removeClass('coveo-selected');\n\t };\n\t FacetSettings.prototype.getPopupAlignment = function () {\n\t var alignmentHorizontal = DeviceUtils_1.DeviceUtils.isMobileDevice() ? PopupUtils_1.HorizontalAlignment.CENTER : PopupUtils_1.HorizontalAlignment.INNERLEFT;\n\t var alignmentVertical = PopupUtils_1.VerticalAlignment.BOTTOM;\n\t return {\n\t horizontal: alignmentHorizontal,\n\t vertical: alignmentVertical\n\t };\n\t };\n\t FacetSettings.prototype.filterDuplicateForRendering = function () {\n\t var _this = this;\n\t _.each(this.enabledSorts, function (enabledSort, i) {\n\t if (enabledSort.relatedSort != null) {\n\t for (var j = i + 1; j < _this.enabledSorts.length; j++) {\n\t if (_this.enabledSorts[j].name == enabledSort.relatedSort) {\n\t _this.enabledSortsIgnoreRenderBecauseOfPairs.push(_this.enabledSorts[j]);\n\t break;\n\t }\n\t }\n\t }\n\t });\n\t };\n\t FacetSettings.prototype.appendIfNotUndefined = function (toAppend) {\n\t if (!Utils_1.Utils.isNullOrUndefined(toAppend)) {\n\t this.settingsPopup.appendChild(toAppend);\n\t }\n\t };\n\t return FacetSettings;\n\t}(FacetSort_1.FacetSort));\n\texports.FacetSettings = FacetSettings;\n\n\n/***/ },\n/* 166 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Strings_1 = __webpack_require__(37);\n\tvar FacetSettings_1 = __webpack_require__(165);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\tvar FacetSort = (function () {\n\t function FacetSort(sorts, facet) {\n\t var _this = this;\n\t this.facet = facet;\n\t this.enabledSorts = [];\n\t this.customSortDirection = 'ascending';\n\t _.each(sorts, function (sortToActivate) {\n\t var newSortToEnable = FacetSettings_1.FacetSettings.availableSorts[sortToActivate.toLowerCase()];\n\t if (newSortToEnable != undefined) {\n\t _this.enabledSorts.push(newSortToEnable);\n\t }\n\t });\n\t this.removeEnabledSortsBasedOnFacetType();\n\t if (Utils_1.Utils.isNonEmptyArray(this.enabledSorts)) {\n\t if (this.facet.options.sortCriteria != undefined) {\n\t this.activeSort = _.find(this.enabledSorts, function (enabledSort) {\n\t return enabledSort.name == _this.facet.options.sortCriteria;\n\t });\n\t }\n\t if (!this.activeSort) {\n\t this.activeSort = this.enabledSorts[0];\n\t }\n\t }\n\t }\n\t FacetSort.prototype.removeEnabledSortsBasedOnFacetType = function () {\n\t if (Coveo.FacetRange && this.facet instanceof Coveo.FacetRange) {\n\t var facetRange = this.facet;\n\t if (facetRange.options['slider']) {\n\t this.enabledSorts = [];\n\t }\n\t }\n\t };\n\t return FacetSort;\n\t}());\n\tFacetSort.availableSorts = {\n\t score: {\n\t label: Strings_1.l('Score'),\n\t directionToggle: false,\n\t description: Strings_1.l('ScoreDescription'),\n\t name: 'score'\n\t },\n\t occurrences: {\n\t label: Strings_1.l('Occurrences'),\n\t directionToggle: false,\n\t description: Strings_1.l('OccurrencesDescription'),\n\t name: 'occurrences'\n\t },\n\t alphaascending: {\n\t label: Strings_1.l('Label'),\n\t directionToggle: true,\n\t description: Strings_1.l('LabelDescription'),\n\t name: 'alphaascending',\n\t relatedSort: 'alphadescending'\n\t },\n\t alphadescending: {\n\t label: Strings_1.l('Label'),\n\t directionToggle: true,\n\t description: Strings_1.l('LabelDescription'),\n\t name: 'alphadescending',\n\t relatedSort: 'alphaascending'\n\t },\n\t computedfieldascending: {\n\t label: Strings_1.l('Value'),\n\t directionToggle: true,\n\t description: Strings_1.l('ValueDescription'),\n\t name: 'computedfieldascending',\n\t relatedSort: 'computedfielddescending'\n\t },\n\t computedfielddescending: {\n\t label: Strings_1.l('Value'),\n\t directionToggle: true,\n\t description: Strings_1.l('ValueDescription'),\n\t name: 'computedfielddescending',\n\t relatedSort: 'computedfieldascending'\n\t },\n\t chisquare: {\n\t label: Strings_1.l('RelativeFrequency'),\n\t directionToggle: false,\n\t description: Strings_1.l('RelativeFrequencyDescription'),\n\t name: 'chisquare'\n\t },\n\t nosort: {\n\t label: Strings_1.l('Nosort'),\n\t directionToggle: false,\n\t description: Strings_1.l('NosortDescription'),\n\t name: 'nosort'\n\t },\n\t custom: {\n\t label: Strings_1.l('Custom'),\n\t directionToggle: true,\n\t description: Strings_1.l('CustomDescription'),\n\t name: 'custom',\n\t relatedSort: 'custom'\n\t }\n\t};\n\texports.FacetSort = FacetSort;\n\n\n/***/ },\n/* 167 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar FacetValueElement_1 = __webpack_require__(161);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar FacetValues_1 = __webpack_require__(159);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar FacetValuesOrder_1 = __webpack_require__(164);\n\tvar _ = __webpack_require__(16);\n\tvar FacetValuesList = (function () {\n\t function FacetValuesList(facet, facetValueElementKlass) {\n\t this.facet = facet;\n\t this.facetValueElementKlass = facetValueElementKlass;\n\t // Dictionary of values. The key is always in lowercase.\n\t this.valueList = {};\n\t this.currentlyDisplayed = [];\n\t }\n\t FacetValuesList.prototype.build = function () {\n\t this.valueContainer = document.createElement('ul');\n\t Dom_1.$$(this.valueContainer).addClass('coveo-facet-values');\n\t return this.valueContainer;\n\t };\n\t FacetValuesList.prototype.getAllCurrentlyDisplayed = function () {\n\t return this.currentlyDisplayed;\n\t };\n\t FacetValuesList.prototype.getAll = function () {\n\t return _.toArray(this.valueList);\n\t };\n\t FacetValuesList.prototype.getAllFacetValue = function () {\n\t return _.map(this.getAll(), function (v) {\n\t return v.facetValue;\n\t });\n\t };\n\t FacetValuesList.prototype.get = function (value) {\n\t var getter;\n\t if (value instanceof FacetValues_1.FacetValue) {\n\t getter = value.value;\n\t }\n\t else {\n\t value = Utils_1.Utils.anyTypeToString(value);\n\t getter = value;\n\t }\n\t this.ensureFacetValueIsInList(value);\n\t return this.valueList[getter.toLowerCase()];\n\t };\n\t FacetValuesList.prototype.select = function (value) {\n\t var valueElement = this.get(value);\n\t valueElement.select();\n\t return valueElement;\n\t };\n\t FacetValuesList.prototype.unselect = function (value) {\n\t var valueElement = this.get(value);\n\t valueElement.unselect();\n\t return valueElement;\n\t };\n\t FacetValuesList.prototype.exclude = function (value) {\n\t var valueElement = this.get(value);\n\t valueElement.exclude();\n\t return valueElement;\n\t };\n\t FacetValuesList.prototype.unExclude = function (value) {\n\t var valueElement = this.get(value);\n\t valueElement.unexclude();\n\t return valueElement;\n\t };\n\t FacetValuesList.prototype.toggleSelect = function (value) {\n\t var valueElement = this.get(value);\n\t if (valueElement.facetValue.selected) {\n\t valueElement.unselect();\n\t }\n\t else {\n\t valueElement.select();\n\t }\n\t return valueElement;\n\t };\n\t FacetValuesList.prototype.toggleExclude = function (value) {\n\t var valueElement = this.get(value);\n\t if (valueElement.facetValue.excluded) {\n\t valueElement.unexclude();\n\t }\n\t else {\n\t valueElement.exclude();\n\t }\n\t return valueElement;\n\t };\n\t FacetValuesList.prototype.rebuild = function (numberOfValues) {\n\t var _this = this;\n\t Dom_1.$$(this.valueContainer).empty();\n\t this.currentlyDisplayed = [];\n\t var allValues = this.getValuesToBuildWith();\n\t var toCompare = numberOfValues;\n\t var docFragment = document.createDocumentFragment();\n\t _.each(allValues, function (facetValue, index, list) {\n\t if (_this.facetValueShouldBeRemoved(facetValue)) {\n\t _this.facet.values.remove(facetValue.value);\n\t toCompare += 1;\n\t }\n\t else if (index < toCompare) {\n\t var valueElement = new _this.facetValueElementKlass(_this.facet, facetValue, true);\n\t _this.valueList[facetValue.value.toLowerCase()] = valueElement;\n\t var valueListElement = valueElement.build().renderer.listItem;\n\t docFragment.appendChild(valueListElement);\n\t _this.currentlyDisplayed.push(valueElement);\n\t }\n\t });\n\t this.valueContainer.appendChild(docFragment);\n\t FacetUtils_1.FacetUtils.addNoStateCssClassToFacetValues(this.facet, this.valueContainer);\n\t FacetUtils_1.FacetUtils.clipCaptionsToAvoidOverflowingTheirContainer(this.facet);\n\t };\n\t FacetValuesList.prototype.getValuesToBuildWith = function () {\n\t if (this.facet.facetSort) {\n\t return new FacetValuesOrder_1.FacetValuesOrder(this.facet, this.facet.facetSort).reorderValues(this.facet.values.getAll());\n\t }\n\t else {\n\t return this.facet.values.getAll();\n\t }\n\t };\n\t FacetValuesList.prototype.facetValueShouldBeRemoved = function (facetValue) {\n\t return facetValue.occurrences == 0 &&\n\t (facetValue.delta == 0 || facetValue.delta == undefined) &&\n\t !facetValue.selected &&\n\t !facetValue.excluded &&\n\t !this.facet.keepDisplayedValuesNextTime;\n\t };\n\t FacetValuesList.prototype.ensureFacetValueIsInList = function (value) {\n\t var facetValue;\n\t if (value instanceof FacetValues_1.FacetValue) {\n\t facetValue = this.facet.values.get(value.value);\n\t if (facetValue == null) {\n\t this.facet.values.add(value);\n\t facetValue = value;\n\t }\n\t }\n\t else {\n\t facetValue = this.facet.values.get(value);\n\t if (facetValue == null) {\n\t facetValue = FacetValues_1.FacetValue.createFromValue(value);\n\t this.facet.values.add(facetValue);\n\t }\n\t }\n\t var key = facetValue.value.toLowerCase();\n\t var found = this.valueList[key];\n\t if (found == undefined) {\n\t found = this.valueList[key] = new FacetValueElement_1.FacetValueElement(this.facet, facetValue, true);\n\t found.build();\n\t }\n\t else {\n\t found.facetValue = facetValue;\n\t }\n\t };\n\t return FacetValuesList;\n\t}());\n\texports.FacetValuesList = FacetValuesList;\n\n\n/***/ },\n/* 168 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar FacetHeader = (function () {\n\t function FacetHeader(options) {\n\t this.options = options;\n\t this.element = document.createElement('div');\n\t Dom_1.$$(this.element).addClass('coveo-facet-header');\n\t }\n\t FacetHeader.prototype.build = function () {\n\t if (this.options.isNewDesign) {\n\t return this.buildNewDesign();\n\t }\n\t else {\n\t return this.buildOldDesign();\n\t }\n\t };\n\t FacetHeader.prototype.switchToAnd = function () {\n\t if (this.options.facet) {\n\t this.options.facet.options.useAnd = true;\n\t this.rebuildOperatorToggle();\n\t this.updateOperatorQueryStateModel();\n\t }\n\t };\n\t FacetHeader.prototype.switchToOr = function () {\n\t if (this.options.facet) {\n\t this.options.facet.options.useAnd = false;\n\t this.rebuildOperatorToggle();\n\t this.updateOperatorQueryStateModel();\n\t }\n\t };\n\t FacetHeader.prototype.collapseFacet = function () {\n\t if (this.collapseElement && this.expandElement) {\n\t Dom_1.$$(this.collapseElement).hide();\n\t Dom_1.$$(this.expandElement).show();\n\t }\n\t Dom_1.$$(this.options.facetElement).addClass('coveo-facet-collapsed');\n\t };\n\t FacetHeader.prototype.expandFacet = function () {\n\t if (this.collapseElement && this.expandElement) {\n\t Dom_1.$$(this.expandElement).hide();\n\t Dom_1.$$(this.collapseElement).show();\n\t }\n\t Dom_1.$$(this.options.facetElement).removeClass('coveo-facet-collapsed');\n\t if (this.options.facet) {\n\t FacetUtils_1.FacetUtils.clipCaptionsToAvoidOverflowingTheirContainer(this.options.facet);\n\t }\n\t };\n\t FacetHeader.prototype.updateOperatorQueryStateModel = function () {\n\t if (this.options.facet && this.options.facet.options.enableTogglingOperator) {\n\t var valueToSet = '';\n\t if (this.options.facet.getSelectedValues().length != 0 || this.options.facet.getExcludedValues().length != 0) {\n\t valueToSet = this.options.facet.options.useAnd ? 'and' : 'or';\n\t }\n\t this.options.facet.queryStateModel.set(this.options.facet.operatorAttributeId, valueToSet);\n\t }\n\t };\n\t FacetHeader.prototype.buildNewDesign = function () {\n\t var titleSection = Dom_1.$$('div', {\n\t className: 'coveo-facet-header-title-section'\n\t });\n\t if (this.options.icon != undefined) {\n\t this.iconElement = this.buildIcon();\n\t titleSection.append(this.iconElement);\n\t }\n\t titleSection.append(this.buildTitle());\n\t this.waitElement = this.buildWaitAnimation();\n\t titleSection.append(this.waitElement);\n\t this.element.appendChild(titleSection.el);\n\t var settingsSection = Dom_1.$$('div', {\n\t className: 'coveo-facet-header-settings-section'\n\t });\n\t this.eraserElement = this.buildEraser();\n\t settingsSection.append(this.eraserElement);\n\t if (this.options.facet) {\n\t this.operatorElement = this.buildOperatorToggle();\n\t settingsSection.append(this.operatorElement);\n\t Dom_1.$$(this.operatorElement).toggle(this.options.facet.options.enableTogglingOperator);\n\t }\n\t if (this.options.settingsKlass) {\n\t this.sort = this.settings = new this.options.settingsKlass(this.options.availableSorts, this.options.facet);\n\t settingsSection.append(this.settings.build());\n\t }\n\t else if (this.options.sortKlass) {\n\t this.sort = new this.options.sortKlass(this.options.availableSorts, this.options.facet);\n\t }\n\t this.element.appendChild(settingsSection.el);\n\t return this.element;\n\t };\n\t FacetHeader.prototype.buildOldDesign = function () {\n\t this.element.appendChild(this.buildIcon());\n\t this.element.appendChild(this.buildWaitAnimation());\n\t if (this.options.settingsKlass) {\n\t this.sort = this.settings = new this.options.settingsKlass(this.options.availableSorts, this.options.facet);\n\t this.element.appendChild(this.settings.build());\n\t }\n\t else if (this.options.sortKlass) {\n\t this.sort = new this.options.sortKlass(this.options.availableSorts, this.options.facet);\n\t }\n\t if (this.options.enableCollapseElement) {\n\t this.collapseElement = this.buildCollapse();\n\t this.element.appendChild(this.collapseElement);\n\t this.expandElement = this.buildExpand();\n\t this.element.appendChild(this.expandElement);\n\t }\n\t if (this.options.facet) {\n\t this.operatorElement = this.buildOperatorToggle();\n\t this.element.appendChild(this.operatorElement);\n\t Dom_1.$$(this.operatorElement).toggle(this.options.facet.options.enableTogglingOperator);\n\t }\n\t this.eraserElement = this.buildEraser();\n\t this.element.appendChild(this.eraserElement);\n\t this.element.appendChild(this.buildTitle());\n\t return this.element;\n\t };\n\t FacetHeader.prototype.rebuildOperatorToggle = function () {\n\t var newElement = this.buildOperatorToggle();\n\t if (this.operatorElement) {\n\t Dom_1.$$(this.operatorElement).replaceWith(newElement);\n\t }\n\t this.operatorElement = newElement;\n\t };\n\t FacetHeader.prototype.buildIcon = function () {\n\t var cssClassForIcon;\n\t if (this.options.icon) {\n\t cssClassForIcon = 'coveo-icon-custom ' + this.options.icon;\n\t }\n\t else {\n\t cssClassForIcon = 'coveo-icon ' + this.options.field.substr(1);\n\t }\n\t this.iconElement = document.createElement('div');\n\t Dom_1.$$(this.iconElement).addClass(cssClassForIcon);\n\t return this.iconElement;\n\t };\n\t FacetHeader.prototype.buildWaitAnimation = function () {\n\t this.waitElement = document.createElement('div');\n\t Dom_1.$$(this.waitElement).addClass('coveo-facet-header-wait-animation');\n\t if (this.options.isNewDesign) {\n\t this.waitElement.style.visibility = 'hidden';\n\t }\n\t else {\n\t Dom_1.$$(this.waitElement).hide();\n\t }\n\t return this.waitElement;\n\t };\n\t FacetHeader.prototype.buildCollapse = function () {\n\t var _this = this;\n\t var icon = document.createElement('span');\n\t Dom_1.$$(icon).addClass('coveo-icon');\n\t var collapse = document.createElement('div');\n\t collapse.setAttribute('title', Strings_1.l('Collapse'));\n\t Dom_1.$$(collapse).addClass('coveo-facet-header-collapse');\n\t collapse.appendChild(icon);\n\t Dom_1.$$(collapse).on('click', function () { return _this.collapseFacet(); });\n\t return collapse;\n\t };\n\t FacetHeader.prototype.buildExpand = function () {\n\t var _this = this;\n\t var icon = document.createElement('span');\n\t Dom_1.$$(icon).addClass('coveo-icon');\n\t var expand = document.createElement('div');\n\t expand.setAttribute('title', Strings_1.l('Expand'));\n\t Dom_1.$$(expand).hide();\n\t Dom_1.$$(expand).addClass('coveo-facet-header-expand');\n\t expand.appendChild(icon);\n\t Dom_1.$$(expand).on('click', function () { return _this.expandFacet(); });\n\t return expand;\n\t };\n\t FacetHeader.prototype.buildOperatorToggle = function () {\n\t var _this = this;\n\t var icon = document.createElement('span');\n\t Dom_1.$$(icon).addClass(['coveo-' + (this.options.facet.options.useAnd ? 'and' : 'or'), 'coveo-icon']);\n\t var toggle = document.createElement('div');\n\t toggle.setAttribute('title', Strings_1.l('SwitchTo', this.options.facet.options.useAnd ? Strings_1.l('Or') : Strings_1.l('And')));\n\t Dom_1.$$(toggle).addClass('coveo-facet-header-operator');\n\t toggle.appendChild(icon);\n\t Dom_1.$$(toggle).on('click', function () { return _this.handleOperatorClick(); });\n\t return toggle;\n\t };\n\t FacetHeader.prototype.handleOperatorClick = function () {\n\t var _this = this;\n\t if (this.options.facet.options.useAnd) {\n\t this.options.facet.switchToOr();\n\t }\n\t else {\n\t this.options.facet.switchToAnd();\n\t }\n\t if (this.options.facet.getSelectedValues().length != 0) {\n\t var operatorNow = this.options.facet.options.useAnd ? 'AND' : 'OR';\n\t var operatorBefore = this.options.facet.options.useAnd ? 'OR' : 'AND';\n\t this.options.facet.triggerNewQuery(function () { return _this.options.facet.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetToggle, {\n\t facetId: _this.options.facet.options.id,\n\t facetOperatorBefore: operatorBefore,\n\t facetOperatorAfter: operatorNow,\n\t facetTitle: _this.options.title\n\t }); });\n\t }\n\t };\n\t FacetHeader.prototype.buildTitle = function () {\n\t var title = Dom_1.$$('div', {\n\t title: this.options.title,\n\t className: 'coveo-facet-header-title'\n\t });\n\t title.text(this.options.title);\n\t return title.el;\n\t };\n\t FacetHeader.prototype.buildEraser = function () {\n\t var _this = this;\n\t var icon = document.createElement('span');\n\t Dom_1.$$(icon).addClass('coveo-icon');\n\t var eraser = document.createElement('div');\n\t eraser.setAttribute('title', Strings_1.l('Clear', this.options.title));\n\t eraser.appendChild(icon);\n\t Dom_1.$$(eraser).addClass('coveo-facet-header-eraser');\n\t Dom_1.$$(eraser).on('click', function () {\n\t var cmp = _this.options.facet || _this.options.facetSlider;\n\t cmp.reset();\n\t cmp.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.facetClearAll, {\n\t facetId: cmp.options.id,\n\t facetTitle: cmp.options.title\n\t });\n\t cmp.queryController.executeQuery();\n\t });\n\t return eraser;\n\t };\n\t return FacetHeader;\n\t}());\n\texports.FacetHeader = FacetHeader;\n\n\n/***/ },\n/* 169 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\tvar BreadcrumbValueElement = (function () {\n\t function BreadcrumbValueElement(facet, facetValue) {\n\t this.facet = facet;\n\t this.facetValue = facetValue;\n\t }\n\t BreadcrumbValueElement.prototype.build = function (tooltip) {\n\t var _this = this;\n\t if (tooltip === void 0) { tooltip = true; }\n\t Assert_1.Assert.exists(this.facetValue);\n\t var elem = DeviceUtils_1.DeviceUtils.isMobileDevice() ? Dom_1.$$('div') : Dom_1.$$('span');\n\t elem.addClass('coveo-facet-breadcrumb-value');\n\t elem.toggleClass('coveo-selected', this.facetValue.selected);\n\t elem.toggleClass('coveo-excluded', this.facetValue.excluded);\n\t elem.el.setAttribute('title', this.getBreadcrumbTooltip());\n\t var caption = Dom_1.$$('span', {\n\t className: 'coveo-facet-breadcrumb-caption'\n\t });\n\t caption.text(this.facet.getValueCaption(this.facetValue));\n\t elem.el.appendChild(caption.el);\n\t var clear = Dom_1.$$('span', {\n\t className: 'coveo-facet-breadcrumb-clear'\n\t });\n\t elem.el.appendChild(clear.el);\n\t var clicked = false;\n\t elem.on('click', function () {\n\t if (!clicked) {\n\t clicked = true;\n\t if (_this.facetValue.excluded) {\n\t _this.facet.unexcludeValue(_this.facetValue.value);\n\t }\n\t else {\n\t _this.facet.deselectValue(_this.facetValue.value);\n\t }\n\t _this.facet.triggerNewQuery(function () { return _this.facet.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.breadcrumbFacet, {\n\t facetId: _this.facet.options.id,\n\t facetValue: _this.facetValue.value,\n\t facetTitle: _this.facet.options.title\n\t }); });\n\t }\n\t });\n\t return elem;\n\t };\n\t BreadcrumbValueElement.prototype.getBreadcrumbTooltip = function () {\n\t var tooltipParts = [this.facet.getValueCaption(this.facetValue), this.facetValue.getFormattedCount(), this.facetValue.getFormattedComputedField(this.facet.options.computedFieldFormat)];\n\t return _.compact(tooltipParts).join(' ');\n\t };\n\t return BreadcrumbValueElement;\n\t}());\n\texports.BreadcrumbValueElement = BreadcrumbValueElement;\n\n\n/***/ },\n/* 170 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Globalize = __webpack_require__(30);\n\tvar _ = __webpack_require__(16);\n\tvar BreadcrumbValueList = (function () {\n\t function BreadcrumbValueList(facet, facetValues, breadcrumbValueElementKlass) {\n\t this.facet = facet;\n\t this.facetValues = facetValues;\n\t this.breadcrumbValueElementKlass = breadcrumbValueElementKlass;\n\t this.setExpandedAndCollapsed();\n\t this.elem = Dom_1.$$('div', {\n\t className: 'coveo-facet-breadcrumb'\n\t }).el;\n\t var title = Dom_1.$$('span');\n\t title.addClass('coveo-facet-breadcrumb-title');\n\t title.text(this.facet.options.title + ':');\n\t this.elem.appendChild(title.el);\n\t this.valueContainer = Dom_1.$$('span', {\n\t className: 'coveo-facet-breadcrumb-values'\n\t }).el;\n\t this.elem.appendChild(this.valueContainer);\n\t }\n\t BreadcrumbValueList.prototype.build = function () {\n\t this.buildExpanded();\n\t if (this.collapsed.length != 0) {\n\t this.buildCollapsed();\n\t }\n\t return this.elem;\n\t };\n\t BreadcrumbValueList.prototype.buildAsString = function () {\n\t this.build();\n\t if (this.elem) {\n\t return this.facet.options.title + \": \" + _.map(Dom_1.$$(this.elem).findAll('.coveo-facet-breadcrumb-value'), function (value) {\n\t return Dom_1.$$(value).text();\n\t }).join(', ');\n\t }\n\t return '';\n\t };\n\t BreadcrumbValueList.prototype.buildExpanded = function () {\n\t var _this = this;\n\t _.each(this.expanded, function (value, index) {\n\t if (index != 0 && !DeviceUtils_1.DeviceUtils.isMobileDevice() && !_this.facet.searchInterface.isNewDesign()) {\n\t var separator = Dom_1.$$('span', {\n\t className: 'coveo-facet-breadcrumb-separator'\n\t });\n\t separator.text(', ');\n\t _this.valueContainer.appendChild(separator.el);\n\t }\n\t var elementBreadcrumb = new _this.breadcrumbValueElementKlass(_this.facet, value).build();\n\t _this.valueContainer.appendChild(elementBreadcrumb.el);\n\t });\n\t };\n\t BreadcrumbValueList.prototype.buildCollapsed = function () {\n\t var _this = this;\n\t var numberOfSelected = _.filter(this.collapsed, function (value) { return value.selected; }).length;\n\t var numberOfExcluded = _.filter(this.collapsed, function (value) { return value.excluded; }).length;\n\t Assert_1.Assert.check(numberOfSelected + numberOfExcluded == this.collapsed.length);\n\t var elem = Dom_1.$$('div', {\n\t className: 'coveo-facet-breadcrumb-value'\n\t });\n\t if (!DeviceUtils_1.DeviceUtils.isMobileDevice() && !this.facet.searchInterface.isNewDesign()) {\n\t var sep = Dom_1.$$('span', {\n\t className: 'coveo-separator'\n\t });\n\t sep.text(', ');\n\t elem.el.appendChild(sep.el);\n\t }\n\t if (numberOfSelected > 0) {\n\t var multi = Dom_1.$$('span', {\n\t className: 'coveo-facet-breadcrumb-multi-count'\n\t });\n\t multi.text(Strings_1.l('NMore', Globalize.format(numberOfSelected, 'n0')));\n\t elem.el.appendChild(multi.el);\n\t var multiIcon = Dom_1.$$('div', {\n\t className: 'coveo-selected coveo-facet-breadcrumb-multi-icon'\n\t });\n\t elem.el.appendChild(multiIcon.el);\n\t }\n\t if (numberOfExcluded > 0) {\n\t var multiExcluded = Dom_1.$$('span', {\n\t className: 'coveo-facet-breadcrumb-multi-count'\n\t });\n\t multiExcluded.text(Strings_1.l('NMore', Globalize.format(numberOfExcluded, 'n0')));\n\t elem.el.appendChild(multiExcluded.el);\n\t var multiExcludedIcon = Dom_1.$$('div', {\n\t className: 'coveo-excluded coveo-facet-breadcrumb-multi-icon'\n\t });\n\t elem.el.appendChild(multiExcludedIcon.el);\n\t }\n\t var valueElements = _.map(this.collapsed, function (facetValue) {\n\t return new _this.breadcrumbValueElementKlass(_this.facet, facetValue);\n\t });\n\t var toolTips = _.map(valueElements, function (valueElement) {\n\t return valueElement.getBreadcrumbTooltip();\n\t });\n\t elem.el.setAttribute('title', toolTips.join('\\n'));\n\t elem.on('click', function () {\n\t var elements = [];\n\t _.forEach(valueElements, function (valueElement) {\n\t if (!DeviceUtils_1.DeviceUtils.isMobileDevice() && !_this.facet.searchInterface.isNewDesign()) {\n\t var separatorsClicked = Dom_1.$$('span', {\n\t className: 'coveo-facet-breadcrumb-separator'\n\t });\n\t separatorsClicked.text(', ');\n\t elements.push(separatorsClicked.el);\n\t }\n\t elements.push(valueElement.build(false).el);\n\t });\n\t _.each(elements, function (el) {\n\t Dom_1.$$(el).insertBefore(elem.el);\n\t });\n\t elem.detach();\n\t });\n\t this.valueContainer.appendChild(elem.el);\n\t };\n\t BreadcrumbValueList.prototype.setExpandedAndCollapsed = function () {\n\t if (this.facetValues.length > this.facet.options.numberOfValuesInBreadcrumb) {\n\t this.collapsed = _.rest(this.facetValues, this.facet.options.numberOfValuesInBreadcrumb - 1);\n\t this.expanded = _.first(this.facetValues, this.facet.options.numberOfValuesInBreadcrumb - 1);\n\t }\n\t else {\n\t this.collapsed = [];\n\t this.expanded = this.facetValues;\n\t }\n\t };\n\t return BreadcrumbValueList;\n\t}());\n\texports.BreadcrumbValueList = BreadcrumbValueList;\n\n\n/***/ },\n/* 171 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar FacetSearchValuesList = (function () {\n\t function FacetSearchValuesList(facet, facetValueElementKlass) {\n\t this.facet = facet;\n\t this.facetValueElementKlass = facetValueElementKlass;\n\t }\n\t FacetSearchValuesList.prototype.build = function (facetValues) {\n\t var _this = this;\n\t var valuesToBuildWith = _.map(facetValues, function (facetValue) {\n\t return _.find(_this.facet.values.getAll(), function (valueAlreadyInFacet) {\n\t return valueAlreadyInFacet.value == facetValue.value;\n\t }) || facetValue;\n\t });\n\t return _.map(valuesToBuildWith, function (facetValue) {\n\t return new _this.facetValueElementKlass(_this.facet, facetValue, _this.facet.keepDisplayedValuesNextTime).build().renderer.listItem;\n\t });\n\t };\n\t return FacetSearchValuesList;\n\t}());\n\texports.FacetSearchValuesList = FacetSearchValuesList;\n\n\n/***/ },\n/* 172 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/// \n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ValueElement_1 = __webpack_require__(162);\n\tvar OmniboxValueElement = (function (_super) {\n\t __extends(OmniboxValueElement, _super);\n\t function OmniboxValueElement(facet, facetValue, eventArg, onSelect, onExclude) {\n\t var _this = _super.call(this, facet, facetValue, onSelect, onExclude) || this;\n\t _this.facet = facet;\n\t _this.facetValue = facetValue;\n\t _this.eventArg = eventArg;\n\t return _this;\n\t }\n\t OmniboxValueElement.prototype.bindEvent = function () {\n\t _super.prototype.bindEvent.call(this, { displayNextTime: false, pinFacet: false, omniboxObject: this.eventArg });\n\t };\n\t return OmniboxValueElement;\n\t}(ValueElement_1.ValueElement));\n\texports.OmniboxValueElement = OmniboxValueElement;\n\n\n/***/ },\n/* 173 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar _ = __webpack_require__(16);\n\tvar OmniboxValuesList = (function () {\n\t function OmniboxValuesList(facet, facetValues, omniboxObject, omniboxValueElementKlass) {\n\t this.facet = facet;\n\t this.facetValues = facetValues;\n\t this.omniboxObject = omniboxObject;\n\t this.omniboxValueElementKlass = omniboxValueElementKlass;\n\t }\n\t OmniboxValuesList.prototype.build = function () {\n\t var _this = this;\n\t var rows = [];\n\t _.each(this.facetValues, function (facetValue) {\n\t rows.push(_this.buildOmniboxForOneRow(facetValue, _this.omniboxObject));\n\t });\n\t return this.buildFinalOmniboxElement(rows);\n\t };\n\t OmniboxValuesList.prototype.buildOmniboxForOneRow = function (facetValue, omniboxObject) {\n\t var _this = this;\n\t var selectCallback = function (elem, cause) { return _this.logAnalyticsEvent(elem, cause); };\n\t var excludeCallback = function (elem, cause) { return _this.logAnalyticsEvent(elem, cause); };\n\t var omniboxValueElement = new this.omniboxValueElementKlass(this.facet, facetValue, omniboxObject, selectCallback, excludeCallback);\n\t var omniboxRowContent = omniboxValueElement.build().renderer.listItem;\n\t var regex = omniboxObject.completeQueryExpression.regex;\n\t var valueToSearch = omniboxObject.completeQueryExpression.word;\n\t var caption = Dom_1.$$(omniboxRowContent).find('.coveo-facet-value-caption');\n\t caption.innerHTML = this.highlightOmniboxMatch(this.facet.getValueCaption(facetValue), regex, valueToSearch);\n\t var omniboxRow = Dom_1.$$('div', {\n\t className: 'coveo-omnibox-selectable coveo-facet-value coveo-omnibox-facet-value'\n\t }).el;\n\t omniboxRow.appendChild(omniboxRowContent);\n\t Dom_1.$$(omniboxRow).on('keyboardSelect', function () {\n\t var input = Dom_1.$$(omniboxRowContent).find('input[type=checkbox]');\n\t Dom_1.$$(input).trigger('change');\n\t });\n\t omniboxRow['no-text-suggestion'] = true;\n\t return omniboxRow;\n\t };\n\t OmniboxValuesList.prototype.buildFinalOmniboxElement = function (rows) {\n\t var header = this.buildOmniboxHeader();\n\t if (Utils_1.Utils.isEmptyArray(rows)) {\n\t return undefined;\n\t }\n\t else {\n\t var ret = Dom_1.$$('div', {\n\t className: 'coveo-omnibox-facet-value'\n\t }).el;\n\t ret.appendChild(header);\n\t _.each(rows, function (r) {\n\t ret.appendChild(r);\n\t });\n\t FacetUtils_1.FacetUtils.addNoStateCssClassToFacetValues(this.facet, ret);\n\t return ret;\n\t }\n\t };\n\t OmniboxValuesList.prototype.buildOmniboxHeader = function () {\n\t var title = this.facet.options.title;\n\t var header = Dom_1.$$('div', {\n\t className: 'coveo-omnibox-facet-header'\n\t }).el;\n\t if (this.facet.searchInterface.isNewDesign()) {\n\t Dom_1.$$(header).text(title);\n\t return header;\n\t }\n\t else {\n\t var icon = Dom_1.$$('span', {\n\t className: 'coveo-icon ' + this.facet.options.field.substr(1)\n\t }).el;\n\t header.appendChild(icon);\n\t Dom_1.$$(header).text(title);\n\t }\n\t return header;\n\t };\n\t OmniboxValuesList.prototype.highlightOmniboxMatch = function (orignalStr, regex, valueToSearch) {\n\t var firstChar = orignalStr.search(regex);\n\t var lastChar = firstChar + valueToSearch.length;\n\t return orignalStr.slice(0, firstChar) + '' + orignalStr.slice(firstChar, lastChar) + '' + orignalStr.slice(lastChar);\n\t };\n\t OmniboxValuesList.prototype.logAnalyticsEvent = function (elem, cause) {\n\t var strippedFacetValues = _.pluck(this.facetValues, 'value');\n\t elem.facet.usageAnalytics.logSearchEvent(cause, {\n\t query: this.omniboxObject.completeQueryExpression.word,\n\t facetId: elem.facet.options.id,\n\t facetTitle: elem.facet.options.title,\n\t facetValue: elem.facetValue.value,\n\t suggestions: strippedFacetValues.join(';'),\n\t suggestionRanking: _.indexOf(strippedFacetValues, elem.facetValue.value)\n\t });\n\t };\n\t return OmniboxValuesList;\n\t}());\n\texports.OmniboxValuesList = OmniboxValuesList;\n\n\n/***/ },\n/* 174 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar LiveAnalyticsClient_1 = __webpack_require__(129);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Component_1 = __webpack_require__(109);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar RecommendationAnalyticsClient = (function (_super) {\n\t __extends(RecommendationAnalyticsClient, _super);\n\t function RecommendationAnalyticsClient(endpoint, rootElement, userId, userDisplayName, anonymous, splitTestRunName, splitTestRunVersion, originLevel1, sendToCloud, bindings) {\n\t var _this = _super.call(this, endpoint, rootElement, userId, userDisplayName, anonymous, splitTestRunName, splitTestRunVersion, originLevel1, sendToCloud) || this;\n\t _this.endpoint = endpoint;\n\t _this.rootElement = rootElement;\n\t _this.userId = userId;\n\t _this.userDisplayName = userDisplayName;\n\t _this.anonymous = anonymous;\n\t _this.splitTestRunName = splitTestRunName;\n\t _this.splitTestRunVersion = splitTestRunVersion;\n\t _this.originLevel1 = originLevel1;\n\t _this.sendToCloud = sendToCloud;\n\t _this.bindings = bindings;\n\t _this.recommendation = _this.bindings.searchInterface;\n\t return _this;\n\t }\n\t RecommendationAnalyticsClient.prototype.logSearchEvent = function (actionCause, meta) {\n\t if (actionCause == AnalyticsActionListMeta_1.analyticsActionCauseList.interfaceLoad) {\n\t actionCause = AnalyticsActionListMeta_1.analyticsActionCauseList.recommendationInterfaceLoad;\n\t }\n\t _super.prototype.logSearchEvent.call(this, actionCause, meta);\n\t };\n\t RecommendationAnalyticsClient.prototype.logClickEvent = function (actionCause, meta, result, element) {\n\t if (actionCause == AnalyticsActionListMeta_1.analyticsActionCauseList.documentOpen) {\n\t actionCause = AnalyticsActionListMeta_1.analyticsActionCauseList.recommendationOpen;\n\t }\n\t var promises = [_super.prototype.logClickEvent.call(this, actionCause, meta, result, element)];\n\t if (this.recommendation.mainQuerySearchUID && this.recommendation.mainQueryPipeline != null) {\n\t // We log a second click associated with the main interface query to tell the analytics that the query was a success.\n\t var mainInterface = Component_1.Component.get(this.recommendation.options.mainSearchInterface, SearchInterface_1.SearchInterface);\n\t result.queryUid = this.recommendation.mainQuerySearchUID;\n\t result.pipeline = this.recommendation.mainQueryPipeline;\n\t promises.push(mainInterface.usageAnalytics.logClickEvent(actionCause, meta, result, element));\n\t }\n\t return Promise.all(promises);\n\t };\n\t RecommendationAnalyticsClient.prototype.getOriginLevel2 = function (element) {\n\t return this.recommendation.getId();\n\t };\n\t return RecommendationAnalyticsClient;\n\t}(LiveAnalyticsClient_1.LiveAnalyticsClient));\n\texports.RecommendationAnalyticsClient = RecommendationAnalyticsClient;\n\n\n/***/ },\n/* 175 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar _ = __webpack_require__(16);\n\tif (!initCoveoJQuery()) {\n\t // Adding a check in case jQuery was added after the jsSearch\n\t // Since this event listener is registered before the Coveo.init call, JQuery should always be initiated before the Coveo.init call\n\t document.addEventListener('DOMContentLoaded', function () {\n\t initCoveoJQuery();\n\t });\n\t}\n\tfunction initCoveoJQuery() {\n\t if (!jQueryIsDefined()) {\n\t return false;\n\t }\n\t exports.jQueryInstance = getJQuery();\n\t if (window['Coveo'] == undefined) {\n\t window['Coveo'] = {};\n\t }\n\t if (window['Coveo']['$'] == undefined) {\n\t window['Coveo']['$'] = exports.jQueryInstance;\n\t }\n\t exports.jQueryInstance.fn.coveo = function () {\n\t var args = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t args[_i] = arguments[_i];\n\t }\n\t var returnValue;\n\t this.each(function (index, element) {\n\t var returnValueForThisElement;\n\t if (_.isString(args[0])) {\n\t var token = args[0];\n\t returnValueForThisElement = Initialization_1.Initialization.dispatchNamedMethodCallOrComponentCreation(token, element, args.slice(1));\n\t }\n\t else {\n\t // Invoking with no method name is a shortcut for the 'get' method (from Component).\n\t returnValueForThisElement = Initialization_1.Initialization.dispatchNamedMethodCall('get', element, args);\n\t }\n\t // Keep only the first return value we encounter\n\t returnValue = returnValue || returnValueForThisElement;\n\t });\n\t return returnValue;\n\t };\n\t return true;\n\t}\n\texports.initCoveoJQuery = initCoveoJQuery;\n\tfunction jQueryIsDefined() {\n\t return jQueryDefinedOnWindow() || jQueryDefinedOnCoveoObject();\n\t}\n\texports.jQueryIsDefined = jQueryIsDefined;\n\tfunction jQueryDefinedOnCoveoObject() {\n\t return window['Coveo'] != undefined && window['Coveo']['$'] != undefined;\n\t}\n\tfunction jQueryDefinedOnWindow() {\n\t return window['$'] != undefined && window['$'].fn != undefined && window['$'].fn.jquery != undefined;\n\t}\n\tfunction getJQuery() {\n\t var jQueryInstance;\n\t if (window['$']) {\n\t jQueryInstance = window['$'];\n\t }\n\t else {\n\t jQueryInstance = window['Coveo']['$'];\n\t }\n\t return jQueryInstance;\n\t}\n\n\n/***/ },\n/* 176 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar TemplateHelpers_1 = __webpack_require__(177);\n\texports.TemplateHelpers = TemplateHelpers_1.TemplateHelpers;\n\tvar TemplateCache_1 = __webpack_require__(112);\n\texports.TemplateCache = TemplateCache_1.TemplateCache;\n\tvar HtmlTemplate_1 = __webpack_require__(119);\n\texports.HtmlTemplate = HtmlTemplate_1.HtmlTemplate;\n\tvar UnderscoreTemplate_1 = __webpack_require__(116);\n\texports.UnderscoreTemplate = UnderscoreTemplate_1.UnderscoreTemplate;\n\n\n/***/ },\n/* 177 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Assert_1 = __webpack_require__(14);\n\tvar UnderscoreTemplate_1 = __webpack_require__(116);\n\tvar Utils_1 = __webpack_require__(15);\n\t/**\n\t * Allow to register and return template helpers (essentially: Utility functions that can be executed in the context of a template to render complex elements).\n\t */\n\tvar TemplateHelpers = (function () {\n\t function TemplateHelpers() {\n\t }\n\t TemplateHelpers.registerFieldHelper = function (name, helper) {\n\t TemplateHelpers.fieldHelpers.push(name);\n\t TemplateHelpers.registerTemplateHelper(name, helper);\n\t };\n\t /**\n\t * Register a new helper in the framework, that will be available inside all templates execution context.\n\t * @param name\n\t * @param helper\n\t */\n\t TemplateHelpers.registerTemplateHelper = function (name, helper) {\n\t Assert_1.Assert.isNonEmptyString(name);\n\t Assert_1.Assert.exists(helper);\n\t TemplateHelpers.registerTemplateHelperInUnderscore(name, helper);\n\t TemplateHelpers.helpers[name] = helper;\n\t };\n\t /**\n\t * Return a template helper function\n\t * @param name\n\t * @returns {any}\n\t */\n\t TemplateHelpers.getHelper = function (name) {\n\t return Utils_1.Utils.getCaseInsensitiveProperty(TemplateHelpers.helpers, name);\n\t };\n\t /**\n\t * Get all available helpers\n\t * @returns {{}}\n\t */\n\t TemplateHelpers.getHelpers = function () {\n\t return TemplateHelpers.helpers;\n\t };\n\t TemplateHelpers.registerTemplateHelperInUnderscore = function (name, helper) {\n\t Assert_1.Assert.isNonEmptyString(name);\n\t Assert_1.Assert.exists(helper);\n\t UnderscoreTemplate_1.UnderscoreTemplate.registerTemplateHelper(name, helper);\n\t };\n\t return TemplateHelpers;\n\t}());\n\tTemplateHelpers.helpers = {};\n\tTemplateHelpers.fieldHelpers = [];\n\texports.TemplateHelpers = TemplateHelpers;\n\n\n/***/ },\n/* 178 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar TemplateHelpers_1 = __webpack_require__(177);\n\tvar HighlightUtils_1 = __webpack_require__(68);\n\tvar DateUtils_1 = __webpack_require__(60);\n\tvar CurrencyUtils_1 = __webpack_require__(59);\n\tvar HtmlUtils_1 = __webpack_require__(69);\n\tvar Icon_1 = __webpack_require__(179);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar TimeSpanUtils_1 = __webpack_require__(17);\n\tvar EmailUtils_1 = __webpack_require__(66);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar TemplateCache_1 = __webpack_require__(112);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar SearchEndpoint_1 = __webpack_require__(11);\n\tvar ResultList_1 = __webpack_require__(183);\n\tvar StreamHighlightUtils_1 = __webpack_require__(74);\n\tvar FacetUtils_1 = __webpack_require__(95);\n\tvar Globalize = __webpack_require__(30);\n\tvar Quickview_1 = __webpack_require__(180);\n\tvar _ = __webpack_require__(16);\n\tvar CoreHelpers = (function () {\n\t function CoreHelpers() {\n\t }\n\t /**\n\t * For backward compatibility reason, the \"global\" template helper should be available under the\n\t * coveo namespace.\n\t * @param scope\n\t */\n\t CoreHelpers.exportAllHelpersGlobally = function (scope) {\n\t _.each(TemplateHelpers_1.TemplateHelpers.getHelpers(), function (helper, name) {\n\t if (scope[name] == undefined) {\n\t scope[name] = helper;\n\t }\n\t });\n\t };\n\t return CoreHelpers;\n\t}());\n\texports.CoreHelpers = CoreHelpers;\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('javascriptEncode', function (value) {\n\t return Utils_1.Utils.exists(value) ? StringUtils_1.StringUtils.javascriptEncode(value) : undefined;\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('shorten', function (content, length, highlights, cssClass) {\n\t var strAndHoles = HighlightUtils_1.StringAndHoles.shortenString(content, length, '...');\n\t if (Utils_1.Utils.exists(highlights)) {\n\t return HighlightUtils_1.HighlightUtils.highlightString(strAndHoles.value, highlights, strAndHoles.holes, cssClass || 'highlight');\n\t }\n\t else {\n\t return strAndHoles.value;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('shortenPath', function (content, length, highlights, cssClass) {\n\t var strAndHoles = HighlightUtils_1.StringAndHoles.shortenPath(content, length);\n\t if (Utils_1.Utils.exists(highlights)) {\n\t return HighlightUtils_1.HighlightUtils.highlightString(strAndHoles.value, highlights, strAndHoles.holes, cssClass || 'highlight');\n\t }\n\t else {\n\t return strAndHoles.value;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('shortenUri', function (content, length, highlights, cssClass) {\n\t var strAndHoles = HighlightUtils_1.StringAndHoles.shortenUri(content, length);\n\t if (Utils_1.Utils.exists(highlights)) {\n\t return HighlightUtils_1.HighlightUtils.highlightString(strAndHoles.value, highlights, strAndHoles.holes, cssClass || 'highlight');\n\t }\n\t else {\n\t return strAndHoles.value;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('highlight', function (content, highlights, cssClass) {\n\t if (Utils_1.Utils.exists(content)) {\n\t if (Utils_1.Utils.exists(highlights)) {\n\t return HighlightUtils_1.HighlightUtils.highlightString(content, highlights, null, cssClass || 'highlight');\n\t }\n\t else {\n\t return content;\n\t }\n\t }\n\t else {\n\t return undefined;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('highlightStreamText', function (content, termsToHighlight, phrasesToHighlight, opts) {\n\t if (termsToHighlight === void 0) { termsToHighlight = resolveTermsToHighlight(); }\n\t if (phrasesToHighlight === void 0) { phrasesToHighlight = resolvePhrasesToHighlight(); }\n\t if (Utils_1.Utils.exists(content) && Utils_1.Utils.exists(termsToHighlight) && Utils_1.Utils.exists(phrasesToHighlight)) {\n\t if (termsToHighlightAreDefined(termsToHighlight, phrasesToHighlight)) {\n\t return StreamHighlightUtils_1.StreamHighlightUtils.highlightStreamText(content, termsToHighlight, phrasesToHighlight, opts);\n\t }\n\t else {\n\t return content;\n\t }\n\t }\n\t else {\n\t return undefined;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('highlightStreamHTML', function (content, termsToHighlight, phrasesToHighlight, opts) {\n\t if (termsToHighlight === void 0) { termsToHighlight = resolveTermsToHighlight(); }\n\t if (phrasesToHighlight === void 0) { phrasesToHighlight = resolvePhrasesToHighlight(); }\n\t if (Utils_1.Utils.exists(content) && Utils_1.Utils.exists(termsToHighlight) && Utils_1.Utils.exists(phrasesToHighlight)) {\n\t if (termsToHighlightAreDefined(termsToHighlight, phrasesToHighlight)) {\n\t return StreamHighlightUtils_1.StreamHighlightUtils.highlightStreamHTML(content, termsToHighlight, phrasesToHighlight, opts);\n\t }\n\t else {\n\t return content;\n\t }\n\t }\n\t else {\n\t return undefined;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('number', function (value, options) {\n\t var numberValue = Number(value);\n\t if (Utils_1.Utils.exists(value)) {\n\t if (_.isString(options)) {\n\t return StringUtils_1.StringUtils.htmlEncode(Globalize.format(numberValue, options));\n\t }\n\t else {\n\t return StringUtils_1.StringUtils.htmlEncode(numberValue.toString());\n\t }\n\t }\n\t else {\n\t return undefined;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('date', function (value, options) {\n\t return DateUtils_1.DateUtils.dateToString(DateUtils_1.DateUtils.convertFromJsonDateIfNeeded(value), options);\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('time', function (value, options) {\n\t return DateUtils_1.DateUtils.timeToString(DateUtils_1.DateUtils.convertFromJsonDateIfNeeded(value), options);\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('dateTime', function (value, options) {\n\t return DateUtils_1.DateUtils.dateTimeToString(DateUtils_1.DateUtils.convertFromJsonDateIfNeeded(value), options);\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('emailDateTime', function (value, options) {\n\t var defaultOptions = {};\n\t defaultOptions.includeTimeIfThisWeek = true;\n\t var optionsToUse = _.extend(options, defaultOptions);\n\t return value ? DateUtils_1.DateUtils.dateTimeToString(DateUtils_1.DateUtils.convertFromJsonDateIfNeeded(value), optionsToUse) : undefined;\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('currency', function (value, options) {\n\t return CurrencyUtils_1.CurrencyUtils.currencyToString(value, options);\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('timeSpan', function (value, options) {\n\t if (options === void 0) { options = { isMilliseconds: false }; }\n\t return new TimeSpanUtils_1.TimeSpan(value, options.isMilliseconds).getHHMMSS();\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('email', function (value) {\n\t var args = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t args[_i - 1] = arguments[_i];\n\t }\n\t // support old arguments (value: any, companyDomain: string, me: string, lengthLimit = 2, truncateName = false)\n\t var companyDomain;\n\t var me;\n\t var lengthLimit;\n\t var truncateName;\n\t if (_.isObject(args[0])) {\n\t companyDomain = args[0]['companyDomain'];\n\t me = args[0]['me'];\n\t lengthLimit = args[0]['lengthLimit'];\n\t truncateName = args[0]['truncateName'];\n\t }\n\t else {\n\t companyDomain = args[0];\n\t me = args[1];\n\t lengthLimit = args[2];\n\t truncateName = args[3];\n\t }\n\t if (lengthLimit == undefined) {\n\t lengthLimit = 2;\n\t }\n\t if (truncateName == undefined) {\n\t truncateName = false;\n\t }\n\t if (_.isString(value)) {\n\t var listOfAddresses = EmailUtils_1.EmailUtils.splitSemicolonSeparatedListOfEmailAddresses(value);\n\t return EmailUtils_1.EmailUtils.emailAddressesToHyperlinks(listOfAddresses, companyDomain, me, lengthLimit, truncateName);\n\t }\n\t else if (_.isArray(value)) {\n\t return EmailUtils_1.EmailUtils.emailAddressesToHyperlinks(value, companyDomain, me, lengthLimit, truncateName);\n\t }\n\t else {\n\t return undefined;\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('excessEmailToggle', function (target) {\n\t Dom_1.$$(target).removeClass('coveo-active');\n\t if (Dom_1.$$(target).hasClass('coveo-emails-excess-collapsed')) {\n\t _.each(Dom_1.$$(target).siblings('.coveo-emails-excess-expanded'), function (sibling) {\n\t Dom_1.$$(sibling).addClass('coveo-active');\n\t });\n\t }\n\t else if (Dom_1.$$(target).hasClass('coveo-hide-expanded')) {\n\t Dom_1.$$(target.parentElement).addClass('coveo-inactive');\n\t _.each(Dom_1.$$(target.parentElement).siblings('.coveo-emails-excess-collapsed'), function (sibling) {\n\t Dom_1.$$(sibling).addClass('coveo-active');\n\t });\n\t }\n\t return undefined;\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('anchor', function (href, options) {\n\t return HtmlUtils_1.AnchorUtils.buildAnchor(href, options);\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('image', function (src, options) {\n\t return HtmlUtils_1.ImageUtils.buildImage(src, options);\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('thumbnail', function (result, endpoint, options) {\n\t if (result === void 0) { result = resolveQueryResult(); }\n\t if (endpoint === void 0) { endpoint = 'default'; }\n\t if (QueryUtils_1.QueryUtils.hasThumbnail(result)) {\n\t return HtmlUtils_1.ImageUtils.buildImageFromResult(result, SearchEndpoint_1.SearchEndpoint.endpoints[endpoint], options);\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('fromFileTypeToIcon', function (result, options) {\n\t if (result === void 0) { result = resolveQueryResult(); }\n\t if (options === void 0) { options = {}; }\n\t return Icon_1.Icon.createIcon(result, options).outerHTML;\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('attrEncode', function (value) {\n\t return ('' + value) /* Forces the conversion to string. */\n\t .replace(/&/g, '&') /* This MUST be the 1st replacement. */\n\t .replace(/'/g, ''') /* The 4 other predefined entities, required. */\n\t .replace(/'/g, '"')\n\t .replace(//g, '>');\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('loadTemplates', function (templatesToLoad, once) {\n\t if (once === void 0) { once = true; }\n\t var ret = '';\n\t var data = resolveQueryResult();\n\t var atLeastOneWasLoaded = false;\n\t var toLoad = templatesToLoad;\n\t var defaultTmpl;\n\t _.each(templatesToLoad, function (value, key, obj) {\n\t if (value == 'default') {\n\t defaultTmpl = key;\n\t }\n\t });\n\t if (defaultTmpl != undefined) {\n\t toLoad = _.omit(templatesToLoad, defaultTmpl);\n\t }\n\t _.each(toLoad, function (condition, id, obj) {\n\t if (!atLeastOneWasLoaded || !once) {\n\t atLeastOneWasLoaded = atLeastOneWasLoaded || condition;\n\t ret += TemplateHelpers_1.TemplateHelpers.getHelper('loadTemplate')(id, condition, data);\n\t }\n\t });\n\t if (!atLeastOneWasLoaded && defaultTmpl != undefined) {\n\t ret += TemplateHelpers_1.TemplateHelpers.getHelper('loadTemplate')(defaultTmpl, true, data);\n\t }\n\t return ret;\n\t});\n\tvar byteMeasure = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'];\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('size', function (value, options) {\n\t var size = parseInt(value, 10);\n\t var precision = (options != null && options.precision != null ? options.precision : 2);\n\t var base = (options != null && options.base != null ? options.base : 0);\n\t while (size > 1024 && base + 1 < byteMeasure.length) {\n\t size /= 1024;\n\t base++;\n\t }\n\t size = Math.floor(size * Math.pow(10, precision)) / Math.pow(10, precision);\n\t return size + ' ' + byteMeasure[base];\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerFieldHelper('translatedCaption', function (value) {\n\t return FacetUtils_1.FacetUtils.tryToGetTranslatedCaption('@filetype', value);\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('loadTemplate', function (id, condition, data) {\n\t if (condition === void 0) { condition = true; }\n\t if (Utils_1.Utils.isNullOrUndefined(data)) {\n\t data = resolveQueryResult();\n\t }\n\t if (condition) {\n\t return TemplateCache_1.TemplateCache.getTemplate(id).instantiateToString(data, {\n\t checkCondition: false\n\t });\n\t }\n\t return '';\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('encodeCarriageReturn', function (data) {\n\t if (Utils_1.Utils.isNullOrUndefined(data)) {\n\t return undefined;\n\t }\n\t else {\n\t return StringUtils_1.StringUtils.encodeCarriageReturn(data);\n\t }\n\t});\n\tTemplateHelpers_1.TemplateHelpers.registerTemplateHelper('isMobileDevice', function () {\n\t return DeviceUtils_1.DeviceUtils.isMobileDevice() ? DeviceUtils_1.DeviceUtils.getDeviceName() : null;\n\t});\n\tfunction resolveQueryResult() {\n\t return ResultList_1.ResultList.resultCurrentlyBeingRendered || Quickview_1.Quickview.resultCurrentlyBeingRendered;\n\t}\n\tfunction resolveTermsToHighlight() {\n\t var currentQueryResult = resolveQueryResult();\n\t if (currentQueryResult) {\n\t return currentQueryResult.termsToHighlight;\n\t }\n\t}\n\tfunction resolvePhrasesToHighlight() {\n\t var currentQueryResult = resolveQueryResult();\n\t if (currentQueryResult) {\n\t return currentQueryResult.phrasesToHighlight;\n\t }\n\t}\n\tfunction termsToHighlightAreDefined(termsToHighlight, phrasesToHighlight) {\n\t return Utils_1.Utils.isNonEmptyArray(_.keys(termsToHighlight)) || Utils_1.Utils.isNonEmptyArray(_.keys(phrasesToHighlight));\n\t}\n\n\n/***/ },\n/* 179 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar FileTypes_1 = __webpack_require__(63);\n\tvar Quickview_1 = __webpack_require__(180);\n\tvar Dom_1 = __webpack_require__(61);\n\t/**\n\t * The Icon component outputs the corresponding icon for a given file type. The component searches for a suitable icon\n\t * from those available in the Coveo JavaScript Search Framework. If the component finds no suitable icon, it instead\n\t * outputs a generic icon.\n\t *\n\t * This component is a result template component (see [Result Templates](https://developers.coveo.com/x/aIGfAQ)).\n\t */\n\tvar Icon = (function (_super) {\n\t __extends(Icon, _super);\n\t /**\n\t * Creates a new Icon component.\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the Icon component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t * @param result The result to associate the component with.\n\t */\n\t function Icon(element, options, bindings, result) {\n\t var _this = _super.call(this, element, Icon.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.result = result;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Icon, options);\n\t _this.result = _this.result || _this.resolveResult();\n\t Assert_1.Assert.exists(_this.result);\n\t var possibleInternalQuickview = Dom_1.$$(_this.element).find('.' + Component_1.Component.computeCssClassNameForType(Quickview_1.Quickview.ID));\n\t if (!Utils_1.Utils.isNullOrUndefined(possibleInternalQuickview) && QueryUtils_1.QueryUtils.hasHTMLVersion(_this.result)) {\n\t Dom_1.$$(_this.element).addClass('coveo-with-quickview');\n\t Dom_1.$$(_this.element).on('click', function () {\n\t var qv = Component_1.Component.get(possibleInternalQuickview);\n\t qv.open();\n\t });\n\t }\n\t Icon.createIcon(_this.result, _this.options, element, bindings);\n\t return _this;\n\t }\n\t Icon.createIcon = function (result, options, element, bindings) {\n\t if (options === void 0) { options = {}; }\n\t if (element === void 0) { element = Dom_1.$$('div').el; }\n\t var info = FileTypes_1.FileTypes.get(result);\n\t if (!bindings && result.searchInterface) {\n\t // try to resolve results bindings automatically\n\t bindings = result.searchInterface.getBindings();\n\t }\n\t info = Icon.preprocessIconInfo(options, info);\n\t Dom_1.$$(element).toggleClass('coveo-small', options.small === true);\n\t if (options.value != undefined) {\n\t if (options.small === true) {\n\t if (options.value.indexOf('-small') == -1) {\n\t info.icon += '-small';\n\t }\n\t }\n\t if (options.small === false) {\n\t if (options.value.indexOf('-small') != -1) {\n\t info.icon = info.icon.replace('-small', '');\n\t }\n\t }\n\t }\n\t Dom_1.$$(element).addClass(info.icon);\n\t element.setAttribute('title', info.caption);\n\t if (Icon.shouldDisplayLabel(options, bindings)) {\n\t element.appendChild(Dom_1.$$('span', {\n\t className: 'coveo-icon-caption-overlay'\n\t }, info.caption).el);\n\t Dom_1.$$(element).addClass('coveo-icon-with-caption-overlay');\n\t Dom_1.$$(element).setAttribute('data-with-label', 'true');\n\t }\n\t return element;\n\t };\n\t Icon.shouldDisplayLabel = function (options, bindings) {\n\t // Display only in new design.\n\t // If withLabel is explicitely set to false, the label will never display\n\t // If withLabel is explicitely set to true, the label will always display\n\t // If withLabel is set to default value (not a hard true or false), the label will display based on ./core/filetypes/**.json\n\t // with the property shouldDisplayLabel set on each file type/ objecttype\n\t // In this case, the generated css will take care of outputting the correct css to display : block\n\t return bindings && bindings.searchInterface.isNewDesign() && options.withLabel !== false;\n\t };\n\t Icon.preprocessIconInfo = function (options, info) {\n\t if (options.labelValue != null) {\n\t info.caption = options.labelValue;\n\t }\n\t if (options.value != null) {\n\t info.icon = 'coveo-icon ' + options.value;\n\t }\n\t if (info.caption == null) {\n\t info.caption = '';\n\t }\n\t if (info.icon == null) {\n\t info.icon = 'coveo-icon coveo-sprites-custom';\n\t }\n\t return info;\n\t };\n\t return Icon;\n\t}(Component_1.Component));\n\tIcon.ID = 'Icon';\n\t/**\n\t * The options for the Icon\n\t * @componentOptions\n\t */\n\tIcon.options = {\n\t /**\n\t * Specifies the value that the Icon component should output as its CSS class instead of the auto-selected value.\n\t *\n\t * Default value is `undefined`, which means that the Coveo JavaScript Search Framework outputs a suitable icon\n\t * depending on the result file type.\n\t */\n\t value: ComponentOptions_1.ComponentOptions.buildIconOption(),\n\t /**\n\t * Specifies whether the Icon component should output the smaller version of the icon instead of the regular one.\n\t *\n\t * Default value is `undefined`.\n\t */\n\t small: ComponentOptions_1.ComponentOptions.buildBooleanOption(),\n\t /**\n\t * Specifies whether the Icon component should force the output icon to display its caption/label.\n\t *\n\t * **Note:**\n\t *\n\t * > Due to limited screen real estate, setting this option to `true` has no effect on icons used inside Coveo for\n\t * > Salesforce Insight Panels.\n\t *\n\t * Default value is `undefined`, which means that the Coveo JavaScript Search Framework determines whether the icon\n\t * needs to display a caption/label depending on the result file type.\n\t */\n\t withLabel: ComponentOptions_1.ComponentOptions.buildBooleanOption(),\n\t /**\n\t * Specifies what text to display as the icon caption/label.\n\t *\n\t * Default value is `undefined`, which means that the Coveo JavaScript Search Framework determines what text the icon\n\t * needs to display depending on the result file type.\n\t */\n\t labelValue: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption()\n\t};\n\tIcon.fields = [\n\t 'objecttype',\n\t 'filetype',\n\t];\n\texports.Icon = Icon;\n\tInitialization_1.Initialization.registerAutoCreateComponent(Icon);\n\n\n/***/ },\n/* 180 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar DomUtils_1 = __webpack_require__(62);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar DefaultQuickviewTemplate_1 = __webpack_require__(181);\n\tvar ResultListEvents_1 = __webpack_require__(51);\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar QuickviewDocument_1 = __webpack_require__(182);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar QuickviewEvents_1 = __webpack_require__(135);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar KeyboardUtils_1 = __webpack_require__(70);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\t/**\n\t * This component is meant to exist within a result template.\n\t * It allows to create a button/link inside the result list that opens a modal box for a given result.\n\t *\n\t * Most of the time, this component will reference a {@link QuickviewDocument} in its content template.\n\t *\n\t * ## Choosing what to display for the Quickview\n\t * The Quick View uses any HTML structure you put inside its tag and uses that as the content of the dialog box. This content can thus be any element you decide, using your CSS and your structure.\n\t *\n\t * ## Example\n\t * - You can change the appearance of the Quick View link by adding HTML inside the body of the div.\n\t *\n\t * - You can change the content of the Quick View link by specifying a template ID.\n\t *\n\t * - You can use the methods of the [CoreHelpers]{@link ICoreHelpers} in the template.\n\t *\n\t * ```html\n\t * \n\t *
\n\t * Click here for Quickview\n\t *
\n\t *\n\t * \n\t * \n\t *\n\t * \n\t * ```\n\t */\n\tvar Quickview = (function (_super) {\n\t __extends(Quickview, _super);\n\t function Quickview(element, options, bindings, result, ModalBox) {\n\t if (ModalBox === void 0) { ModalBox = ExternalModulesShim_1.ModalBox; }\n\t var _this = _super.call(this, element, Quickview.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.bindings = bindings;\n\t _this.result = result;\n\t _this.ModalBox = ModalBox;\n\t _this.bindedHandleEscapeEvent = _this.handleEscapeEvent.bind(_this);\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Quickview, options);\n\t if (_this.options.contentTemplate == null) {\n\t _this.options.contentTemplate = new DefaultQuickviewTemplate_1.DefaultQuickviewTemplate();\n\t }\n\t // If there is no content inside the Quickview div,\n\t // we need to add something that will show up in the result template itself\n\t if (/^\\s*$/.test(_this.element.innerHTML)) {\n\t var iconForQuickview = Dom_1.$$('div');\n\t iconForQuickview.addClass('coveo-icon-for-quickview');\n\t if (_this.searchInterface.isNewDesign()) {\n\t var captionForQuickview = Dom_1.$$('div', { className: 'coveo-caption-for-quickview', tabindex: 0 }, 'Quickview'.toLocaleString()).el;\n\t var div = Dom_1.$$('div');\n\t div.append(iconForQuickview.el);\n\t div.append(captionForQuickview);\n\t Dom_1.$$(_this.element).append(div.el);\n\t }\n\t else {\n\t iconForQuickview.text('Quickview'.toLocaleString());\n\t Dom_1.$$(_this.element).append(iconForQuickview.el);\n\t }\n\t }\n\t _this.bindClick(result);\n\t if (_this.bindings.resultElement) {\n\t _this.bind.on(_this.bindings.resultElement, ResultListEvents_1.ResultListEvents.openQuickview, function () { return _this.open(); });\n\t }\n\t return _this;\n\t }\n\t /**\n\t * Open the quickview\n\t */\n\t Quickview.prototype.open = function () {\n\t if (this.modalbox == null) {\n\t // To prevent the keyboard from opening on mobile if the search bar has focus\n\t Quickview.resultCurrentlyBeingRendered = this.result;\n\t Dom_1.$$(document.activeElement).trigger('blur');\n\t var openerObject = this.prepareOpenQuickviewObject();\n\t this.createModalBox(openerObject);\n\t this.bindQuickviewEvents(openerObject);\n\t this.animateAndOpen();\n\t this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.quickview, this.getHashId());\n\t Quickview.resultCurrentlyBeingRendered = null;\n\t }\n\t };\n\t /**\n\t * Close the quickview\n\t */\n\t Quickview.prototype.close = function () {\n\t if (this.modalbox != null) {\n\t this.modalbox.close();\n\t this.modalbox = null;\n\t Dom_1.$$(document.body).off('keyup', this.bindedHandleEscapeEvent);\n\t }\n\t };\n\t Quickview.prototype.getHashId = function () {\n\t return this.result.queryUid + '.' + this.result.index + '.' + StringUtils_1.StringUtils.hashCode(this.result.uniqueId);\n\t };\n\t Quickview.prototype.bindClick = function (result) {\n\t var _this = this;\n\t if (typeof result.hasHtmlVersion == 'undefined' || result.hasHtmlVersion || this.options.alwaysShow) {\n\t var clickAction = function () { return _this.open(); };\n\t Dom_1.$$(this.element).on('click', clickAction);\n\t this.bind.on(this.element, 'keyup', KeyboardUtils_1.KeyboardUtils.keypressAction(KeyboardUtils_1.KEYBOARD.ENTER, clickAction));\n\t }\n\t else {\n\t this.element.style.display = 'none';\n\t }\n\t };\n\t Quickview.prototype.bindQuickviewEvents = function (openerObject) {\n\t var _this = this;\n\t var closeButton = Dom_1.$$(this.modalbox.wrapper).find('.coveo-quickview-close-button');\n\t Dom_1.$$(closeButton).on('click', function () {\n\t _this.closeQuickview();\n\t _this.close();\n\t });\n\t Dom_1.$$(this.modalbox.overlay).on('click', function () {\n\t _this.closeQuickview();\n\t });\n\t Dom_1.$$(this.modalbox.content).on(QuickviewEvents_1.QuickviewEvents.quickviewLoaded, function () {\n\t Dom_1.$$(openerObject.loadingAnimation).remove();\n\t _this.bindIFrameEscape();\n\t });\n\t this.bindEscape();\n\t };\n\t Quickview.prototype.animateAndOpen = function () {\n\t var _this = this;\n\t var animationDuration = this.modalbox.wrapper.style.animationDuration;\n\t var quickviewDocument = Dom_1.$$(this.modalbox.modalBox).find('.' + Component_1.Component.computeCssClassName(QuickviewDocument_1.QuickviewDocument));\n\t if (quickviewDocument) {\n\t if (animationDuration) {\n\t var duration = /^(.+)(ms|s)$/.exec(animationDuration);\n\t var durationMs = Number(duration[1]) * (duration[2] == 's' ? 1000 : 1);\n\t // open the QuickviewDocument\n\t setTimeout(function () {\n\t if (_this.modalbox != null) {\n\t Initialization_1.Initialization.dispatchNamedMethodCallOrComponentCreation('open', quickviewDocument, null);\n\t }\n\t }, durationMs);\n\t }\n\t else {\n\t Initialization_1.Initialization.dispatchNamedMethodCallOrComponentCreation('open', quickviewDocument, null);\n\t }\n\t }\n\t };\n\t Quickview.prototype.createModalBox = function (openerObject) {\n\t var computedModalBoxContent = Dom_1.$$('div');\n\t computedModalBoxContent.append(openerObject.content.el);\n\t this.modalbox = this.ModalBox.open(computedModalBoxContent.el, {\n\t title: DomUtils_1.DomUtils.getQuickviewHeader(this.result, {\n\t showDate: this.options.showDate,\n\t title: this.options.title\n\t }, this.bindings).el.outerHTML,\n\t className: 'coveo-quick-view',\n\t validation: function () { return true; },\n\t body: this.element.ownerDocument.body\n\t });\n\t this.setQuickviewSize();\n\t };\n\t Quickview.prototype.prepareOpenQuickviewObject = function () {\n\t var loadingAnimation = this.options.loadingAnimation;\n\t return {\n\t loadingAnimation: loadingAnimation,\n\t content: this.prepareQuickviewContent(loadingAnimation)\n\t };\n\t };\n\t Quickview.prototype.prepareQuickviewContent = function (loadingAnimation) {\n\t var content = Dom_1.$$(this.options.contentTemplate.instantiateToElement(this.result));\n\t var initOptions = this.searchInterface.options;\n\t var initParameters = {\n\t options: initOptions,\n\t bindings: this.getBindings(),\n\t result: this.result\n\t };\n\t Initialization_1.Initialization.automaticallyCreateComponentsInside(content.el, initParameters);\n\t if (content.find('.' + Component_1.Component.computeCssClassName(QuickviewDocument_1.QuickviewDocument)) != undefined && this.options.enableLoadingAnimation) {\n\t content.prepend(loadingAnimation);\n\t }\n\t return content;\n\t };\n\t Quickview.prototype.bindEscape = function () {\n\t Dom_1.$$(document.body).on('keyup', this.bindedHandleEscapeEvent);\n\t };\n\t Quickview.prototype.bindIFrameEscape = function () {\n\t var quickviewDocument = Dom_1.$$(this.modalbox.content).find('.' + Component_1.Component.computeCssClassName(QuickviewDocument_1.QuickviewDocument));\n\t quickviewDocument = Dom_1.$$(quickviewDocument).find('iframe');\n\t var body = quickviewDocument.contentWindow.document.body;\n\t Dom_1.$$(body).on('keyup', this.bindedHandleEscapeEvent);\n\t };\n\t Quickview.prototype.closeQuickview = function () {\n\t this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.quickview, '');\n\t };\n\t Quickview.prototype.setQuickviewSize = function () {\n\t var wrapper = Dom_1.$$(Dom_1.$$(this.modalbox.modalBox).find('.coveo-wrapper'));\n\t wrapper.el.style.width = this.options.size;\n\t wrapper.el.style.height = this.options.size;\n\t wrapper.el.style.maxWidth = this.options.size;\n\t wrapper.el.style.maxHeight = this.options.size;\n\t };\n\t Quickview.prototype.handleEscapeEvent = function (e) {\n\t if (e.keyCode == KeyboardUtils_1.KEYBOARD.ESCAPE) {\n\t this.closeQuickview();\n\t this.close();\n\t }\n\t };\n\t return Quickview;\n\t}(Component_1.Component));\n\tQuickview.ID = 'Quickview';\n\tQuickview.fields = [\n\t 'urihash',\n\t 'collection',\n\t 'source',\n\t 'author' // analytics\n\t];\n\t/**\n\t * @componentOptions\n\t */\n\tQuickview.options = {\n\t /**\n\t * Specifies whether the quickview is always shown, even when the index body for a document is empty.
\n\t * In such cases, the {@link Quickview.options.contentTemplate} specifies what appears in the quickview.
\n\t * If there is no quickview for the document, you *MUST* specify a contentTemplate otherwise the component will throw an error when opened.\n\t */\n\t alwaysShow: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies the title of your choice that appears at the top of the Quick View modal window.\n\t */\n\t title: ComponentOptions_1.ComponentOptions.buildStringOption(),\n\t /**\n\t * Specifies whether to show the document date in the Quick View modal window header.
\n\t * The default value is `true`.\n\t */\n\t showDate: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t enableLoadingAnimation: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies the template to use to present the Quick View content in the modal window.
\n\t * e.g.:
\n\t *
\n\t *
\n\t */\n\t contentTemplate: ComponentOptions_1.ComponentOptions.buildTemplateOption({\n\t selectorAttr: 'data-template-selector',\n\t idAttr: 'data-template-id'\n\t }),\n\t loadingAnimation: ComponentOptions_1.ComponentOptions.buildOption(ComponentOptions_1.ComponentOptionsType.NONE, function (element) {\n\t var loadingAnimationSelector = element.getAttribute('data-loading-animation-selector');\n\t if (loadingAnimationSelector != null) {\n\t var loadingAnimation = Dom_1.$$(document.documentElement).find(loadingAnimationSelector);\n\t if (loadingAnimation != null) {\n\t Dom_1.$$(loadingAnimation).detach();\n\t return loadingAnimation;\n\t }\n\t }\n\t var id = element.getAttribute('data-loading-animation-template-id');\n\t if (id != null) {\n\t var loadingAnimationTemplate = ComponentOptions_1.ComponentOptions.loadResultTemplateFromId(id);\n\t if (loadingAnimationTemplate) {\n\t return loadingAnimationTemplate.instantiateToElement(undefined, {\n\t checkCondition: false\n\t });\n\t }\n\t }\n\t return DomUtils_1.DomUtils.getBasicLoadingAnimation();\n\t }),\n\t /**\n\t * Specifies the Quick View modal window size (width and height) relative to the full window.
\n\t * The default value is 95% on a desktop and 100% on a mobile device.\n\t */\n\t size: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: DeviceUtils_1.DeviceUtils.isMobileDevice() ? '100%' : '95%' })\n\t};\n\tQuickview.resultCurrentlyBeingRendered = null;\n\texports.Quickview = Quickview;\n\tInitialization_1.Initialization.registerAutoCreateComponent(Quickview);\n\n\n/***/ },\n/* 181 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Template_1 = __webpack_require__(113);\n\tvar DefaultQuickviewTemplate = (function (_super) {\n\t __extends(DefaultQuickviewTemplate, _super);\n\t function DefaultQuickviewTemplate() {\n\t return _super.call(this) || this;\n\t }\n\t DefaultQuickviewTemplate.prototype.instantiateToString = function (queryResult) {\n\t return '
';\n\t };\n\t return DefaultQuickviewTemplate;\n\t}(Template_1.Template));\n\texports.DefaultQuickviewTemplate = DefaultQuickviewTemplate;\n\n\n/***/ },\n/* 182 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar QuickviewEvents_1 = __webpack_require__(135);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar ColorUtils_1 = __webpack_require__(58);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar _ = __webpack_require__(16);\n\tvar HIGHLIGHT_PREFIX = 'CoveoHighlight';\n\t/**\n\t * The QuickviewDocument component is meant to exist within Result Templates, more specifically inside a {@link Quickview} component.\n\t * The sole purpose of this component is to include an iframe which will load the correct HTML version of the current document.\n\t * By default, this component is included in the default template for a {@link Quickview} component.\n\t */\n\tvar QuickviewDocument = (function (_super) {\n\t __extends(QuickviewDocument, _super);\n\t /**\n\t * Create a new instance of the component\n\t * @param element\n\t * @param options\n\t * @param bindings\n\t * @param result\n\t */\n\t function QuickviewDocument(element, options, bindings, result) {\n\t var _this = _super.call(this, element, QuickviewDocument.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.result = result;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, QuickviewDocument, options);\n\t _this.result = result || _this.resolveResult();\n\t _this.termsToHighlightWereModified = false;\n\t Assert_1.Assert.exists(_this.result);\n\t return _this;\n\t }\n\t QuickviewDocument.prototype.createDom = function () {\n\t var container = Dom_1.$$('div');\n\t container.addClass('coveo-quickview-document');\n\t this.element.appendChild(container.el);\n\t this.header = this.buildHeader();\n\t this.iframe = this.buildIFrame();\n\t container.append(this.header.el);\n\t container.append(this.iframe.el);\n\t };\n\t QuickviewDocument.prototype.open = function () {\n\t var _this = this;\n\t this.ensureDom();\n\t var documentURL = Dom_1.$$(this.element).getAttribute('href');\n\t if (documentURL == undefined || documentURL == '') {\n\t documentURL = this.result.clickUri;\n\t }\n\t this.usageAnalytics.logClickEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.documentQuickview, {\n\t author: Utils_1.Utils.getFieldValue(this.result, 'author'),\n\t documentURL: documentURL,\n\t documentTitle: this.result.title\n\t }, this.result, this.queryController.element);\n\t var beforeLoad = (new Date()).getTime();\n\t var iframe = this.iframe.find('iframe');\n\t iframe.src = 'about:blank';\n\t var endpoint = this.queryController.getEndpoint();\n\t var termsToHighlight = _.keys(this.result.termsToHighlight);\n\t var dataToSendOnOpenQuickView = {\n\t termsToHighlight: termsToHighlight\n\t };\n\t Dom_1.$$(this.element).trigger(QuickviewEvents_1.QuickviewEvents.openQuickview, dataToSendOnOpenQuickView);\n\t this.checkIfTermsToHighlightWereModified(dataToSendOnOpenQuickView.termsToHighlight);\n\t var queryObject = _.extend({}, this.getBindings().queryController.getLastQuery());\n\t if (this.termsToHighlightWereModified) {\n\t this.handleTermsToHighlight(dataToSendOnOpenQuickView.termsToHighlight, queryObject);\n\t }\n\t var callOptions = {\n\t queryObject: queryObject,\n\t requestedOutputSize: this.options.maximumDocumentSize\n\t };\n\t endpoint.getDocumentHtml(this.result.uniqueId, callOptions)\n\t .then(function (html) {\n\t // If the contentDocument is null at this point it means that the Quick View\n\t // was closed before we've finished loading it. In this case do nothing.\n\t if (iframe.contentDocument == null) {\n\t return;\n\t }\n\t _this.renderHTMLDocument(iframe, html);\n\t _this.triggerQuickviewLoaded(beforeLoad);\n\t })\n\t .catch(function (error) {\n\t // If the contentDocument is null at this point it means that the Quick View\n\t // was closed before we've finished loading it. In this case do nothing.\n\t if (iframe.contentDocument == null) {\n\t return;\n\t }\n\t if (error.status != 0) {\n\t _this.renderErrorReport(iframe, error.status);\n\t _this.triggerQuickviewLoaded(beforeLoad);\n\t }\n\t else {\n\t iframe.onload = function () {\n\t _this.triggerQuickviewLoaded(beforeLoad);\n\t };\n\t iframe.src = endpoint.getViewAsHtmlUri(_this.result.uniqueId, callOptions);\n\t }\n\t });\n\t };\n\t QuickviewDocument.prototype.renderHTMLDocument = function (iframe, html) {\n\t var _this = this;\n\t iframe.onload = function () {\n\t _this.computeHighlights(iframe.contentWindow);\n\t // Remove white border for new Quickview\n\t if (_this.isNewQuickviewDocument(iframe.contentWindow)) {\n\t var body = Dom_1.$$(_this.element).closest('.coveo-body');\n\t body.style.padding = '0';\n\t var header = Dom_1.$$(_this.element).find('.coveo-quickview-header');\n\t header.style.paddingTop = '10';\n\t header.style.paddingLeft = '10';\n\t }\n\t if (Dom_1.$$(_this.element).find('.coveo-quickview-header').innerHTML == '') {\n\t Dom_1.$$(_this.element).find('.coveo-quickview-header').style.display = 'none';\n\t }\n\t };\n\t this.writeToIFrame(iframe, html);\n\t this.wrapPreElementsInIframe(iframe);\n\t };\n\t QuickviewDocument.prototype.renderErrorReport = function (iframe, errorStatus) {\n\t var errorString = '';\n\t if (errorStatus == 400) {\n\t errorString = 'NoQuickview';\n\t }\n\t else {\n\t errorString = 'OopsError';\n\t }\n\t var errorMessage = \"\" + Strings_1.l(errorString) + \" \";\n\t this.writeToIFrame(iframe, errorMessage);\n\t };\n\t QuickviewDocument.prototype.writeToIFrame = function (iframe, content) {\n\t var toWrite = content;\n\t // This sucks because we can't do instanceof HTMLDocument\n\t // lib.d.ts declare HTMLDocument as an interface, not an actual object\n\t if (typeof content == 'object') {\n\t toWrite = content.getElementsByTagName('html')[0].outerHTML;\n\t }\n\t iframe.contentWindow.document.open();\n\t iframe.contentWindow.document.write(toWrite);\n\t iframe.contentWindow.document.close();\n\t };\n\t QuickviewDocument.prototype.wrapPreElementsInIframe = function (iframe) {\n\t try {\n\t var style = document.createElement('style');\n\t style.type = 'text/css';\n\t // This CSS forces
 tags used in some emails to wrap by default\n\t            var cssText = 'html pre { white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; }';\n\t            // Some people react strongly when presented with their browser's default font, so let's fix that\n\t            cssText += 'body, html { font-family: Arimo, \\'Helvetica Neue\\', Helvetica, Arial, sans-serif; -webkit-text-size-adjust: none; }';\n\t            if (DeviceUtils_1.DeviceUtils.isIos()) {\n\t                // Safari on iOS forces resize iframes to fit their content, even if an explicit size\n\t                // is set on the iframe. Isn't that great? By chance there is a trick around it: by\n\t                // setting a very small size on the body and instead using min-* to set the size to\n\t                // 100% we're able to trick Safari from thinking it must expand the iframe. Amazed.\n\t                // The 'scrolling' part is required otherwise the hack doesn't work.\n\t                //\n\t                // http://stackoverflow.com/questions/23083462/how-to-get-an-iframe-to-be-responsive-in-ios-safari\n\t                cssText += 'body, html { height: 1px !important; min-height: 100%; width: 1px !important; min-width: 100%; overflow: scroll; }';\n\t                Dom_1.$$(iframe).setAttribute('scrolling', 'no');\n\t                // Some content is cropped on iOs if a margin is present\n\t                // We remove it and add one on the iframe wrapper.\n\t                cssText += 'body, html {margin: auto}';\n\t                iframe.parentElement.style.margin = '0 0 5px 5px';\n\t            }\n\t            if ('styleSheet' in style) {\n\t                style['styleSheet'].cssText = cssText;\n\t            }\n\t            else {\n\t                style.appendChild(document.createTextNode(cssText));\n\t            }\n\t            var head = iframe.contentWindow.document.head;\n\t            head.appendChild(style);\n\t        }\n\t        catch (e) {\n\t            // if not allowed\n\t        }\n\t    };\n\t    QuickviewDocument.prototype.triggerQuickviewLoaded = function (beforeLoad) {\n\t        var afterLoad = (new Date()).getTime();\n\t        var eventArgs = { duration: afterLoad - beforeLoad };\n\t        Dom_1.$$(this.element).trigger(QuickviewEvents_1.QuickviewEvents.quickviewLoaded, eventArgs);\n\t    };\n\t    // An highlighted term looks like:\n\t    //\n\t    //     a\n\t    //\n\t    // The id has 3 components:\n\t    // - X: the term\n\t    // - Y: the term occurence\n\t    // - Z: the term part\n\t    //\n\t    // For the 'Z' component, if the term 'foo bar' is found in multiple elements, we will see:\n\t    //\n\t    //     foo\n\t    //     bar\n\t    //\n\t    // Highlighted words can overlap, which looks like:\n\t    //\n\t    //     \n\t    //         a\n\t    //         b\n\t    //     \n\t    //     c\n\t    //\n\t    // In the previous example, the words 'ab' and 'bc' are highlighted.\n\t    //\n\t    // One thing important to note is that the id of all 'coveotaggedword' for\n\t    // the same word AND the first 'span' for that word will have the same id.\n\t    //\n\t    // Example:\n\t    //\n\t    //     \n\t    //         a\n\t    //         b\n\t    //     \n\t    //     \n\t    //         c\n\t    //         d\n\t    //     \n\t    //     e\n\t    //     f\n\t    //\n\t    // In the previous example, the words 'abcd' and 'bcdef' are highlighted.\n\t    //\n\t    // This method is public for testing purposes.\n\t    QuickviewDocument.prototype.computeHighlights = function (window) {\n\t        var _this = this;\n\t        Dom_1.$$(this.header).empty();\n\t        this.keywordsState = [];\n\t        var words = {};\n\t        var highlightsCount = 0;\n\t        _.each(Dom_1.$$(window.document.body).findAll('[id^=\"' + HIGHLIGHT_PREFIX + '\"]'), function (element, index) {\n\t            var idParts = _this.getHighlightIdParts(element);\n\t            if (idParts) {\n\t                var idIndexPart = idParts[1]; // X\n\t                var idOccurencePart = parseInt(idParts[2], 10); // Y\n\t                var idTermPart = parseInt(idParts[3], 10); // Z in a\n\t                var word = words[idIndexPart];\n\t                // The 'idTermPart' check is to circumvent a bug from the index\n\t                // where an highlight of an empty string start with an idTermPart > 1.\n\t                if (word == null && idTermPart == 1) {\n\t                    words[idIndexPart] = word = {\n\t                        text: _this.getHighlightInnerText(element),\n\t                        count: 1,\n\t                        index: parseInt(idIndexPart, 10),\n\t                        // Here I try to be clever.\n\t                        // An overlaping word:\n\t                        // 1) always start with a 'coveotaggedword' element.\n\t                        // 2) then other 'coveotaggedword' elements may follow\n\t                        // 3) then a 'span' element may follow.\n\t                        //\n\t                        // All 1), 2) and 3) will have the same id so I consider them as\n\t                        // a whole having the id 0 instead of 1.\n\t                        termsCount: element.nodeName.toLowerCase() == 'coveotaggedword' ? 0 : 1,\n\t                        element: element,\n\t                        occurence: idOccurencePart\n\t                    };\n\t                }\n\t                else if (word) {\n\t                    if (word.occurence == idOccurencePart) {\n\t                        if (element.nodeName.toLowerCase() == 'coveotaggedword') {\n\t                            word.text += _this.getHighlightInnerText(element);\n\t                            // Doesn't count as a term part (see method description for more info).\n\t                        }\n\t                        else if (word.termsCount < idTermPart) {\n\t                            word.text += _this.getHighlightInnerText(element);\n\t                            word.termsCount += 1;\n\t                        }\n\t                    }\n\t                    word.count = Math.max(word.count, idOccurencePart);\n\t                    highlightsCount += 1;\n\t                }\n\t                // See the method description to understand why this code let us\n\t                // create the word 'bcdef' instead of 'bdef'.\n\t                if (word && word.occurence == idOccurencePart && element.nodeName.toLowerCase() == 'span') {\n\t                    var embeddedWordParts = _this.getHightlightEmbeddedWordIdParts(element);\n\t                    var embeddedWord = embeddedWordParts ? words[embeddedWordParts[1]] : null;\n\t                    if (embeddedWord && embeddedWord.occurence == parseInt(embeddedWordParts[2], 10)) {\n\t                        embeddedWord.text += element.childNodes[0].nodeValue || ''; // only immediate text without children.\n\t                    }\n\t                }\n\t            }\n\t        });\n\t        if (highlightsCount == 0) {\n\t            this.header.el.style.minHeight = '0';\n\t        }\n\t        var resolvedWords = [];\n\t        _.each(words, function (word) {\n\t            // When possible, take care to find the original term from the query instead of the\n\t            // first highlighted version we encounter. This relies on a recent feature by the\n\t            // Search API, but will fallback properly on older versions.\n\t            word.text = _this.resolveOriginalTermFromHighlight(word.text);\n\t            var state = {\n\t                word: word,\n\t                color: word.element.style.backgroundColor,\n\t                currentIndex: 0,\n\t                index: word.index\n\t            };\n\t            _this.keywordsState.push(state);\n\t            Dom_1.$$(_this.header).append(_this.buildWordButton(state, window));\n\t            resolvedWords.push(word.text);\n\t        });\n\t        return resolvedWords;\n\t    };\n\t    QuickviewDocument.prototype.getHighlightIdParts = function (element) {\n\t        var parts = element\n\t            .id\n\t            .substr(HIGHLIGHT_PREFIX.length + 1)\n\t            .match(/^([0-9]+)\\.([0-9]+)\\.([0-9]+)$/);\n\t        return (parts && parts.length > 3) ? parts : null;\n\t    };\n\t    QuickviewDocument.prototype.getHighlightInnerText = function (element) {\n\t        if (element.nodeName.toLowerCase() == 'coveotaggedword') {\n\t            // only immediate text without children.\n\t            return element.childNodes.length >= 1 ? (element.childNodes.item(0).textContent || '') : '';\n\t        }\n\t        else {\n\t            return element.textContent || '';\n\t        }\n\t    };\n\t    QuickviewDocument.prototype.getHightlightEmbeddedWordIdParts = function (element) {\n\t        var embedded = element.getElementsByTagName('coveotaggedword')[0];\n\t        return embedded ? this.getHighlightIdParts(embedded) : null;\n\t    };\n\t    QuickviewDocument.prototype.resolveOriginalTermFromHighlight = function (highlight) {\n\t        var _this = this;\n\t        var found = highlight;\n\t        // Beware, terms to highlight is only set by recent search APIs.\n\t        if (this.result.termsToHighlight) {\n\t            // We look for the term expansion and we'll return the corresponding\n\t            // original term is one is found.\n\t            found = _.find(_.keys(this.result.termsToHighlight), function (originalTerm) {\n\t                // The expansions do NOT include the original term (makes sense), so be sure to check\n\t                // the original term for a match too.\n\t                return (originalTerm.toLowerCase() == highlight.toLowerCase()) ||\n\t                    (_.find(_this.result.termsToHighlight[originalTerm], function (expansion) { return expansion.toLowerCase() == highlight.toLowerCase(); }) != undefined);\n\t            }) || found;\n\t        }\n\t        return found;\n\t    };\n\t    QuickviewDocument.prototype.buildWordButton = function (wordState, window) {\n\t        var _this = this;\n\t        var wordHtml = Dom_1.$$('span');\n\t        wordHtml.addClass('coveo-term-for-quickview');\n\t        var quickviewName = Dom_1.$$('span');\n\t        quickviewName.addClass('coveo-term-for-quickview-name');\n\t        quickviewName.setHtml(wordState.word.text);\n\t        quickviewName.on('click', function () {\n\t            _this.navigate(wordState, false, window);\n\t        });\n\t        wordHtml.append(quickviewName.el);\n\t        var quickviewUpArrow = Dom_1.$$('span');\n\t        quickviewUpArrow.addClass('coveo-term-for-quickview-up-arrow');\n\t        var quickviewUpArrowIcon = Dom_1.$$('span');\n\t        quickviewUpArrowIcon.addClass('coveo-term-for-quickview-up-arrow-icon');\n\t        quickviewUpArrow.append(quickviewUpArrowIcon.el);\n\t        quickviewUpArrow.on('click', function () {\n\t            _this.navigate(wordState, true, window);\n\t        });\n\t        wordHtml.append(quickviewUpArrow.el);\n\t        var quickviewDownArrow = Dom_1.$$('span');\n\t        quickviewDownArrow.addClass('coveo-term-for-quickview-down-arrow');\n\t        var quickviewDownArrowIcon = Dom_1.$$('span');\n\t        quickviewDownArrowIcon.addClass('coveo-term-for-quickview-down-arrow-icon');\n\t        quickviewDownArrow.append(quickviewDownArrowIcon.el);\n\t        quickviewDownArrow.on('click', function () {\n\t            _this.navigate(wordState, false, window);\n\t        });\n\t        wordHtml.append(quickviewDownArrow.el);\n\t        wordHtml.el.style.backgroundColor = wordState.color;\n\t        wordHtml.el.style.borderColor = this.getSaturatedColor(wordState.color);\n\t        quickviewDownArrow.el.style.borderColor = this.getSaturatedColor(wordState.color);\n\t        return wordHtml.el;\n\t    };\n\t    QuickviewDocument.prototype.navigate = function (state, backward, window) {\n\t        var fromIndex = state.currentIndex;\n\t        var toIndex;\n\t        if (!backward) {\n\t            toIndex = fromIndex == state.word.count ? 1 : fromIndex + 1;\n\t        }\n\t        else {\n\t            toIndex = fromIndex <= 1 ? state.word.count : fromIndex - 1;\n\t        }\n\t        var scroll = this.getScrollingElement(window);\n\t        // Un-highlight any currently selected element\n\t        var current = Dom_1.$$(scroll).find('[id^=\"' + HIGHLIGHT_PREFIX + ':' + state.word.index + '.' + fromIndex + '\"]');\n\t        if (current) {\n\t            current.style.border = '';\n\t        }\n\t        // Find and highlight the new element.\n\t        var element = Dom_1.$$(window.document.body).find('[id^=\"' + HIGHLIGHT_PREFIX + ':' + state.word.index + '.' + toIndex + '\"]');\n\t        element.style.border = '1px dotted #333';\n\t        state.currentIndex = toIndex;\n\t        // pdf2html docs hide the non-visible frames by default, to speed up browsers.\n\t        // But this prevents keyword navigation from working so we must force show it. This\n\t        // is done by adding the 'opened' class to it (defined by pdf2html).\n\t        if (this.isNewQuickviewDocument(window)) {\n\t            var pdf = Dom_1.$$(element).closest('.pc');\n\t            Dom_1.$$(pdf).addClass('opened');\n\t        }\n\t        element.scrollIntoView();\n\t        // iOS on Safari might scroll the whole modal box body when we do this,\n\t        // so give it a nudge in the right direction.\n\t        var body = this.iframe.closest('.coveo-body');\n\t        body.scrollLeft = 0;\n\t        body.scrollTop = 0;\n\t    };\n\t    QuickviewDocument.prototype.buildHeader = function () {\n\t        var header = Dom_1.$$('div');\n\t        header.addClass('coveo-quickview-header');\n\t        return header;\n\t    };\n\t    QuickviewDocument.prototype.buildIFrame = function () {\n\t        var iFrame = Dom_1.$$('iframe');\n\t        iFrame.setAttribute('sandbox', 'allow-same-origin');\n\t        var iFrameWrapper = Dom_1.$$('div');\n\t        iFrameWrapper.addClass('coveo-iframeWrapper');\n\t        iFrameWrapper.el.appendChild(iFrame.el);\n\t        return iFrameWrapper;\n\t    };\n\t    QuickviewDocument.prototype.getScrollingElement = function (iframeWindow) {\n\t        var found;\n\t        if (this.isNewQuickviewDocument(iframeWindow)) {\n\t            // 'New' quick views have a #page-container element generated by the pdf2html thing.\n\t            // This is the element we want to scroll on.\n\t            found = Dom_1.$$(iframeWindow.document.body).find('#page-container');\n\t        }\n\t        // If all else fails, we use the body\n\t        if (!found) {\n\t            found = Dom_1.$$(iframeWindow.document.body).el;\n\t        }\n\t        return found;\n\t    };\n\t    QuickviewDocument.prototype.isNewQuickviewDocument = function (iframeWindow) {\n\t        var meta = Dom_1.$$(iframeWindow.document.head).find('meta[name=\\'generator\\']');\n\t        return meta && meta.getAttribute('content') == 'pdf2htmlEX';\n\t    };\n\t    QuickviewDocument.prototype.handleTermsToHighlight = function (termsToHighlight, queryObject) {\n\t        var _this = this;\n\t        for (var term in this.result.termsToHighlight) {\n\t            delete this.result.termsToHighlight[term];\n\t        }\n\t        var query = '';\n\t        _.each(termsToHighlight, function (term) {\n\t            query += term + ' ';\n\t            _this.result.termsToHighlight[term] = new Array(term);\n\t        });\n\t        query = query.substring(0, query.length - 1);\n\t        queryObject.q = query;\n\t    };\n\t    QuickviewDocument.prototype.checkIfTermsToHighlightWereModified = function (termsToHighlight) {\n\t        if (!Utils_1.Utils.arrayEqual(termsToHighlight, _.keys(this.result.termsToHighlight))) {\n\t            this.termsToHighlightWereModified = true;\n\t        }\n\t    };\n\t    QuickviewDocument.prototype.getSaturatedColor = function (color) {\n\t        var r = parseInt(color.substring(4, 7));\n\t        var g = parseInt(color.substring(9, 12));\n\t        var b = parseInt(color.substring(14, 17));\n\t        var hsv = ColorUtils_1.ColorUtils.rgbToHsv(r, g, b);\n\t        hsv[1] *= 2;\n\t        if (hsv[1] > 1) {\n\t            hsv[1] = 1;\n\t        }\n\t        var rgb = ColorUtils_1.ColorUtils.hsvToRgb(hsv[0], hsv[1], hsv[2]);\n\t        return 'rgb(' + rgb[0].toString() + ', ' + rgb[1].toString() + ', ' + rgb[2].toString() + ')';\n\t    };\n\t    return QuickviewDocument;\n\t}(Component_1.Component));\n\tQuickviewDocument.ID = 'QuickviewDocument';\n\t/**\n\t * The options for the component\n\t * @componentOptions\n\t */\n\tQuickviewDocument.options = {\n\t    /**\n\t     * Specifies the maximum document size (the preview) that should be returned by the index.\n\t     *\n\t     * By default its value is 0, and the whole preview is returned.\n\t     */\n\t    maximumDocumentSize: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 0, min: 0 }),\n\t};\n\texports.QuickviewDocument = QuickviewDocument;\n\tInitialization_1.Initialization.registerAutoCreateComponent(QuickviewDocument);\n\n\n/***/ },\n/* 183 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t    var extendStatics = Object.setPrototypeOf ||\n\t        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t    return function (d, b) {\n\t        extendStatics(d, b);\n\t        function __() { this.constructor = d; }\n\t        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t    };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar DefaultResultTemplate_1 = __webpack_require__(118);\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar Model_1 = __webpack_require__(100);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar QueryUtils_1 = __webpack_require__(23);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Defer_1 = __webpack_require__(34);\n\tvar DeviceUtils_1 = __webpack_require__(18);\n\tvar ResultListEvents_1 = __webpack_require__(51);\n\tvar ResultLayoutEvents_1 = __webpack_require__(52);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar DomUtils_1 = __webpack_require__(62);\n\tvar Recommendation_1 = __webpack_require__(134);\n\tvar DefaultRecommendationTemplate_1 = __webpack_require__(184);\n\tvar TemplateList_1 = __webpack_require__(120);\n\tvar TemplateCache_1 = __webpack_require__(112);\n\tvar ResponsiveDefaultResultTemplate_1 = __webpack_require__(185);\n\tvar _ = __webpack_require__(16);\n\tvar RegisteredNamedMethods_1 = __webpack_require__(107);\n\t/**\n\t * The ResultList component is responsible for displaying the results of the current query using one or more result\n\t * templates (see [Result Templates](https://developers.coveo.com/x/aIGfAQ)).\n\t *\n\t * This component supports many additional features, such as infinite scrolling.\n\t */\n\tvar ResultList = (function (_super) {\n\t    __extends(ResultList, _super);\n\t    /**\n\t     * Creates a new ResultList component. Binds various event related to queries (e.g., on querySuccess ->\n\t     * renderResults). Binds scroll event if {@link ResultList.options.enableInfiniteScroll} is `true`.\n\t     * @param element The HTMLElement on which to instantiate the component.\n\t     * @param options The options for the ResultList component.\n\t     * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t     * automatically resolved (with a slower execution time).\n\t     * @param elementClassId The class that this component should instantiate. Components that extend the base ResultList\n\t     * use this. Default value is `CoveoResultList`.\n\t     */\n\t    function ResultList(element, options, bindings, elementClassId) {\n\t        if (elementClassId === void 0) { elementClassId = ResultList.ID; }\n\t        var _this = _super.call(this, element, elementClassId, bindings) || this;\n\t        _this.element = element;\n\t        _this.options = options;\n\t        _this.bindings = bindings;\n\t        _this.currentlyDisplayedResults = [];\n\t        _this.reachedTheEndOfResults = false;\n\t        // This variable serves to block some setup where the framework fails to correctly identify the \"real\" scrolling container.\n\t        // Since it's not technically feasible to correctly identify the scrolling container in every possible scenario without some very complex logic, we instead try to add some kind of mechanism to\n\t        // block runaway requests where UI will keep asking more results in the index, eventually bringing the browser to it's knee.\n\t        // Those successive request are needed in \"displayMoreResults\" to ensure we fill the scrolling container correctly.\n\t        // Since the container is not identified correctly, it is never \"full\", so we keep asking for more.\n\t        // It is reset every time the user actually scroll the container manually.\n\t        _this.successiveScrollCount = 0;\n\t        _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, ResultList, options);\n\t        Assert_1.Assert.exists(element);\n\t        Assert_1.Assert.exists(_this.options);\n\t        Assert_1.Assert.exists(_this.options.resultContainer);\n\t        Assert_1.Assert.exists(_this.options.resultTemplate);\n\t        Assert_1.Assert.exists(_this.options.waitAnimationContainer);\n\t        Assert_1.Assert.exists(_this.options.infiniteScrollContainer);\n\t        _this.showOrHideElementsDependingOnState(false, false);\n\t        _this.bind.onRootElement(QueryEvents_1.QueryEvents.newQuery, function (args) { return _this.handleNewQuery(); });\n\t        _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (args) { return _this.handleBuildingQuery(args); });\n\t        _this.bind.onRootElement(QueryEvents_1.QueryEvents.querySuccess, function (args) { return _this.handleQuerySuccess(args); });\n\t        _this.bind.onRootElement(QueryEvents_1.QueryEvents.duringQuery, function (args) { return _this.handleDuringQuery(); });\n\t        _this.bind.onRootElement(QueryEvents_1.QueryEvents.queryError, function (args) { return _this.handleQueryError(); });\n\t        Dom_1.$$(_this.root).on(ResultListEvents_1.ResultListEvents.changeLayout, function (e, args) { return _this.handleChangeLayout(args); });\n\t        if (_this.options.enableInfiniteScroll) {\n\t            _this.handlePageChanged();\n\t            _this.bind.on(_this.options.infiniteScrollContainer, 'scroll', function (e) {\n\t                _this.successiveScrollCount = 0;\n\t                _this.handleScrollOfResultList();\n\t            });\n\t        }\n\t        _this.bind.onQueryState(Model_1.MODEL_EVENTS.CHANGE_ONE, QueryStateModel_1.QUERY_STATE_ATTRIBUTES.FIRST, function () { return _this.handlePageChanged(); });\n\t        Dom_1.$$(_this.options.resultContainer).addClass('coveo-result-list-container');\n\t        if (_this.searchInterface.isNewDesign()) {\n\t            _this.setupTemplatesVersusLayouts();\n\t            Dom_1.$$(_this.root).on(ResultLayoutEvents_1.ResultLayoutEvents.populateResultLayout, function (e, args) { return args.layouts.push(_this.options.layout); });\n\t        }\n\t        return _this;\n\t    }\n\t    ResultList.getDefaultTemplate = function (e) {\n\t        var template = ResultList.loadTemplatesFromCache();\n\t        if (template != null) {\n\t            return template;\n\t        }\n\t        var component = Component_1.Component.get(e);\n\t        if (component.searchInterface instanceof Recommendation_1.Recommendation) {\n\t            return new DefaultRecommendationTemplate_1.DefaultRecommendationTemplate();\n\t        }\n\t        return new DefaultResultTemplate_1.DefaultResultTemplate();\n\t    };\n\t    ResultList.loadTemplatesFromCache = function () {\n\t        var pageTemplateNames = TemplateCache_1.TemplateCache.getResultListTemplateNames();\n\t        if (pageTemplateNames.length > 0) {\n\t            return new TemplateList_1.TemplateList(_.compact(_.map(pageTemplateNames, function (templateName) { return TemplateCache_1.TemplateCache.getTemplate(templateName); })));\n\t        }\n\t        return null;\n\t    };\n\t    /**\n\t     * Get the fields needed to be automatically included in the query for this result list.\n\t     * @returns {string[]}\n\t     */\n\t    ResultList.prototype.getAutoSelectedFieldsToInclude = function () {\n\t        return _.chain(this.options.resultTemplate.getFields())\n\t            .concat(this.getMinimalFieldsToInclude())\n\t            .compact()\n\t            .unique()\n\t            .value();\n\t    };\n\t    ResultList.prototype.setupTemplatesVersusLayouts = function () {\n\t        var _this = this;\n\t        var layoutClassToAdd = \"coveo-\" + this.options.layout + \"-layout-container\";\n\t        Dom_1.$$(this.options.resultContainer).addClass(layoutClassToAdd);\n\t        // A TemplateList is the scenario where the result template are directly embedded inside the ResultList\n\t        // This is the typical scenario when a page gets created by the interface editor, for example.\n\t        // In that case, we try to stick closely that what is actually configured inside the page, and do no \"special magic\".\n\t        // Stick to the \"hardcoded\" configuration present in the page.\n\t        // We only add the correct layout options if it has not been set manually.\n\t        if (this.options.resultTemplate instanceof TemplateList_1.TemplateList) {\n\t            _.each(this.options.resultTemplate.templates, function (tmpl) {\n\t                if (!tmpl.layout) {\n\t                    tmpl.layout = _this.options.layout;\n\t                }\n\t            });\n\t        }\n\t        else if (this.options.resultTemplate instanceof DefaultResultTemplate_1.DefaultResultTemplate && this.options.layout == 'list') {\n\t            ResponsiveDefaultResultTemplate_1.ResponsiveDefaultResultTemplate.init(this.root, this, this.options);\n\t        }\n\t    };\n\t    /**\n\t     * Empties the current result list content and appends the given array of HTMLElement.\n\t     *\n\t     * Can append to existing elements in the result list, or replace them.\n\t     *\n\t     * Triggers the `newResultsDisplayed` and `newResultDisplayed` events.\n\t     * @param resultsElement\n\t     * @param append\n\t     */\n\t    ResultList.prototype.renderResults = function (resultsElement, append) {\n\t        var _this = this;\n\t        if (append === void 0) { append = false; }\n\t        if (!append) {\n\t            this.options.resultContainer.innerHTML = '';\n\t        }\n\t        _.each(resultsElement, function (resultElement) {\n\t            _this.options.resultContainer.appendChild(resultElement);\n\t            _this.triggerNewResultDisplayed(Component_1.Component.getResult(resultElement), resultElement);\n\t        });\n\t        if (this.options.layout == 'card' && !this.options.enableInfiniteScroll) {\n\t            // Used to prevent last card from spanning the grid's whole width\n\t            _.times(3, function () { return _this.options.resultContainer.appendChild(Dom_1.$$('div').el); });\n\t        }\n\t        this.triggerNewResultsDisplayed();\n\t    };\n\t    /**\n\t     * Builds and returns an array of HTMLElement with the given result set.\n\t     * @param results the result set to build an array of HTMLElement from.\n\t     */\n\t    ResultList.prototype.buildResults = function (results) {\n\t        var _this = this;\n\t        var res = [];\n\t        _.each(results.results, function (result) {\n\t            var resultElement = _this.buildResult(result);\n\t            if (resultElement != null) {\n\t                res.push(resultElement);\n\t            }\n\t        });\n\t        ResultList.resultCurrentlyBeingRendered = null;\n\t        return res;\n\t    };\n\t    /**\n\t     * Builds and returns an HTMLElement for the given result.\n\t     * @param result the result to build an HTMLElement from.\n\t     * @returns {HTMLElement}\n\t     */\n\t    ResultList.prototype.buildResult = function (result) {\n\t        Assert_1.Assert.exists(result);\n\t        QueryUtils_1.QueryUtils.setStateObjectOnQueryResult(this.queryStateModel.get(), result);\n\t        QueryUtils_1.QueryUtils.setSearchInterfaceObjectOnQueryResult(this.searchInterface, result);\n\t        ResultList.resultCurrentlyBeingRendered = result;\n\t        var resultElement = this.options.resultTemplate.instantiateToElement(result, {\n\t            wrapInDiv: true,\n\t            checkCondition: true,\n\t            currentLayout: this.options.layout,\n\t            responsiveComponents: this.searchInterface.responsiveComponents\n\t        });\n\t        if (resultElement != null) {\n\t            Component_1.Component.bindResultToElement(resultElement, result);\n\t            Dom_1.$$(resultElement).addClass('');\n\t        }\n\t        this.autoCreateComponentsInsideResult(resultElement, result);\n\t        return resultElement;\n\t    };\n\t    /**\n\t     * Executes a query to fetch new results. After the query returns, renders the new results.\n\t     *\n\t     * Asserts that there are more results to display by verifying whether the last query has returned as many results as\n\t     * requested.\n\t     *\n\t     * Asserts that the ResultList is not currently fetching results.\n\t     * @param count The number of results to fetch and display.\n\t     */\n\t    ResultList.prototype.displayMoreResults = function (count) {\n\t        var _this = this;\n\t        Assert_1.Assert.isLargerOrEqualsThan(1, count);\n\t        if (this.isCurrentlyFetchingMoreResults()) {\n\t            this.logger.warn('Ignoring request to display more results since we\\'re already doing so');\n\t            return;\n\t        }\n\t        if (!this.hasPotentiallyMoreResultsToDisplay()) {\n\t            this.logger.warn('Ignoring request to display more results since we know there aren\\'t more to display');\n\t            return;\n\t        }\n\t        if (this.options.enableInfiniteScrollWaitingAnimation) {\n\t            this.showWaitingAnimationForInfiniteScrolling();\n\t        }\n\t        this.fetchingMoreResults = this.queryController.fetchMore(count);\n\t        this.fetchingMoreResults.then(function (data) {\n\t            Assert_1.Assert.exists(data);\n\t            _this.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.pagerScrolling, {}, _this.element);\n\t            var results = data.results;\n\t            _this.reachedTheEndOfResults = count > data.results.length;\n\t            _this.renderResults(_this.buildResults(data), true);\n\t            _.each(results, function (result) {\n\t                _this.currentlyDisplayedResults.push(result);\n\t            });\n\t            _this.triggerNewResultsDisplayed();\n\t        });\n\t        this.fetchingMoreResults.then(function () {\n\t            _this.hideWaitingAnimationForInfiniteScrolling();\n\t            _this.fetchingMoreResults = undefined;\n\t            Defer_1.Defer.defer(function () {\n\t                _this.successiveScrollCount++;\n\t                if (_this.successiveScrollCount <= ResultList.MAX_AMOUNT_OF_SUCESSIVE_REQUESTS) {\n\t                    _this.handleScrollOfResultList();\n\t                }\n\t                else {\n\t                    _this.logger.info(\"Result list has triggered 5 consecutive queries to try and fill up the scrolling container, but it is still unable to do so\");\n\t                    _this.logger.info(\"Try explicitly setting the 'data-infinite-scroll-container-selector' option on the result list. See : https://coveo.github.io/search-ui/components/resultlist.html#options.infinitescrollcontainer\");\n\t                }\n\t            });\n\t        });\n\t    };\n\t    /**\n\t     * Gets the list of currently displayed result.\n\t     * @returns {IQueryResult[]}\n\t     */\n\t    ResultList.prototype.getDisplayedResults = function () {\n\t        return this.currentlyDisplayedResults;\n\t    };\n\t    /**\n\t     * Gets the list of currently displayed result HTMLElement.\n\t     * @returns {HTMLElement[]}\n\t     */\n\t    ResultList.prototype.getDisplayedResultsElements = function () {\n\t        return Dom_1.$$(this.options.resultContainer).findAll('.CoveoResult');\n\t    };\n\t    ResultList.prototype.enable = function () {\n\t        _super.prototype.enable.call(this);\n\t        Dom_1.$$(this.element).removeClass('coveo-hidden');\n\t    };\n\t    ResultList.prototype.disable = function () {\n\t        _super.prototype.disable.call(this);\n\t        Dom_1.$$(this.element).addClass('coveo-hidden');\n\t    };\n\t    ResultList.prototype.autoCreateComponentsInsideResult = function (element, result) {\n\t        Assert_1.Assert.exists(element);\n\t        var initOptions = this.searchInterface.options.originalOptionsObject;\n\t        var resultComponentBindings = _.extend({}, this.getBindings(), {\n\t            resultElement: element\n\t        });\n\t        var initParameters = {\n\t            options: initOptions,\n\t            bindings: resultComponentBindings,\n\t            result: result\n\t        };\n\t        Initialization_1.Initialization.automaticallyCreateComponentsInside(element, initParameters);\n\t    };\n\t    ResultList.prototype.triggerNewResultDisplayed = function (result, resultElement) {\n\t        var args = {\n\t            result: result,\n\t            item: resultElement\n\t        };\n\t        Dom_1.$$(this.element).trigger(ResultListEvents_1.ResultListEvents.newResultDisplayed, args);\n\t    };\n\t    ResultList.prototype.triggerNewResultsDisplayed = function () {\n\t        Dom_1.$$(this.element).trigger(ResultListEvents_1.ResultListEvents.newResultsDisplayed, {});\n\t    };\n\t    ResultList.prototype.handleDuringQuery = function () {\n\t        this.logger.trace('Emptying the result container');\n\t        this.cancelFetchingMoreResultsIfNeeded();\n\t        this.showWaitingAnimation();\n\t        this.showOrHideElementsDependingOnState(false, false);\n\t    };\n\t    ResultList.prototype.handleQueryError = function () {\n\t        this.hideWaitingAnimation();\n\t        Dom_1.$$(this.options.resultContainer).empty();\n\t        this.currentlyDisplayedResults = [];\n\t    };\n\t    ResultList.prototype.handleQuerySuccess = function (data) {\n\t        Assert_1.Assert.exists(data);\n\t        Assert_1.Assert.exists(data.results);\n\t        var results = data.results;\n\t        this.logger.trace('Received query results from new query', results);\n\t        this.hideWaitingAnimation();\n\t        ResultList.resultCurrentlyBeingRendered = undefined;\n\t        this.currentlyDisplayedResults = [];\n\t        this.renderResults(this.buildResults(data.results));\n\t        this.currentlyDisplayedResults = results.results;\n\t        this.reachedTheEndOfResults = false;\n\t        this.showOrHideElementsDependingOnState(true, this.currentlyDisplayedResults.length != 0);\n\t        if (DeviceUtils_1.DeviceUtils.isMobileDevice() && this.options.mobileScrollContainer != undefined) {\n\t            this.options.mobileScrollContainer.scrollTop = 0;\n\t        }\n\t        if (this.options.enableInfiniteScroll && results.results.length == data.queryBuilder.numberOfResults) {\n\t            // This will check right away if we need to add more results to make the scroll container full & scrolling.\n\t            this.scrollBackToTop();\n\t            this.handleScrollOfResultList();\n\t        }\n\t    };\n\t    ResultList.prototype.handleScrollOfResultList = function () {\n\t        if (this.isCurrentlyFetchingMoreResults() || !this.options.enableInfiniteScroll) {\n\t            return;\n\t        }\n\t        if (this.isScrollingOfResultListAlmostAtTheBottom() && this.hasPotentiallyMoreResultsToDisplay()) {\n\t            this.displayMoreResults(this.options.infiniteScrollPageSize);\n\t        }\n\t    };\n\t    ResultList.prototype.handlePageChanged = function () {\n\t        var _this = this;\n\t        this.bind.onRootElement(QueryEvents_1.QueryEvents.deferredQuerySuccess, function () {\n\t            setTimeout(function () {\n\t                _this.scrollBackToTop();\n\t            }, 0);\n\t        });\n\t    };\n\t    ResultList.prototype.scrollBackToTop = function () {\n\t        if (this.options.infiniteScrollContainer instanceof Window) {\n\t            var win = this.options.infiniteScrollContainer;\n\t            win.scrollTo(0, 0);\n\t        }\n\t        else {\n\t            var el = this.options.infiniteScrollContainer;\n\t            el.scrollTop = 0;\n\t        }\n\t    };\n\t    ResultList.prototype.handleNewQuery = function () {\n\t        Dom_1.$$(this.element).removeClass('coveo-hidden');\n\t        ResultList.resultCurrentlyBeingRendered = undefined;\n\t    };\n\t    ResultList.prototype.handleBuildingQuery = function (args) {\n\t        var _this = this;\n\t        if (this.options.fieldsToInclude != null) {\n\t            // remove the @\n\t            args.queryBuilder.addFieldsToInclude(_.map(this.options.fieldsToInclude, function (field) { return field.substr(1); }));\n\t        }\n\t        if (this.options.autoSelectFieldsToInclude) {\n\t            var otherResultListsElements = _.reject(Dom_1.$$(this.root).findAll(\".\" + Component_1.Component.computeCssClassName(ResultList)), function (resultListElement) { return resultListElement == _this.element; });\n\t            var otherFields = _.flatten(_.map(otherResultListsElements, function (otherResultListElement) {\n\t                var otherResultListInstance = RegisteredNamedMethods_1.get(otherResultListElement);\n\t                if (otherResultListInstance) {\n\t                    return otherResultListInstance.getAutoSelectedFieldsToInclude();\n\t                }\n\t                else {\n\t                    return [];\n\t                }\n\t            }));\n\t            args.queryBuilder.addRequiredFields(_.unique(otherFields.concat(this.getAutoSelectedFieldsToInclude())));\n\t            args.queryBuilder.includeRequiredFields = true;\n\t        }\n\t    };\n\t    ResultList.prototype.handleChangeLayout = function (args) {\n\t        var _this = this;\n\t        if (args.layout === this.options.layout) {\n\t            this.enable();\n\t            this.options.resultTemplate.layout = this.options.layout;\n\t            if (args.results) {\n\t                Defer_1.Defer.defer(function () {\n\t                    _this.renderResults(_this.buildResults(args.results));\n\t                });\n\t            }\n\t        }\n\t        else {\n\t            this.disable();\n\t        }\n\t    };\n\t    ResultList.prototype.isCurrentlyFetchingMoreResults = function () {\n\t        return Utils_1.Utils.exists(this.fetchingMoreResults);\n\t    };\n\t    ResultList.prototype.getMinimalFieldsToInclude = function () {\n\t        // these fields are needed for analytics click event\n\t        return ['author', 'language', 'urihash', 'objecttype', 'collection', 'source', 'language', 'permanentid'];\n\t    };\n\t    ResultList.prototype.isScrollingOfResultListAlmostAtTheBottom = function () {\n\t        // this is in a try catch because the unit test fail otherwise (Window does not exist for phantom js in the console)\n\t        var isWindow;\n\t        try {\n\t            isWindow = this.options.infiniteScrollContainer instanceof Window;\n\t        }\n\t        catch (e) {\n\t            isWindow = false;\n\t        }\n\t        return isWindow ? this.isScrollAtBottomForWindowElement() : this.isScrollAtBottomForHtmlElement();\n\t    };\n\t    ResultList.prototype.isScrollAtBottomForWindowElement = function () {\n\t        var win = new Dom_1.Win(window);\n\t        var windowHeight = win.height();\n\t        var scrollTop = win.scrollY();\n\t        var bodyHeight = new Dom_1.Doc(document).height();\n\t        return bodyHeight - (windowHeight + scrollTop) < windowHeight / 2;\n\t    };\n\t    ResultList.prototype.isScrollAtBottomForHtmlElement = function () {\n\t        var el = this.options.infiniteScrollContainer;\n\t        var elementHeight = el.clientHeight;\n\t        var scrollHeight = el.scrollHeight;\n\t        var bottomPosition = el.scrollTop + elementHeight;\n\t        return (scrollHeight - bottomPosition) < elementHeight / 2;\n\t    };\n\t    ResultList.prototype.hasPotentiallyMoreResultsToDisplay = function () {\n\t        return this.currentlyDisplayedResults.length > 0 && !this.reachedTheEndOfResults;\n\t    };\n\t    ResultList.prototype.cancelFetchingMoreResultsIfNeeded = function () {\n\t        if (this.isCurrentlyFetchingMoreResults()) {\n\t            this.logger.trace('Cancelling fetching more results');\n\t            Promise.reject(this.fetchingMoreResults);\n\t            this.fetchingMoreResults = undefined;\n\t        }\n\t    };\n\t    ResultList.prototype.showOrHideElementsDependingOnState = function (hasQuery, hasResults) {\n\t        var showIfQuery = Dom_1.$$(this.element).findAll('.coveo-show-if-query');\n\t        var showIfNoQuery = Dom_1.$$(this.element).findAll('.coveo-show-if-no-query');\n\t        var showIfResults = Dom_1.$$(this.element).findAll('.coveo-show-if-results');\n\t        var showIfNoResults = Dom_1.$$(this.element).findAll('.coveo-show-if-no-results');\n\t        _.each(showIfQuery, function (s) {\n\t            Dom_1.$$(s).toggle(hasQuery);\n\t        });\n\t        _.each(showIfNoQuery, function (s) {\n\t            Dom_1.$$(s).toggle(!hasQuery);\n\t        });\n\t        _.each(showIfResults, function (s) {\n\t            Dom_1.$$(s).toggle(hasQuery && hasResults);\n\t        });\n\t        _.each(showIfNoResults, function (s) {\n\t            Dom_1.$$(s).toggle(hasQuery && !hasResults);\n\t        });\n\t    };\n\t    ResultList.prototype.showWaitingAnimation = function () {\n\t        switch (this.options.waitAnimation.toLowerCase()) {\n\t            case 'fade':\n\t                Dom_1.$$(this.options.waitAnimationContainer).addClass('coveo-fade-out');\n\t                break;\n\t            case 'spinner':\n\t                _.each(this.options.resultContainer.children, function (child) {\n\t                    Dom_1.$$(child).hide();\n\t                });\n\t                if (Dom_1.$$(this.options.waitAnimationContainer).find('.coveo-wait-animation') == undefined) {\n\t                    this.options.waitAnimationContainer.appendChild(DomUtils_1.DomUtils.getBasicLoadingAnimation());\n\t                }\n\t                break;\n\t        }\n\t    };\n\t    ResultList.prototype.hideWaitingAnimation = function () {\n\t        switch (this.options.waitAnimation.toLowerCase()) {\n\t            case 'fade':\n\t                Dom_1.$$(this.options.waitAnimationContainer).removeClass('coveo-fade-out');\n\t                break;\n\t            case 'spinner':\n\t                var spinner = Dom_1.$$(this.options.waitAnimationContainer).find('.coveo-loading-spinner');\n\t                if (spinner) {\n\t                    Dom_1.$$(spinner).detach();\n\t                }\n\t                break;\n\t        }\n\t    };\n\t    ResultList.prototype.showWaitingAnimationForInfiniteScrolling = function () {\n\t        var spinner = DomUtils_1.DomUtils.getLoadingSpinner();\n\t        if (this.options.layout == 'card' && this.options.enableInfiniteScroll) {\n\t            var spinnerContainer = Dom_1.$$('div', {\n\t                className: 'coveo-loading-spinner-container'\n\t            });\n\t            spinnerContainer.append(spinner);\n\t            this.options.waitAnimationContainer.appendChild(spinnerContainer.el);\n\t        }\n\t        else {\n\t            this.options.waitAnimationContainer.appendChild(DomUtils_1.DomUtils.getLoadingSpinner());\n\t        }\n\t    };\n\t    ResultList.prototype.hideWaitingAnimationForInfiniteScrolling = function () {\n\t        var spinner = Dom_1.$$(this.options.waitAnimationContainer).find('.coveo-loading-spinner');\n\t        if (spinner) {\n\t            Dom_1.$$(spinner).detach();\n\t        }\n\t    };\n\t    return ResultList;\n\t}(Component_1.Component));\n\tResultList.ID = 'ResultList';\n\t/**\n\t * The options for the ResultList\n\t * @componentOptions\n\t */\n\tResultList.options = {\n\t    /**\n\t     * Specifies the element within which to insert the rendered templates for results.\n\t     *\n\t     * Performing a new query clears the content of this element.\n\t     *\n\t     * You can change the container by specifying its selector (e.g.,\n\t     * `data-result-container-selector='#someCssSelector'`).\n\t     *\n\t     * If you specify no value for this option, a `div` element will be dynamically created and appended to the result\n\t     * list. This element will then be used as a result container.\n\t     */\n\t    resultContainer: ComponentOptions_1.ComponentOptions.buildChildHtmlElementOption({\n\t        defaultFunction: function (element) {\n\t            var d = document.createElement('div');\n\t            element.appendChild(d);\n\t            return d;\n\t        }\n\t    }),\n\t    resultTemplate: ComponentOptions_1.ComponentOptions.buildTemplateOption({ defaultFunction: ResultList.getDefaultTemplate }),\n\t    /**\n\t     * Specifies the type of animation to display while waiting for a query to return.\n\t     *\n\t     * The possible values are:\n\t     * - `fade`: Fades out the current list of results while the query is executing.\n\t     * - `spinner`: Shows a spinning animation while the query is executing.\n\t     * - `none`: Use no animation during queries.\n\t     *\n\t     * See also {@link ResultList.options.waitAnimationContainer}.\n\t     *\n\t     * Default value is `none`.\n\t     */\n\t    waitAnimation: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: 'none' }),\n\t    /**\n\t     * Specifies the element inside which to display the {@link ResultList.options.waitAnimation}.\n\t     *\n\t     * You can change this by specifying a CSS selector (e.g.,\n\t     * `data-wait-animation-container-selector='#someCssSelector'`).\n\t     *\n\t     * Default value is the value of {@link ResultList.options.resultContainer}.\n\t     */\n\t    waitAnimationContainer: ComponentOptions_1.ComponentOptions.buildChildHtmlElementOption({ postProcessing: function (value, options) { return value || options.resultContainer; } }),\n\t    /**\n\t     * Specifies whether to automatically retrieve an additional page of results and append it to the\n\t     * results that the ResultList is currently displaying when the user scrolls down to the bottom of the infinite\n\t     * scroll container.\n\t     *\n\t     * See also {@link ResultList.options.infiniteScrollPageSize}, {@link ResultList.options.infiniteScrollContainer}\n\t     * and {@link ResultList.options.enableInfiniteScrollWaitingAnimation}.\n\t     *\n\t     * It is important to specify the {@link ResultList.options.infiniteScrollContainer} manually if you want the scrolling\n\t     * element to be something else than the default `window` element.\n\t     * Otherwise, you might get in a weird state where the framework will rapidly trigger multiple successive query.\n\t     *\n\t     * Default value is `false`.\n\t     */\n\t    enableInfiniteScroll: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t    /**\n\t     * If {@link ResultList.options.enableInfiniteScroll} is `true`, specifies the number of additional results to fetch\n\t     * when the user scrolls down to the bottom of the {@link ResultList.options.infiniteScrollContainer}.\n\t     *\n\t     * Default value is `10`. Minimum value is `1`.\n\t     */\n\t    infiniteScrollPageSize: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1, depend: 'enableInfiniteScroll' }),\n\t    /**\n\t     * If {@link ResultList.options.enableInfiniteScroll} is `true`, specifies the element that triggers the fetching of\n\t     * additional results when the end user scrolls down to its bottom.\n\t     *\n\t     * You can change the container by specifying its selector (e.g.,\n\t     * `data-infinite-scroll-container-selector='#someCssSelector'`).\n\t     *\n\t     * By default, the framework uses the first vertically scrollable parent element it finds, starting from the\n\t     * ResultList element itself. A vertically scrollable element is an element whose CSS `overflow-y` attribute is\n\t     * `scroll`.\n\t     *\n\t     * This implies that if the framework can find no scrollable parent, it uses the window itself as a scrollable\n\t     * container.\n\t     *\n\t     * This heuristic is not perfect, for technical reasons. There are always some corner case CSS combination which the framework will\n\t     * not be able to detect correctly as 'scrollable'.\n\t     *\n\t     * It is highly recommended that you manually set this option if you wish to have something else than `window` be the scrollable element.\n\t     */\n\t    infiniteScrollContainer: ComponentOptions_1.ComponentOptions.buildChildHtmlElementOption({ depend: 'enableInfiniteScroll', defaultFunction: function (element) { return ComponentOptions_1.ComponentOptions.findParentScrolling(element); } }),\n\t    /**\n\t     * If {@link ResultList.options.enableInfiniteScroll} is `true`, specifies whether to display the\n\t     * {@link ResultList.options.waitAnimation} while fetching additional results.\n\t     *\n\t     * Default value is `true`.\n\t     */\n\t    enableInfiniteScrollWaitingAnimation: ComponentOptions_1.ComponentOptions.buildBooleanOption({ depend: 'enableInfiniteScroll', defaultValue: true }),\n\t    mobileScrollContainer: ComponentOptions_1.ComponentOptions.buildSelectorOption({ defaultFunction: function () { return document.querySelector('.coveo-results-column'); } }),\n\t    /**\n\t     * Specifies a list of fields to include in the query.\n\t     *\n\t     * Specifying a list of values for this option ensures that the Search API does not send fields that are unnecessary\n\t     * for the UI to function.\n\t     *\n\t     * See also {@link ResultList.options.autoSelectFieldsToInclude}.\n\t     *\n\t     * Default value is `undefined`.\n\t     */\n\t    fieldsToInclude: ComponentOptions_1.ComponentOptions.buildFieldsOption({ includeInResults: true }),\n\t    /**\n\t     * Specifies whether the ResultList should scan its template and discover which fields it needs to render all\n\t     * results.\n\t     *\n\t     * Setting this option to `true` ensures that the Search API does not send fields that are unnecessary for the UI to\n\t     * function.\n\t     *\n\t     * See also {@link ResultList.options.fieldsToInclude}.\n\t     *\n\t     * Default value is `false`.\n\t     *\n\t     * **Note:**\n\t     * > Many interfaces created with the Interface Editor explicitly set this option to `true`.\n\t     */\n\t    autoSelectFieldsToInclude: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t    /**\n\t     * Specifies the layout to use for displaying the results within this ResultList. Specifying a value for this option\n\t     * automatically populates a {@link ResultLayout} component with a switcher for the layout.\n\t     *\n\t     * For example, if there are two {@link ResultList} components in the page, one with its\n\t     * {@link ResultList.options.layout} set to `list` and the other with the same option set to `card`, then the\n\t     * ResultLayout component will render two buttons respectively titled **List** and **Card**.\n\t     *\n\t     * See the {@link ValidLayout} type for the list of possible values.\n\t     *\n\t     * Default value is `list`.\n\t     */\n\t    layout: ComponentOptions_1.ComponentOptions.buildStringOption({\n\t        defaultValue: 'list',\n\t        required: true,\n\t    })\n\t};\n\tResultList.resultCurrentlyBeingRendered = null;\n\tResultList.MAX_AMOUNT_OF_SUCESSIVE_REQUESTS = 5;\n\texports.ResultList = ResultList;\n\tInitialization_1.Initialization.registerAutoCreateComponent(ResultList);\n\n\n/***/ },\n/* 184 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t    var extendStatics = Object.setPrototypeOf ||\n\t        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t    return function (d, b) {\n\t        extendStatics(d, b);\n\t        function __() { this.constructor = d; }\n\t        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t    };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Template_1 = __webpack_require__(113);\n\tvar DefaultRecommendationTemplate = (function (_super) {\n\t    __extends(DefaultRecommendationTemplate, _super);\n\t    function DefaultRecommendationTemplate() {\n\t        return _super !== null && _super.apply(this, arguments) || this;\n\t    }\n\t    DefaultRecommendationTemplate.prototype.instantiateToString = function (object) {\n\t        var template = \"
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\";\n\t return template;\n\t };\n\t DefaultRecommendationTemplate.prototype.instantiateToElement = function (object) {\n\t var div = document.createElement('div');\n\t div.innerHTML = this.instantiateToString(object);\n\t return div;\n\t };\n\t return DefaultRecommendationTemplate;\n\t}(Template_1.Template));\n\texports.DefaultRecommendationTemplate = DefaultRecommendationTemplate;\n\n\n/***/ },\n/* 185 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ResponsiveComponentsManager_1 = __webpack_require__(137);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar ResultList_1 = __webpack_require__(183);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Component_1 = __webpack_require__(109);\n\tvar Logger_1 = __webpack_require__(13);\n\tvar ResponsiveDefaultResultTemplate = (function () {\n\t function ResponsiveDefaultResultTemplate(coveoRoot, ID, options, responsiveDropdown) {\n\t this.coveoRoot = coveoRoot;\n\t this.ID = ID;\n\t this.searchInterface = Component_1.Component.get(this.coveoRoot.el, SearchInterface_1.SearchInterface, false);\n\t this.currentMode = 'large';\n\t }\n\t ResponsiveDefaultResultTemplate.init = function (root, component, options) {\n\t if (!Dom_1.$$(root).find(\".\" + Component_1.Component.computeCssClassName(ResultList_1.ResultList))) {\n\t var logger = new Logger_1.Logger('ResponsiveDefaultResultTemplate');\n\t logger.trace('No ResultLayout component found : Cannot instantiate ResponsiveResultLayout');\n\t return;\n\t }\n\t ResponsiveComponentsManager_1.ResponsiveComponentsManager.register(ResponsiveDefaultResultTemplate, Dom_1.$$(root), ResultList_1.ResultList.ID, component, options);\n\t };\n\t ResponsiveDefaultResultTemplate.prototype.registerComponent = function (accept) {\n\t if (accept instanceof ResultList_1.ResultList) {\n\t this.resultList = accept;\n\t return true;\n\t }\n\t return false;\n\t };\n\t ResponsiveDefaultResultTemplate.prototype.handleResizeEvent = function () {\n\t var lastResults = this.resultList.queryController.getLastResults();\n\t if (this.needSmallMode()) {\n\t Dom_1.$$(this.resultList.options.resultContainer).addClass('coveo-card-layout-container');\n\t Dom_1.$$(this.resultList.options.resultContainer).removeClass(\"coveo-list-layout-container\");\n\t if (this.currentMode != 'small') {\n\t if (lastResults) {\n\t this.resultList.renderResults(this.resultList.buildResults(lastResults));\n\t }\n\t this.currentMode = 'small';\n\t }\n\t }\n\t else {\n\t Dom_1.$$(this.resultList.options.resultContainer).removeClass('coveo-card-layout-container');\n\t Dom_1.$$(this.resultList.options.resultContainer).addClass(\"coveo-list-layout-container\");\n\t if (this.currentMode != 'large') {\n\t if (lastResults) {\n\t this.resultList.renderResults(this.resultList.buildResults(lastResults));\n\t }\n\t this.currentMode = 'large';\n\t }\n\t }\n\t };\n\t ResponsiveDefaultResultTemplate.prototype.needSmallMode = function () {\n\t return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getSmallScreenWidth();\n\t };\n\t return ResponsiveDefaultResultTemplate;\n\t}());\n\texports.ResponsiveDefaultResultTemplate = ResponsiveDefaultResultTemplate;\n\n\n/***/ },\n/* 186 */,\n/* 187 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar Model_1 = __webpack_require__(100);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar StandaloneSearchInterfaceEvents_1 = __webpack_require__(56);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryboxQueryParameters_1 = __webpack_require__(188);\n\t/**\n\t * The Querybox component renders an input that the end user can interact with to enter and submit a query.\n\t *\n\t * When the user submits a query by hitting the **Enter** key, the Querybox component triggers a query and logs the\n\t * corresponding usage analytics data.\n\t *\n\t * For technical reasons, it is necessary to instantiate this component on a `div` element rather than directly on an\n\t * `input` element (i.e., `
` will work, but ``\n\t * will not).\n\t *\n\t * See also the {@link Searchbox} component, which can automatically instantiate a Querybox component along with an\n\t * optional {@link SearchButton} component.\n\t */\n\tvar Querybox = (function (_super) {\n\t __extends(Querybox, _super);\n\t /**\n\t * Creates a new Querybox. Creates a new `Coveo.Magicbox` instance and wraps the Magicbox methods (`onblur`,\n\t * `onsubmit` etc.). Binds event on `buildingQuery` and on redirection (for standalone box).\n\t * @param element The HTMLElement on which to instantiate the component. This cannot be an HTMLInputElement for\n\t * technical reasons.\n\t * @param options The options for the ResultLayout component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function Querybox(element, options, bindings) {\n\t var _this = _super.call(this, element, Querybox.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.bindings = bindings;\n\t if (element instanceof HTMLInputElement) {\n\t _this.logger.error('Querybox cannot be used on an HTMLInputElement');\n\t }\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Querybox, options);\n\t _this.magicBox = Coveo.MagicBox.create(element, new Coveo.MagicBox.Grammar('Query', {\n\t Query: '[Term*][Spaces?]',\n\t Term: '[Spaces?][Word]',\n\t Spaces: / +/,\n\t Word: /[^ ]+/\n\t }), {\n\t inline: true\n\t });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (args) { return _this.handleBuildingQuery(args); });\n\t _this.bind.onRootElement(StandaloneSearchInterfaceEvents_1.StandaloneSearchInterfaceEvents.beforeRedirect, function () { return _this.updateQueryState(); });\n\t _this.bind.onQueryState(Model_1.MODEL_EVENTS.CHANGE_ONE, QueryStateModel_1.QUERY_STATE_ATTRIBUTES.Q, function (args) { return _this.handleQueryStateChanged(args); });\n\t if (_this.options.enableSearchAsYouType) {\n\t Dom_1.$$(_this.element).addClass('coveo-search-as-you-type');\n\t _this.magicBox.onchange = function () {\n\t _this.searchAsYouType();\n\t };\n\t }\n\t _this.magicBox.onsubmit = function () {\n\t _this.submit();\n\t };\n\t _this.magicBox.onblur = function () {\n\t _this.updateQueryState();\n\t };\n\t _this.magicBox.onclear = function () {\n\t _this.updateQueryState();\n\t if (_this.options.triggerQueryOnClear) {\n\t _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxClear, {});\n\t _this.triggerNewQuery(false);\n\t }\n\t };\n\t if (_this.options.autoFocus) {\n\t _this.magicBox.focus();\n\t }\n\t return _this;\n\t }\n\t /**\n\t * Adds the current content of the input to the query and triggers a query if the current content of the input has\n\t * changed since last submit.\n\t *\n\t * Also logs the `serachboxSubmit` event in the usage analytics.\n\t */\n\t Querybox.prototype.submit = function () {\n\t this.magicBox.clearSuggestion();\n\t this.updateQueryState();\n\t this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxSubmit, {});\n\t this.triggerNewQuery(false);\n\t };\n\t /**\n\t * Sets the content of the input.\n\t *\n\t * @param text The string to set in the input.\n\t */\n\t Querybox.prototype.setText = function (text) {\n\t this.magicBox.setText(text);\n\t this.updateQueryState();\n\t };\n\t /**\n\t * Clears the content of the input.\n\t */\n\t Querybox.prototype.clear = function () {\n\t this.magicBox.clear();\n\t };\n\t /**\n\t * Gets the content of the input.\n\t *\n\t * @returns {string} The content of the input.\n\t */\n\t Querybox.prototype.getText = function () {\n\t return this.magicBox.getText();\n\t };\n\t /**\n\t * Gets the result from the input.\n\t *\n\t * @returns {Result} The result.\n\t */\n\t Querybox.prototype.getResult = function () {\n\t return this.magicBox.getResult();\n\t };\n\t /**\n\t * Gets the displayed result from the input.\n\t *\n\t * @returns {Result} The displayed result.\n\t */\n\t Querybox.prototype.getDisplayedResult = function () {\n\t return this.magicBox.getDisplayedResult();\n\t };\n\t /**\n\t * Gets the current cursor position in the input.\n\t *\n\t * @returns {number} The cursor position (index starts at 0).\n\t */\n\t Querybox.prototype.getCursor = function () {\n\t return this.magicBox.getCursor();\n\t };\n\t /**\n\t * Gets the result at cursor position.\n\t *\n\t * @param match {string | { (result): boolean }} The match condition.\n\t *\n\t * @returns {Result[]} The result.\n\t */\n\t Querybox.prototype.resultAtCursor = function (match) {\n\t return this.magicBox.resultAtCursor(match);\n\t };\n\t Querybox.prototype.handleBuildingQuery = function (args) {\n\t Assert_1.Assert.exists(args);\n\t Assert_1.Assert.exists(args.queryBuilder);\n\t this.updateQueryState();\n\t this.lastQuery = this.magicBox.getText();\n\t new QueryboxQueryParameters_1.QueryboxQueryParameters(this.options).addParameters(args.queryBuilder, this.lastQuery);\n\t };\n\t Querybox.prototype.triggerNewQuery = function (searchAsYouType) {\n\t clearTimeout(this.searchAsYouTypeTimeout);\n\t var text = this.magicBox.getText();\n\t if (this.lastQuery != text && text != null) {\n\t this.lastQuery = text;\n\t this.queryController.executeQuery({\n\t searchAsYouType: searchAsYouType,\n\t logInActionsHistory: true\n\t });\n\t }\n\t };\n\t Querybox.prototype.updateQueryState = function () {\n\t this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, this.magicBox.getText());\n\t };\n\t Querybox.prototype.handleQueryStateChanged = function (args) {\n\t Assert_1.Assert.exists(args);\n\t var q = args.value;\n\t if (q != this.magicBox.getText()) {\n\t this.magicBox.setText(q);\n\t }\n\t };\n\t Querybox.prototype.searchAsYouType = function () {\n\t var _this = this;\n\t clearTimeout(this.searchAsYouTypeTimeout);\n\t this.searchAsYouTypeTimeout = setTimeout(function () {\n\t _this.usageAnalytics.logSearchAsYouType(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxAsYouType, {});\n\t _this.triggerNewQuery(true);\n\t }, this.options.searchAsYouTypeDelay);\n\t };\n\t return Querybox;\n\t}(Component_1.Component));\n\tQuerybox.ID = 'Querybox';\n\t/**\n\t * The options for the Querybox.\n\t * @componentOptions\n\t */\n\tQuerybox.options = {\n\t /**\n\t * Specifies whether to enable the search-as-you-type feature.\n\t *\n\t * Default value is `false`.\n\t */\n\t enableSearchAsYouType: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * If {@link Querybox.options.enableSearchAsYouType} is `true`, specifies the delay (in milliseconds) between a\n\t * key press and a query being triggered.\n\t *\n\t * Default value is `500`. Minimum value is `0`\n\t */\n\t searchAsYouTypeDelay: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 500, min: 0 }),\n\t /**\n\t * Specifies whether the Coveo Platform should try to interpret special query syntax such as field references in the\n\t * query that the user enters in the Querybox (see\n\t * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)).\n\t *\n\t * Setting this option to `true` also causes the query syntax in the Querybox to highlight.\n\t *\n\t * Default value is `true`.\n\t */\n\t enableQuerySyntax: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies whether the Coveo Platform should expand keywords containing wildcard characters (`*`) to the possible\n\t * matching keywords in order to broaden the query (see\n\t * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)).\n\t *\n\t * Default value is `false`.\n\t */\n\t enableWildcards: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies whether the Coveo Platform should expand keywords containing question mark characters (`?`) to the\n\t * possible matching keywords in order to broaden the query (see\n\t * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)).\n\t *\n\t * Default value is `false`.\n\t */\n\t enableQuestionMarks: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * If {@link Querybox.options.enableQuerySyntax} is `true`, specifies whether to treat the `AND`, `NOT`, `OR` and\n\t * `NEAR` keywords in the Querybox as query operators in the query even when the end user types them in lowercase.\n\t * This option applies to all query operators (see\n\t * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)).\n\t *\n\t * Default value is `false`.\n\t *\n\t * **Example:**\n\t * > If this option and the enableQuerySyntax option are both `true`, then the Coveo Platform interprets the `near`\n\t * > keyword in a query such as `service center near me` as a query operator (not as a query term).\n\t *\n\t * > Otherwise, if the enableQuerySyntax option is `true` and this option is `false`, the end user has to type the\n\t * > `NEAR` keyword in uppercase in order for the Coveo Platform to interpret it as a query operator.\n\t */\n\t enableLowercaseOperators: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies whether to automatically convert a basic expression containing at least a certain number of keywords\n\t * (see {@link Querybox.options.partialMatchKeywords}) to a partial match expression, so that documents containing\n\t * at least a certain subset of those keywords (see {@link Querybox.options.partialMatchThreshold}) will match the\n\t * query.\n\t *\n\t * Default value is `false`.\n\t *\n\t * **Example:**\n\t *\n\t * With the following markup configuration, if a basic expression contains at least 4 keywords, then documents\n\t * containing at least 75% of those keywords (round up) will match the query.\n\t *\n\t * For instance, if the basic expression is `Coveo custom component configuration help`, then documents containing\n\t * all 5 of those keywords, or 4 of them (75% of 5 rounded up) will match the query.\n\t *\n\t * ```html\n\t *
\n\t * ```\n\t */\n\t enablePartialMatch: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * When {@link Querybox.options.enablePartialMatch} is `true`, specifies the minimum number of keywords that need to\n\t * be present in the basic expression to convert this expression to a partial match expression.\n\t *\n\t * See also {@link Querybox.options.partialMatchThreshold}.\n\t *\n\t * Default value is `5`.\n\t *\n\t * **Note:**\n\t * > Only the basic expression of the query (see {@link q}) can be converted to a partial match expression.\n\t *\n\t * **Example:**\n\t * > If the partialMatchKeywords option is `7`, the basic expression will have to contain at least 7 keywords\n\t * > to be converted to a partial match expression.\n\t */\n\t partialMatchKeywords: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1 }),\n\t /**\n\t * When {@link Querybox.options.enablePartialMatch} is `true`, specifies an absolute or relative (percentage) value\n\t * indicating the minimum number of partial match expression keywords a document must contain in order to match the\n\t * query.\n\t *\n\t * See also {@link Querybox.options.partialMatchKeywords}.\n\t *\n\t * Default value is `50%`.\n\t *\n\t * **Note:**\n\t * > The relative threshold is always rounded up to the nearest integer.\n\t *\n\t * **Examples:**\n\t * > If the partialMatchThreshold option is `50%` and the partial match expression contains exactly 9 keywords, then\n\t * > documents will have to contain at least 5 of those keywords to match the query (50% of 9, rounded up).\n\t *\n\t * > With the same configuration, if the partial match expression contains exactly 12 keywords, then documents will\n\t * > have to contain at least 6 of those keywords to match the query (50% of 12).\n\t *\n\t * > If the partialMatchThreshold option is `2`, then documents will always have to contain at least 2 of the\n\t * > partial match expression keywords to match the query, no matter how many keywords the partial match expression\n\t * > actually contains.\n\t */\n\t partialMatchThreshold: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: '50%' }),\n\t /**\n\t * Specifies whether to trigger a query when the Querybox is cleared.\n\t *\n\t * Default value is `true`.\n\t */\n\t triggerQueryOnClear: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies whether the Querybox should get auto focus and selection upon initialization.\n\t *\n\t * Default value is `true`.\n\t */\n\t autoFocus: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true })\n\t};\n\texports.Querybox = Querybox;\n\tInitialization_1.Initialization.registerAutoCreateComponent(Querybox);\n\n\n/***/ },\n/* 188 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\tvar QueryboxQueryParameters = (function () {\n\t function QueryboxQueryParameters(options) {\n\t this.options = options;\n\t }\n\t QueryboxQueryParameters.prototype.addParameters = function (queryBuilder, lastQuery) {\n\t if (this.options.enableWildcards) {\n\t queryBuilder.enableWildcards = true;\n\t }\n\t if (this.options.enableQuestionMarks) {\n\t queryBuilder.enableQuestionMarks = true;\n\t }\n\t if (this.options.enableLowercaseOperators) {\n\t queryBuilder.enableLowercaseOperators = true;\n\t }\n\t if (!_.isEmpty(lastQuery)) {\n\t queryBuilder.disableQuerySyntax = !this.options.enableQuerySyntax;\n\t queryBuilder.expression.add(lastQuery);\n\t if (this.options.enablePartialMatch) {\n\t queryBuilder.enablePartialMatch = this.options.enablePartialMatch;\n\t if (this.options.partialMatchKeywords) {\n\t queryBuilder.partialMatchKeywords = this.options.partialMatchKeywords;\n\t }\n\t if (this.options.partialMatchThreshold) {\n\t queryBuilder.partialMatchThreshold = this.options.partialMatchThreshold;\n\t }\n\t }\n\t }\n\t };\n\t return QueryboxQueryParameters;\n\t}());\n\texports.QueryboxQueryParameters = QueryboxQueryParameters;\n\n\n/***/ },\n/* 189 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Initialization_1 = __webpack_require__(108);\n\t/**\n\t * The SearchButton component renders a search icon that the end user can click to trigger a new query.\n\t *\n\t * See also the {@link Searchbox} component, which can automatically instantiate a SearchButton component along with a\n\t * {@link Querybox} component or an {@link Omnibox} component.\n\t */\n\tvar SearchButton = (function (_super) {\n\t __extends(SearchButton, _super);\n\t /**\n\t * Creates a new SearchButton. Binds a `click` event on the element. Adds a search icon on the element.\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the SearchButton component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function SearchButton(element, options, bindings) {\n\t var _this = _super.call(this, element, SearchButton.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.bind.on(element, 'click', function () { return _this.handleClick(); });\n\t // Provide a magnifier icon if element contains nothing\n\t if (Utils_1.Utils.trim(Dom_1.$$(_this.element).text()) == '') {\n\t element.innerHTML = '' + Strings_1.l('Search') + '';\n\t }\n\t return _this;\n\t }\n\t /**\n\t * Triggers the `click` event handler, which logs a `searchboxSubmit` event in the usage analytics and executes a\n\t * query.\n\t */\n\t SearchButton.prototype.click = function () {\n\t this.handleClick();\n\t };\n\t SearchButton.prototype.handleClick = function () {\n\t this.logger.debug('Performing query following button click');\n\t this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxSubmit, {});\n\t this.queryController.executeQuery();\n\t };\n\t return SearchButton;\n\t}(Component_1.Component));\n\tSearchButton.ID = 'SearchButton';\n\tSearchButton.options = {};\n\texports.SearchButton = SearchButton;\n\tInitialization_1.Initialization.registerAutoCreateComponent(SearchButton);\n\n\n/***/ },\n/* 190 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar Omnibox_1 = __webpack_require__(191);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar SearchButton_1 = __webpack_require__(189);\n\tvar Querybox_1 = __webpack_require__(187);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The Searchbox component can conveniently create two components that are frequently used together to allow the end\n\t * user to input and submit queries.\n\t *\n\t * This component attaches itself to a `div` element and takes care of instantiating either a {@link Querybox} component\n\t * or an {@link Omnibox} component, depending on its configuration. Optionally, the Searchbox component can also\n\t * instantiate a {@link SearchButton} component and append it inside the same `div`.\n\t */\n\tvar Searchbox = (function (_super) {\n\t __extends(Searchbox, _super);\n\t /**\n\t * Creates a new Searchbox. Creates a new Coveo.Magicbox instance and wraps magic box methods (on blur, on submit\n\t * etc.). Binds event on `buildingQuery` and on redirection (for standalone box).\n\t * @param element The HTMLElement on which to instantiate the component. This cannot be an `HTMLInputElement` for\n\t * technical reasons.\n\t * @param options The options for the Searchbox component. These will merge with the options from the component set\n\t * directly on the `HTMLElement`.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function Searchbox(element, options, bindings) {\n\t var _this = _super.call(this, element, Searchbox.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Searchbox, options);\n\t if (_this.options.inline) {\n\t Dom_1.$$(element).addClass('coveo-inline');\n\t }\n\t if (_this.options.addSearchButton) {\n\t var anchor = document.createElement('a');\n\t _this.element.appendChild(anchor);\n\t _this.searchButton = new SearchButton_1.SearchButton(anchor, undefined, bindings);\n\t }\n\t var div = document.createElement('div');\n\t _this.element.appendChild(div);\n\t if (_this.options.enableOmnibox) {\n\t _this.searchbox = new Omnibox_1.Omnibox(div, _this.options, bindings);\n\t }\n\t else {\n\t _this.searchbox = new Querybox_1.Querybox(div, _this.options, bindings);\n\t }\n\t return _this;\n\t }\n\t return Searchbox;\n\t}(Component_1.Component));\n\tSearchbox.ID = 'Searchbox';\n\tSearchbox.parent = Omnibox_1.Omnibox;\n\t/**\n\t * Possible options for the {@link Searchbox}\n\t * @componentOptions\n\t */\n\tSearchbox.options = {\n\t /**\n\t * Specifies whether to instantiate a {@link SearchButton} component.\n\t *\n\t * Default value is `true`.\n\t */\n\t addSearchButton: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\t /**\n\t * Specifies whether to instantiate an {@link Omnibox} component.\n\t *\n\t * When this option is `false`, the Searchbox component instantiates a {@link Querybox} component instead of an\n\t * Omnibox component.\n\t *\n\t * **Note:**\n\t * > You can use configuration options specific to the component that the Searchbox instantiates.\n\t *\n\t * **Examples:**\n\t *\n\t * In this first case, the Searchbox will instantiate a Querybox component. It is therefore possible to configure\n\t * that Querybox instance using any of the Querybox component options such as\n\t * {@link Querybox.options.triggerQueryOnClear}.\n\t * ```html\n\t *
\n\t * ```\n\t *\n\t * In this second case, the Searchbox will instantiate an Omnibox component. It is therefore possible to configure\n\t * that Omnibox instance using any of the Omnibox component options such as {@link Omnibox.options.placeholder}.\n\t * Moreover, since the Omnibox component inherits all of the Querybox component options, the\n\t * `data-trigger-query-on-clear` option will also work on that Omnibox instance.\n\t * ```html\n\t *
\n\t * ```\n\t *\n\t * Default value is `false`.\n\t */\n\t enableOmnibox: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false })\n\t};\n\texports.Searchbox = Searchbox;\n\tSearchbox.options = _.extend({}, Searchbox.options, Omnibox_1.Omnibox.options, Querybox_1.Querybox.options);\n\t// Only parse omnibox option if omnibox is enabled\n\t_.each(Searchbox.options, function (value, key) {\n\t if (key in Omnibox_1.Omnibox.options && !(key in Querybox_1.Querybox.options)) {\n\t Searchbox.options[key] = _.extend({ depend: 'enableOmnibox' }, value);\n\t }\n\t});\n\tInitialization_1.Initialization.registerAutoCreateComponent(Searchbox);\n\n\n/***/ },\n/* 191 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar StandaloneSearchInterfaceEvents_1 = __webpack_require__(56);\n\tvar Model_1 = __webpack_require__(100);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar QueryStateModel_2 = __webpack_require__(103);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Querybox_1 = __webpack_require__(187);\n\tvar FieldAddon_1 = __webpack_require__(192);\n\tvar QueryExtensionAddon_1 = __webpack_require__(193);\n\tvar RevealQuerySuggestAddon_1 = __webpack_require__(194);\n\tvar OldOmniboxAddon_1 = __webpack_require__(195);\n\tvar QueryboxQueryParameters_1 = __webpack_require__(188);\n\tvar PendingSearchAsYouTypeSearchEvent_1 = __webpack_require__(132);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar _ = __webpack_require__(16);\n\tvar MINIMUM_EXECUTABLE_CONFIDENCE = 0.8;\n\t/**\n\t * The Omnibox component is very similar to the simpler {@link Querybox} component. It supports all of the same options\n\t * and behaviors.\n\t *\n\t * The Omnibox component takes care of adding type-ahead capability to the search input. Custom components can extend\n\t * and customize the type-ahead and the suggestions it provides.\n\t *\n\t * The type-ahead is configurable by activating addons, which the Coveo JavaScript Search Framework provides OOTB\n\t * (facets, analytics suggestions, Coveo Machine Learning suggestions and advanced Coveo syntax suggestions).\n\t *\n\t * It is also possible for external code to provide type-ahead suggestions.\n\t *\n\t * See also the {@link Searchbox} component, which can automatically instantiate an Omnibox component along with an\n\t * optional {@link SearchButton} component.\n\t */\n\tvar Omnibox = (function (_super) {\n\t __extends(Omnibox, _super);\n\t /**\n\t * Creates a new Omnibox component. Also enables necessary addons and binds events on various query events.\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the Omnibox component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function Omnibox(element, options, bindings) {\n\t var _this = _super.call(this, element, Omnibox.ID, bindings) || this;\n\t _this.element = element;\n\t _this.options = options;\n\t _this.partialQueries = [];\n\t _this.lastSuggestions = [];\n\t _this.movedOnce = false;\n\t _this.skipRevealAutoSuggest = false;\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Omnibox, options);\n\t var grammar;\n\t if (_this.options.enableQuerySyntax) {\n\t grammar = ExternalModulesShim_1.MagicBox.Grammars.Expressions(ExternalModulesShim_1.MagicBox.Grammars.Complete);\n\t if (_this.options.enableFieldAddon) {\n\t new FieldAddon_1.FieldAddon(_this);\n\t }\n\t if (_this.options.fieldAlias != null) {\n\t _this.options.listOfFields = _this.options.listOfFields || [];\n\t _this.options.listOfFields = _this.options.listOfFields.concat(_.keys(_this.options.fieldAlias));\n\t }\n\t if (_this.options.enableQueryExtensionAddon) {\n\t new QueryExtensionAddon_1.QueryExtensionAddon(_this);\n\t }\n\t }\n\t else {\n\t grammar = { start: 'Any', expressions: { Any: /.*/ } };\n\t }\n\t if (_this.options.enableRevealQuerySuggestAddon) {\n\t new RevealQuerySuggestAddon_1.RevealQuerySuggestAddon(_this);\n\t }\n\t new OldOmniboxAddon_1.OldOmniboxAddon(_this);\n\t if (_this.options.grammar != null) {\n\t grammar = _this.options.grammar(grammar);\n\t }\n\t _this.magicBox = ExternalModulesShim_1.MagicBox.create(element, new ExternalModulesShim_1.MagicBox.Grammar(grammar.start, grammar.expressions), {\n\t inline: _this.options.inline,\n\t selectableSuggestionClass: 'coveo-omnibox-selectable',\n\t selectedSuggestionClass: 'coveo-omnibox-selected',\n\t suggestionTimeout: _this.options.omniboxTimeout\n\t });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, function (args) { return _this.handleBuildingQuery(args); });\n\t _this.bind.onRootElement(StandaloneSearchInterfaceEvents_1.StandaloneSearchInterfaceEvents.beforeRedirect, function () { return _this.handleBeforeRedirect(); });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.querySuccess, function () { return _this.handleQuerySuccess(); });\n\t _this.bind.onQueryState(Model_1.MODEL_EVENTS.CHANGE_ONE, QueryStateModel_1.QUERY_STATE_ATTRIBUTES.Q, function (args) { return _this.handleQueryStateChanged(args); });\n\t if (_this.isRevealAutoSuggestion()) {\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.duringQuery, function (args) { return _this.handleDuringQuery(args); });\n\t }\n\t _this.setupMagicBox();\n\t return _this;\n\t }\n\t /**\n\t * Adds the current content of the input to the query and triggers a query if the current content of the input has\n\t * changed since last submit.\n\t *\n\t * Also logs a `searchboxSubmit` event in the usage analytics.\n\t */\n\t Omnibox.prototype.submit = function () {\n\t var _this = this;\n\t this.magicBox.clearSuggestion();\n\t this.updateQueryState();\n\t this.triggerNewQuery(false, function () {\n\t _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxSubmit, {});\n\t });\n\t };\n\t /**\n\t * Gets the current content of the input.\n\t * @returns {string} The current content of the input.\n\t */\n\t Omnibox.prototype.getText = function () {\n\t return this.magicBox.getText();\n\t };\n\t /**\n\t * Sets the content of the input\n\t * @param text The string to set in the input.\n\t */\n\t Omnibox.prototype.setText = function (text) {\n\t this.magicBox.setText(text);\n\t this.updateQueryState();\n\t };\n\t /**\n\t * Clears the content of the input.\n\t */\n\t Omnibox.prototype.clear = function () {\n\t this.magicBox.clear();\n\t };\n\t /**\n\t * Gets the `HTMLInputElement` of the Omnibox.\n\t */\n\t Omnibox.prototype.getInput = function () {\n\t return this.magicBox.element.querySelector('input');\n\t };\n\t Omnibox.prototype.getResult = function () {\n\t return this.magicBox.getResult();\n\t };\n\t Omnibox.prototype.getDisplayedResult = function () {\n\t return this.magicBox.getDisplayedResult();\n\t };\n\t Omnibox.prototype.getCursor = function () {\n\t return this.magicBox.getCursor();\n\t };\n\t Omnibox.prototype.resultAtCursor = function (match) {\n\t return this.magicBox.resultAtCursor(match);\n\t };\n\t Omnibox.prototype.setupMagicBox = function () {\n\t var _this = this;\n\t this.magicBox.onmove = function () {\n\t // We assume that once the user has moved its selection, it becomes an explicit omnibox analytics event\n\t if (_this.isRevealAutoSuggestion()) {\n\t _this.modifyEventTo = _this.getOmniboxAnalyticsEventCause();\n\t }\n\t _this.movedOnce = true;\n\t };\n\t this.magicBox.onfocus = function () {\n\t if (_this.isRevealAutoSuggestion()) {\n\t // This flag is used to block the automatic query when the UI is loaded with a query (#q=foo)\n\t // and then the input is focused. We want to block that query, even if it match the suggestion\n\t // Only when there is an actual change in the input (user typing something) is when we want the automatic query to kick in\n\t _this.skipRevealAutoSuggest = true;\n\t }\n\t };\n\t this.magicBox.onsuggestions = function (suggestions) {\n\t // If text is empty, this can mean that user selected text from the search box\n\t // and hit \"delete\" : Reset the partial queries in this case\n\t if (Utils_1.Utils.isEmptyString(_this.getText())) {\n\t _this.partialQueries = [];\n\t }\n\t _this.movedOnce = false;\n\t _this.lastSuggestions = suggestions;\n\t if (_this.isRevealAutoSuggestion() && !_this.skipRevealAutoSuggest) {\n\t _this.searchAsYouType();\n\t }\n\t };\n\t if (this.options.enableSearchAsYouType) {\n\t Dom_1.$$(this.element).addClass('coveo-magicbox-search-as-you-type');\n\t }\n\t this.magicBox.onchange = function () {\n\t _this.skipRevealAutoSuggest = false;\n\t var text = _this.getText();\n\t if (text != undefined && text != '') {\n\t if (_this.isRevealAutoSuggestion()) {\n\t if (_this.movedOnce) {\n\t _this.searchAsYouType(true);\n\t }\n\t }\n\t else if (_this.options.enableSearchAsYouType) {\n\t _this.searchAsYouType(true);\n\t }\n\t }\n\t else {\n\t _this.clear();\n\t }\n\t };\n\t if (this.options.placeholder) {\n\t this.magicBox.element.querySelector('input').placeholder = this.options.placeholder;\n\t }\n\t this.magicBox.onsubmit = function () {\n\t _this.magicBox.clearSuggestion();\n\t _this.updateQueryState();\n\t _this.triggerNewQuery(false, function () {\n\t _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxSubmit, {});\n\t });\n\t _this.magicBox.blur();\n\t };\n\t this.magicBox.onselect = function (suggestion) {\n\t var index = _.indexOf(_this.lastSuggestions, suggestion);\n\t var suggestions = _.compact(_.map(_this.lastSuggestions, function (suggestion) { return suggestion.text; }));\n\t _this.magicBox.clearSuggestion();\n\t _this.updateQueryState();\n\t // A bit tricky here : When it's reveal auto suggestions\n\t // the mouse selection and keyboard selection acts differently :\n\t // keyboard selection will automatically do the query (which will log a search as you type event -> further modified by this.modifyEventTo if needed)\n\t // mouse selection will not \"auto\" send the query.\n\t // the movedOnce variable detect the keyboard movement, and is used to differentiate mouse vs keyboard\n\t if (!_this.isRevealAutoSuggestion()) {\n\t _this.usageAnalytics.cancelAllPendingEvents();\n\t _this.triggerNewQuery(false, function () {\n\t _this.usageAnalytics.logSearchEvent(_this.getOmniboxAnalyticsEventCause(), _this.buildCustomDataForPartialQueries(index, suggestions));\n\t });\n\t }\n\t else if (_this.isRevealAutoSuggestion() && _this.movedOnce) {\n\t _this.handleRevealAutoSuggestionWithKeyboard(index, suggestions);\n\t }\n\t else if (_this.isRevealAutoSuggestion() && !_this.movedOnce) {\n\t _this.handleRevealAutoSuggestionsWithMouse(index, suggestions);\n\t }\n\t // Consider a selection like a reset of the partial queries (it's the end of a suggestion pattern)\n\t if (_this.isRevealAutoSuggestion()) {\n\t _this.partialQueries = [];\n\t }\n\t };\n\t this.magicBox.onblur = function () {\n\t if (_this.options.enableSearchAsYouType && !_this.options.inline) {\n\t _this.setText(_this.lastQuery);\n\t }\n\t else {\n\t _this.updateQueryState();\n\t }\n\t if (_this.isRevealAutoSuggestion()) {\n\t _this.usageAnalytics.sendAllPendingEvents();\n\t }\n\t };\n\t this.magicBox.onclear = function () {\n\t _this.updateQueryState();\n\t if (_this.options.triggerQueryOnClear) {\n\t _this.triggerNewQuery(false, function () {\n\t _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxClear, {});\n\t });\n\t }\n\t };\n\t if (this.options.autoFocus) {\n\t this.magicBox.focus();\n\t }\n\t this.magicBox.ontabpress = function () {\n\t _this.handleTabPress();\n\t };\n\t this.magicBox.getSuggestions = function () { return _this.handleSuggestions(); };\n\t };\n\t Omnibox.prototype.handleRevealAutoSuggestionWithKeyboard = function (index, suggestions) {\n\t var _this = this;\n\t if (this.searchAsYouTypeTimeout) {\n\t // Here, there is currently a search as you typed queued up :\n\t // Think : user typed very quickly, then very quickly selected a suggestion (without waiting for the search as you type)\n\t // Cancel the search as you type query, then immediately do the query with the selection (+analytics event with the selection)\n\t this.usageAnalytics.cancelAllPendingEvents();\n\t clearTimeout(this.searchAsYouTypeTimeout);\n\t this.searchAsYouTypeTimeout = undefined;\n\t this.triggerNewQuery(false, function () {\n\t _this.usageAnalytics.logSearchEvent(_this.getOmniboxAnalyticsEventCause(), _this.buildCustomDataForPartialQueries(index, suggestions));\n\t });\n\t }\n\t else {\n\t // Here, the search as you type query has returned, but the analytics event has not ye been sent.\n\t // Think : user typed slowly, the query returned, and then the user selected a suggestion.\n\t // Since the analytics event has not yet been sent (search as you type event have a 5 sec delay)\n\t // modify the pending event, then send the newly modified analytics event immediately.\n\t this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n\t this.modifyCustomDataOnPending(index, suggestions);\n\t this.usageAnalytics.sendAllPendingEvents();\n\t }\n\t };\n\t Omnibox.prototype.handleRevealAutoSuggestionsWithMouse = function (index, suggestions) {\n\t var _this = this;\n\t if (this.searchAsYouTypeTimeout || index != 0) {\n\t // Here : the user either very quickly chose the first suggestion, and the search as you type is still queued up.\n\t // OR\n\t // the user chose something different then the first suggestion.\n\t // Remove the search as you type if it's there, and do the query with the suggestion directly.\n\t this.clearSearchAsYouType();\n\t this.usageAnalytics.cancelAllPendingEvents();\n\t this.triggerNewQuery(false, function () {\n\t _this.usageAnalytics.logSearchEvent(_this.getOmniboxAnalyticsEventCause(), _this.buildCustomDataForPartialQueries(index, suggestions));\n\t });\n\t }\n\t else {\n\t // Here : the user either very slowly chose a suggestion, and there is no search as you typed queued up\n\t // AND\n\t // the user chose the first suggestion.\n\t // this means the query is already returned, but the analytics event is still queued up.\n\t // modify the analytics event, and send it.\n\t this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n\t this.modifyCustomDataOnPending(index, suggestions);\n\t this.usageAnalytics.sendAllPendingEvents();\n\t // This should happen if :\n\t // users did a (short) query first, which does not match the first suggestion. (eg: typed \"t\", then search)\n\t // then, refocus the search box. The same suggestion(s) will re-appear.\n\t // By selecting the first one with the mouse, we need to retrigger a query because this means the search as you type could not\n\t // kick in and do the query automatically.\n\t if (this.lastQuery != this.getText()) {\n\t this.triggerNewQuery(false, function () {\n\t _this.usageAnalytics.logSearchEvent(_this.getOmniboxAnalyticsEventCause(), _this.buildCustomDataForPartialQueries(index, suggestions));\n\t });\n\t }\n\t }\n\t };\n\t Omnibox.prototype.modifyCustomDataOnPending = function (index, suggestions) {\n\t var pendingEvt = this.usageAnalytics.getPendingSearchEvent();\n\t if (pendingEvt instanceof PendingSearchAsYouTypeSearchEvent_1.PendingSearchAsYouTypeSearchEvent) {\n\t var newCustomData_1 = this.buildCustomDataForPartialQueries(index, suggestions);\n\t _.each(_.keys(newCustomData_1), function (k) {\n\t pendingEvt.modifyCustomData(k, newCustomData_1[k]);\n\t });\n\t }\n\t };\n\t Omnibox.prototype.buildCustomDataForPartialQueries = function (index, suggestions) {\n\t return {\n\t partialQueries: this.cleanCustomData(this.partialQueries),\n\t suggestionRanking: index,\n\t suggestions: this.cleanCustomData(suggestions),\n\t partialQuery: _.last(this.partialQueries)\n\t };\n\t };\n\t Omnibox.prototype.cleanCustomData = function (toClean, rejectLength) {\n\t if (rejectLength === void 0) { rejectLength = 256; }\n\t // Filter out only consecutive values that are the identical\n\t toClean = _.compact(_.filter(toClean, function (partial, pos, array) {\n\t return pos === 0 || partial !== array[pos - 1];\n\t }));\n\t // Custom dimensions cannot be an array in analytics service: Send a string joined by ; instead.\n\t // Need to replace ;\n\t toClean = _.map(toClean, function (partial) {\n\t return partial.replace(/;/g, '');\n\t });\n\t // Reduce right to get the last X words that adds to less then rejectLength\n\t var reducedToRejectLengthOrLess = [];\n\t _.reduceRight(toClean, function (memo, partial) {\n\t var totalSoFar = memo + partial.length;\n\t if (totalSoFar <= rejectLength) {\n\t reducedToRejectLengthOrLess.push(partial);\n\t }\n\t return totalSoFar;\n\t }, 0);\n\t toClean = reducedToRejectLengthOrLess.reverse();\n\t var ret = toClean.join(';');\n\t // analytics service can store max 256 char in a custom event\n\t // if we're over that, call cleanup again with an arbitrary 10 less char accepted\n\t if (ret.length >= 256) {\n\t return this.cleanCustomData(toClean, rejectLength - 10);\n\t }\n\t return toClean.join(';');\n\t };\n\t Omnibox.prototype.handleSuggestions = function () {\n\t var suggestionsEventArgs = {\n\t suggestions: [],\n\t omnibox: this\n\t };\n\t this.bind.trigger(this.element, OmniboxEvents_1.OmniboxEvents.populateOmniboxSuggestions, suggestionsEventArgs);\n\t var text = this.getText();\n\t if (!Utils_1.Utils.isNullOrEmptyString(text)) {\n\t this.partialQueries.push(text);\n\t }\n\t return _.compact(suggestionsEventArgs.suggestions);\n\t };\n\t Omnibox.prototype.handleBeforeRedirect = function () {\n\t this.updateQueryState();\n\t };\n\t Omnibox.prototype.handleBuildingQuery = function (data) {\n\t var _this = this;\n\t Assert_1.Assert.exists(data);\n\t Assert_1.Assert.exists(data.queryBuilder);\n\t this.updateQueryState();\n\t this.lastQuery = this.getQuery(data.searchAsYouType);\n\t var result = this.lastQuery == this.magicBox.getDisplayedResult().input ? this.magicBox.getDisplayedResult().clone() : this.magicBox.grammar.parse(this.lastQuery).clean();\n\t var preprocessResultForQueryArgs = {\n\t result: result\n\t };\n\t if (this.options.enableQuerySyntax) {\n\t var notQuotedValues = preprocessResultForQueryArgs.result.findAll('FieldValueNotQuoted');\n\t _.each(notQuotedValues, function (value) { return value.value = '\"' + value.value.replace(/\"|\\u00A0/g, ' ') + '\"'; });\n\t if (this.options.fieldAlias) {\n\t var fieldNames = preprocessResultForQueryArgs.result.findAll(function (result) { return result.expression.id == 'FieldName' && result.isSuccess(); });\n\t _.each(fieldNames, function (result) {\n\t var alias = _.find(_.keys(_this.options.fieldAlias), function (alias) { return alias.toLowerCase() == result.value.toLowerCase(); });\n\t if (alias != null) {\n\t result.value = _this.options.fieldAlias[alias];\n\t }\n\t });\n\t }\n\t }\n\t this.bind.trigger(this.element, OmniboxEvents_1.OmniboxEvents.omniboxPreprocessResultForQuery, preprocessResultForQueryArgs);\n\t var query = preprocessResultForQueryArgs.result.toString();\n\t new QueryboxQueryParameters_1.QueryboxQueryParameters(this.options).addParameters(data.queryBuilder, query);\n\t };\n\t Omnibox.prototype.handleTabPress = function () {\n\t if (this.options.enableRevealQuerySuggestAddon) {\n\t this.handleTabPressForRevealSuggestions();\n\t }\n\t else {\n\t this.handleTabPressForOldOmniboxAddon();\n\t }\n\t };\n\t Omnibox.prototype.handleTabPressForRevealSuggestions = function () {\n\t if (!this.options.enableSearchAsYouType) {\n\t var suggestions = _.compact(_.map(this.lastSuggestions, function (suggestion) { return suggestion.text; }));\n\t this.usageAnalytics.logCustomEvent(this.getOmniboxAnalyticsEventCause(), this.buildCustomDataForPartialQueries(0, suggestions), this.element);\n\t }\n\t };\n\t Omnibox.prototype.handleTabPressForOldOmniboxAddon = function () {\n\t if (this.lastSuggestions && this.lastSuggestions[0] && this.lastSuggestions[0].dom) {\n\t var firstSelected = Dom_1.$$(this.lastSuggestions[0].dom).find('.coveo-omnibox-selected');\n\t var firstSelectable = Dom_1.$$(this.lastSuggestions[0].dom).find('.coveo-omnibox-selectable');\n\t if (firstSelected) {\n\t Dom_1.$$(firstSelected).trigger('tabSelect');\n\t }\n\t else if (firstSelectable) {\n\t Dom_1.$$(firstSelectable).trigger('tabSelect');\n\t }\n\t }\n\t };\n\t Omnibox.prototype.triggerNewQuery = function (searchAsYouType, analyticsEvent) {\n\t clearTimeout(this.searchAsYouTypeTimeout);\n\t var text = this.getQuery(searchAsYouType);\n\t if (this.shouldExecuteQuery(searchAsYouType)) {\n\t this.lastQuery = text;\n\t analyticsEvent();\n\t this.queryController.executeQuery({\n\t searchAsYouType: searchAsYouType,\n\t logInActionsHistory: true\n\t });\n\t }\n\t };\n\t Omnibox.prototype.getQuery = function (searchAsYouType) {\n\t var query;\n\t if (searchAsYouType) {\n\t query = this.magicBox.getWordCompletion();\n\t if (query == null && this.lastSuggestions != null && this.lastSuggestions.length > 0) {\n\t var textSuggestion = _.find(this.lastSuggestions, function (suggestion) { return suggestion.text != null; });\n\t if (textSuggestion != null) {\n\t query = textSuggestion.text;\n\t }\n\t }\n\t }\n\t return query || this.magicBox.getText();\n\t };\n\t Omnibox.prototype.updateQueryState = function () {\n\t this.queryStateModel.set(QueryStateModel_2.QueryStateModel.attributesEnum.q, this.magicBox.getText());\n\t };\n\t Omnibox.prototype.handleQueryStateChanged = function (args) {\n\t Assert_1.Assert.exists(args);\n\t var q = args.value;\n\t if (q != this.magicBox.getText()) {\n\t this.magicBox.setText(q);\n\t }\n\t };\n\t Omnibox.prototype.handleQuerySuccess = function () {\n\t if (!this.isRevealAutoSuggestion()) {\n\t this.partialQueries = [];\n\t }\n\t };\n\t Omnibox.prototype.handleDuringQuery = function (args) {\n\t var _this = this;\n\t // When the query results returns ... (args.promise)\n\t args.promise.then(function () {\n\t // Get a handle on a pending search as you type (those events are delayed, not sent instantly)\n\t var pendingEvent = _this.usageAnalytics.getPendingSearchEvent();\n\t if (pendingEvent instanceof PendingSearchAsYouTypeSearchEvent_1.PendingSearchAsYouTypeSearchEvent) {\n\t pendingEvent.beforeResolve.then(function (evt) {\n\t // Check if we need to modify the event type beforeResolving it\n\t args.promise.then(function () {\n\t if (_this.modifyEventTo) {\n\t evt.modifyEventCause(_this.modifyEventTo);\n\t _this.modifyEventTo = null;\n\t }\n\t });\n\t });\n\t }\n\t });\n\t };\n\t Omnibox.prototype.searchAsYouType = function (forceExecuteQuery) {\n\t var _this = this;\n\t if (forceExecuteQuery === void 0) { forceExecuteQuery = false; }\n\t this.clearSearchAsYouType();\n\t if (this.shouldExecuteQuery(true)) {\n\t this.searchAsYouTypeTimeout = setTimeout(function () {\n\t if (_this.suggestionShouldTriggerQuery() || forceExecuteQuery) {\n\t var suggestions_1 = _.map(_this.lastSuggestions, function (suggestion) { return suggestion.text; });\n\t var index_1 = _.indexOf(suggestions_1, _this.magicBox.getWordCompletion());\n\t _this.triggerNewQuery(true, function () {\n\t _this.usageAnalytics.logSearchAsYouType(AnalyticsActionListMeta_1.analyticsActionCauseList.searchboxAsYouType, _this.buildCustomDataForPartialQueries(index_1, suggestions_1));\n\t });\n\t _this.clearSearchAsYouType();\n\t }\n\t }, this.options.searchAsYouTypeDelay);\n\t }\n\t };\n\t Omnibox.prototype.isRevealAutoSuggestion = function () {\n\t return this.options.enableSearchAsYouType && this.options.enableRevealQuerySuggestAddon;\n\t };\n\t Omnibox.prototype.shouldExecuteQuery = function (searchAsYouType) {\n\t var text = this.getQuery(searchAsYouType);\n\t return this.lastQuery != text && text != null;\n\t };\n\t Omnibox.prototype.suggestionShouldTriggerQuery = function (suggestions) {\n\t if (suggestions === void 0) { suggestions = this.lastSuggestions; }\n\t if (this.shouldExecuteQuery(true)) {\n\t if (suggestions && suggestions[0]) {\n\t var suggestion = suggestions[0];\n\t // If we have access to a confidence level, return true if we are equal or above the minimum confidence level.\n\t if (suggestion && suggestion.executableConfidence != undefined) {\n\t return suggestion.executableConfidence >= MINIMUM_EXECUTABLE_CONFIDENCE;\n\t }\n\t // If we don't have access to a confidence level, return true only if it \"starts with\" the content of the search box\n\t if (suggestion.text && suggestion.text.indexOf(this.magicBox.getText()) == 0) {\n\t return true;\n\t }\n\t }\n\t }\n\t return false;\n\t };\n\t Omnibox.prototype.clearSearchAsYouType = function () {\n\t clearTimeout(this.searchAsYouTypeTimeout);\n\t this.searchAsYouTypeTimeout = undefined;\n\t };\n\t Omnibox.prototype.getOmniboxAnalyticsEventCause = function () {\n\t if (this.searchInterface instanceof SearchInterface_1.StandaloneSearchInterface) {\n\t return AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxFromLink;\n\t }\n\t return AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxAnalytics;\n\t };\n\t return Omnibox;\n\t}(Component_1.Component));\n\tOmnibox.ID = 'Omnibox';\n\t/**\n\t * The options for the omnibox\n\t * @componentOptions\n\t */\n\tOmnibox.options = {\n\t /**\n\t * Specifies whether suggestions appearing in the Omnibox should push the result down instead of appearing over the\n\t * results.\n\t *\n\t * Set this option as well as {@link Omnibox.options.enableSearchAsYouType} and\n\t * {@link Omnibox.options.enableRevealQuerySuggestAddon} to `true` for a cool effect!\n\t *\n\t * Default value is `false`.\n\t */\n\t inline: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * Specifies whether to automatically trigger a new query whenever the end user types new text inside the Omnibox.\n\t *\n\t * Set this option as well a {@link Omnibox.options.inline} and\n\t * {@link Omnibox.options.enableRevealQuerySuggestAddon} to `true` for a cool effect!\n\t *\n\t * Default value is `false`.\n\t */\n\t enableSearchAsYouType: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\t /**\n\t * If {@link Omnibox.options.enableSearchAsYouType} is `true`, specifies the delay (in milliseconds) before\n\t * triggering a new query when the user types new text inside the Omnibox.\n\t *\n\t * Default value is `2000`. Minimum value is `0`.\n\t */\n\t searchAsYouTypeDelay: ComponentOptions_1.ComponentOptions.buildNumberOption({\n\t defaultValue: 2000,\n\t min: 0,\n\t depend: 'enableSearchAsYouType'\n\t }),\n\t /**\n\t * If {@link Querybox.options.enableQuerySyntax} is `true`, specifies whether to enable the `field` addon.\n\t *\n\t * The `field` addon allows the search box to highlight and complete field syntax.\n\t *\n\t * **Example:**\n\t *\n\t * > Suppose you want to filter on a certain file type. You start typing `@sysf` in the input. The Omnibox provides\n\t * > you with several matching fields. You select the `@sysfiletype` suggestion and type `=`. If this option is set\n\t * > to `true`, then the Omnibox provides you with suggestions for available matching file types.\n\t *\n\t * Default value is `false`.\n\t */\n\t enableFieldAddon: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableQuerySyntax' }),\n\t enableSimpleFieldAddon: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableFieldAddon' }),\n\t listOfFields: ComponentOptions_1.ComponentOptions.buildFieldsOption({ depend: 'enableFieldAddon' }),\n\t /**\n\t * Specifies whether to enable the Coveo Machine Learning (Coveo ML) query suggestions.\n\t *\n\t * This implies that you have a proper Coveo ML integration configured (see\n\t * [Coveo Machine Learning](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=177)).\n\t *\n\t * Default value is `true`.\n\t */\n\t enableRevealQuerySuggestAddon: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true, alias: 'enableTopQueryAddon' }),\n\t /**\n\t * If {@link Querybox.options.enableQuerySyntax} is `true`, specifies whether to enable the `query extension` addon.\n\t *\n\t * The `query extension` addon allows the Omnibox to complete the syntax for query extensions.\n\t *\n\t * Default value is `false`.\n\t */\n\t enableQueryExtensionAddon: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableQuerySyntax' }),\n\t /**\n\t * Specifies a placeholder for the input.\n\t */\n\t placeholder: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption(),\n\t /**\n\t * Specifies a timeout (in milliseconds) before rejecting suggestions in the Omnibox.\n\t *\n\t * Default value is `2000`. Minimum value is `0`.\n\t */\n\t omniboxTimeout: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 2000, min: 0 })\n\t};\n\texports.Omnibox = Omnibox;\n\tOmnibox.options = _.extend({}, Omnibox.options, Querybox_1.Querybox.options);\n\tInitialization_1.Initialization.registerAutoCreateComponent(Omnibox);\n\n\n/***/ },\n/* 192 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar _ = __webpack_require__(16);\n\tvar FieldAddon = (function () {\n\t function FieldAddon(omnibox) {\n\t var _this = this;\n\t this.omnibox = omnibox;\n\t this.cache = {};\n\t this.omnibox.bind.on(this.omnibox.element, OmniboxEvents_1.OmniboxEvents.populateOmniboxSuggestions, function (args) {\n\t args.suggestions.push(_this.getSuggestion());\n\t });\n\t }\n\t FieldAddon.prototype.getSuggestion = function () {\n\t var _this = this;\n\t var hash = this.getHash();\n\t if (hash == null) {\n\t return null;\n\t }\n\t var hashString = this.hashToString(hash);\n\t if (this.cache[hashString] != null) {\n\t return this.hashValueToSuggestion(hash, this.cache[hashString]);\n\t }\n\t var values;\n\t if (hash.type == 'FieldName') {\n\t values = this.fieldNames(hash.current);\n\t }\n\t if (hash.type == 'FieldValue') {\n\t values = this.fieldValues(hash.field, hash.current);\n\t }\n\t if (hash.type == 'SimpleFieldName') {\n\t values = this.simpleFieldNames(hash.current);\n\t }\n\t this.cache[hashString] = values;\n\t values.catch(function () {\n\t delete _this.cache[hashString];\n\t });\n\t return this.hashValueToSuggestion(hash, values);\n\t };\n\t FieldAddon.prototype.getHash = function () {\n\t var fieldName = _.last(this.omnibox.resultAtCursor('FieldName'));\n\t if (fieldName != null) {\n\t fieldName = fieldName.findParent('Field') || fieldName;\n\t var currentField = fieldName.toString();\n\t var before = fieldName.before();\n\t var after = fieldName.after();\n\t return { type: 'FieldName', current: currentField, before: before, after: after };\n\t }\n\t var fieldValue = _.last(this.omnibox.resultAtCursor('FieldValue'));\n\t if (fieldValue) {\n\t var fieldQuery = fieldValue.findParent('FieldQuery') || (this.omnibox.options.enableSimpleFieldAddon && fieldValue.findParent('FieldSimpleQuery'));\n\t if (fieldQuery) {\n\t var field = fieldQuery.find('FieldName').toString();\n\t if (this.omnibox.options.fieldAlias) {\n\t if (field in this.omnibox.options.fieldAlias) {\n\t field = this.omnibox.options.fieldAlias[field];\n\t }\n\t }\n\t var value = fieldValue.toString();\n\t var before = fieldValue.before();\n\t var after = fieldValue.after();\n\t return { type: 'FieldValue', field: field, current: value, before: before, after: after };\n\t }\n\t }\n\t if (this.omnibox.options.enableSimpleFieldAddon) {\n\t var word = _.last(this.omnibox.resultAtCursor('Word'));\n\t if (word != null) {\n\t var currentField = word.toString();\n\t var before = word.before();\n\t var after = word.after();\n\t return { type: 'SimpleFieldName', current: currentField, before: before, after: after };\n\t }\n\t }\n\t };\n\t FieldAddon.prototype.hashToString = function (hash) {\n\t if (hash == null) {\n\t return null;\n\t }\n\t return hash.type + hash.current + (hash.field || '');\n\t };\n\t FieldAddon.prototype.hashValueToSuggestion = function (hash, promise) {\n\t return promise.then(function (values) {\n\t var suggestions = _.map(values, function (value, i) {\n\t return {\n\t text: hash.before + (hash.current.toLowerCase().indexOf(value.toLowerCase()) == 0 ? hash.current + value.substr(hash.current.length) : value) + hash.after,\n\t html: ExternalModulesShim_1.MagicBox.Utils.highlightText(value, hash.current, true),\n\t index: FieldAddon.INDEX - i / values.length\n\t };\n\t });\n\t return suggestions;\n\t });\n\t };\n\t FieldAddon.prototype.getFields = function () {\n\t var _this = this;\n\t if (this.fields == null) {\n\t this.fields = new Promise(function (resolve, reject) {\n\t if (_this.omnibox.options.listOfFields != null) {\n\t resolve(_this.omnibox.options.listOfFields);\n\t }\n\t else {\n\t var promise = _this.omnibox.queryController.getEndpoint().listFields();\n\t promise.then(function (fieldDescriptions) {\n\t var fieldNames = _.chain(fieldDescriptions)\n\t .filter(function (fieldDescription) { return fieldDescription.includeInQuery && fieldDescription.groupByField; })\n\t .map(function (fieldDescription) { return fieldDescription.name.substr(1); })\n\t .value();\n\t resolve(fieldNames);\n\t }).catch(function () {\n\t reject();\n\t });\n\t }\n\t });\n\t }\n\t return this.fields;\n\t };\n\t FieldAddon.prototype.fieldNames = function (current) {\n\t var withAt = current.length > 0 && current[0] == '@';\n\t var fieldName = withAt ? current.substr(1) : current;\n\t var fieldNameLC = fieldName.toLowerCase();\n\t return this.getFields().then(function (fields) {\n\t var matchFields = _.chain(fields)\n\t .map(function (field) {\n\t return {\n\t index: field.toLowerCase().indexOf(fieldNameLC),\n\t field: withAt ? field : '@' + field\n\t };\n\t })\n\t .filter(function (field) {\n\t return field.index != -1 && field.field.length > current.length;\n\t })\n\t .sortBy('index')\n\t .map(function (field) { return field.field; })\n\t .value();\n\t matchFields = _.first(matchFields, 5);\n\t return matchFields;\n\t });\n\t };\n\t FieldAddon.prototype.fieldValues = function (field, current) {\n\t return this.omnibox.queryController.getEndpoint().listFieldValues({\n\t pattern: '.*' + current + '.*',\n\t patternType: 'RegularExpression',\n\t sortCriteria: 'occurrences',\n\t field: '@' + field,\n\t maximumNumberOfValues: 5\n\t }).then(function (values) {\n\t return _.chain(values)\n\t .map(function (value) {\n\t return {\n\t index: value.value.toLowerCase().indexOf(current),\n\t value: value.value\n\t };\n\t })\n\t .filter(function (value) {\n\t return value.value.length > current.length;\n\t })\n\t .sortBy('index')\n\t .map(function (value) {\n\t return value.value.replace(/ /g, '\\u00A0');\n\t })\n\t .value();\n\t });\n\t };\n\t FieldAddon.prototype.simpleFieldNames = function (current) {\n\t var fieldName = current;\n\t var fieldNameLC = fieldName.toLowerCase();\n\t return this.getFields().then(function (fields) {\n\t var matchFields = _.chain(fields)\n\t .map(function (field) {\n\t return {\n\t index: field.toLowerCase().indexOf(fieldNameLC),\n\t field: field + ':'\n\t };\n\t })\n\t .filter(function (field) {\n\t return field.index != -1 && field.field.length > current.length;\n\t })\n\t .sortBy('index')\n\t .map(function (field) { return field.field; })\n\t .value();\n\t matchFields = _.first(matchFields, 5);\n\t return matchFields;\n\t });\n\t };\n\t return FieldAddon;\n\t}());\n\tFieldAddon.INDEX = 64;\n\texports.FieldAddon = FieldAddon;\n\n\n/***/ },\n/* 193 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t///\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar ExternalModulesShim_1 = __webpack_require__(25);\n\tvar _ = __webpack_require__(16);\n\tvar QueryExtensionAddon = (function () {\n\t function QueryExtensionAddon(omnibox) {\n\t var _this = this;\n\t this.omnibox = omnibox;\n\t this.cache = {};\n\t this.omnibox.bind.on(this.omnibox.element, OmniboxEvents_1.OmniboxEvents.populateOmniboxSuggestions, function (args) {\n\t args.suggestions.push(_this.getSuggestion());\n\t });\n\t }\n\t QueryExtensionAddon.prototype.getSuggestion = function () {\n\t var _this = this;\n\t var hash = this.getHash(this.omnibox.magicBox);\n\t if (hash == null) {\n\t return null;\n\t }\n\t var hashString = this.hashToString(hash);\n\t if (this.cache[hashString] != null) {\n\t return this.hashValueToSuggestion(hash, this.cache[hashString]);\n\t }\n\t var values = (hash.type == 'QueryExtensionName' ? this.names(hash.current) : this.attributeNames(hash.name, hash.current, hash.used));\n\t this.cache[hashString] = values;\n\t values.catch(function () {\n\t delete _this.cache[hashString];\n\t });\n\t return this.hashValueToSuggestion(hash, values);\n\t };\n\t QueryExtensionAddon.prototype.getHash = function (magicBox) {\n\t var queryExtension = _.last(magicBox.resultAtCursor('QueryExtension'));\n\t if (queryExtension != null) {\n\t var queryExtensionArgumentResults = queryExtension.findAll('QueryExtensionArgument');\n\t var current = _.last(magicBox.resultAtCursor('QueryExtensionName'));\n\t if (current != null) {\n\t return {\n\t type: 'QueryExtensionName',\n\t current: current.toString(),\n\t before: current.before(),\n\t after: current.after()\n\t };\n\t }\n\t current = _.last(magicBox.resultAtCursor('QueryExtensionArgumentName'));\n\t if (current != null) {\n\t var used = _.chain(queryExtensionArgumentResults)\n\t .map(function (result) {\n\t var name = result.find('QueryExtensionArgumentName');\n\t return name && name.toString();\n\t })\n\t .compact()\n\t .value();\n\t var name = queryExtension.find('QueryExtensionName').toString();\n\t return {\n\t type: 'QueryExtensionArgumentName',\n\t current: current.toString(),\n\t before: current.before(),\n\t after: current.after(),\n\t name: name,\n\t used: used\n\t };\n\t }\n\t }\n\t return null;\n\t };\n\t QueryExtensionAddon.prototype.hashToString = function (hash) {\n\t if (hash == null) {\n\t return null;\n\t }\n\t return [hash.type, hash.current, (hash.name || ''), (hash.used ? hash.used.join() : '')].join();\n\t };\n\t QueryExtensionAddon.prototype.hashValueToSuggestion = function (hash, promise) {\n\t return promise.then(function (values) {\n\t var suggestions = _.map(values, function (value, i) {\n\t return {\n\t html: ExternalModulesShim_1.MagicBox.Utils.highlightText(value, hash.current, true),\n\t text: hash.before + value + hash.after,\n\t index: QueryExtensionAddon.INDEX - i / values.length\n\t };\n\t });\n\t return suggestions;\n\t });\n\t };\n\t QueryExtensionAddon.prototype.getExtensions = function () {\n\t if (this.extensions == null) {\n\t this.extensions = this.omnibox.queryController.getEndpoint().extensions();\n\t }\n\t return this.extensions;\n\t };\n\t QueryExtensionAddon.prototype.names = function (current) {\n\t var extensionName = current.toLowerCase();\n\t return this.getExtensions().then(function (extensions) {\n\t var matchExtensions = _.chain(extensions)\n\t .map(function (extension) {\n\t return {\n\t index: extension.name.toLowerCase().indexOf(extensionName),\n\t extension: extension.name\n\t };\n\t })\n\t .filter(function (extension) {\n\t return extension.index != -1 && extension.extension.length > extensionName.length;\n\t })\n\t .sortBy('index')\n\t .pluck('extension')\n\t .value();\n\t matchExtensions = _.first(matchExtensions, 5);\n\t return matchExtensions;\n\t });\n\t };\n\t QueryExtensionAddon.prototype.attributeNames = function (name, current, used) {\n\t return this.getExtensions().then(function (extensions) {\n\t var extension = _.find(extensions, function (extension) { return extension.name == name; });\n\t if (extension == null) {\n\t return [];\n\t }\n\t else {\n\t return _.filter(_.difference(extension.argumentNames, used), function (argumentName) { return argumentName.indexOf(current) == 0; });\n\t }\n\t });\n\t };\n\t QueryExtensionAddon.prototype.hash = function () {\n\t return;\n\t };\n\t return QueryExtensionAddon;\n\t}());\n\tQueryExtensionAddon.INDEX = 62;\n\texports.QueryExtensionAddon = QueryExtensionAddon;\n\n\n/***/ },\n/* 194 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar Dom_1 = __webpack_require__(61);\n\tvar ComponentOptionsModel_1 = __webpack_require__(104);\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar StringUtils_1 = __webpack_require__(64);\n\tvar _ = __webpack_require__(16);\n\tvar RevealQuerySuggestAddon = (function () {\n\t function RevealQuerySuggestAddon(omnibox) {\n\t var _this = this;\n\t this.omnibox = omnibox;\n\t this.cache = {};\n\t Dom_1.$$(this.omnibox.element).on(OmniboxEvents_1.OmniboxEvents.populateOmniboxSuggestions, function (e, args) {\n\t args.suggestions.push(_this.getSuggestion());\n\t });\n\t }\n\t RevealQuerySuggestAddon.suggestiontHtml = function (suggestion) {\n\t return suggestion.highlighted.replace(/\\[(.*?)\\]|\\{(.*?)\\}|\\((.*?)\\)/g, function (part, notMatched, matched, corrected) {\n\t var className = '';\n\t if (matched) {\n\t className = 'coveo-omnibox-hightlight';\n\t }\n\t if (corrected) {\n\t className = 'coveo-omnibox-hightlight2';\n\t }\n\t var ret;\n\t if (className) {\n\t ret = Dom_1.$$('span', {\n\t className: className\n\t });\n\t }\n\t else {\n\t ret = Dom_1.$$('span');\n\t }\n\t ret.text(notMatched || matched || corrected);\n\t return ret.el.outerHTML;\n\t });\n\t };\n\t RevealQuerySuggestAddon.isPartialMatch = function (suggestion) {\n\t // groups : 1=notMatched, 2=matched, 3=corrected\n\t var parts = StringUtils_1.StringUtils.match(suggestion.highlighted, /\\[(.*?)\\]|\\{(.*?)\\}|\\((.*?)\\)/g);\n\t var firstFail = _.find(parts, function (part) { return part[1] != null; });\n\t // if no fail found, this is a partial or a full match\n\t if (firstFail == null) {\n\t return true;\n\t }\n\t // if all right parts are notMatched, the right parts is autocomplete\n\t return _.every(_.last(parts, _.indexOf(parts, firstFail) - parts.length), function (part) { return part[1] != null; });\n\t };\n\t RevealQuerySuggestAddon.prototype.getSuggestion = function () {\n\t var _this = this;\n\t var text = this.omnibox.magicBox.getText();\n\t if (text.length == 0) {\n\t return null;\n\t }\n\t if (this.cache[text] != null) {\n\t return this.cache[text];\n\t }\n\t var promise = this.getRevealQuerySuggest(text);\n\t this.cache[text] = promise;\n\t promise.catch(function () {\n\t delete _this.cache[text];\n\t });\n\t return this.cache[text];\n\t };\n\t RevealQuerySuggestAddon.prototype.getRevealQuerySuggest = function (text) {\n\t var payload = { q: text };\n\t var language = String['locale'];\n\t var searchHub = this.omnibox.getBindings().componentOptionsModel.get(ComponentOptionsModel_1.ComponentOptionsModel.attributesEnum.searchHub);\n\t var pipeline = this.omnibox.getBindings().searchInterface.options.pipeline;\n\t var enableWordCompletion = this.omnibox.options.enableSearchAsYouType;\n\t var context = this.omnibox.getBindings().queryController.getLastQuery().context;\n\t if (language) {\n\t payload.language = language;\n\t }\n\t if (searchHub) {\n\t payload.searchHub = searchHub;\n\t }\n\t if (pipeline) {\n\t payload.pipeline = pipeline;\n\t }\n\t if (context) {\n\t payload.context = context;\n\t }\n\t payload.enableWordCompletion = enableWordCompletion;\n\t return this.omnibox.queryController.getEndpoint()\n\t .getRevealQuerySuggest(payload)\n\t .then(function (result) {\n\t var completions = result.completions;\n\t var results = _.map(completions, function (completion, i) {\n\t return {\n\t html: RevealQuerySuggestAddon.suggestiontHtml(completion),\n\t text: completion.expression,\n\t index: RevealQuerySuggestAddon.INDEX - i / completions.length,\n\t partial: RevealQuerySuggestAddon.isPartialMatch(completion),\n\t executableConfidence: completion.executableConfidence\n\t };\n\t });\n\t return results;\n\t });\n\t };\n\t return RevealQuerySuggestAddon;\n\t}());\n\tRevealQuerySuggestAddon.INDEX = 60;\n\texports.RevealQuerySuggestAddon = RevealQuerySuggestAddon;\n\n\n/***/ },\n/* 195 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar _ = __webpack_require__(16);\n\tvar OldOmniboxAddon = (function () {\n\t function OldOmniboxAddon(omnibox) {\n\t var _this = this;\n\t this.omnibox = omnibox;\n\t this.omnibox.bind.on(this.omnibox.element, OmniboxEvents_1.OmniboxEvents.populateOmniboxSuggestions, function (args) {\n\t _.each(_this.getSuggestion(), function (suggestion) {\n\t args.suggestions.push(suggestion);\n\t });\n\t });\n\t }\n\t OldOmniboxAddon.prototype.getSuggestion = function () {\n\t var text = this.omnibox.magicBox.getText();\n\t if (text.length == 0) {\n\t return null;\n\t }\n\t if (this.lastQuery == text) {\n\t return this.lastSuggestions;\n\t }\n\t this.lastQuery = text;\n\t var eventArgs = this.buildPopulateOmniboxEventArgs();\n\t Dom_1.$$(this.omnibox.root).trigger(OmniboxEvents_1.OmniboxEvents.populateOmnibox, eventArgs);\n\t return this.lastSuggestions = this.rowsToSuggestions(eventArgs.rows);\n\t };\n\t OldOmniboxAddon.prototype.getCurrentQueryExpression = function () {\n\t var cursorPos = this.omnibox.getCursor();\n\t var value = this.omnibox.getText();\n\t var length = value.length;\n\t var start = cursorPos;\n\t var end = cursorPos;\n\t if (value[start] == ' ') {\n\t start--;\n\t }\n\t while (start > 0 && value[start] != ' ') {\n\t start--;\n\t }\n\t while (end < length && value[end] != ' ') {\n\t end++;\n\t }\n\t return value.substring(start, end);\n\t };\n\t OldOmniboxAddon.prototype.getRegexToSearch = function (strValue) {\n\t if (strValue == null) {\n\t strValue = this.omnibox.getText();\n\t }\n\t return new RegExp(Utils_1.Utils.escapeRegexCharacter(strValue), 'i');\n\t };\n\t OldOmniboxAddon.prototype.getQueryExpressionBreakDown = function () {\n\t var _this = this;\n\t var ret = [];\n\t var queryWords = this.omnibox.getText().split(' ');\n\t _.each(queryWords, function (word) {\n\t ret.push({\n\t word: word,\n\t regex: _this.getRegexToSearch(word)\n\t });\n\t });\n\t return ret;\n\t };\n\t OldOmniboxAddon.prototype.replace = function (searchValue, newValue) {\n\t this.omnibox.setText(this.omnibox.getText().replace(searchValue, newValue));\n\t };\n\t OldOmniboxAddon.prototype.clearCurrentExpression = function () {\n\t this.replace(this.getCurrentQueryExpression(), '');\n\t };\n\t OldOmniboxAddon.prototype.insertAt = function (at, toInsert) {\n\t var oldValue = this.omnibox.getText();\n\t var newValue = [oldValue.slice(0, at), toInsert, oldValue.slice(at)].join('');\n\t this.omnibox.setText(newValue);\n\t };\n\t OldOmniboxAddon.prototype.replaceCurrentExpression = function (newValue) {\n\t this.replace(this.getCurrentQueryExpression(), newValue);\n\t };\n\t OldOmniboxAddon.prototype.buildPopulateOmniboxEventArgs = function () {\n\t var _this = this;\n\t var currentQueryExpression = this.getCurrentQueryExpression();\n\t var ret = {\n\t rows: [],\n\t completeQueryExpression: {\n\t word: this.omnibox.getText(),\n\t regex: this.getRegexToSearch()\n\t },\n\t currentQueryExpression: {\n\t word: currentQueryExpression,\n\t regex: this.getRegexToSearch(currentQueryExpression)\n\t },\n\t allQueryExpressions: this.getQueryExpressionBreakDown(),\n\t cursorPosition: this.omnibox.getCursor(),\n\t clear: function () {\n\t _this.omnibox.clear();\n\t },\n\t clearCurrentExpression: function () {\n\t _this.clearCurrentExpression();\n\t },\n\t replace: function (searchValue, newValue) {\n\t _this.replace(searchValue, newValue);\n\t },\n\t replaceCurrentExpression: function (newValue) {\n\t _this.replaceCurrentExpression(newValue);\n\t },\n\t insertAt: function (at, toInsert) {\n\t _this.insertAt(at, toInsert);\n\t },\n\t closeOmnibox: function () {\n\t _this.omnibox.magicBox.blur();\n\t }\n\t };\n\t return ret;\n\t };\n\t OldOmniboxAddon.prototype.rowsToSuggestions = function (rows) {\n\t return _.map(rows, function (row) {\n\t if (!Utils_1.Utils.isNullOrUndefined(row.element)) {\n\t return new Promise(function (resolve) {\n\t resolve([{\n\t dom: row.element,\n\t index: row.zIndex\n\t }]);\n\t });\n\t }\n\t else if (!Utils_1.Utils.isNullOrUndefined(row.deferred)) {\n\t return new Promise(function (resolve) {\n\t row.deferred.then(function (row) {\n\t if (row.element != null) {\n\t resolve([{\n\t dom: row.element,\n\t index: row.zIndex\n\t }]);\n\t }\n\t else {\n\t resolve(null);\n\t }\n\t });\n\t });\n\t }\n\t return null;\n\t });\n\t };\n\t return OldOmniboxAddon;\n\t}());\n\texports.OldOmniboxAddon = OldOmniboxAddon;\n\n\n/***/ },\n/* 196 */,\n/* 197 */,\n/* 198 */,\n/* 199 */,\n/* 200 */,\n/* 201 */,\n/* 202 */,\n/* 203 */,\n/* 204 */,\n/* 205 */,\n/* 206 */,\n/* 207 */,\n/* 208 */,\n/* 209 */,\n/* 210 */,\n/* 211 */,\n/* 212 */,\n/* 213 */,\n/* 214 */,\n/* 215 */,\n/* 216 */,\n/* 217 */,\n/* 218 */,\n/* 219 */,\n/* 220 */,\n/* 221 */,\n/* 222 */,\n/* 223 */,\n/* 224 */,\n/* 225 */,\n/* 226 */,\n/* 227 */,\n/* 228 */,\n/* 229 */,\n/* 230 */,\n/* 231 */,\n/* 232 */,\n/* 233 */,\n/* 234 */,\n/* 235 */,\n/* 236 */,\n/* 237 */,\n/* 238 */,\n/* 239 */,\n/* 240 */,\n/* 241 */,\n/* 242 */,\n/* 243 */,\n/* 244 */,\n/* 245 */,\n/* 246 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar DomUtils_1 = __webpack_require__(62);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\tvar SuggestionForOmnibox = (function () {\n\t function SuggestionForOmnibox(structure, onSelect, onTabPress) {\n\t this.structure = structure;\n\t this.onSelect = onSelect;\n\t this.onTabPress = onTabPress;\n\t }\n\t SuggestionForOmnibox.prototype.buildOmniboxElement = function (results, args) {\n\t var element;\n\t if (results.length != 0) {\n\t element = Dom_1.$$('div').el;\n\t if (this.structure.header) {\n\t var header = this.buildElementHeader();\n\t element.appendChild(header);\n\t }\n\t var rows = this.buildRowElements(results, args);\n\t _.each(rows, function (row) {\n\t element.appendChild(row);\n\t });\n\t }\n\t return element;\n\t };\n\t SuggestionForOmnibox.prototype.buildElementHeader = function () {\n\t return Dom_1.$$('div', undefined, this.structure.header.template({\n\t headerTitle: this.structure.header.title\n\t })).el;\n\t };\n\t SuggestionForOmnibox.prototype.buildRowElements = function (results, args) {\n\t var _this = this;\n\t var ret = [];\n\t _.each(results, function (result) {\n\t var row = Dom_1.$$('div', undefined, _this.structure.row({\n\t rawValue: result.value,\n\t data: DomUtils_1.DomUtils.highlightElement(result.value, args.completeQueryExpression.word)\n\t })).el;\n\t Dom_1.$$(row).on('click', function () {\n\t _this.onSelect.call(_this, result.value, args);\n\t });\n\t Dom_1.$$(row).on('keyboardSelect', function () {\n\t _this.onSelect.call(_this, result.value, args);\n\t });\n\t Dom_1.$$(row).on('tabSelect', function () {\n\t _this.onTabPress.call(_this, result.value, args);\n\t });\n\t ret.push(row);\n\t });\n\t return ret;\n\t };\n\t return SuggestionForOmnibox;\n\t}());\n\texports.SuggestionForOmnibox = SuggestionForOmnibox;\n\n\n/***/ },\n/* 247 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar SuggestionForOmnibox_1 = __webpack_require__(246);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar Component_1 = __webpack_require__(109);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar QueryEvents_1 = __webpack_require__(50);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar SearchInterface_1 = __webpack_require__(110);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The AnalyticsSuggestion component provides query suggestions based on the queries that a Coveo Analytics service most\n\t * commonly logs.\n\t *\n\t * This component orders possible query suggestions by their respective number of successful document views, thus\n\t * prioritizing the most relevant query suggestions. Consequently, when better options are available, this component\n\t * does not suggest queries resulting in no clicks from users or requiring refinements.\n\t *\n\t * The query suggestions appear in the {@link Omnibox} Component. The AnalyticsSuggestion component strongly\n\t * relates to the {@link Analytics} component. While a user is typing in a query box, the AnalyticsSuggestion component\n\t * allows them to see and select the most commonly used and relevant queries.\n\t */\n\tvar AnalyticsSuggestions = (function (_super) {\n\t __extends(AnalyticsSuggestions, _super);\n\t /**\n\t * Creates a new AnalyticsSuggestions component.\n\t *\n\t * Also binds event handlers so that when a user selects a suggestion, an `omniboxFromLink` usage analytics event is\n\t * logged if the suggestion comes from a standalone search box, or an `omniboxAnalytics` usage analytics\n\t * event is logged otherwise.\n\t *\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the AnalyticsSuggestions component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function AnalyticsSuggestions(element, options, bindings) {\n\t var _this = _super.call(this, element, AnalyticsSuggestions.ID, bindings) || this;\n\t _this.options = options;\n\t _this.partialQueries = [];\n\t _this.lastSuggestions = [];\n\t _this.resultsToBuildWith = [];\n\t if (_this.options && 'omniboxSuggestionOptions' in _this.options) {\n\t _this.options = _.extend(_this.options, _this.options['omniboxSuggestionOptions']);\n\t }\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, AnalyticsSuggestions, _this.options);\n\t var rowTemplate = function (toRender) {\n\t var rowElement = Dom_1.$$('div', {\n\t className: 'magic-box-suggestion coveo-omnibox-selectable coveo-top-analytics-suggestion-row'\n\t });\n\t if (toRender['data']) {\n\t rowElement.el.innerHTML = toRender['data'];\n\t }\n\t return rowElement.el.outerHTML;\n\t };\n\t _this.options.onSelect = _this.options.onSelect || _this.onRowSelection;\n\t var suggestionStructure;\n\t if (_this.searchInterface.isNewDesign()) {\n\t suggestionStructure = {\n\t row: rowTemplate\n\t };\n\t }\n\t else {\n\t var headerTemplate = function () {\n\t var headerElement = Dom_1.$$('div', {\n\t className: 'coveo-top-analytics-suggestion-header'\n\t });\n\t var iconElement = Dom_1.$$('span', {\n\t className: 'coveo-icon-top-analytics'\n\t });\n\t var captionElement = Dom_1.$$('span', {\n\t className: 'coveo-caption'\n\t });\n\t if (_this.options.headerTitle) {\n\t captionElement.text(_this.options.headerTitle);\n\t }\n\t headerElement.append(iconElement.el);\n\t headerElement.append(captionElement.el);\n\t return headerElement.el.outerHTML;\n\t };\n\t suggestionStructure = {\n\t header: { template: headerTemplate, title: _this.options.headerTitle },\n\t row: rowTemplate\n\t };\n\t }\n\t _this.suggestionForOmnibox = new SuggestionForOmnibox_1.SuggestionForOmnibox(suggestionStructure, function (value, args) {\n\t _this.options.onSelect.call(_this, value, args);\n\t }, function (value, args) {\n\t _this.onRowTab.call(_this, value, args);\n\t });\n\t _this.bind.onRootElement(OmniboxEvents_1.OmniboxEvents.populateOmnibox, function (args) { return _this.handlePopulateOmnibox(args); });\n\t _this.bind.onRootElement(QueryEvents_1.QueryEvents.querySuccess, function () { return _this.partialQueries = []; });\n\t return _this;\n\t }\n\t AnalyticsSuggestions.prototype.selectSuggestion = function (suggestion) {\n\t if (this.currentlyDisplayedSuggestions) {\n\t if (isNaN(suggestion)) {\n\t if (this.currentlyDisplayedSuggestions[suggestion]) {\n\t Dom_1.$$(this.currentlyDisplayedSuggestions[suggestion].element).trigger('click');\n\t }\n\t }\n\t else {\n\t var currentlySuggested = _.findWhere(this.currentlyDisplayedSuggestions, { pos: suggestion });\n\t if (currentlySuggested) {\n\t Dom_1.$$(currentlySuggested.element).trigger('click');\n\t }\n\t }\n\t }\n\t };\n\t AnalyticsSuggestions.prototype.handlePopulateOmnibox = function (args) {\n\t var _this = this;\n\t Assert_1.Assert.exists(args);\n\t var promise = new Promise(function (resolve, reject) {\n\t var searchPromise = _this.usageAnalytics.getTopQueries({\n\t pageSize: _this.options.numberOfSuggestions,\n\t queryText: args.completeQueryExpression.word\n\t });\n\t searchPromise.then(function (results) {\n\t _this.resultsToBuildWith = _.map(results, function (result) {\n\t return {\n\t value: result\n\t };\n\t });\n\t _this.lastSuggestions = results;\n\t if (!_.isEmpty(_this.resultsToBuildWith) && args.completeQueryExpression.word != '') {\n\t _this.partialQueries.push(args.completeQueryExpression.word);\n\t }\n\t var element = _this.suggestionForOmnibox.buildOmniboxElement(_this.resultsToBuildWith, args);\n\t _this.currentlyDisplayedSuggestions = {};\n\t if (element) {\n\t _.map(Dom_1.$$(element).findAll('.coveo-omnibox-selectable'), function (selectable, i) {\n\t _this.currentlyDisplayedSuggestions[Dom_1.$$(selectable).text()] = {\n\t element: selectable,\n\t pos: i\n\t };\n\t });\n\t }\n\t resolve({\n\t element: element,\n\t zIndex: _this.options.omniboxZIndex\n\t });\n\t });\n\t searchPromise.catch(function () {\n\t resolve({\n\t element: undefined\n\t });\n\t });\n\t });\n\t args.rows.push({ deferred: promise });\n\t };\n\t AnalyticsSuggestions.prototype.onRowSelection = function (value, args) {\n\t args.clear();\n\t args.closeOmnibox();\n\t this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, value);\n\t this.usageAnalytics.logSearchEvent(this.getOmniboxAnalyticsEventCause(), {\n\t partialQueries: this.cleanCustomData(this.partialQueries),\n\t suggestionRanking: _.indexOf(_.pluck(this.resultsToBuildWith, 'value'), value),\n\t suggestions: this.cleanCustomData(this.lastSuggestions),\n\t partialQuery: args.completeQueryExpression.word\n\t });\n\t this.queryController.executeQuery();\n\t };\n\t AnalyticsSuggestions.prototype.onRowTab = function (value, args) {\n\t args.clear();\n\t args.closeOmnibox();\n\t this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, \"\" + value);\n\t this.usageAnalytics.logCustomEvent(this.getOmniboxAnalyticsEventCause(), {\n\t partialQueries: this.cleanCustomData(this.partialQueries),\n\t suggestionRanking: _.indexOf(_.pluck(this.resultsToBuildWith, 'value'), value),\n\t suggestions: this.cleanCustomData(this.lastSuggestions),\n\t partialQuery: args.completeQueryExpression.word\n\t }, this.element);\n\t };\n\t AnalyticsSuggestions.prototype.cleanCustomData = function (toClean, rejectLength) {\n\t if (rejectLength === void 0) { rejectLength = 256; }\n\t // Filter out only consecutive values that are the identical\n\t toClean = _.compact(_.filter(toClean, function (partial, pos, array) {\n\t return pos === 0 || partial !== array[pos - 1];\n\t }));\n\t // Custom dimensions cannot be an array in analytics service: Send a string joined by ; instead.\n\t // Need to replace ;\n\t toClean = _.map(toClean, function (partial) {\n\t return partial.replace(/;/g, '');\n\t });\n\t // Reduce right to get the last X words that adds to less then rejectLength\n\t var reducedToRejectLengthOrLess = [];\n\t _.reduceRight(toClean, function (memo, partial) {\n\t var totalSoFar = memo + partial.length;\n\t if (totalSoFar <= rejectLength) {\n\t reducedToRejectLengthOrLess.push(partial);\n\t }\n\t return totalSoFar;\n\t }, 0);\n\t toClean = reducedToRejectLengthOrLess.reverse();\n\t var ret = toClean.join(';');\n\t // analytics service can store max 256 char in a custom event\n\t // if we're over that, call cleanup again with an arbitrary 10 less char accepted\n\t if (ret.length >= 256) {\n\t return this.cleanCustomData(toClean, rejectLength - 10);\n\t }\n\t return toClean.join(';');\n\t };\n\t AnalyticsSuggestions.prototype.getOmniboxAnalyticsEventCause = function () {\n\t if (this.searchInterface instanceof SearchInterface_1.StandaloneSearchInterface) {\n\t return AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxFromLink;\n\t }\n\t return AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxAnalytics;\n\t };\n\t return AnalyticsSuggestions;\n\t}(Component_1.Component));\n\tAnalyticsSuggestions.ID = 'AnalyticsSuggestions';\n\t/**\n\t * The options for the component\n\t * @componentOptions\n\t */\n\tAnalyticsSuggestions.options = {\n\t /**\n\t * Specifies the z-index position at which the query suggestions render themselves in the {@link Omnibox}\n\t * component. Higher values are placed first.\n\t *\n\t * Default value is `52` and minimum value is `0`.\n\t */\n\t omniboxZIndex: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 52, min: 0 }),\n\t /**\n\t * Specifies the title of the query suggestions group in the {@link Omnibox} component. This option is not available\n\t * when using the default Lightning Friendly Theme (see\n\t * [Lightning Friendly Theme](https://developers.coveo.com/x/Y4EAAg)).\n\t *\n\t * Default value is the localized string for `\"Suggested Queries\"`.\n\t */\n\t headerTitle: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({ defaultValue: Strings_1.l('SuggestedQueries') }),\n\t /**\n\t * Specifies the number of query suggestions to request and display in the {@link Omnibox} component.\n\t *\n\t * Default value is `5` and minimum value is `1`.\n\t */\n\t numberOfSuggestions: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1 })\n\t};\n\texports.AnalyticsSuggestions = AnalyticsSuggestions;\n\tInitialization_1.Initialization.registerAutoCreateComponent(AnalyticsSuggestions);\n\n\n/***/ },\n/* 248 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar SuggestionForOmnibox_1 = __webpack_require__(246);\n\tvar Component_1 = __webpack_require__(109);\n\tvar ComponentOptions_1 = __webpack_require__(111);\n\tvar Assert_1 = __webpack_require__(14);\n\tvar Utils_1 = __webpack_require__(15);\n\tvar OmniboxEvents_1 = __webpack_require__(48);\n\tvar QueryStateModel_1 = __webpack_require__(103);\n\tvar Initialization_1 = __webpack_require__(108);\n\tvar AnalyticsActionListMeta_1 = __webpack_require__(127);\n\tvar Strings_1 = __webpack_require__(37);\n\tvar Dom_1 = __webpack_require__(61);\n\tvar _ = __webpack_require__(16);\n\t/**\n\t * The FieldSuggestions component provides query suggestions based on a particular facet field. For example, you could\n\t * use this component to provide auto-complete suggestions while the end user is typing a document\n\t * title.\n\t *\n\t * The query suggestions that this component provides appear in the {@link Omnibox} component.\n\t */\n\tvar FieldSuggestions = (function (_super) {\n\t __extends(FieldSuggestions, _super);\n\t /**\n\t * Creates a new FieldSuggestions component.\n\t * @param element The HTMLElement on which to instantiate the component.\n\t * @param options The options for the FieldSuggestions component.\n\t * @param bindings The bindings that the component requires to function normally. If not set, these will be\n\t * automatically resolved (with a slower execution time).\n\t */\n\t function FieldSuggestions(element, options, bindings) {\n\t var _this = _super.call(this, element, FieldSuggestions.ID, bindings) || this;\n\t _this.options = options;\n\t if (_this.options && 'omniboxSuggestionOptions' in _this.options) {\n\t _this.options = _.extend(_this.options, _this.options['omniboxSuggestionOptions']);\n\t }\n\t _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, FieldSuggestions, options);\n\t Assert_1.Assert.check(Utils_1.Utils.isCoveoField(_this.options.field), _this.options.field + ' is not a valid field');\n\t _this.options.onSelect = _this.options.onSelect || _this.onRowSelection;\n\t var rowTemplate = function (toRender) {\n\t var rowElement = Dom_1.$$('div', {\n\t className: 'magic-box-suggestion coveo-omnibox-selectable coveo-top-field-suggestion-row'\n\t });\n\t if (toRender['data']) {\n\t rowElement.el.innerHTML = toRender['data'];\n\t }\n\t return rowElement.el.outerHTML;\n\t };\n\t var suggestionStructure;\n\t if (_this.searchInterface.isNewDesign()) {\n\t suggestionStructure = {\n\t row: rowTemplate\n\t };\n\t }\n\t else {\n\t var headerTemplate = function () {\n\t var headerElement = Dom_1.$$('div', {\n\t className: 'coveo-top-field-suggestion-header'\n\t });\n\t var iconElement = Dom_1.$$('span', {\n\t className: 'coveo-icon-top-field'\n\t });\n\t var captionElement = Dom_1.$$('span', {\n\t className: 'coveo-caption'\n\t });\n\t if (_this.options.headerTitle) {\n\t captionElement.text(_this.options.headerTitle);\n\t }\n\t headerElement.append(iconElement.el);\n\t headerElement.append(captionElement.el);\n\t return headerElement.el.outerHTML;\n\t };\n\t suggestionStructure = {\n\t header: { template: headerTemplate, title: _this.options.headerTitle },\n\t row: rowTemplate\n\t };\n\t }\n\t _this.suggestionForOmnibox = new SuggestionForOmnibox_1.SuggestionForOmnibox(suggestionStructure, function (value, args) {\n\t _this.options.onSelect.call(_this, value, args);\n\t }, function (value, args) {\n\t _this.onRowTab(value, args);\n\t });\n\t _this.bind.onRootElement(OmniboxEvents_1.OmniboxEvents.populateOmnibox, function (args) { return _this.handlePopulateOmnibox(args); });\n\t return _this;\n\t }\n\t /**\n\t * Selects a currently displayed query suggestion. This implies that at least one suggestion must have been returned\n\t * at least once.\n\t * @param suggestion Either a number (0-based index position of the query suggestion to select) or a string that\n\t * matches the suggestion to select.\n\t */\n\t FieldSuggestions.prototype.selectSuggestion = function (suggestion) {\n\t if (this.currentlyDisplayedSuggestions) {\n\t if (isNaN(suggestion)) {\n\t if (this.currentlyDisplayedSuggestions[suggestion]) {\n\t Dom_1.$$(this.currentlyDisplayedSuggestions[suggestion].element).trigger('click');\n\t }\n\t }\n\t else {\n\t var currentlySuggested = _.findWhere(this.currentlyDisplayedSuggestions, { pos: suggestion });\n\t if (currentlySuggested) {\n\t Dom_1.$$(currentlySuggested.element).trigger('click');\n\t }\n\t }\n\t }\n\t };\n\t FieldSuggestions.prototype.handlePopulateOmnibox = function (args) {\n\t var _this = this;\n\t Assert_1.Assert.exists(args);\n\t var valueToSearch = args.completeQueryExpression.word;\n\t var promise = new Promise(function (resolve) {\n\t _this.queryController.getEndpoint().listFieldValues(_this.buildListFieldValueRequest(valueToSearch)).then(function (results) {\n\t var element = _this.suggestionForOmnibox.buildOmniboxElement(results, args);\n\t _this.currentlyDisplayedSuggestions = {};\n\t if (element) {\n\t _.map(Dom_1.$$(element).findAll('.coveo-omnibox-selectable'), function (selectable, i) {\n\t _this.currentlyDisplayedSuggestions[Dom_1.$$(selectable).text()] = {\n\t element: selectable,\n\t pos: i\n\t };\n\t });\n\t resolve({\n\t element: element,\n\t zIndex: _this.options.omniboxZIndex\n\t });\n\t }\n\t else {\n\t resolve({\n\t element: undefined\n\t });\n\t }\n\t }).catch(function () {\n\t resolve({\n\t element: undefined\n\t });\n\t });\n\t });\n\t args.rows.push({\n\t deferred: promise\n\t });\n\t };\n\t FieldSuggestions.prototype.onRowSelection = function (value, args) {\n\t args.clear();\n\t args.closeOmnibox();\n\t this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, value);\n\t this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxField, {});\n\t this.queryController.executeQuery();\n\t };\n\t FieldSuggestions.prototype.onRowTab = function (value, args) {\n\t args.clear();\n\t args.closeOmnibox();\n\t this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, \"\" + value);\n\t this.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.omniboxField, {}, this.element);\n\t };\n\t FieldSuggestions.prototype.buildListFieldValueRequest = function (valueToSearch) {\n\t return {\n\t field: this.options.field,\n\t ignoreAccents: true,\n\t sortCriteria: 'occurrences',\n\t maximumNumberOfValues: this.options.numberOfSuggestions,\n\t patternType: 'Wildcards',\n\t pattern: '*' + valueToSearch + '*',\n\t queryOverride: this.options.queryOverride\n\t };\n\t };\n\t return FieldSuggestions;\n\t}(Component_1.Component));\n\tFieldSuggestions.ID = 'FieldSuggestions';\n\t/**\n\t * @componentOptions\n\t */\n\tFieldSuggestions.options = {\n\t /**\n\t * Specifies the field from which to provide suggestions.\n\t *\n\t * Specifying a value for this option is required for the FieldSuggestions component to work.\n\t */\n\t field: ComponentOptions_1.ComponentOptions.buildFieldOption({ required: true }),\n\t /**\n\t * Specifies a query override to apply when retrieving suggestions. You can use any valid query expression (see\n\t * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)).\n\t *\n\t * Default value is `''`, which means that the component applies no query override by default.\n\t */\n\t queryOverride: ComponentOptions_1.ComponentOptions.buildStringOption({ defaultValue: '' }),\n\t /**\n\t * Specifies the z-index position at which the suggestions render themselves in the {@link Omnibox}.\n\t *\n\t * When there are multiple suggestion providers (e.g., {@link Facet} or {@link AnalyticsSuggestions}), components\n\t * with a higher omniboxZIndex values render themselves first.\n\t *\n\t * Default value is `51`. Minimum value is `0`.\n\t */\n\t omniboxZIndex: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 51, min: 0 }),\n\t /**\n\t * Specifies the title of the result suggestions group in the {@link Omnibox} component. This option is not\n\t * available when using the default Lightning Friendly Theme (see\n\t * [Lightning Friendly Theme](https://developers.coveo.com/x/Y4EAAg)).\n\t *\n\t * Default value is the localized string for `\"SuggestedResults\"`.\n\t */\n\t headerTitle: ComponentOptions_1.ComponentOptions.buildLocalizedStringOption({ defaultValue: Strings_1.l('SuggestedResults') }),\n\t /**\n\t * Specifies the number of suggestions to render in the {@link Omnibox}.\n\t *\n\t * Default value is `5`. Minimum value is `1`.\n\t */\n\t numberOfSuggestions: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1 }),\n\t /**\n\t * Specifies the event handler function to execute when the end user selects a suggested value un the\n\t * {@link Omnibox}. By default, the query box text is replaced by what the end user selected and a new query is\n\t * executed. You can, however, replace this default behavior by providing a callback function to execute when the\n\t * value is selected.\n\t *\n\t * You can only set this option in the `init` call of your search interface. You cannot set it directly in the\n\t * markup as an HTML attribute.\n\t *\n\t * **Example:**\n\t *\n\t * ```javascript\n\t * // You can call the init script using \"pure\" JavaScript:\n\t * Coveo.init(document.querySelector('#search'), {\n\t * FieldSuggestions : {\n\t * omniboxSuggestionOptions : {\n\t * onSelect : function(valueSelected, populateOmniBoxEventArgs){\n\t * // Do something special when a value is selected.\n\t * // You receive the selected value as the first argument, and the Omnibox object as the second argument.\n\t * }\n\t * }\n\t * }\n\t * })\n\t *\n\t * // Or you can call the init script using the jQuery extension:\n\t * $('#mySearch').coveo('init', {\n\t * FieldSuggestions : {\n\t * omniboxSuggestionOptions : {\n\t * onSelect : function(valueSelected, populateOmniBoxEventArgs){\n\t * // Do something special when a value is selected.\n\t * // You receive the selected value as the first argument, and the Omnibox object as the second argument.\n\t * }\n\t * }\n\t * }\n\t * })\n\t * ```\n\t */\n\t onSelect: ComponentOptions_1.ComponentOptions.buildCustomOption(function () {\n\t return null;\n\t })\n\t};\n\texports.FieldSuggestions = FieldSuggestions;\n\tInitialization_1.Initialization.registerAutoCreateComponent(FieldSuggestions);\n\n\n/***/ },\n/* 249 */,\n/* 250 */,\n/* 251 */,\n/* 252 */,\n/* 253 */,\n/* 254 */,\n/* 255 */,\n/* 256 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar _ = __webpack_require__(16);\n\texports.underscoreInstance = _;\n\tsetCoveoUnderscore();\n\tfunction setCoveoUnderscore() {\n\t if (window['Coveo'] == undefined) {\n\t window['Coveo'] = {};\n\t }\n\t if (window['Coveo']['_'] == undefined) {\n\t window['Coveo']['_'] = _;\n\t exports.underscoreInstance = window['Coveo']['_'];\n\t }\n\t}\n\twindow['_'] = _;\n\n\n/***/ },\n/* 257 */,\n/* 258 */,\n/* 259 */,\n/* 260 */,\n/* 261 */,\n/* 262 */,\n/* 263 */,\n/* 264 */,\n/* 265 */,\n/* 266 */,\n/* 267 */,\n/* 268 */,\n/* 269 */,\n/* 270 */,\n/* 271 */,\n/* 272 */,\n/* 273 */,\n/* 274 */,\n/* 275 */,\n/* 276 */,\n/* 277 */,\n/* 278 */,\n/* 279 */,\n/* 280 */,\n/* 281 */,\n/* 282 */,\n/* 283 */,\n/* 284 */,\n/* 285 */,\n/* 286 */,\n/* 287 */,\n/* 288 */,\n/* 289 */,\n/* 290 */,\n/* 291 */,\n/* 292 */,\n/* 293 */,\n/* 294 */,\n/* 295 */,\n/* 296 */,\n/* 297 */,\n/* 298 */,\n/* 299 */,\n/* 300 */,\n/* 301 */,\n/* 302 */,\n/* 303 */,\n/* 304 */,\n/* 305 */,\n/* 306 */,\n/* 307 */,\n/* 308 */,\n/* 309 */,\n/* 310 */,\n/* 311 */,\n/* 312 */,\n/* 313 */,\n/* 314 */,\n/* 315 */,\n/* 316 */,\n/* 317 */,\n/* 318 */,\n/* 319 */,\n/* 320 */,\n/* 321 */,\n/* 322 */,\n/* 323 */,\n/* 324 */,\n/* 325 */,\n/* 326 */,\n/* 327 */,\n/* 328 */,\n/* 329 */,\n/* 330 */,\n/* 331 */,\n/* 332 */,\n/* 333 */,\n/* 334 */,\n/* 335 */,\n/* 336 */,\n/* 337 */,\n/* 338 */,\n/* 339 */,\n/* 340 */,\n/* 341 */,\n/* 342 */,\n/* 343 */,\n/* 344 */,\n/* 345 */,\n/* 346 */,\n/* 347 */,\n/* 348 */,\n/* 349 */,\n/* 350 */,\n/* 351 */,\n/* 352 */,\n/* 353 */,\n/* 354 */,\n/* 355 */,\n/* 356 */,\n/* 357 */,\n/* 358 */,\n/* 359 */,\n/* 360 */,\n/* 361 */,\n/* 362 */,\n/* 363 */,\n/* 364 */,\n/* 365 */,\n/* 366 */,\n/* 367 */,\n/* 368 */,\n/* 369 */,\n/* 370 */,\n/* 371 */,\n/* 372 */,\n/* 373 */,\n/* 374 */,\n/* 375 */,\n/* 376 */,\n/* 377 */,\n/* 378 */,\n/* 379 */,\n/* 380 */,\n/* 381 */,\n/* 382 */,\n/* 383 */,\n/* 384 */,\n/* 385 */,\n/* 386 */,\n/* 387 */,\n/* 388 */,\n/* 389 */,\n/* 390 */,\n/* 391 */,\n/* 392 */,\n/* 393 */,\n/* 394 */,\n/* 395 */,\n/* 396 */,\n/* 397 */,\n/* 398 */,\n/* 399 */,\n/* 400 */,\n/* 401 */,\n/* 402 */,\n/* 403 */,\n/* 404 */,\n/* 405 */,\n/* 406 */,\n/* 407 */,\n/* 408 */,\n/* 409 */,\n/* 410 */,\n/* 411 */,\n/* 412 */,\n/* 413 */,\n/* 414 */,\n/* 415 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar CoreHelpers_1 = __webpack_require__(178);\n\tvar _ = __webpack_require__(16);\n\t// Webpack output a library target with a temporary name.\n\t// This is to allow end user to put CoveoJsSearch.Dependencie.js before or after the main CoveoJsSearch.js, without breaking\n\t// This code swap the current module to the \"real\" Coveo variable.\n\tfunction swapVar(scope) {\n\t if (window['Coveo'] == undefined) {\n\t window['Coveo'] = scope;\n\t }\n\t else {\n\t _.each(_.keys(scope), function (k) {\n\t window['Coveo'][k] = scope[k];\n\t });\n\t }\n\t CoreHelpers_1.CoreHelpers.exportAllHelpersGlobally(window['Coveo']);\n\t if (window['__extends'] == undefined) {\n\t var __extends = function (d, b) {\n\t for (var p in b) {\n\t if (b.hasOwnProperty(p)) {\n\t d[p] = b[p];\n\t }\n\t }\n\t function __() {\n\t this.constructor = d;\n\t }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t window['__extends'] = __extends;\n\t }\n\t}\n\texports.swapVar = swapVar;\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** CoveoJsSearch.Searchbox.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 1dcfc08b56cfe796882a\n **/","export { underscoreInstance as _ } from './ui/Base/CoveoUnderscore';\nexport * from './BaseModules';\nexport * from './MiscModules';\nexport * from './RestModules';\nexport * from './EventsModules';\nexport * from './UtilsModules';\nexport * from './ControllersModules';\nexport * from './ModelsModules';\nexport * from './UIBaseModules';\nexport * from './TemplatesModules';\n\nexport { Analytics } from './ui/Analytics/Analytics';\nexport { AnalyticsSuggestions } from './ui/AnalyticsSuggestions/AnalyticsSuggestions';\nexport { FieldSuggestions } from './ui/FieldSuggestions/FieldSuggestions';\nexport { Omnibox } from './ui/Omnibox/Omnibox';\nexport { Querybox } from './ui/Querybox/Querybox';\nexport { SearchButton } from './ui/SearchButton/SearchButton';\nexport { Searchbox } from './ui/Searchbox/Searchbox';\n\nimport { swapVar } from './SwapVar';\nswapVar(this);\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/SearchboxIndex.ts\n **/","module.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/amd-define.js\n ** module id = 6\n ** module chunks = 0 1\n **/","import { shim } from './misc/PromisesShim';\nshim();\nimport { customEventPolyfill } from './misc/CustomEventPolyfill';\ncustomEventPolyfill();\n\n// MISC\nexport { version } from './misc/Version';\nexport { SearchEndpoint } from './rest/SearchEndpoint';\nexport * from './ExternalModulesShim';\n\n// Default language needs to be set after external module, since this is where l10n will be imported\nimport { defaultLanguage } from './strings/DefaultLanguage';\ndefaultLanguage();\nexport { setLanguageAfterPageLoaded } from './strings/DefaultLanguage';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/BaseModules.ts\n **/","export function shim() {\n\n Promise.prototype['finally'] = function finallyPolyfill(callback) {\n let constructor = this.constructor;\n return this.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n let rethrowError = (self) => {\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\n });\n };\n\n if (typeof Promise.prototype['done'] !== 'function') {\n Promise.prototype['done'] = function (onFulfilled, onRejected) {\n let self = arguments.length ? this.then.apply(this, arguments) : this;\n rethrowError(self);\n return this;\n };\n }\n\n if (typeof Promise.prototype['fail'] !== 'function') {\n Promise.prototype['fail'] = function (onFulfilled, onRejected) {\n let self = arguments.length ? this.catch.apply(this, arguments) : this;\n rethrowError(self);\n return this;\n };\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/PromisesShim.ts\n **/","\n// CustomEvent polyfill from MDN\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill\nexport function customEventPolyfill() {\n // window.CustomEvent is missing from the definitions\n if (typeof (window).CustomEvent === 'function') {\n return;\n }\n\n let CustomEvent = (event, params) => {\n params = params || { bubbles: false, cancelable: false, detail: undefined };\n let customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return customEvent;\n };\n\n // window.Event is specific to IE\n CustomEvent.prototype = (window).Event.prototype;\n\n (window).CustomEvent = CustomEvent;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/CustomEventPolyfill.ts\n **/","export var version = {\n 'lib': '1.2537.43',\n 'product': '1.2537.43',\n 'supportedApiVersion': 2\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/Version.ts\n **/","import { ISearchEndpointOptions, ISearchEndpoint, IViewAsHtmlOptions } from './SearchEndpointInterface';\nimport { EndpointCaller, IEndpointCallParameters, ISuccessResponse, IErrorResponse, IRequestInfo } from '../rest/EndpointCaller';\nimport { IEndpointCallOptions } from '../rest/SearchEndpointInterface';\nimport { IStringMap } from './GenericParam';\nimport { Logger } from '../misc/Logger';\nimport { Assert } from '../misc/Assert';\nimport { IQuery } from '../rest/Query';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { version } from '../misc/Version';\nimport { IListFieldValuesRequest } from '../rest/ListFieldValuesRequest';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { IFieldDescription } from '../rest/FieldDescription';\nimport { IListFieldsResult } from '../rest/ListFieldsResult';\nimport { IExtension } from '../rest/Extension';\nimport { IRatingRequest } from '../rest/RatingRequest';\nimport { ITaggingRequest } from '../rest/TaggingRequest';\nimport { IRevealQuerySuggestRequest, IRevealQuerySuggestResponse } from '../rest/RevealQuerySuggest';\nimport { ISentryLog } from './SentryLog';\nimport { ISubscriptionRequest, ISubscription } from '../rest/Subscription';\nimport { AjaxError } from '../rest/AjaxError';\nimport { MissingAuthenticationError } from '../rest/MissingAuthenticationError';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { QueryError } from '../rest/QueryError';\nimport { Utils } from '../utils/Utils';\nimport { shim } from '../misc/PromisesShim';\nimport _ = require('underscore');\nshim();\n\nexport class DefaultSearchEndpointOptions implements ISearchEndpointOptions {\n restUri: string;\n version: string = 'v2';\n queryStringArguments: IStringMap = {};\n anonymous: boolean = false;\n accessToken: string;\n renewAccessToken: () => Promise;\n username: string;\n password: string;\n searchAlertsUri: string;\n isGuestUser: boolean = false;\n}\n\n/**\n * A search endpoint allows to execute various actions against the Coveo Search API and index.
\n * For example, you can search, list field values, get the quickview content for a document, etc.
\n * Any actions that you execute using this class will not trigger a full query cycle for the Coveo components.
\n * This is because this class will not trigger any query events directly.
\n * If you wish to execute a query that all components will react to (and trigger the corresponding query events), use the {@link QueryController}\n */\nexport class SearchEndpoint implements ISearchEndpoint {\n\n /**\n * A map of all the initialized endpoint.
\n * eg : Coveo.SearchEndpoint.endpoints['default'] will return the default endpoint that was created at initialization\n * @type {{}}\n */\n static endpoints: { [endpoint: string]: SearchEndpoint; } = {};\n\n /**\n * Configure an endpoint that will point to a Coveo Cloud index, which contains a set of public sources with no security on them.
\n * Used for demo purposes and ease of setup.\n * @param otherOptions A set of additional options to use when configuring this endpoint\n */\n static configureSampleEndpoint(otherOptions?: ISearchEndpointOptions) {\n if (SearchEndpoint.isUseLocalArgumentPresent()) {\n // This is a handy flag to quickly test a local search API and alerts\n SearchEndpoint.endpoints['default'] = new SearchEndpoint(_.extend({\n restUri: 'http://localhost:8100/rest/search',\n searchAlertsUri: 'http://localhost:8088/rest/search/alerts/'\n }, otherOptions));\n } else {\n // This OAuth token points to the organization used for samples.\n // It contains a set of harmless content sources.\n SearchEndpoint.endpoints['default'] = new SearchEndpoint(_.extend({\n restUri: 'https://cloudplatform.coveo.com/rest/search',\n accessToken: '52d806a2-0f64-4390-a3f2-e0f41a4a73ec'\n }, otherOptions));\n }\n }\n\n /**\n * Configure an endpoint that will point to a Coveo Cloud index V2, which contains a set of public sources with no security on them.
\n * Used for demo purposes and ease of setup.\n * @param otherOptions A set of additional options to use when configuring this endpoint\n */\n static configureSampleEndpointV2(optionsOPtions?: ISearchEndpointOptions) {\n SearchEndpoint.endpoints['default'] = new SearchEndpoint(_.extend({\n restUri: 'https://platform.cloud.coveo.com/rest/search',\n accessToken: 'xx564559b1-0045-48e1-953c-3addd1ee4457',\n queryStringArguments: {\n organizationID: 'searchuisamples',\n viewAllContent: 1\n }\n }));\n }\n\n /**\n * Configure an endpoint to a Coveo Cloud index.\n * @param organization The organization id of your Coveo cloud index\n * @param token The token to use to execute query. If null, you will most probably need to login when querying.\n * @param uri The uri of your cloud Search API. By default, will point to the production environment\n * @param otherOptions A set of additional options to use when configuring this endpoint\n */\n static configureCloudEndpoint(organization?: string, token?: string, uri: string = 'https://cloudplatform.coveo.com/rest/search', otherOptions?: ISearchEndpointOptions) {\n let options: ISearchEndpointOptions = {\n restUri: uri,\n accessToken: token,\n queryStringArguments: { organizationId: organization }\n };\n\n let merged = SearchEndpoint.mergeConfigOptions(options, otherOptions);\n\n SearchEndpoint.endpoints['default'] = new SearchEndpoint(SearchEndpoint.removeUndefinedConfigOption(merged));\n }\n\n /**\n * Configure an endpoint to a Coveo Cloud index, in the V2 platform.\n * @param organization The organization id of your Coveo cloud index\n * @param token The token to use to execute query. If null, you will most probably need to login when querying.\n * @param uri The uri of your cloud Search API. By default, will point to the production environment\n * @param otherOptions A set of additional options to use when configuring this endpoint\n */\n static configureCloudV2Endpoint(organization?: string, token?: string, uri: string = 'https://platform.cloud.coveo.com/rest/search', otherOptions?: ISearchEndpointOptions) {\n return SearchEndpoint.configureCloudEndpoint(organization, token, uri, otherOptions);\n }\n\n /**\n * Configure an endpoint to a Coveo on premise index.\n * @param uri The uri of your Coveo Search API endpoint. eg : http://myserver:8080/rest/search\n * @param token The token to use to execute query. If null, you will most probably need to login when querying (unless the search api is configured using advanced auth options, like windows auth or claims)\n * @param otherOptions A set of additional options to use when configuring this endpoint\n */\n static configureOnPremiseEndpoint(uri: string, token?: string, otherOptions?: ISearchEndpointOptions) {\n let merged = SearchEndpoint.mergeConfigOptions({\n restUri: uri,\n accessToken: token\n }, otherOptions);\n\n SearchEndpoint.endpoints['default'] = new SearchEndpoint(SearchEndpoint.removeUndefinedConfigOption(merged));\n }\n\n static removeUndefinedConfigOption(config: ISearchEndpointOptions) {\n _.each(_.keys(config), (key) => {\n if (config[key] == undefined) {\n delete config[key];\n }\n });\n return config;\n }\n\n static mergeConfigOptions(first: ISearchEndpointOptions, second: ISearchEndpointOptions): ISearchEndpointOptions {\n first = SearchEndpoint.removeUndefinedConfigOption(first);\n second = SearchEndpoint.removeUndefinedConfigOption(second);\n return _.extend({}, first, second);\n }\n\n public logger: Logger;\n public isRedirecting: boolean;\n protected caller: EndpointCaller;\n private onUnload: (...args: any[]) => void;\n\n /**\n * Create a new SearchEndpoint.
\n * Will use a set of sane default options, and merge them with the options parameter.
\n * Will create an {@link EndpointCaller} and use it to communicate with the endpoint internally\n * @param options\n */\n constructor(public options?: ISearchEndpointOptions) {\n Assert.exists(options);\n Assert.exists(options.restUri);\n\n // For backward compatibility, we set anonymous to true when an access token\n // is specified on a page loaded through the filesystem. This causes withCredentials\n // to NOT be set, allowing those pages to work with non Windows/Basic/Cookie\n // authentication. If anonymous is explicitly set to false, we'll use withCredentials.\n let defaultOptions = new DefaultSearchEndpointOptions();\n defaultOptions.anonymous = window.location.href.indexOf('file://') == 0 && Utils.isNonEmptyString(options.accessToken);\n this.options = _.extend({}, defaultOptions, options);\n\n // Forward any debug=1 query argument to the REST API to ease debugging\n if (SearchEndpoint.isDebugArgumentPresent()) {\n this.options.queryStringArguments['debug'] = 1;\n }\n this.onUnload = () => {\n this.handleUnload();\n };\n window.addEventListener('beforeunload', this.onUnload);\n this.logger = new Logger(this);\n this.createEndpointCaller();\n }\n\n public reset() {\n this.createEndpointCaller();\n }\n\n /**\n * Set a function which will allow external code to modify all endpoint call parameters before they are sent by the browser.\n *\n * Used in very specific scenario where the network infrastructure require special request headers to be added or removed, for example.\n * @param requestModifier\n */\n public setRequestModifier(requestModifier: (params: IRequestInfo) => IRequestInfo) {\n this.caller.options.requestModifier = requestModifier;\n }\n\n /**\n * Return the base uri of the endpoint to perform search\n * @returns {string}\n */\n public getBaseUri(): string {\n return this.buildBaseUri('');\n }\n\n /**\n * Return the base uri of the endpoint for search alert\n * @returns {string}\n */\n public getBaseAlertsUri(): string {\n return this.buildSearchAlertsUri('');\n }\n\n /**\n * Get the uri that can be used to authenticate against the given provider\n * @param provider The provider name\n * @param returnUri The uri at which to return after the authentication is completed\n * @param message The message for authentication\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {string}\n */\n @path('/login/')\n @accessTokenInUrl()\n public getAuthenticationProviderUri(provider: string, returnUri?: string, message?: string, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): string {\n let queryString = this.buildBaseQueryString(callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n callParams.url += provider + '?';\n\n if (Utils.isNonEmptyString(returnUri)) {\n callParams.url += 'redirectUri=' + encodeURIComponent(returnUri) + '&';\n } else if (Utils.isNonEmptyString(message)) {\n callParams.url += 'message=' + encodeURIComponent(message) + '&';\n }\n callParams.url += callParams.queryString.join('&');\n return callParams.url;\n }\n\n /**\n * is the search endpoint using jsonp internally to communicate with Search API\n * @returns {boolean}\n */\n public isJsonp(): boolean {\n return this.caller.useJsonp;\n }\n\n /**\n * Perform a search on the index and returns a Promise of {@link IQueryResults}.
\n * Will modify the query results slightly, by adding additional information on each results (an id, the state object, etc.)\n * @param query The query to execute. Typically, the query object is built using a {@link QueryBuilder}\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @path('/')\n @method('POST')\n @responseType('text')\n public search(query: IQuery, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n Assert.exists(query);\n\n callParams.requestData = query;\n\n this.logger.info('Performing REST query', query);\n\n return this.performOneCall(callParams, callOptions).then((results?: IQueryResults) => {\n this.logger.info('REST query successful', results, query);\n\n // Version check\n // If the SearchAPI doesn't give us any apiVersion info, we assume version 1 (before apiVersion was implemented)\n if (results.apiVersion == null) {\n results.apiVersion = 1;\n }\n if (results.apiVersion < version.supportedApiVersion) {\n this.logger.error('Please update your REST Search API');\n }\n\n // If the server specified no search ID generated one using the client-side\n // GUID generator. We prefer server generated guids to allow tracking a query\n // all the way from the analytics to the logs.\n if (Utils.isNullOrEmptyString(results.searchUid)) {\n results.searchUid = QueryUtils.createGuid();\n }\n QueryUtils.setIndexAndUidOnQueryResults(query, results, results.searchUid, results.pipeline, results.splitTestRun);\n QueryUtils.setTermsToHighlightOnQueryResults(query, results);\n return results;\n });\n }\n /**\n * Get a link/uri to download a set of results, for a given query, to an xlsx format.
\n * Note : This does not download automatically the documents, merely provide an url at which to download them.\n * @param query The query for which to get the xlsx documents\n * @param numberOfResults The number of results that should be downloaded\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {string}\n */\n @path('/')\n @accessTokenInUrl()\n public getExportToExcelLink(query: IQuery, numberOfResults: number, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): string {\n let queryString = this.buildBaseQueryString(callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n queryString = this.buildCompleteQueryString(null, query);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n if (numberOfResults != null) {\n callParams.queryString.push('numberOfResults=' + numberOfResults);\n }\n\n callParams.queryString.push('format=xlsx');\n\n return callParams.url + '?' + callParams.queryString.join('&');\n }\n\n /**\n * Get the raw datastream for a given document. This is typically used to get a thumbnail for a document.
\n * Return an array buffer :
\n * eg : let rawBinary = String.fromCharCode.apply(null, new Uint8Array(response));
\n * img.setAttribute('src', 'data:image/png;base64,' + btoa(rawBinary));\n * @param documentUniqueId Typically the {@link IQueryResult.uniqueId} on each result\n * @param dataStreamType Normally : '$Thumbnail'\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise|Promise}\n */\n @path('/datastream')\n @accessTokenInUrl()\n @method('GET')\n @responseType('arraybuffer')\n public getRawDataStream(documentUniqueId: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions, callParams?: IEndpointCallParameters): Promise {\n Assert.exists(documentUniqueId);\n\n let queryString = this.buildViewAsHtmlQueryString(documentUniqueId, callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n this.logger.info('Performing REST query for datastream ' + dataStreamType + ' on document uniqueID' + documentUniqueId);\n\n callParams.queryString.push('dataStream=' + dataStreamType);\n return this.performOneCall(callParams).then((results) => {\n this.logger.info('REST query successful', results, documentUniqueId);\n return results;\n });\n }\n\n /**\n * Return an url that will allow to see the datastream for a given document. This is typically used to get a thumbnail for a document.
\n * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n * @param dataStreamType Normally : '$Thumbnail'\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {string}\n */\n @path('/datastream')\n @accessTokenInUrl()\n public getViewAsDatastreamUri(documentUniqueID: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions, callParams?: IEndpointCallParameters): string {\n callOptions = _.extend({}, callOptions);\n\n let queryString = this.buildBaseQueryString(callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n queryString = this.buildCompleteQueryString(callOptions.query, callOptions.queryObject);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n\n return callParams.url + '?' + callParams.queryString.join('&') + '&dataStream=' + encodeURIComponent(dataStreamType);\n }\n\n /**\n * Return a single document, using it's uniqueId\n * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @path('/document')\n @method('GET')\n @responseType('text')\n public getDocument(documentUniqueID: string, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n let queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n return this.performOneCall(callParams);\n }\n\n /**\n * Return the content for a single document, as text.
\n * Think : quickview\n * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @path('/text')\n @method('GET')\n @responseType('text')\n public getDocumentText(documentUniqueID: string, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n let queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n return this.performOneCall<{ content: string, duration: number }>(callParams)\n .then((data) => {\n return data.content;\n });\n }\n\n /**\n * Return the content for a single document, as an HTMLDocument.
\n * Think : quickview\n * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @path('/html')\n @method('POST')\n @responseType('document')\n public getDocumentHtml(documentUniqueID: string, callOptions?: IViewAsHtmlOptions, callParams?: IEndpointCallParameters): Promise {\n callOptions = _.extend({}, callOptions);\n\n let queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n callParams.requestData = callOptions.queryObject || { q: callOptions.query };\n\n return this.performOneCall(callParams);\n }\n\n /**\n * Return an url that will allow to see a single document content, as HTML.
\n * Think : quickview\n * @param documentUniqueID Typically the {@link IQueryResult.uniqueId} on each result\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {string}\n */\n @path('/html')\n @accessTokenInUrl()\n public getViewAsHtmlUri(documentUniqueID: string, callOptions?: IViewAsHtmlOptions, callParams?: IEndpointCallParameters): string {\n let queryString = this.buildBaseQueryString(callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n\n queryString = this.buildViewAsHtmlQueryString(documentUniqueID, callOptions);\n callParams.queryString = callParams.queryString.concat(queryString);\n callParams.queryString = _.uniq(callParams.queryString);\n return callParams.url + '?' + callParams.queryString.join('&');\n }\n\n @path('/values')\n @method('POST')\n @responseType('text')\n public batchFieldValues(request: IListFieldValuesRequest, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n Assert.exists(request);\n\n return this.performOneCall(callParams)\n .then((data) => {\n this.logger.info('REST list field values successful', data.values, request);\n return data.values;\n });\n }\n\n /**\n * List the possible values for a given request\n * @param request The request for which to list the possible field values\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise|Promise}\n */\n @path('/values')\n @method('POST')\n @responseType('text')\n public listFieldValues(request: IListFieldValuesRequest, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n Assert.exists(request);\n\n callParams.requestData = request;\n\n this.logger.info('Listing field values', request);\n\n return this.performOneCall(callParams)\n .then((data) => {\n this.logger.info('REST list field values successful', data.values, request);\n return data.values;\n });\n }\n\n /**\n * List all fields for the index, and return an array of their description\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise|Promise}\n */\n @path('/fields')\n @method('GET')\n @responseType('text')\n public listFields(callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n this.logger.info('Listing fields');\n\n return this.performOneCall(callParams).then((data) => {\n return data.fields;\n });\n }\n\n /**\n * List all available query extensions for the search endpoint\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @path('/extensions')\n @method('GET')\n @responseType('text')\n public extensions(callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n this.logger.info('Listing extensions');\n\n return this.performOneCall(callParams);\n }\n\n /**\n * Allow to rate a single document in the index (granted that collaborative rating is enabled on your index)\n * @param ratingRequest Document id and rating\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise|Promise}\n */\n @path('/rating')\n @method('POST')\n @responseType('text')\n public rateDocument(ratingRequest: IRatingRequest, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n this.logger.info('Rating a document', ratingRequest);\n\n callParams.requestData = ratingRequest;\n\n return this.performOneCall(callParams).then(() => {\n return true;\n });\n }\n\n /**\n * Allow to tag a single document\n * @param taggingRequest Document id and tag action to perform\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise|Promise}\n */\n @path('/tag')\n @method('POST')\n @responseType('text')\n public tagDocument(taggingRequest: ITaggingRequest, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n this.logger.info('Tagging a document', taggingRequest);\n\n callParams.requestData = taggingRequest;\n\n return this.performOneCall(callParams).then(() => {\n return true;\n });\n }\n\n /**\n * Returns a list of Coveo Machine Learning query suggestions, based on the given request\n * @param request query and number of suggestions to return\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @path('/querySuggest')\n @method('GET')\n @responseType('text')\n public getRevealQuerySuggest(request: IRevealQuerySuggestRequest, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n this.logger.info('Get Reveal Query Suggest', request);\n\n callParams.requestData = request;\n\n return this.performOneCall(callParams);\n }\n\n /**\n * Allow to follow a document or a query on the search alerts service\n * @param request\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @alertsPath('/subscriptions')\n @accessTokenInUrl('accessToken')\n @method('POST')\n @requestDataType('application/json')\n @responseType('text')\n public follow(request: ISubscriptionRequest, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n callParams.requestData = request;\n\n this.logger.info('Following a document or a query', request);\n\n return this.performOneCall(callParams);\n }\n\n private currentListSubscriptions: Promise;\n\n /**\n * Return a Promise of array of current subscriptions\n * @param page The page of the subsctiptions\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {any}\n */\n @alertsPath('/subscriptions')\n @accessTokenInUrl('accessToken')\n @method('GET')\n @requestDataType('application/json')\n @responseType('text')\n public listSubscriptions(page: number, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters) {\n if (this.options.isGuestUser) {\n return new Promise((resolve, reject) => {\n reject();\n });\n }\n if (this.currentListSubscriptions == null) {\n callParams.queryString.push('page=' + (page || 0));\n\n this.currentListSubscriptions = this.performOneCall(callParams);\n this.currentListSubscriptions.then((data: any) => {\n this.currentListSubscriptions = null;\n return data;\n }).catch((e: AjaxError) => {\n // Trap 503 error, as the listSubscription call is called on every page initialization\n // to check for current subscriptions. By default, the search alert service is not enabled for most organization\n // Don't want to pollute the console with un-needed noise and confusion\n if (e.status != 503) {\n throw e;\n }\n });\n }\n return this.currentListSubscriptions;\n }\n\n /**\n * Update a subscription with new parameters\n * @param subscription The subscription to update with new parameters\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @alertsPath('/subscriptions/')\n @accessTokenInUrl('accessToken')\n @method('PUT')\n @requestDataType('application/json')\n @responseType('text')\n public updateSubscription(subscription: ISubscription, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n callParams.requestData = subscription;\n\n this.logger.info('Updating a subscription', subscription);\n\n callParams.url += subscription.id;\n\n return this.performOneCall(callParams);\n }\n\n /**\n * Delete a subscription\n * @param subscription The subscription to delete\n * @param callOptions Additional set of options to use for this call.\n * @param callParams Options injected by the applied decorators.\n * @returns {Promise}\n */\n @alertsPath('/subscriptions/')\n @accessTokenInUrl('accessToken')\n @method('DELETE')\n @requestDataType('application/json')\n @responseType('text')\n public deleteSubscription(subscription: ISubscription, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise {\n callParams.url += subscription.id;\n\n return this.performOneCall(callParams);\n }\n\n @path('/log')\n @method('POST')\n public logError(sentryLog: ISentryLog, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters) {\n callParams.requestData = sentryLog;\n return this.performOneCall(callParams, callOptions)\n .then(() => {\n return true;\n })\n .catch(() => {\n return false;\n });\n }\n\n public nuke() {\n window.removeEventListener('beforeunload', this.onUnload);\n }\n\n protected createEndpointCaller() {\n this.caller = new EndpointCaller(this.options);\n }\n\n private static isDebugArgumentPresent(): boolean {\n return /[?&]debug=1([&]|$)/.test(window.location.search);\n }\n\n private static isUseLocalArgumentPresent(): boolean {\n return /[?&]useLocal=1([&]|$)/.test(window.location.search);\n }\n\n private handleUnload() {\n this.isRedirecting = true;\n }\n\n private buildBaseUri(path: string): string {\n Assert.isString(path);\n let uri = this.options.restUri;\n uri = this.removeTrailingSlash(uri);\n\n if (Utils.isNonEmptyString(this.options.version)) {\n uri += '/' + this.options.version;\n }\n uri += path;\n return uri;\n }\n\n public buildSearchAlertsUri(path: string): string {\n Assert.isString(path);\n let uri = this.options.searchAlertsUri || this.options.restUri + '/alerts';\n if (uri == null) {\n return null;\n }\n uri = this.removeTrailingSlash(uri);\n uri += path;\n return uri;\n }\n\n // see https://github.com/palantir/tslint/issues/1421\n // tslint:disable-next-line:no-unused-variable\n private buildAccessToken(tokenKey: string): string[] {\n let queryString: string[] = [];\n\n if (Utils.isNonEmptyString(this.options.accessToken)) {\n queryString.push(tokenKey + '=' + encodeURIComponent(this.options.accessToken));\n }\n\n return queryString;\n }\n\n private buildBaseQueryString(callOptions?: IEndpointCallOptions): string[] {\n callOptions = _.extend({}, callOptions);\n let queryString: string[] = [];\n\n for (let name in this.options.queryStringArguments) {\n queryString.push(name + '=' + encodeURIComponent(this.options.queryStringArguments[name]));\n }\n\n if (callOptions && _.isArray(callOptions.authentication) && callOptions.authentication.length != 0) {\n queryString.push('authentication=' + callOptions.authentication.join(','));\n }\n\n return queryString;\n }\n\n private buildCompleteQueryString(query?: string, queryObject?: IQuery): string[] {\n // In an ideal parallel reality, the entire query used in the 'search' call is used here.\n // In this reality however, we must support GET calls (ex: GET /html) for CORS/JSONP/IE reasons.\n // Therefore, we cherry-pick parts of the query to include in a 'query string' instead of a body payload.\n let queryString: string[] = [];\n if (queryObject) {\n _.each(['q', 'aq', 'cq', 'dq', 'searchHub', 'tab', 'language', 'pipeline', 'lowercaseOperators'], (key) => {\n if (queryObject[key]) {\n queryString.push(key + '=' + encodeURIComponent(queryObject[key]));\n }\n });\n\n _.each(queryObject.context, (value, key) => {\n queryString.push('context[' + key + ']=' + encodeURIComponent(value));\n });\n\n if (queryObject.fieldsToInclude) {\n queryString.push(`fieldsToInclude=[${_.map(queryObject.fieldsToInclude, (field) => '\"' + encodeURIComponent(field.replace('@', '')) + '\"').join(',')}]`);\n }\n\n } else if (query) {\n queryString.push('q=' + encodeURIComponent(query));\n }\n\n return queryString;\n }\n\n private buildViewAsHtmlQueryString(uniqueId: string, callOptions?: IViewAsHtmlOptions): string[] {\n callOptions = _.extend({}, callOptions);\n let queryString: string[] = this.buildBaseQueryString(callOptions);\n queryString.push('uniqueId=' + encodeURIComponent(uniqueId));\n\n if (callOptions.query || callOptions.queryObject) {\n queryString.push('enableNavigation=true');\n }\n\n if (callOptions.requestedOutputSize) {\n queryString.push('requestedOutputSize=' + encodeURIComponent(callOptions.requestedOutputSize.toString()));\n }\n\n if (callOptions.contentType) {\n queryString.push('contentType=' + encodeURIComponent(callOptions.contentType));\n }\n return queryString;\n }\n\n private performOneCall(params: IEndpointCallParameters, callOptions?: IEndpointCallOptions, autoRenewToken = true): Promise {\n let queryString = this.buildBaseQueryString(callOptions);\n params.queryString = params.queryString.concat(queryString);\n params.queryString = _.uniq(params.queryString);\n\n return this.caller.call(params)\n .then((response?: ISuccessResponse) => {\n if (response.data && (response.data).clientDuration) {\n (response.data).clientDuration = response.duration;\n }\n return response.data;\n }).catch((error?: IErrorResponse) => {\n if (autoRenewToken && this.canRenewAccessToken() && this.isAccessTokenExpiredStatus(error.statusCode)) {\n this.renewAccessToken().then(() => {\n return this.performOneCall(params, callOptions, autoRenewToken);\n })\n .catch(() => {\n return Promise.reject(this.handleErrorResponse(error));\n });\n } else if (error.statusCode == 0 && this.isRedirecting) {\n // The page is getting redirected\n // Set timeout on return with empty string, since it does not really matter\n _.defer(function () {\n return '';\n });\n } else {\n return Promise.reject(this.handleErrorResponse(error));\n }\n });\n }\n\n private handleErrorResponse(errorResponse: IErrorResponse): Error {\n if (this.isMissingAuthenticationProviderStatus(errorResponse.statusCode)) {\n return new MissingAuthenticationError(errorResponse.data['provider']);\n } else if (errorResponse.data && errorResponse.data.message && errorResponse.data.type) {\n return new QueryError(errorResponse);\n } else if (errorResponse.data && errorResponse.data.message) {\n return new AjaxError(`Request Error : ${errorResponse.data.message}`, errorResponse.statusCode);\n } else {\n return new AjaxError('Request Error', errorResponse.statusCode);\n }\n }\n\n private canRenewAccessToken(): boolean {\n return Utils.isNonEmptyString(this.options.accessToken) && _.isFunction(this.options.renewAccessToken);\n }\n\n private renewAccessToken(): Promise {\n this.logger.info('Renewing expired access token');\n return this.options.renewAccessToken().then((token: string) => {\n Assert.isNonEmptyString(token);\n this.options.accessToken = token;\n this.createEndpointCaller();\n return token;\n }).catch((e: string) => {\n this.logger.error('Failed to renew access token', e);\n return e;\n });\n }\n\n private removeTrailingSlash(uri: string) {\n if (this.hasTrailingSlash(uri)) {\n uri = uri.substr(0, uri.length - 1);\n }\n return uri;\n }\n\n private hasTrailingSlash(uri: string) {\n return uri.charAt(uri.length - 1) == '/';\n }\n\n private isMissingAuthenticationProviderStatus(status: number): boolean {\n return status == 402;\n }\n\n private isAccessTokenExpiredStatus(status: number): boolean {\n return status == 419;\n }\n}\n\n\n// It's taken for granted that methods using decorators have :\n// IEndpointCallOptions as their second to last parameter\n// IEndpointCallParameters as their last parameter\n// The default parameters for each member of the injected {@link IEndpointCallParameters} are the following:\n// url: '',\n// queryString: [],\n// requestData: {},\n// requestDataType: undefined,\n// method: '',\n// responseType: '',\n// errorsAsSuccess: false\n\n\nfunction path(path: string) {\n return function (target: Object, key: string, descriptor: TypedPropertyDescriptor) {\n let originalMethod = descriptor.value;\n let nbParams = target[key].prototype.constructor.length;\n\n descriptor.value = function (...args: any[]) {\n let uri = this.buildBaseUri(path);\n if (args[nbParams - 1]) {\n args[nbParams - 1].url = uri;\n } else {\n let params: IEndpointCallParameters = {\n url: uri,\n queryString: [],\n requestData: {},\n method: '',\n responseType: '',\n errorsAsSuccess: false\n };\n args[nbParams - 1] = params;\n }\n let result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n\nfunction alertsPath(path: string) {\n return function (target: Object, key: string, descriptor: TypedPropertyDescriptor) {\n let originalMethod = descriptor.value;\n let nbParams = target[key].prototype.constructor.length;\n\n descriptor.value = function (...args: any[]) {\n let uri = this.buildSearchAlertsUri(path);\n if (args[nbParams - 1]) {\n args[nbParams - 1].url = uri;\n } else {\n let params: IEndpointCallParameters = {\n url: uri,\n queryString: [],\n requestData: {},\n method: '',\n responseType: '',\n errorsAsSuccess: false\n };\n args[nbParams - 1] = params;\n }\n let result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n\nfunction requestDataType(type: string) {\n return function (target: Object, key: string, descriptor: TypedPropertyDescriptor) {\n let originalMethod = descriptor.value;\n let nbParams = target[key].prototype.constructor.length;\n\n descriptor.value = function (...args: any[]) {\n if (args[nbParams - 1]) {\n args[nbParams - 1].requestDataType = type;\n } else {\n let params: IEndpointCallParameters = {\n url: '',\n queryString: [],\n requestData: {},\n requestDataType: type,\n method: '',\n responseType: '',\n errorsAsSuccess: false\n };\n args[nbParams - 1] = params;\n }\n let result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n\nfunction method(met: string) {\n return function (target: Object, key: string, descriptor: TypedPropertyDescriptor) {\n let originalMethod = descriptor.value;\n let nbParams = target[key].prototype.constructor.length;\n\n descriptor.value = function (...args: any[]) {\n if (args[nbParams - 1]) {\n args[nbParams - 1].method = met;\n } else {\n let params: IEndpointCallParameters = {\n url: '',\n queryString: [],\n requestData: {},\n method: met,\n responseType: '',\n errorsAsSuccess: false\n };\n args[nbParams - 1] = params;\n }\n let result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n\nfunction responseType(resp: string) {\n return function (target: Object, key: string, descriptor: TypedPropertyDescriptor) {\n let originalMethod = descriptor.value;\n let nbParams = target[key].prototype.constructor.length;\n\n descriptor.value = function (...args: any[]) {\n if (args[nbParams - 1]) {\n args[nbParams - 1].responseType = resp;\n } else {\n let params: IEndpointCallParameters = {\n url: '',\n queryString: [],\n requestData: {},\n method: '',\n responseType: resp,\n errorsAsSuccess: false\n };\n args[nbParams - 1] = params;\n }\n let result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n\nfunction accessTokenInUrl(tokenKey: string = 'access_token') {\n return function (target: Object, key: string, descriptor: TypedPropertyDescriptor) {\n let originalMethod = descriptor.value;\n let nbParams = target[key].prototype.constructor.length;\n\n descriptor.value = function (...args: any[]) {\n let queryString = this.buildAccessToken(tokenKey);\n if (args[nbParams - 1]) {\n args[nbParams - 1].queryString = args[nbParams - 1].queryString.concat(queryString);\n } else {\n let params: IEndpointCallParameters = {\n url: '',\n queryString: queryString,\n requestData: {},\n method: '',\n responseType: '',\n errorsAsSuccess: false\n };\n args[nbParams - 1] = params;\n }\n let result = originalMethod.apply(this, args);\n return result;\n };\n\n return descriptor;\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/rest/SearchEndpoint.ts\n **/","import { IStringMap } from '../rest/GenericParam';\nimport { Logger } from '../misc/Logger';\nimport { Assert } from '../misc/Assert';\nimport { TimeSpan } from '../utils/TimeSpanUtils';\nimport { DeviceUtils } from '../utils/DeviceUtils';\nimport { Utils } from '../utils/Utils';\nimport { JQueryUtils } from '../utils/JQueryutils';\nimport _ = require('underscore');\n\ndeclare var XDomainRequest;\ndeclare var $;\n\n/**\n * Parameters that can be used when calling an {@link EndpointCaller}\n */\nexport interface IEndpointCallParameters {\n /**\n * Url to target\n */\n url: string;\n /**\n * Array of query string params.
\n * eg: ['foo=1','bar=2']\n */\n queryString: string[];\n /**\n * Body of the request.
\n * key -> value map (JSON)\n */\n requestData: IStringMap;\n /**\n * Request data type.
\n * eg: \"application/json\", \"application/x-www-form-urlencoded; charset=\\\"UTF-8\\\"\"\n */\n requestDataType?: string;\n /**\n * Or HTTP verb : GET, POST, PUT, etc.\n */\n method: string;\n /**\n * responseType of the request.
\n * eg: \"text\", \"arraybuffer\" etc.\n */\n responseType: string;\n /**\n * Flag to specify if the endpoint should return different type of error as actual 200 success for the browser, but with the error code/message contained in the response.\n */\n errorsAsSuccess: boolean;\n}\n\n/**\n * Information about a request\n */\nexport interface IRequestInfo {\n /**\n * Url that was requested\n */\n url: string;\n /**\n * The query string parameters that were used for this request\n */\n queryString: string[];\n /**\n * The data that was sent for this request\n */\n requestData: IStringMap;\n /**\n * The requestDataType that was used for this request\n */\n requestDataType: string;\n /**\n * The timestamp at which the request started\n */\n begun: Date;\n /**\n * The method that was used for this request\n */\n method: string;\n /**\n * The headers for the request.\n */\n headers?: IStringMap;\n}\n\n/**\n * A generic response\n */\nexport interface IResponse {\n /**\n * Data of the response\n */\n data?: T;\n}\n\n/**\n * A generic success response\n */\nexport interface ISuccessResponse extends IResponse {\n /**\n * The time that the successfull response took to complete\n */\n duration: number;\n /**\n * Data of the response\n */\n data: T;\n}\n\n/**\n * An error response\n */\nexport interface IErrorResponse extends IResponse> {\n /**\n * Status code for the error\n */\n statusCode: number;\n /**\n * Data about the error\n */\n data?: {\n /**\n * Message for the error\n */\n message?: string;\n /**\n * Type of the error\n */\n type?: string;\n /**\n * A report provided by the search api\n */\n executionReport?: string;\n [key: string]: any;\n };\n}\n\n/**\n * Possible options when creating a {@link EndpointCaller}\n */\nexport interface IEndpointCallerOptions {\n /**\n * The access token to use for this endpoint.\n */\n accessToken?: string;\n /**\n * The username to use to log into this endpoint. Used for basic auth.
\n * Not used if accessToken is provided.\n */\n username?: string;\n /**\n * The password to use to log into this endpoint. Used for basic auth.
\n * Not used if accessToken is provided.\n */\n password?: string;\n /**\n * A function which will allow external code to modify all endpoint call parameters before they are sent by the browser.\n *\n * Used in very specific scenario where the network infrastructure require special request headers to be added or removed, for example.\n */\n requestModifier?: (params: IRequestInfo) => IRequestInfo;\n\n /**\n * The XmlHttpRequest implementation to use instead of the native one.\n * If not specified, the native one is used.\n */\n xmlHttpRequest?: new () => XMLHttpRequest;\n}\n\n// In ie8, XMLHttpRequest has no status property, so let's use this enum instead\nenum XMLHttpRequestStatus {\n OPENED = XMLHttpRequest.OPENED || 1,\n HEADERS_RECEIVED = XMLHttpRequest.HEADERS_RECEIVED || 2,\n DONE = XMLHttpRequest.DONE || 4\n}\n\n/**\n * This class is in charge of calling an endpoint (eg: a {@link SearchEndpoint}).\n *\n * This means it's only uses to execute an XMLHttpRequest (for example), massage the response and check if there are errors.\n *\n * Will execute the call and return a Promise.\n *\n * Call using one of those options :\n *\n * * XMLHttpRequest for recent browser that support CORS, or if the endpoint is on the same origin.\n * * XDomainRequest for older IE browser that do not support CORS.\n * * Jsonp if all else fails, or is explicitly enabled.\n */\nexport class EndpointCaller {\n public logger: Logger;\n\n /**\n * Set this property to true to enable Jsonp call to the endpoint.
\n * Be aware that jsonp is \"easier\" to setup endpoint wise, but has a lot of drawback and limitation for the client code.
\n * Default to false.\n * @type {boolean}\n */\n public useJsonp = false;\n\n private static JSONP_ERROR_TIMEOUT = 10000;\n /**\n * Create a new EndpointCaller.\n * @param options Specify the authentication that will be used for this endpoint. Not needed if the endpoint is public and has no authentication\n */\n constructor(public options: IEndpointCallerOptions = {}) {\n this.logger = new Logger(this);\n }\n\n /**\n * Generic call to the endpoint using the provided {@link IEndpointCallParameters}.
\n * Internally, will decide which method to use to call the endpoint :
\n * -- XMLHttpRequest for recent browser that support CORS, or if the endpoint is on the same origin.
\n * -- XDomainRequest for older IE browser that do not support CORS.
\n * -- Jsonp if all else fails, or is explicitly enabled.\n * @param params The parameters to use for the call\n * @returns {any} A promise of the given type\n */\n public call(params: IEndpointCallParameters): Promise> {\n\n var requestInfo: IRequestInfo = {\n url: params.url,\n queryString: params.errorsAsSuccess ? params.queryString.concat(['errorsAsSuccess=1']) : params.queryString,\n requestData: params.requestData,\n requestDataType: params.requestDataType || 'application/x-www-form-urlencoded; charset=\"UTF-8\"',\n begun: new Date(),\n method: params.method\n };\n requestInfo.headers = this.buildRequestHeaders(requestInfo);\n if (_.isFunction(this.options.requestModifier)) {\n requestInfo = this.options.requestModifier(requestInfo);\n }\n\n\n this.logger.trace('Performing REST request', requestInfo);\n var urlObject = this.parseURL(requestInfo.url);\n // In IE8, hostname and port return \"\" when we are on the same domain.\n var isLocalHost = (window.location.hostname === urlObject.hostname) || (urlObject.hostname === '');\n\n var currentPort = (window.location.port != '' ? window.location.port : (window.location.protocol == 'https:' ? '443' : '80'));\n var isSamePort = currentPort == urlObject.port;\n var isCrossOrigin = !(isLocalHost && isSamePort);\n if (!this.useJsonp) {\n if (this.isCORSSupported() || !isCrossOrigin) {\n return this.callUsingXMLHttpRequest(requestInfo, params.responseType);\n } else if (this.isXDomainRequestSupported()) {\n return this.callUsingXDomainRequest(requestInfo);\n } else {\n return this.callUsingAjaxJsonP(requestInfo);\n }\n } else {\n return this.callUsingAjaxJsonP(requestInfo);\n }\n }\n\n /**\n * Call the endpoint using XMLHttpRequest. Used internally by {@link EndpointCaller.call}.
\n * Will try internally to handle error if it can.
\n * Promise will otherwise fail with the error type.\n * @param requestInfo The info about the request\n * @param responseType The responseType. Default to text. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType\n * @returns {Promise|Promise}\n */\n public callUsingXMLHttpRequest(requestInfo: IRequestInfo, responseType = 'text'): Promise> {\n return new Promise((resolve, reject) => {\n var xmlHttpRequest = this.getXmlHttpRequest();\n\n // Beware, most stuff must be set on the event that says the request is OPENED.\n // Otherwise it'll bork on some browsers. Gotta love standards.\n\n // This sent variable allowed to remove the second call of onreadystatechange with the state OPENED in IE11\n var sent = false;\n\n xmlHttpRequest.onreadystatechange = (ev) => {\n if (xmlHttpRequest.readyState == XMLHttpRequestStatus.OPENED && !sent) {\n sent = true;\n xmlHttpRequest.withCredentials = true;\n\n _.each(requestInfo.headers, (headerValue, headerKey) => {\n xmlHttpRequest.setRequestHeader(headerKey, headerValue);\n });\n\n if (requestInfo.method == 'GET') {\n xmlHttpRequest.send();\n } else if (requestInfo.requestDataType.indexOf('application/json') === 0) {\n xmlHttpRequest.send(JSON.stringify(requestInfo.requestData));\n } else {\n xmlHttpRequest.send(this.convertJsonToFormBody(requestInfo.requestData));\n }\n\n // The \"responseType\" varies if the request is a success or not.\n // Therefore we postpone setting \"responseType\" until we know if the\n // request is a success or not. Doing so, we avoid this potential\n // error in Chrome:\n //\n // Uncaught InvalidStateError: Failed to read the 'responseText'\n // property from 'XMLHttpRequest': The value is only accessible if\n // the object's 'responseType' is '' or 'text' (was 'document').\n //\n } else if (xmlHttpRequest.readyState == XMLHttpRequestStatus.HEADERS_RECEIVED) {\n var status = xmlHttpRequest.status;\n\n if (this.isSuccessHttpStatus(status)) {\n xmlHttpRequest.responseType = responseType;\n } else {\n xmlHttpRequest.responseType = 'text';\n }\n } else if (xmlHttpRequest.readyState == XMLHttpRequestStatus.DONE) {\n var status = xmlHttpRequest.status;\n var data;\n switch (responseType) {\n case 'json':\n data = xmlHttpRequest.response;\n // Work around a bug in IE11 where responseType jsonis not supported : the response comes back as a plain string\n // Force the json parse manually\n if (responseType == 'json' && DeviceUtils.getDeviceName() == 'IE') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n // Do nothing, it probably means the data was JSON already\n }\n }\n break;\n case 'text':\n data = this.tryParseResponseText(xmlHttpRequest.responseText, xmlHttpRequest.getResponseHeader('Content-Type'));\n break;\n default:\n data = xmlHttpRequest.response;\n break;\n }\n\n if (data == undefined) {\n data = this.tryParseResponseText(xmlHttpRequest.responseText, xmlHttpRequest.getResponseHeader('Content-Type'));\n }\n\n if (this.isSuccessHttpStatus(status)) {\n this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject);\n } else {\n this.handleError(requestInfo, xmlHttpRequest.status, data, reject);\n }\n }\n };\n\n var queryString = requestInfo.queryString;\n if (requestInfo.method == 'GET') {\n queryString = queryString.concat(this.convertJsonToQueryString(requestInfo.requestData));\n }\n xmlHttpRequest.open(requestInfo.method, this.combineUrlAndQueryString(requestInfo.url, queryString));\n });\n }\n\n /**\n * Call the endpoint using XDomainRequest https://msdn.microsoft.com/en-us/library/cc288060(v=vs.85).aspx
\n * Used for IE8/9\n * @param requestInfo The info about the request\n * @returns {Promise|Promise}\n */\n public callUsingXDomainRequest(requestInfo: IRequestInfo): Promise> {\n return new Promise((resolve, reject) => {\n var queryString = requestInfo.queryString.concat([]);\n\n // XDomainRequest don't support including stuff in the header, so we must\n // put the access token in the query string if we have one.\n if (this.options.accessToken) {\n queryString.push('access_token=' + encodeURIComponent(this.options.accessToken));\n }\n\n var xDomainRequest = new XDomainRequest();\n if (requestInfo.method == 'GET') {\n queryString = queryString.concat(this.convertJsonToQueryString(requestInfo.requestData));\n }\n xDomainRequest.open(requestInfo.method, this.combineUrlAndQueryString(requestInfo.url, queryString));\n\n xDomainRequest.onload = () => {\n var data = this.tryParseResponseText(xDomainRequest.responseText, xDomainRequest.contentType);\n this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject);\n };\n\n xDomainRequest.onerror = () => {\n var data = this.tryParseResponseText(xDomainRequest.responseText, xDomainRequest.contentType);\n this.handleError(requestInfo, 0, data, reject);\n };\n\n // We must set those functions otherwise it will sometime fail in IE\n xDomainRequest.ontimeout = () => this.logger.error('Request timeout', xDomainRequest, requestInfo.requestData);\n xDomainRequest.onprogress = () => this.logger.trace('Request progress', xDomainRequest, requestInfo.requestData);\n\n // We must open the request in a separate thread, for obscure reasons\n _.defer(() => {\n if (requestInfo.method == 'GET') {\n xDomainRequest.send();\n } else {\n xDomainRequest.send(this.convertJsonToFormBody(requestInfo.requestData));\n }\n });\n });\n }\n\n /**\n * Call the endpoint using Jsonp https://en.wikipedia.org/wiki/JSONP
\n * Should be used for dev only, or for very special setup as using jsonp has a lot of drawbacks.\n * @param requestInfo The info about the request\n * @returns {Promise|Promise}\n */\n public callUsingAjaxJsonP(requestInfo: IRequestInfo): Promise> {\n let jQuery = JQueryUtils.getJQuery();\n Assert.check(jQuery, 'Using jsonp without having included jQuery is not supported.');\n return new Promise((resolve, reject) => {\n var queryString = requestInfo.queryString.concat(this.convertJsonToQueryString(requestInfo.requestData));\n\n // JSONP don't support including stuff in the header, so we must\n // put the access token in the query string if we have one.\n if (this.options.accessToken) {\n queryString.push('access_token=' + encodeURIComponent(this.options.accessToken));\n }\n\n queryString.push('callback=?');\n\n jQuery.ajax({\n url: this.combineUrlAndQueryString(requestInfo.url, queryString),\n dataType: 'jsonp',\n success: (data: any) => this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject),\n timeout: EndpointCaller.JSONP_ERROR_TIMEOUT,\n error: () => this.handleError(requestInfo, 0, undefined, reject)\n });\n });\n }\n\n private parseURL(url: string) {\n var urlObject = document.createElement('a');\n urlObject.href = url;\n return urlObject;\n }\n\n private getXmlHttpRequest(): XMLHttpRequest {\n var newXmlHttpRequest = this.options.xmlHttpRequest || XMLHttpRequest;\n return new newXmlHttpRequest();\n }\n\n private convertJsonToQueryString(json: { [key: string]: any; }): string[] {\n Assert.exists(json);\n\n var result: string[] = [];\n _.each(json, (value, key) => {\n if (value != null) {\n if (_.isObject(value)) {\n result.push(key + '=' + encodeURIComponent(JSON.stringify(value)));\n } else {\n result.push(key + '=' + encodeURIComponent(value.toString()));\n }\n }\n });\n\n return result;\n }\n\n private convertJsonToFormBody(json: { [key: string]: any; }): string {\n return this.convertJsonToQueryString(json).join('&');\n }\n\n private handleSuccessfulResponseThatMightBeAnError(requestInfo: IRequestInfo, data: any, success, error) {\n if (this.isErrorResponseBody(data)) {\n this.handleError(requestInfo, data.statusCode, data, error);\n } else {\n this.handleSuccess(requestInfo, data, success);\n }\n }\n\n private handleSuccess(requestInfo: IRequestInfo, data: T, success) {\n var querySuccess: ISuccessResponse = {\n duration: TimeSpan.fromDates(requestInfo.begun, new Date()).getMilliseconds(),\n data: data\n };\n\n this.logger.trace('REST request successful', data, requestInfo);\n success(querySuccess);\n }\n\n private handleError(requestInfo: IRequestInfo, status: number, data: any, error) {\n var queryError: IErrorResponse = {\n statusCode: status,\n data: data\n };\n this.logger.error('REST request failed', status, data, requestInfo);\n error(queryError);\n }\n\n private combineUrlAndQueryString(url: String, queryString: string[]): string {\n var questionMark = '?';\n if (url.match(/\\?$/)) {\n questionMark = '';\n }\n return url + (queryString.length > 0 ? questionMark + queryString.join('&') : '');\n }\n\n private isXDomainRequestSupported(): boolean {\n return 'XDomainRequest' in window;\n }\n\n private isCORSSupported(): boolean {\n return 'withCredentials' in this.getXmlHttpRequest();\n }\n\n private isSuccessHttpStatus(status: number): boolean {\n return status >= 200 && status < 300 || status === 304;\n }\n\n private tryParseResponseText(json: string, contentType: string): any {\n if (contentType != null && contentType.indexOf('application/json') != -1) {\n if (Utils.isNonEmptyString(json)) {\n try {\n return JSON.parse(json);\n } catch (ex) {\n return undefined;\n }\n } else {\n return undefined;\n }\n } else {\n return json;\n }\n }\n\n private isErrorResponseBody(data: any): boolean {\n if (data && data.statusCode) {\n return !this.isSuccessHttpStatus(data.statusCode);\n } else {\n return false;\n }\n }\n\n private buildRequestHeaders(requestInfo: IRequestInfo): IStringMap {\n let headers: IStringMap = {};\n if (this.options.accessToken) {\n headers['Authorization'] = `Bearer ${this.options.accessToken}`;\n } else if (this.options.username && this.options.password) {\n headers['Authorization'] = `Basic ${btoa(this.options.username + ':' + this.options.password)}`;\n }\n\n if (requestInfo.method == 'GET') {\n return headers;\n }\n\n if (requestInfo.requestDataType.indexOf('application/json') === 0) {\n headers['Content-Type'] = 'application/json; charset=\"UTF-8\"';\n } else {\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=\"UTF-8\"';\n }\n\n return headers;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/rest/EndpointCaller.ts\n **/","// Ensure that we're not going to get console is undefined error in IE8-9\nif (!window['console']) {\n console = {\n log: function () {\n },\n debug: function () {\n },\n info: function () {\n },\n warn: function () {\n },\n error: function () {\n },\n assert: function () {\n },\n clear: function () {\n },\n count: function () {\n },\n dir: function () {\n },\n dirxml: function () {\n },\n group: function () {\n },\n groupCollapsed: function () {\n },\n groupEnd: function () {\n },\n msIsIndependentlyComposed: function (element: any): any {\n },\n profile: function () {\n },\n profileEnd: function () {\n },\n select: function () {\n },\n time: function () {\n },\n timeEnd: function () {\n },\n trace: function () {\n }\n };\n}\n\n\nexport class Logger {\n static TRACE = 1;\n static DEBUG = 2;\n static INFO = 3;\n static WARN = 4;\n static ERROR = 5;\n static NOTHING = 6;\n\n static level = Logger.INFO;\n static executionTime = false;\n\n constructor(private owner: any) {\n }\n\n trace(...stuff: any[]) {\n if (Logger.level <= Logger.TRACE) {\n this.log('TRACE', stuff);\n }\n }\n\n debug(...stuff: any[]) {\n if (Logger.level <= Logger.DEBUG) {\n this.log('DEBUG', stuff);\n }\n }\n\n info(...stuff: any[]) {\n if (Logger.level <= Logger.INFO) {\n this.log('INFO', stuff);\n }\n }\n\n warn(...stuff: any[]) {\n if (Logger.level <= Logger.WARN) {\n this.log('WARN', stuff);\n }\n }\n\n error(...stuff: any[]) {\n if (Logger.level <= Logger.ERROR) {\n this.log('ERROR', stuff);\n }\n }\n\n private log(level: string, stuff: any[]) {\n if (window['console'] && console.log) {\n console.log([level, this.owner].concat(stuff));\n if (Logger.executionTime) {\n console.timeEnd('Execution time');\n console.time('Execution time');\n }\n }\n }\n\n static enable() {\n Logger.level = Logger.TRACE;\n }\n\n static disable() {\n Logger.level = Logger.NOTHING;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/Logger.ts\n **/","import { Logger } from '../misc/Logger';\nimport { Utils } from '../utils/Utils';\nimport _ = require('underscore');\n\nexport class Assert {\n private static logger = new Logger('Assert');\n\n static failureHandler = (message?: string) => {\n Assert.logger.error('Assertion Failed!', message);\n\n if (window['console'] && console.trace) {\n console.trace();\n }\n\n if (Utils.isNonEmptyString(message)) {\n throw new PreconditionFailedException(message);\n } else {\n throw new PreconditionFailedException('Assertion Failed!');\n }\n }\n\n static fail(message?: string) {\n Assert.failureHandler(message);\n }\n\n static check(condition: boolean, message?: string) {\n if (!condition) {\n Assert.fail(message);\n }\n }\n\n static isUndefined(obj: any) {\n Assert.check(Utils.isUndefined(obj), 'Value should be undefined.');\n }\n\n static isNotUndefined(obj: any) {\n Assert.check(!Utils.isUndefined(obj), 'Value should not be undefined.');\n }\n\n static isNull(obj: any) {\n Assert.check(Utils.isNull(obj), 'Value should be null.');\n }\n\n static isNotNull(obj: any) {\n Assert.check(!Utils.isNull(obj), 'Value should not be null.');\n }\n\n static exists(obj: any) {\n Assert.check(!Utils.isNullOrUndefined(obj), 'Value should not be null or undefined');\n }\n\n static doesNotExists(obj: any) {\n Assert.check(Utils.isNullOrUndefined(obj), 'Value should be null or undefined');\n }\n\n static isString(obj: any) {\n Assert.check(_.isString(obj), 'Value should be a string.');\n }\n\n static stringStartsWith(str: string, start: string) {\n Assert.isNonEmptyString(str);\n Assert.isNonEmptyString(start);\n Assert.check(str.indexOf(start) == 0, 'Value should start with ' + start);\n }\n\n static isNonEmptyString(str: string) {\n Assert.check(Utils.isNonEmptyString(str), 'Value should be a non-empty string.');\n }\n\n static isNumber(obj: any) {\n Assert.check(_.isNumber(obj), 'Value should be a number.');\n }\n\n static isLargerThan(expected: number, actual: number) {\n Assert.check(actual > expected, 'Value ' + actual + ' should be larger than ' + expected);\n }\n\n static isLargerOrEqualsThan(expected: number, actual: number) {\n Assert.check(actual >= expected, 'Value ' + actual + ' should be larger or equal than ' + expected);\n }\n\n static isSmallerThan(expected: number, actual: number) {\n Assert.check(actual < expected, 'Value ' + actual + ' should be smaller than ' + expected);\n }\n\n static isSmallerOrEqualsThan(expected: number, actual: number) {\n Assert.check(actual <= expected, 'Value ' + actual + ' should be smaller or equal than ' + expected);\n }\n}\n\nexport class PreconditionFailedException extends Error {\n constructor(public message: string) {\n super(message);\n }\n\n toString() {\n return this.message;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/Assert.ts\n **/","import { IQueryResult } from '../rest/QueryResult';\nimport _ = require('underscore');\n\nconst isCoveoFieldRegex = /^@[a-zA-Z0-9_\\.]+$/;\n\nexport class Utils {\n static isUndefined(obj: any): boolean {\n return typeof obj == 'undefined';\n }\n\n static isNull(obj: any): boolean {\n return obj === null;\n }\n\n static isNullOrUndefined(obj: any): boolean {\n return Utils.isUndefined(obj) || Utils.isNull(obj);\n }\n\n static exists(obj: any): boolean {\n return !Utils.isNullOrUndefined(obj);\n }\n\n static toNotNullString(str: string): string {\n return _.isString(str) ? str : '';\n }\n\n static anyTypeToString(value: any): string {\n return value ? value.toString() : '';\n }\n\n static isNullOrEmptyString(str: string): boolean {\n return Utils.isNullOrUndefined(str) || !Utils.isNonEmptyString(str);\n }\n\n static isNonEmptyString(str: string): boolean {\n return _.isString(str) && str !== '';\n }\n\n static isEmptyString(str: string): boolean {\n return !Utils.isNonEmptyString(str);\n }\n\n static stringStartsWith(str: string, startWith: string): boolean {\n return str.slice(0, startWith.length) == startWith;\n }\n\n static isNonEmptyArray(obj: any): boolean {\n return _.isArray(obj) && obj.length > 0;\n }\n\n static isEmptyArray(obj: any): boolean {\n return !Utils.isNonEmptyArray(obj);\n }\n\n static isHtmlElement(obj: any): boolean {\n if (window['HTMLElement'] != undefined) {\n return obj instanceof HTMLElement;\n } else { // IE 8 FIX\n return obj && obj.nodeType && obj.nodeType == 1;\n }\n }\n\n static parseIntIfNotUndefined(str: string): number {\n if (Utils.isNonEmptyString(str)) {\n return parseInt(str, 10);\n } else {\n return undefined;\n }\n }\n\n static parseFloatIfNotUndefined(str: string): number {\n if (Utils.isNonEmptyString(str)) {\n return parseFloat(str);\n } else {\n return undefined;\n }\n }\n\n static round(num: number, decimals: number) {\n return Math.round(num * Math.pow(10, decimals)) / Math.pow(10, decimals);\n }\n\n static parseBooleanIfNotUndefined(str: string): boolean {\n if (Utils.isNonEmptyString(str)) {\n switch (str.toLowerCase()) {\n case 'true':\n case '1':\n case 'yes':\n return true;\n case 'false':\n case '0':\n case 'no':\n return false;\n default:\n return undefined;\n }\n } else {\n return undefined;\n }\n }\n\n static trim(value: string): string {\n if (value == null) {\n return null;\n }\n return value.replace(/^\\s+|\\s+$/g, '');\n }\n\n static encodeHTMLEntities(rawStr: string) {\n let ret = [];\n for (let i = rawStr.length - 1; i >= 0; i--) {\n if (/^[a-z0-9]/i.test(rawStr[i])) {\n ret.unshift(rawStr[i]);\n } else {\n ret.unshift(['&#', rawStr.charCodeAt(i), ';'].join(''));\n }\n }\n return ret.join('');\n }\n\n static decodeHTMLEntities(rawString: string) {\n return rawString.replace(/&#(\\d+);/g, function (match, dec) {\n return String.fromCharCode(dec);\n });\n }\n\n static arrayEqual(array1: any[], array2: any[], sameOrder: boolean = true): boolean {\n if (sameOrder) {\n return _.isEqual(array1, array2);\n } else {\n let arrays = [array1, array2];\n return _.all(arrays, (array: any[]) => {\n return array.length == arrays[0].length && _.difference(array, arrays[0]).length == 0;\n });\n }\n }\n\n static objectEqual(obj1: Object, obj2: Object): boolean {\n return _.isEqual(obj1, obj2);\n }\n\n\n static isCoveoField(field: string): boolean {\n return isCoveoFieldRegex.test(field);\n }\n\n static escapeRegexCharacter(str: string) {\n let ret = str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n return ret;\n }\n\n static getCaseInsensitiveProperty(object: {}, name: string): any {\n // First try using a fast case-sensitive lookup\n let value = object[name];\n\n // Then try a fast case-sensitive lookup with lowercase name\n if (value == null) {\n let lowerCaseName = name.toLowerCase();\n value = object[lowerCaseName];\n // Then try a slow scanning of all the properties\n if (value == null) {\n let matchingKey = _.find(_.keys(object), (key: string) => key.toLowerCase() == lowerCaseName);\n if (matchingKey != null) {\n value = object[matchingKey];\n }\n }\n }\n return value;\n }\n\n static getFieldValue(result: IQueryResult, name: string): any {\n // Be as forgiving as possible about the field name, since we expect\n // user provided values.\n if (name == null) {\n return undefined;\n }\n name = Utils.trim(name);\n if (name[0] == '@') {\n name = name.substr(1);\n }\n if (name == '') {\n return undefined;\n }\n\n // At this point the name should be well formed\n if (!Utils.isCoveoField('@' + name)) {\n throw `Not a valid field : ${name}`;\n }\n // Handle namespace field values of the form sf.Foo.Bar\n let parts = name.split('.').reverse();\n let obj = result.raw;\n while (parts.length > 1) {\n obj = Utils.getCaseInsensitiveProperty(obj, parts.pop());\n if (Utils.isUndefined(obj)) {\n return undefined;\n }\n }\n let value = Utils.getCaseInsensitiveProperty(obj, parts[0]);\n // If still nothing, look at the root of the result\n if (value == null) {\n value = Utils.getCaseInsensitiveProperty(result, name);\n }\n return value;\n }\n\n static throttle(func, wait, options: { leading?: boolean; trailing?: boolean; } = {}, context?, args?) {\n let result;\n let timeout: number = null;\n let previous = 0;\n let later = function () {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n };\n return function () {\n let now = new Date().getTime();\n if (!previous && options.leading === false) {\n previous = now;\n }\n let remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n }\n\n static extendDeep(target, src): {} {\n if (!target) {\n target = {};\n }\n let isArray = _.isArray(src);\n let toReturn = isArray && [] || {};\n if (isArray) {\n target = target || [];\n toReturn = toReturn['concat'](target);\n _.each(src, (e, i, obj) => {\n if (typeof target[i] === 'undefined') {\n toReturn[i] = e;\n } else if (typeof e === 'object') {\n toReturn[i] = Utils.extendDeep(target[i], e);\n } else {\n if (target.indexOf(e) === -1) {\n toReturn['push'](e);\n }\n }\n });\n } else {\n if (target && typeof target === 'object') {\n _.each(_.keys(target), (key) => {\n toReturn[key] = target[key];\n });\n }\n _.each(_.keys(src), (key) => {\n if (typeof src[key] !== 'object' || !src[key]) {\n toReturn[key] = src[key];\n } else {\n if (!target[key]) {\n toReturn[key] = src[key];\n } else {\n toReturn[key] = Utils.extendDeep(target[key], src[key]);\n }\n }\n });\n }\n return toReturn;\n }\n\n static getQueryStringValue(key, queryString = window.location.search) {\n return queryString.replace(new RegExp('^(?:.*[&\\\\?]' + key.replace(/[\\.\\+\\*]/g, '\\\\$&') + '(?:\\\\=([^&]*))?)?.*$', 'i'), '$1');\n }\n\n static isValidUrl(str: string): boolean {\n let regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\n return regexp.test(str);\n }\n\n static debounce(func: Function, wait: number) {\n let timeout: number;\n let stackTraceTimeout: number;\n return function (...args: any[]) {\n if (timeout == null) {\n timeout = setTimeout(() => {\n timeout = null;\n }, wait);\n stackTraceTimeout = setTimeout(() => {\n func.apply(this, args);\n stackTraceTimeout = null;\n });\n } else if (stackTraceTimeout == null) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n func.apply(this, args);\n timeout = null;\n }, wait);\n }\n };\n }\n\n static readCookie(name: string) {\n let nameEQ = name + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) == 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n return null;\n }\n\n static toDashCase(camelCased: string) {\n return camelCased.replace(/([a-z][A-Z])/g, (g) => g[0] + '-' + g[1].toLowerCase());\n }\n\n // Based on http://stackoverflow.com/a/8412989\n static parseXml(xml: string): XMLDocument {\n if (typeof DOMParser != 'undefined') {\n return (new DOMParser()).parseFromString(xml, 'text/xml');\n } else if (typeof ActiveXObject != 'undefined' && new ActiveXObject('Microsoft.XMLDOM')) {\n var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');\n xmlDoc.async = 'false';\n xmlDoc.loadXML(xml);\n return xmlDoc;\n } else {\n throw new Error('No XML parser found');\n }\n }\n\n static copyObject(target: T, src: T) {\n _.each(_.keys(src), key => {\n if (typeof src[key] !== 'object' || !src[key]) {\n target[key] = src[key];\n } else if (!target[key]) {\n target[key] = src[key];\n } else {\n this.copyObject(target[key], src[key]);\n }\n });\n }\n\n static copyObjectAttributes(target: T, src: T, attributes: string[]) {\n _.each(_.keys(src), key => {\n if (_.contains(attributes, key)) {\n if (typeof src[key] !== 'object' || !src[key]) {\n target[key] = src[key];\n } else if (!target[key]) {\n target[key] = src[key];\n } else {\n this.copyObject(target[key], src[key]);\n }\n }\n });\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/Utils.ts\n **/","// Underscore.js 1.8.3\n// http://underscorejs.org\n// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` in the browser, or `exports` on the server.\n var root = this;\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\n // Create quick reference variables for speed access to core prototypes.\n var\n push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var\n nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeBind = FuncProto.bind,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for the old `require()` API. If we're in\n // the browser, add `_` as a global object.\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.8.3';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n case 2: return function(value, other) {\n return func.call(context, value, other);\n };\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n // A mostly-internal function to generate callbacks that can be applied\n // to each element in a collection, returning the desired result — either\n // identity, an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value)) return _.matcher(value);\n return _.property(value);\n };\n _.iteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, undefinedOnly) {\n return function(obj) {\n var length = arguments.length;\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var property = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = property('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n function createReduce(dir) {\n // Optimized iterator function as using arguments.length\n // in the main function will deoptimize the, see #1991.\n function iterator(obj, iteratee, memo, keys, index, length) {\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n }\n\n return function(obj, iteratee, memo, context) {\n iteratee = optimizeCb(iteratee, context, 4);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n // Determine the initial value if none is provided.\n if (arguments.length < 3) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n return iterator(obj, iteratee, memo, keys, index, length);\n };\n }\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var key;\n if (isArrayLike(obj)) {\n key = _.findIndex(obj, predicate, context);\n } else {\n key = _.findKey(obj, predicate, context);\n }\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = function(obj, method) {\n var args = slice.call(arguments, 2);\n var isFunc = _.isFunction(method);\n return _.map(obj, function(value) {\n var func = isFunc ? method : value[method];\n return func == null ? func : func.apply(value, args);\n });\n };\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection, using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n _.shuffle = function(obj) {\n var set = isArrayLike(obj) ? obj : _.values(obj);\n var length = set.length;\n var shuffled = Array(length);\n for (var index = 0, rand; index < length; index++) {\n rand = _.random(0, index);\n if (rand !== index) shuffled[index] = shuffled[rand];\n shuffled[rand] = set[index];\n }\n return shuffled;\n };\n\n // Sample **n** random values from a collection.\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n return _.shuffle(obj).slice(0, Math.max(0, n));\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, index, list) {\n return {\n value: value,\n index: index,\n criteria: iteratee(value, index, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior) {\n return function(obj, iteratee, context) {\n var result = {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key]++; else result[key] = 1;\n });\n\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var pass = [], fail = [];\n _.each(obj, function(value, key, obj) {\n (predicate(value, key, obj) ? pass : fail).push(value);\n });\n return [pass, fail];\n };\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, _.identity);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, startIndex) {\n var output = [], idx = 0;\n for (var i = startIndex || 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n //flatten current level of array or arguments object\n if (!shallow) value = flatten(value, shallow, strict);\n var j = 0, len = value.length;\n output.length += len;\n while (j < len) {\n output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = function(array) {\n return _.difference(array, slice.call(arguments, 1));\n };\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = function() {\n return _.uniq(flatten(arguments, true, true));\n };\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n for (var j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = function(array) {\n var rest = flatten(arguments, true, true, 1);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = function() {\n return _.unzip(arguments);\n };\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions\n function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n }\n\n // Returns the first index on an array-like that passes a predicate test\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions\n function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n }\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n step = step || 1;\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = function(func, context) {\n if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var args = slice.call(arguments, 2);\n var bound = function() {\n return executeBound(func, bound, context, this, args.concat(slice.call(arguments)));\n };\n return bound;\n };\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder, allowing any combination of arguments to be pre-filled.\n _.partial = function(func) {\n var boundArgs = slice.call(arguments, 1);\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n };\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = function(obj) {\n var i, length = arguments.length, key;\n if (length <= 1) throw new Error('bindAll must be passed function names');\n for (i = 1; i < length; i++) {\n key = arguments[i];\n obj[key] = _.bind(obj[key], obj);\n }\n return obj;\n };\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = function(func, wait) {\n var args = slice.call(arguments, 2);\n return setTimeout(function(){\n return func.apply(null, args);\n }, wait);\n };\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n\n var later = function() {\n var last = _.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n }\n }\n };\n\n return function() {\n context = this;\n args = arguments;\n timestamp = _.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n function collectNonEnumProps(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n }\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (_.has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object\n // In contrast to _.map it returns an object\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {},\n currentKey;\n for (var index = 0; index < length; index++) {\n currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s)\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = function(object, oiteratee, context) {\n var result = {}, obj = object, iteratee, keys;\n if (obj == null) return result;\n if (_.isFunction(oiteratee)) {\n keys = _.allKeys(obj);\n iteratee = optimizeCb(oiteratee, context);\n } else {\n keys = flatten(arguments, false, false, 1);\n iteratee = function(value, key, obj) { return key in obj; };\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n };\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = function(obj, iteratee, context) {\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n } else {\n var keys = _.map(flatten(arguments, false, false, 1), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n };\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // A strict comparison is necessary because `null == undefined`.\n if (a == null || b == null) return a === b;\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return _.has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), and in Safari 8 (#1929).\n if (typeof /./ != 'function' && typeof Int8Array != 'object') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`? (NaN is the only number which does not equal itself).\n _.isNaN = function(obj) {\n return _.isNumber(obj) && obj !== +obj;\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n _.property = property;\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n return obj == null ? function(){} : function(key) {\n return obj[key];\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // If the value of the named `property` is a function then invoke it with the\n // `object` as context; otherwise, return it.\n _.result = function(object, property, fallback) {\n var value = object == null ? void 0 : object[property];\n if (value === void 0) {\n value = fallback;\n }\n return _.isFunction(value) ? value.call(object) : value;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate : /<%([\\s\\S]+?)%>/g,\n interpolate : /<%=([\\s\\S]+?)%>/g,\n escape : /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escaper, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offest.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n try {\n var render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var result = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return result(this, func.apply(_, args));\n };\n });\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return result(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return result(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return '' + this._wrapped;\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define === 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}.call(this));\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/underscore/underscore.js\n ** module id = 16\n ** module chunks = 0 1\n **/","import { Assert } from '../misc/Assert';\n\n/**\n * The possible options to use when calculating a timespan\n */\nexport interface ITimeSpanUtilsOptions {\n /**\n * Specify if the given timespan is in seconds or milliseconds\n */\n isMilliseconds: boolean;\n}\n\nexport class TimeSpan {\n private milliseconds: number;\n\n constructor(time: number, isMilliseconds = true) {\n if (isMilliseconds) {\n this.milliseconds = time;\n } else {\n this.milliseconds = time * 1000;\n }\n }\n\n getMilliseconds() {\n return this.milliseconds;\n }\n\n getSeconds() {\n return this.getMilliseconds() / 1000;\n }\n\n getMinutes() {\n return this.getSeconds() / 60;\n }\n\n getHours() {\n return this.getMinutes() / 60;\n }\n\n getDays() {\n return this.getHours() / 24;\n }\n\n getWeeks() {\n return this.getDays() / 7;\n }\n\n getHHMMSS(): string {\n var hours = Math.floor(this.getHours());\n var minutes = Math.floor(this.getMinutes()) % 60;\n var seconds = Math.floor(this.getSeconds()) % 60;\n var hoursString, minutesString, secondsString;\n if (hours == 0) {\n hoursString = '';\n } else {\n hoursString = hours < 10 ? '0' + hours.toString() : hours.toString();\n }\n minutesString = minutes < 10 ? '0' + minutes.toString() : minutes.toString();\n secondsString = seconds < 10 ? '0' + seconds.toString() : seconds.toString();\n var hhmmss = (hoursString != '' ? hoursString + ':' : '') + minutesString + ':' + secondsString;\n return hhmmss;\n }\n\n static fromDates(from: Date, to: Date): TimeSpan {\n Assert.exists(from);\n Assert.exists(to);\n return new TimeSpan(to.valueOf() - from.valueOf());\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/TimeSpanUtils.ts\n **/","// Not sure about this : In year 2033 who's to say that this list won't be 50 pages long !\nimport { ResponsiveComponents } from '../ui/ResponsiveComponents/ResponsiveComponents';\nconst mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\nexport class DeviceUtils {\n\n static getDeviceName(): string {\n var userAgent = navigator.userAgent;\n if (userAgent.match(/Android/i)) {\n return 'Android';\n }\n if (userAgent.match(/BlackBerry/i)) {\n return 'BlackBerry';\n }\n if (userAgent.match(/iPhone/i)) {\n return 'iPhone';\n }\n if (userAgent.match(/iPad/i)) {\n return 'iPad';\n }\n if (userAgent.match(/iPod/i)) {\n return 'iPod';\n }\n if (userAgent.match(/Opera Mini/i)) {\n return 'Opera Mini';\n }\n if (userAgent.match(/IEMobile/i)) {\n return 'IE Mobile';\n }\n if (userAgent.match(/Chrome/i)) {\n return 'Chrome';\n }\n if (userAgent.match(/MSIE/i) || userAgent.match(/Trident/i)) {\n return 'IE';\n }\n if (userAgent.match(/Opera/i)) {\n return 'Opera';\n }\n if (userAgent.match(/Firefox/i)) {\n return 'Firefox';\n }\n if (userAgent.match(/Safari/i)) {\n return 'Safari';\n }\n return 'Others';\n }\n\n static isAndroid() {\n return DeviceUtils.getDeviceName() == 'Android';\n }\n\n static isIos() {\n var deviceName = DeviceUtils.getDeviceName();\n return deviceName == 'iPhone' || deviceName == 'iPad' || deviceName == 'iPod';\n }\n\n static isIE8or9(): boolean {\n var myNav = navigator.userAgent.toLowerCase();\n if (myNav.indexOf('msie') == -1) {\n return false;\n }\n return parseInt(myNav.split('msie')[1]) < 10;\n }\n\n static isMobileDevice() {\n return mobile;\n }\n\n /**\n * @deprecated\n *\n * Use ResponsiveComponents.isSmallScreenWidth() instead\n */\n static isSmallScreenWidth() {\n return new ResponsiveComponents().isSmallScreenWidth();\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/DeviceUtils.ts\n **/","import { Assert } from '../../misc/Assert';\nexport const MEDIUM_SCREEN_WIDTH = 800;\nexport const SMALL_SCREEN_WIDTH = 480;\n\n/**\n * This class serves as a way to get and set the different screen size breakpoints for the interface.\n *\n * By settings those, you can impact, amongst other, the {@link Facet}, {@link Tab} or {@link ResultList} behaviour.\n *\n * For example, the {@link Facet} components of your interface will switch to a dropdown menu when the screen size reaches 800px or less.\n *\n * You could modify this value using this calls\n *\n * Normally, you would interact with this class using the instance bound to {@link SearchInterface.responsiveComponents}\n */\nexport class ResponsiveComponents {\n private smallScreenWidth: number;\n private mediumScreenWidth: number;\n\n constructor(public windoh: Window = window) {\n }\n\n /**\n * Set the breakpoint for small screen size.\n * @param width\n */\n public setSmallScreenWidth(width: number) {\n Assert.check(width < this.getMediumScreenWidth(), `Cannot set small screen width (${width}) larger or equal to the current medium screen width (${this.getMediumScreenWidth()})`);\n this.smallScreenWidth = width;\n }\n\n /**\n * Set the breakpoint for medium screen size\n * @param width\n */\n public setMediumScreenWidth(width: number) {\n Assert.check(width > this.getSmallScreenWidth(), `Cannot set medium screen width (${width}) smaller or equal to the current small screen width (${this.getSmallScreenWidth()})`);\n this.mediumScreenWidth = width;\n }\n\n /**\n * Get the current breakpoint for small screen size.\n *\n * If it was not explicitly set by {@link ResponsiveComponents.setSmallScreenWidth}, the default value is `480`.\n * @returns {number}\n */\n public getSmallScreenWidth() {\n if (this.smallScreenWidth == null) {\n return SMALL_SCREEN_WIDTH;\n }\n return this.smallScreenWidth;\n }\n\n /**\n * Get the current breakpoint for medium screen size.\n *\n * If it was not explicitly set by {@link ResponsiveComponents.setMediumScreenWidth}, the default value is `800`.\n * @returns {number}\n */\n public getMediumScreenWidth() {\n if (this.mediumScreenWidth == null) {\n return MEDIUM_SCREEN_WIDTH;\n }\n return this.mediumScreenWidth;\n }\n\n /**\n * Return true if the current screen size is smaller than the current breakpoint set for small screen width.\n * @returns {boolean}\n */\n public isSmallScreenWidth() {\n if (this.windoh['clientWidth'] != null) {\n return this.windoh['clientWidth'] <= this.getSmallScreenWidth();\n } else {\n return document.body.clientWidth <= this.getSmallScreenWidth();\n }\n }\n\n /**\n * Return true if the current screen size is smaller than the current breakpoint set for medium screen width.\n * @returns {boolean}\n */\n public isMediumScreenWidth() {\n if (this.isSmallScreenWidth()) {\n return false;\n }\n if (this.windoh['clientWidth'] != null) {\n return this.windoh['clientWidth'] <= this.getMediumScreenWidth();\n }\n return document.body.clientWidth <= this.getMediumScreenWidth();\n }\n\n /**\n * Return true if the current screen size is larger than the current breakpoint set for medium and small.\n * @returns {boolean}\n */\n public isLargeScreenWidth() {\n return !this.isSmallScreenWidth() && !this.isMediumScreenWidth();\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/ResponsiveComponents/ResponsiveComponents.ts\n **/","export class JQueryUtils {\n static getJQuery() {\n if (window && window['Coveo'] && window['Coveo']['$']) {\n return window['Coveo']['$'];\n }\n return false;\n }\n\n static isInstanceOfJQuery(obj: Object): boolean {\n let jq = this.getJQuery();\n if (jq) {\n return obj instanceof jq;\n }\n return false;\n }\n\n static isInstanceOfJqueryEvent(obj: Object): boolean {\n let jq = this.getJQuery();\n if (jq) {\n return obj instanceof jq.Event;\n }\n return false;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/JQueryutils.ts\n **/","import { Assert } from '../misc/Assert';\nimport { IEndpointError } from '../rest/EndpointError';\n\nexport class AjaxError implements IEndpointError {\n public type;\n public name;\n\n constructor(public message: string, public status: number) {\n Assert.exists(message);\n Assert.exists(status);\n this.name = this.type = 'Ajax Error (status: ' + status + ')';\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/rest/AjaxError.ts\n **/","import { IEndpointError } from './EndpointError';\n\nexport class MissingAuthenticationError implements IEndpointError {\n public type: string;\n public message: string;\n public isMissingAuthentication = true;\n public name: string;\n\n constructor(public provider: string) {\n this.name = this.type = this.message = `Missing Authentication (provider: ${provider})`;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/rest/MissingAuthenticationError.ts\n **/","import { IQueryResults } from '../rest/QueryResults';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { IQuery } from '../rest/Query';\nimport { Assert } from '../misc/Assert';\nimport { Utils } from '../utils/Utils';\nimport _ = require('underscore');\n\ndeclare let crypto: Crypto;\n\nexport class QueryUtils {\n static createGuid(): string {\n let guid: string;\n let success: boolean = false;\n if ((typeof (crypto) != 'undefined' && typeof (crypto.getRandomValues) != 'undefined')) {\n try {\n guid = QueryUtils.generateWithCrypto();\n success = true;\n } catch (e) {\n success = false;\n }\n }\n\n if (!success) {\n guid = QueryUtils.generateWithRandom();\n }\n\n return guid;\n }\n\n // This method is a fallback as it's generate a lot of collisions in Chrome.\n static generateWithRandom(): string {\n // http://stackoverflow.com/a/2117523\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n static generateWithCrypto(): string {\n let buf = new Uint16Array(8);\n crypto.getRandomValues(buf);\n let S4 = function (num) {\n let ret = num.toString(16);\n while (ret.length < 4) {\n ret = '0' + ret;\n }\n return ret;\n };\n return (S4(buf[0]) + S4(buf[1]) + '-' + S4(buf[2]) + '-' + S4(buf[3]) + '-' + S4(buf[4]) + '-' + S4(buf[5]) + S4(buf[6]) + S4(buf[7]));\n }\n\n static setStateObjectOnQueryResults(state: any, results: IQueryResults) {\n QueryUtils.setPropertyOnResults(results, 'state', state);\n }\n\n static setStateObjectOnQueryResult(state: any, result: IQueryResult) {\n QueryUtils.setPropertyOnResult(result, 'state', state);\n }\n\n static setSearchInterfaceObjectOnQueryResult(searchInterface, result: IQueryResult) {\n QueryUtils.setPropertyOnResult(result, 'searchInterface', searchInterface);\n }\n\n static setIndexAndUidOnQueryResults(query: IQuery, results: IQueryResults, queryUid: string, pipeline: string, splitTestRun: string) {\n Assert.exists(query);\n Assert.exists(results);\n let index = query.firstResult;\n QueryUtils.setPropertyOnResults(results, 'queryUid', queryUid);\n QueryUtils.setPropertyOnResults(results, 'pipeline', pipeline);\n QueryUtils.setPropertyOnResults(results, 'splitTestRun', splitTestRun);\n QueryUtils.setPropertyOnResults(results, 'index', index, () => ++index);\n }\n\n static setTermsToHighlightOnQueryResults(query: IQuery, results: IQueryResults) {\n QueryUtils.setPropertyOnResults(results, 'termsToHighlight', results.termsToHighlight);\n QueryUtils.setPropertyOnResults(results, 'phrasesToHighlight', results.phrasesToHighlight);\n }\n\n static splitFlags(flags: string, delimiter: string = ';') {\n Assert.exists(flags);\n return flags.split(delimiter);\n }\n\n static isAttachment(result: IQueryResult) {\n return _.contains(QueryUtils.splitFlags(result.flags), 'IsAttachment');\n }\n\n static containsAttachment(result: IQueryResult) {\n return _.contains(QueryUtils.splitFlags(result.flags), 'ContainsAttachment');\n }\n\n static hasHTMLVersion(result: IQueryResult) {\n return _.contains(QueryUtils.splitFlags(result.flags), 'HasHtmlVersion');\n }\n\n static hasThumbnail(result: IQueryResult) {\n return _.contains(QueryUtils.splitFlags(result.flags), 'HasThumbnail');\n }\n\n static hasExcerpt(result: IQueryResult) {\n return result.excerpt != undefined && result.excerpt != '';\n }\n\n static getAuthor(result: IQueryResult): string {\n return result.raw['author'];\n }\n\n static getUriHash(result: IQueryResult): string {\n return result.raw['urihash'];\n }\n\n static getObjectType(result: IQueryResult): string {\n return result.raw['objecttype'];\n }\n\n static getCollection(result: IQueryResult): string {\n return result.raw['collection'];\n }\n\n static getSource(result: IQueryResult): string {\n return result.raw['source'];\n }\n\n static getLanguage(result: IQueryResult): string {\n return result.raw['language'];\n }\n\n static getPermanentId(result: IQueryResult): { fieldValue: string, fieldUsed: string } {\n let fieldValue;\n let fieldUsed;\n let permanentId = Utils.getFieldValue(result, 'permanentid');\n if (permanentId) {\n fieldUsed = 'permanentid';\n fieldValue = permanentId;\n } else {\n fieldUsed = 'urihash';\n fieldValue = Utils.getFieldValue(result, 'urihash');\n }\n return {\n fieldValue: fieldValue,\n fieldUsed: fieldUsed\n };\n }\n\n static quoteAndEscapeIfNeeded(str: string): string {\n Assert.isString(str);\n return QueryUtils.isAtomicString(str) || (QueryUtils.isRangeString(str) || QueryUtils.isRangeWithoutOuterBoundsString(str)) ? str : QueryUtils.quoteAndEscape(str);\n }\n\n static quoteAndEscape(str: string): string {\n Assert.isString(str);\n return `\"${QueryUtils.escapeString(str)}\"`;\n }\n\n static escapeString(str: string): string {\n Assert.isString(str);\n return str.replace(/\"/g, ' ');\n }\n\n static isAtomicString(str: string): boolean {\n Assert.isString(str);\n return /^\\d+(\\.\\d+)?$|^[\\d\\w]+$/.test(str);\n }\n\n static isRangeString(str: string): boolean {\n Assert.isString(str);\n return /^\\d+(\\.\\d+)?\\.\\.\\d+(\\.\\d+)?$|^\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}\\.\\.\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}$/.test(str);\n }\n\n static isRangeWithoutOuterBoundsString(str: string): boolean {\n Assert.isString(str);\n return /^\\d+(\\.\\d+)?$|^\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}$/.test(str);\n }\n\n static buildFieldExpression(field: string, operator: string, values: string[]) {\n Assert.isNonEmptyString(field);\n Assert.stringStartsWith(field, '@');\n Assert.isNonEmptyString(operator);\n Assert.isLargerOrEqualsThan(1, values.length);\n\n if (values.length == 1) {\n return field + operator + QueryUtils.quoteAndEscapeIfNeeded(values[0]);\n } else {\n return field + operator + '(' + _.map(values, (str) => QueryUtils.quoteAndEscapeIfNeeded(str)).join(',') + ')';\n }\n }\n\n static buildFieldNotEqualExpression(field: string, values: string[]) {\n Assert.isNonEmptyString(field);\n Assert.stringStartsWith(field, '@');\n Assert.isLargerOrEqualsThan(1, values.length);\n\n let filter: string;\n if (values.length == 1) {\n filter = field + '==' + QueryUtils.quoteAndEscapeIfNeeded(values[0]);\n } else {\n filter = field + '==' + '(' + _.map(values, (str) => QueryUtils.quoteAndEscapeIfNeeded(str)).join(',') + ')';\n }\n\n return '(NOT ' + filter + ')';\n }\n\n static mergeQueryString(url: string, queryString: string) {\n let queryStringPosition = url.indexOf('?');\n if (queryStringPosition != -1) {\n url += '&' + queryString;\n } else {\n url += '?' + queryString;\n }\n return url;\n }\n\n static mergePath(url: string, path: string) {\n let urlSplit = url.split('?');\n return urlSplit[0] + path + '?' + (urlSplit[1] || '');\n }\n\n public static setPropertyOnResults(results: IQueryResults, property: string, value: any, afterOneLoop?: () => any) {\n _.each(results.results, (result: IQueryResult) => {\n QueryUtils.setPropertyOnResult(result, property, value);\n value = afterOneLoop ? afterOneLoop() : value;\n });\n }\n\n public static setPropertyOnResult(result: IQueryResult, property: string, value: any) {\n result[property] = value;\n _.each(result.childResults, (child: IQueryResult) => {\n child[property] = value;\n });\n if (!Utils.isNullOrUndefined(result.parentResult)) {\n result.parentResult[property] = value;\n }\n }\n\n // http://stackoverflow.com/a/11582513\n public static getUrlParameter(name: string): string {\n return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ''])[1].replace(/\\+/g, '%20')) || null;\n }\n\n public static isStratusAgnosticField(fieldToVerify: string, fieldToMatch: string): boolean {\n let checkForSystem = /^(@?)(sys)?(.*)/i;\n let matchFieldToVerify = checkForSystem.exec(fieldToVerify);\n let matchFieldToMatch = checkForSystem.exec(fieldToMatch);\n if (matchFieldToVerify && matchFieldToMatch) {\n return (matchFieldToVerify[1] + matchFieldToVerify[3]).toLowerCase() == (matchFieldToMatch[1] + matchFieldToMatch[3]).toLowerCase();\n }\n return false;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/QueryUtils.ts\n **/","import { IEndpointError } from './EndpointError';\nimport { IErrorResponse } from './EndpointCaller';\nimport { Assert } from '../misc/Assert';\n\nexport class QueryError implements IEndpointError {\n public status: number;\n public message: string;\n public type: string;\n public queryExecutionReport: any;\n public name: string;\n\n constructor(errorResponse: IErrorResponse) {\n this.status = errorResponse.statusCode;\n this.message = errorResponse.data.message;\n this.name = this.type = errorResponse.data.type;\n this.queryExecutionReport = errorResponse.data.executionReport;\n\n Assert.isNumber(this.status);\n Assert.isNonEmptyString(this.message);\n Assert.isNonEmptyString(this.type);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/rest/QueryError.ts\n **/","declare function require(moduleName: string): any;\nexport const ModalBox = require('exports?Coveo.ModalBox!../node_modules/modal-box/bin/ModalBox.min.js');\nexport const MagicBox = require('exports?Coveo.MagicBox!../node_modules/coveomagicbox/bin/MagicBox.min.js');\nexport const LocaleString = require('exports?window.String.toLocaleString!../lib/l10n/l10n.min.js');\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ExternalModulesShim.ts\n **/","var Coveo;!function(e){var o;!function(e){function o(e,o){void 0===o&&(o={});var n=o.body||document.body;n.className?n.className.indexOf(\"coveo-modalBox-opened\")==-1&&(n.className+=\" coveo-modalBox-opened\"):n.className=\"coveo-modalBox-opened\";var c=document.createElement(\"div\");c.className=\"coveo-modalBox\",n.appendChild(c),o.fullscreen===!0&&(c.className+=\" coveo-fullscreen\");var d=document.createElement(\"div\");d.className=\"coveo-overlay\",c.appendChild(d);var s=document.createElement(\"div\");if(s.className=\"coveo-wrapper\",c.appendChild(s),null!=o.title){var r=document.createElement(\"div\");r.className=\"coveo-title\",s.appendChild(r),r.innerHTML=o.title,o.titleClose===!0&&r.addEventListener(\"click\",function(){return v()})}e.className+=\" coveo-body\",s.appendChild(e);var i,v=function(e,t){void 0===e&&(e=0),void 0===t&&(t=!1);var d=null==o.validation||o.validation(e);if(d!==!1||t){c.parentElement&&c.parentElement.removeChild(c);var s=l.indexOf(v);return s>=0&&l.splice(s,1),null==n.querySelector(\".coveo-modalBox\")&&a(n,\"coveo-modalBox-opened\"),!0}return!1},u=function(e,o){var n=document.createElement(\"div\");n.className=\"coveo-button\",n.textContent=e,n.addEventListener(\"click\",function(){return v(o)}),i.appendChild(n)};return null!=o.buttons&&(i=document.createElement(\"div\"),i.className=\"coveo-buttons\",s.appendChild(i),o.buttons&t.OK&&u(\"Ok\",t.OK),o.buttons&t.APPLY&&u(\"Apply\",t.APPLY),o.buttons&t.YES&&u(\"Yes\",t.YES),o.buttons&t.NO&&u(\"No\",t.NO),o.buttons&t.CANCEL&&u(\"Cancel\",t.CANCEL)),l.push(v),o.overlayClose===!0&&d.addEventListener(\"click\",function(e){return v()}),null!=o.className&&(c.className+=\" \"+o.className),{modalBox:c,overlay:d,wrapper:s,buttons:i,content:e,close:v}}function n(e){void 0===e&&(e=!1);for(var o=0;l.length>o;){var n=l[o](0,e);n||o++}}function a(e,o){e.className=e.className.replace(new RegExp(\"(^|\\\\s)\"+o+\"(\\\\s|\\\\b)\",\"g\"),\"$1\")}!function(e){e[e.OK=1]=\"OK\",e[e.APPLY=2]=\"APPLY\",e[e.YES=4]=\"YES\",e[e.NO=8]=\"NO\",e[e.CANCEL=16]=\"CANCEL\"}(e.BUTTON||(e.BUTTON={}));var t=e.BUTTON,l=[];e.open=o,e.close=n}(o=e.ModalBox||(e.ModalBox={}))}(Coveo||(Coveo={}));\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = Coveo.ModalBox;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/exports-loader?Coveo.ModalBox!./~/modal-box/bin/ModalBox.min.js\n ** module id = 26\n ** module chunks = 0 1\n **/","var Coveo,__extends=this&&this.__extends||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);function s(){this.constructor=t}t.prototype=null===e?Object.create(e):(s.prototype=e.prototype,new s)};!function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){var s=this;this.expression=e,this.input=n,_.isString(t)?this.value=t:_.isArray(t)&&(this.subResults=t,_.forEach(this.subResults,function(t){t.parent=s}))}return t.prototype.isSuccess=function(){return null!=this.value||null!=this.subResults&&_.all(this.subResults,function(t){return t.isSuccess()})},t.prototype.path=function(t){var e=null!=this.parent&&this.parent!=t?this.parent.path(t):[];return e.push(this),e},t.prototype.findParent=function(t){for(var e=this,n=_.isString(t)?function(e){return t==e.expression.id}:t;null!=e&&!n(e);)e=e.parent;return e},t.prototype.find=function(t){var e=_.isString(t)?function(e){return t==e.expression.id}:t;if(e(this))return this;if(this.subResults)for(var n=0;nthis.getLength())return[];if(null!=e){if(_.isString(e)){if(e==this.expression.id)return[this]}else if(e(this))return[this]}else if(null!=(null==this.value&&null==this.subResults?this.input:this.value))return[this];if(null!=this.subResults){for(var n=[],s=0;s0?_.last(t).input:\"\";return\"Expected \"+_.map(t,function(t){return t.getHumanReadable()}).join(\" or \")+\" but \"+(e.length>0?JSON.stringify(e[0]):\"end of input\")+\" found.\"},t.prototype.before=function(){if(null==this.parent)return\"\";var t=_.indexOf(this.parent.subResults,this);return this.parent.before()+_.chain(this.parent.subResults).first(t).map(function(t){return t.toString()}).join(\"\").value()},t.prototype.after=function(){if(null==this.parent)return\"\";var t=_.indexOf(this.parent.subResults,this);return _.chain(this.parent.subResults).last(this.parent.subResults.length-t-1).map(function(t){return t.toString()}).join(\"\").value()+this.parent.after()},t.prototype.getLength=function(){return null!=this.value?this.value.length:null!=this.subResults?_.reduce(this.subResults,function(t,e){return t+e.getLength()},0):this.input.length},t.prototype.toHtmlElement=function(){var t=document.createElement(\"span\"),e=null!=this.expression?this.expression.id:null;return null!=e&&t.setAttribute(\"data-id\",e),t.setAttribute(\"data-success\",this.isSuccess().toString()),null!=this.value?(t.appendChild(document.createTextNode(this.value)),t.setAttribute(\"data-value\",this.value)):null!=this.subResults?_.each(this.subResults,function(e){t.appendChild(e.toHtmlElement())}):(t.appendChild(document.createTextNode(this.input)),t.setAttribute(\"data-input\",this.input),t.className=\"magic-box-error\"+(this.input.length>0?\"\":\" magic-box-error-empty\")),t.result=this,t},t.prototype.clean=function(e){if(null!=e||!this.isSuccess()){e=e||_.last(this.getBestExpect()).path(this);var n=_.first(e);if(null!=n){var s=_.indexOf(this.subResults,n),i=-1==s?[]:_.map(_.first(this.subResults,s),function(t){return t.clean()});return i.push(n.clean(_.rest(e))),new t(i,this.expression,this.input)}return new t(null,this.expression,this.input)}return null!=this.value?new t(this.value,this.expression,this.input):null!=this.subResults?new t(_.map(this.subResults,function(t){return t.clean()}),this.expression,this.input):void 0},t.prototype.clone=function(){return null!=this.value?new t(this.value,this.expression,this.input):null!=this.subResults?new t(_.map(this.subResults,function(t){return t.clone()}),this.expression,this.input):new t(null,this.expression,this.input)},t.prototype.toString=function(){return null!=this.value?this.value:null!=this.subResults?_.map(this.subResults,function(t){return t.toString()}).join(\"\"):this.input},t.prototype.getHumanReadable=function(){return this.expression instanceof e.ExpressionConstant?JSON.stringify(this.expression.value):this.expression.id},t}(),e.Result=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(n){t.call(this,[n],e.ExpressionEndOfInput,n.input);var s=new e.Result(null,e.ExpressionEndOfInput,n.input.substr(n.getLength()));s.parent=this,this.subResults.push(s)}return __extends(n,t),n}(e.Result),e.EndOfInputResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(e,n,s,i){var o=this;t.call(this,null!=e?[e]:null,n,s),this.result=e,this.expression=n,this.input=s,this.failAttempt=i,_.forEach(this.failAttempt,function(t){t.parent=o})}return __extends(n,t),n.prototype.getExpect=function(){var t=this,e=[];return null!=this.result&&(e=this.result.getExpect()),(e=_.reduce(this.failAttempt,function(t,e){return t.concat(e.getExpect())},e)).length>0&&_.all(e,function(e){return e.input==t.input})?[this]:e},n.prototype.clean=function(t){if(null!=t||!this.isSuccess()){t=_.rest(t||_.last(this.getBestExpect()).path(this));var n=_.first(t);return null==n?new e.Result(null,this.expression,this.input):new e.Result([n.clean(_.rest(t))],this.expression,this.input)}return new e.Result(_.map(this.result.subResults,function(t){return t.clean()}),this.expression,this.input)},n}(e.Result),e.OptionResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(e,n,s,i){t.call(this,e,n,s),this.results=e,this.expression=n,this.input=s,_.last(e)!=i&&(this.failAttempt=i,null!=this.failAttempt&&(this.failAttempt.parent=this))}return __extends(n,t),n.prototype.getExpect=function(){var e=t.prototype.getExpect.call(this);return null!=this.failAttempt?e.concat(this.failAttempt.getExpect()):e},n.prototype.clean=function(n){if(null!=this.failAttempt&&(null!=n||!this.isSuccess())){n=n||_.last(this.getBestExpect()).path(this);var s=_.first(n);if(null!=s&&s==this.failAttempt){var i=_.last(this.subResults),o=_.map(null!=i&&i.isSuccess()?this.subResults:_.initial(this.subResults),function(t){return t.clean()});return o.push(s.clean(_.rest(n))),new e.Result(o,this.expression,this.input)}}return t.prototype.clean.call(this,n)},n}(e.Result),e.RefResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e){this.value=t,this.id=e}return t.prototype.parse=function(t,n){var s=0==t.indexOf(this.value),i=new e.Result(s?this.value:null,this,t);return s&&n&&t.length>this.value.length?new e.EndOfInputResult(i):i},t.prototype.toString=function(){return this.value},t}(),e.ExpressionConstant=n}(Coveo||(Coveo={})),function(t){(t.MagicBox||(t.MagicBox={})).ExpressionEndOfInput={id:\"end of input\",parse:null}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){this.func=t,this.id=e,this.grammar=n}return t.prototype.parse=function(t,e){return this.func(t,e,this)},t.prototype.toString=function(){return this.id},t}(),e.ExpressionFunction=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e){if(this.parts=t,this.id=e,0==t.length)throw JSON.stringify(e)+\" should have at least 1 parts\"}return t.prototype.parse=function(t,n){for(var s,i=[],o=t,r=0;r0){var l=_.last(r);(i=s.parse(l.input,!0)).isSuccess()?r[r.length-1]=i:(r.push(new e.Result(null,e.ExpressionEndOfInput,l.input.substr(l.getLength()))),i=s.parse(l.input.substr(l.getLength()),!0))}else if(0!=t.length){var p=new e.Result(null,e.ExpressionEndOfInput,t);return new e.RefResult([p],this,t,i)}return new e.RefResult(r,this,t,i)},t.prototype.toString=function(){return this.id},t}(),e.ExpressionRef=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){this.value=t,this.id=e}return t.prototype.parse=function(t,n){var s=t.match(this.value);null!=s&&0!=s.index&&(s=null);var i=new e.Result(null!=s?s[0]:null,this,t);return i.isSuccess()&&n&&t.length>i.value.length?new e.EndOfInputResult(i):i},t.prototype.toString=function(){return this.id},t}(),e.ExpressionRegExp=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,n){void 0===n&&(n={}),this.expressions={},this.start=new e.ExpressionRef(t,null,\"start\",this),this.addExpressions(n)}return t.prototype.addExpressions=function(t){var e=this;_.each(t,function(t,n){e.addExpression(n,t)})},t.prototype.addExpression=function(e,n){if(e in this.expressions)throw\"Grammar already contain the id:\"+e;this.expressions[e]=t.buildExpression(n,e,this)},t.prototype.getExpression=function(t){return this.expressions[t]},t.prototype.parse=function(t){return this.start.parse(t,!0)},t.buildExpression=function(t,n,s){if(\"undefined\"==typeof t)throw\"Invalid Expression: \"+t;if(_.isString(t))return this.buildStringExpression(t,n,s);if(_.isArray(t))return new e.ExpressionOptions(_.map(t,function(t,i){return new e.ExpressionRef(t,null,n+\"_\"+i,s)}),n);if(_.isRegExp(t))return new e.ExpressionRegExp(t,n,s);if(_.isFunction(t))return new e.ExpressionFunction(t,n,s);throw\"Invalid Expression: \"+t},t.buildStringExpression=function(n,s,i){var o=t.stringMatch(n,t.spliter),r=_.map(o,function(t,n){if(t[1]){var o=t[1],r=t[3]?Number(t[3]):t[2]||null;return new e.ExpressionRef(o,r,s+\"_\"+n,i)}return new e.ExpressionConstant(t[4],s+\"_\"+n)});if(1==r.length){var u=r[0];return u.id=s,u}return new e.ExpressionList(r,s)},t.stringMatch=function(t,e){for(var n,s=[],i=new RegExp(e.source,\"g\");null!==(n=i.exec(t));)s.push(n);return s},t.spliter=/\\[(\\w+)(\\*|\\+|\\?|\\{([1-9][0-9]*)\\})?\\]|(.[^\\[]*)/,t}(),e.Grammar=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,n,s){this.element=t,this.onchange=n,this.magicBox=s,this.hasFocus=!1,this.justPressedTab=!1,this.underlay=document.createElement(\"div\"),this.underlay.className=\"magic-box-underlay\",this.highlightContainer=document.createElement(\"span\"),this.highlightContainer.className=\"magic-box-highlight-container\",this.underlay.appendChild(this.highlightContainer),this.ghostTextContainer=document.createElement(\"span\"),this.ghostTextContainer.className=\"magic-box-ghost-text\",this.underlay.appendChild(this.ghostTextContainer),this.input=e.$$(t).find(\"input\"),this.input?t.insertBefore(this.underlay,this.input):(this.input=document.createElement(\"input\"),t.appendChild(this.underlay),t.appendChild(this.input)),this.input.spellcheck=!1,this.input.setAttribute(\"form\",\"coveo-dummy-form\"),this.input.setAttribute(\"autocomplete\",\"off\"),this.setupHandler()}return t.prototype.updateInput=function(){this.input.value!=this.result.input&&(this.input.value=this.result.input,this.hasFocus&&this.setCursor(this.getValue().length))},t.prototype.updateHighlight=function(){e.$$(this.highlightContainer).empty(),this.highlightContainer.appendChild(this.result.toHtmlElement())},t.prototype.updateWordCompletion=function(){e.$$(this.ghostTextContainer).empty(),null!=this.wordCompletion&&this.ghostTextContainer.appendChild(document.createTextNode(this.wordCompletion.substr(this.result.input.length)))},t.prototype.updateScroll=function(t){var n=this;void 0===t&&(t=!0);var s=function(){n.underlay.clientWidth0&&this.element.contains(s[0])&&this.addSelectedClass(s[0])},t.prototype.handleMouseOut=function(t){var n=e.$$(t.target),s=n.parents(this.options.selectableClass);if(t.relatedTarget){var i=e.$$(t.relatedTarget).parents(this.options.selectableClass);n.hasClass(this.options.selectedClass)&&!e.$$(t.relatedTarget).hasClass(this.options.selectableClass)?n.removeClass(this.options.selectedClass):0==i.length&&s.length>0&&e.$$(s[0]).removeClass(this.options.selectedClass)}else n.hasClass(this.options.selectedClass)?n.removeClass(this.options.selectedClass):s.length>0&&e.$$(s[0]).removeClass(this.options.selectedClass)},t.prototype.moveDown=function(){var t=this.element.getElementsByClassName(this.options.selectedClass).item(0),n=this.element.getElementsByClassName(this.options.selectableClass),s=-1;if(null!=t){e.$$(t).removeClass(this.options.selectedClass);for(var i=0;i0?(e.$$(this.element).addClass(\"magic-box-hasSuggestion\"),this.hasSuggestions=!0):(e.$$(this.element).removeClass(\"magic-box-hasSuggestion\"),this.hasSuggestions=!1)},t.prototype.returnMoved=function(t){if(null!=t){if(t.suggestion)return t.suggestion;if(t[\"no-text-suggestion\"])return null;if(t instanceof HTMLElement)return{text:e.$$(t).text()}}return null},t.prototype.addSelectedClass=function(t){for(var n=this.element.getElementsByClassName(this.options.selectedClass),s=0;s'+_.escape(e)+\"\"};t.highlightText=function(t,e,s,i,o){if(void 0===s&&(s=!1),void 0===i&&(i=\"magic-box-hightlight\"),void 0===o&&(o=\"\"),0==e.length)return t;var r=e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),u=new RegExp(\"(\"+r+\")|(.*?(?=\"+r+\")|.+)\",s?\"gi\":\"g\");return t.replace(u,function(t,e,s){return n(null!=e?i:o,t)})};var s=function(){function t(t){this.el=t}return t.prototype.text=function(t){if(!t)return this.el.innerText||this.el.textContent;void 0!=this.el.innerText?this.el.innerText=t:void 0!=this.el.textContent&&(this.el.textContent=t)},t.prototype.nodeListToArray=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t.item(e);return n},t.prototype.empty=function(){for(;this.el.firstChild;)this.el.removeChild(this.el.firstChild)},t.prototype.show=function(){this.el.style.display=\"visible\"},t.prototype.hide=function(){this.el.style.display=\"none\"},t.prototype.toggle=function(t){void 0===t?\"visible\"==this.el.style.display?this.hide():this.show():t?this.show():this.hide()},t.prototype.find=function(t){return this.el.querySelector(t)},t.prototype.is=function(t){return this.el.tagName.toLowerCase()==t.toLowerCase()||!(\".\"!=t[0]||!this.hasClass(t.substr(1)))||\"#\"==t[0]&&this.el.getAttribute(\"id\")==t.substr(1)},t.prototype.closest=function(t){for(var n=this.el,s=!1;!s&&(e.$$(n).hasClass(t)&&(s=!0),\"body\"!=n.tagName.toLowerCase())&&null!=n.parentElement;)s||(n=n.parentElement);if(s)return n},t.prototype.parent=function(t){if(void 0!=this.el.parentElement)return this.traverseAncestorForClass(this.el.parentElement,t)},t.prototype.parents=function(e){for(var n=[],s=this.parent(e);s;)n.push(s),s=new t(s).parent(e);return n},t.prototype.findAll=function(t){return this.nodeListToArray(this.el.querySelectorAll(t))},t.prototype.findClass=function(t){return\"getElementsByClassName\"in this.el?this.nodeListToArray(this.el.getElementsByClassName(t)):this.nodeListToArray(this.el.querySelectorAll(\".\"+t))},t.prototype.findId=function(t){return document.getElementById(t)},t.prototype.addClass=function(t){this.hasClass(t)||(this.el.className?this.el.className+=\" \"+t:this.el.className=t)},t.prototype.removeClass=function(t){this.el.className=this.el.className.replace(new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|\\\\b)\",\"g\"),\"$1\")},t.prototype.toggleClass=function(t,e){e?this.addClass(t):this.removeClass(t)},t.prototype.getClass=function(){return this.el.className.match(t.CLASS_NAME_REGEX)||[]},t.prototype.hasClass=function(t){return _.contains(this.getClass(),t)},t.prototype.detach=function(){this.el.parentElement&&this.el.parentElement.removeChild(this.el)},t.prototype.on=function(e,n){var s=this;if(_.isArray(e))_.each(e,function(t){s.on(t,n)});else{var i=this.getJQuery();if(i)i(this.el).on(e,n);else if(this.el.addEventListener){var o=function(t){n(t,t.detail)};t.handlers.push({eventHandle:n,fn:o}),this.el.addEventListener(e,o,!1)}else this.el.on&&this.el.on(\"on\"+e,n)}},t.prototype.one=function(t,e){var n=this;if(_.isArray(t))_.each(t,function(t){n.one(t,e)});else{var s=function(i){return n.off(t,s),e(i)};this.on(t,s)}},t.prototype.off=function(e,n){var s=this;if(_.isArray(e))_.each(e,function(t){s.off(t,n)});else{var i=this.getJQuery();if(i)i(this.el).off(e,n);else if(this.el.removeEventListener){var o=0,r=_.find(t.handlers,function(t,e){if(t.eventHandle==n)return o=e,!0});r&&(this.el.removeEventListener(e,r.fn,!1),t.handlers.splice(o,1))}else this.el.off&&this.el.off(\"on\"+e,n)}},t.prototype.trigger=function(t,e){var n=this.getJQuery();if(n)n(this.el).trigger(t,e);else if(void 0!==CustomEvent){var s=new CustomEvent(t,{detail:e,bubbles:!0});this.el.dispatchEvent(s)}},t.prototype.isEmpty=function(){return t.ONLY_WHITE_SPACE_REGEX.test(this.el.innerHTML)},t.prototype.isDescendant=function(t){for(var e=this.el.parentNode;null!=e;){if(e==t)return!0;e=e.parentNode}return!1},t.prototype.traverseAncestorForClass=function(t,n){void 0===t&&(t=this.el),0==n.indexOf(\".\")&&(n=n.substr(1));for(var s=!1;!s&&(e.$$(t).hasClass(n)&&(s=!0),\"body\"!=t.tagName.toLowerCase())&&null!=t.parentElement;)s||(t=t.parentElement);if(s)return t},t.prototype.getJQuery=function(){return void 0!=window.jQuery&&window.jQuery},t.CLASS_NAME_REGEX=/-?[_a-zA-Z]+[_a-zA-Z0-9-]*/g,t.ONLY_WHITE_SPACE_REGEX=/^\\s*$/,t.handlers=[],t}();t.Dom=s})((e=t.MagicBox||(t.MagicBox={})).Utils||(e.Utils={}))}(Coveo||(Coveo={})),function(t){var e;(e=t.MagicBox||(t.MagicBox={})).$$=function(t){return window.Coveo&&window.Coveo.$$?window.Coveo.$$(t):new e.Utils.Dom(t)}}(Coveo||(Coveo={})),function(t){var e;(function(t){function n(t,e,n,s){_.each(s.expressions,function(e){_.contains(t,e)||t.push(e)}),_.each(s.basicExpressions,function(t){_.contains(e,t)||e.push(t)}),_.each(s.grammars,function(t,e){if(e in n){if(!_.isArray(n[e])||!_.isArray(t))throw _.each(t,function(t){n[e].push(t)}),\"Can not merge \"+e+\"(\"+new String(t)+\" => \"+new String(n[e])+\")\";_.each(t,function(t){n[e].push(t)})}else n[e]=t})}function s(){for(var t=[],e=0;eu.value.length?new e.EndOfInputResult(u):u}}}}(Coveo||(Coveo={})),function(t){var e;((e=t.MagicBox||(t.MagicBox={})).Grammars||(e.Grammars={})).SubExpression={basicExpressions:[\"SubExpression\"],grammars:{SubExpression:\"([Expressions])\"}}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Date={grammars:{Date:\"[DateYear]/[DateMonth]/[DateDay]\",DateYear:/([0-9]{4})/,DateMonth:/(1[0-2]|0?[1-9])/,DateDay:/([1-2][0-9]|3[0-1]|0?[1-9])/,DateRange:\"[Date][Spaces?]..[Spaces?][Date]\",DateRelative:[\"DateRelativeNegative\",\"DateRelativeTerm\"],DateRelativeTerm:/now|today|yesterday/,DateRelativeNegative:\"[DateRelativeTerm][DateRelativeNegativeRef]\",DateRelativeNegativeRef:/([\\-\\+][0-9]+(s|m|h|d|mo|y))/},include:[n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Field={basicExpressions:[\"FieldSimpleQuery\",\"FieldQuery\",\"Field\"],grammars:{FieldQuery:\"[Field][OptionalSpaces][FieldQueryOperation]\",FieldQueryOperation:[\"FieldQueryValue\",\"FieldQueryNumeric\"],FieldQueryValue:\"[FieldOperator][OptionalSpaces][FieldValue]\",FieldQueryNumeric:\"[FieldOperatorNumeric][OptionalSpaces][FieldValueNumeric]\",FieldSimpleQuery:\"[FieldName]:[OptionalSpaces][FieldValue]\",Field:\"@[FieldName]\",FieldName:/[a-zA-Z][a-zA-Z0-9\\.\\_]*/,FieldOperator:/==|=|<>/,FieldOperatorNumeric:/<=|>=|<|>/,FieldValue:[\"DateRange\",\"NumberRange\",\"DateRelative\",\"Date\",\"Number\",\"FieldValueList\",\"FieldValueString\"],FieldValueNumeric:[\"DateRelative\",\"Date\",\"Number\"],FieldValueString:[\"DoubleQuoted\",\"FieldValueNotQuoted\"],FieldValueList:\"([FieldValueString][FieldValueStringList*])\",FieldValueStringList:\"[FieldValueSeparator][FieldValueString]\",FieldValueSeparator:/ *, */,FieldValueNotQuoted:/[^ \\(\\),]+/,NumberRange:\"[Number][Spaces?]..[Spaces?][Number]\"},include:[n.Date,n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).QueryExtension={basicExpressions:[\"QueryExtension\"],grammars:{QueryExtension:\"$[QueryExtensionName]([QueryExtensionArguments])\",QueryExtensionName:/\\w+/,QueryExtensionArguments:\"[QueryExtensionArgumentList*][QueryExtensionArgument]\",QueryExtensionArgumentList:\"[QueryExtensionArgument][Spaces?],[Spaces?]\",QueryExtensionArgument:\"[QueryExtensionArgumentName]:[Spaces?][QueryExtensionArgumentValue]\",QueryExtensionArgumentName:/\\w+/,QueryExtensionArgumentValue:[\"SingleQuoted\",\"Expressions\"]},include:[n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).NestedQuery={basicExpressions:[\"NestedQuery\"],grammars:{NestedQuery:\"[[NestedField][OptionalSpaces][Expressions]]\",NestedField:\"[[Field]]\",FieldValue:[\"NestedQuery\"]},include:[n.Field]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Complete={include:[n.NestedQuery,n.QueryExtension,n.SubExpression,n.Field,n.Basic]}}(Coveo||(Coveo={})),function(t){!function(t){var e=function(){function e(e,n,s){var i=this;void 0===s&&(s={}),this.element=e,this.grammar=n,this.options=s,this.lastSuggestions=[],_.isUndefined(this.options.inline)&&(this.options.inline=!1),t.$$(e).addClass(\"magic-box\"),this.options.inline&&t.$$(e).addClass(\"magic-box-inline\"),this.result=this.grammar.parse(\"\"),this.displayedResult=this.result.clean(),this.clearDom=document.createElement(\"div\"),this.clearDom.className=\"magic-box-clear\";var o=document.createElement(\"div\");o.className=\"magic-box-icon\",this.clearDom.appendChild(o);var r=t.$$(e).find(\".magic-box-input\");r?e.insertBefore(this.clearDom,r):((r=document.createElement(\"div\")).className=\"magic-box-input\",e.appendChild(this.clearDom),e.appendChild(r)),this.inputManager=new t.InputManager(r,function(t,e){e?(i.setText(t),i.onselect&&i.onselect(i.getFirstSuggestionText())):(i.setText(t),i.showSuggestion(),i.onchange&&i.onchange())},this),this.inputManager.ontabpress=function(){i.ontabpress&&i.ontabpress()};var u=this.inputManager.getValue();u&&(this.displayedResult.input=u),this.inputManager.setResult(this.displayedResult);var a=document.createElement(\"div\");a.className=\"magic-box-suggestions\",this.element.appendChild(a),this.suggestionsManager=new t.SuggestionsManager(a,{selectableClass:this.options.selectableSuggestionClass,selectedClass:this.options.selectedSuggestionClass,timeout:this.options.suggestionTimeout}),this.setupHandler()}return e.prototype.getResult=function(){return this.result},e.prototype.getDisplayedResult=function(){return this.displayedResult},e.prototype.setText=function(e){t.$$(this.element).toggleClass(\"magic-box-notEmpty\",e.length>0),this.result=this.grammar.parse(e),this.displayedResult=this.result.clean(),this.inputManager.setResult(this.displayedResult)},e.prototype.setCursor=function(t){this.inputManager.setCursor(t)},e.prototype.getCursor=function(){return this.inputManager.getCursor()},e.prototype.resultAtCursor=function(t){return this.displayedResult.resultAt(this.getCursor(),t)},e.prototype.setupHandler=function(){var e=this;this.inputManager.onblur=function(){t.$$(e.element).removeClass(\"magic-box-hasFocus\"),e.onblur&&e.onblur(),e.options.inline||e.clearSuggestion()},this.inputManager.onfocus=function(){t.$$(e.element).addClass(\"magic-box-hasFocus\"),e.showSuggestion(),e.onfocus&&e.onfocus()},this.inputManager.onkeydown=function(t){return 38!=t&&40!=t&&(13==t?(null==e.suggestionsManager.select()&&e.onsubmit&&e.onsubmit(),!1):(27==t&&(e.clearSuggestion(),e.blur()),!0))},this.inputManager.onchangecursor=function(){e.showSuggestion()},this.inputManager.onkeyup=function(t){if(38==t)e.onmove&&e.onmove(),e.focusOnSuggestion(e.suggestionsManager.moveUp()),e.onchange&&e.onchange();else{if(40!=t)return!0;e.onmove&&e.onmove(),e.focusOnSuggestion(e.suggestionsManager.moveDown()),e.onchange&&e.onchange()}return!1},this.clearDom.onclick=function(){e.clear()}},e.prototype.showSuggestion=function(){var t=this;this.suggestionsManager.mergeSuggestions(null!=this.getSuggestions?this.getSuggestions():[],function(e){t.updateSuggestion(e)})},e.prototype.updateSuggestion=function(t){var e=this;this.lastSuggestions=t;var n=this.getFirstSuggestionText();this.inputManager.setWordCompletion(n&&n.text),this.onsuggestions&&this.onsuggestions(t),_.each(t,function(t){null==t.onSelect&&null!=t.text&&(t.onSelect=function(){e.setText(t.text),e.onselect&&e.onselect(t)})})},e.prototype.focus=function(){t.$$(this.element).addClass(\"magic-box-hasFocus\"),this.inputManager.focus()},e.prototype.blur=function(){this.inputManager.blur()},e.prototype.clearSuggestion=function(){var t=this;this.suggestionsManager.mergeSuggestions([],function(e){t.updateSuggestion(e)}),this.inputManager.setWordCompletion(null)},e.prototype.focusOnSuggestion=function(t){null==t||null==t.text?(t=this.getFirstSuggestionText(),this.inputManager.setResult(this.displayedResult,t&&t.text)):this.inputManager.setResult(this.grammar.parse(t.text).clean(),t.text)},e.prototype.getFirstSuggestionText=function(){return _.find(this.lastSuggestions,function(t){return null!=t.text})},e.prototype.getText=function(){return this.inputManager.getValue()},e.prototype.getWordCompletion=function(){return this.inputManager.getWordCompletion()},e.prototype.clear=function(){this.setText(\"\"),this.showSuggestion(),this.focus(),this.onclear&&this.onclear()},e.prototype.hasSuggestions=function(){return this.suggestionsManager.hasSuggestions},e}();t.Instance=e,t.create=function(t,n,s){return new e(t,n,s)},t.requestAnimationFrame=function(t){return\"requestAnimationFrame\"in window?window.requestAnimationFrame(t):setTimeout(t)}}(t.MagicBox||(t.MagicBox={}))}(Coveo||(Coveo={}));\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = Coveo.MagicBox;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/exports-loader?Coveo.MagicBox!./~/coveomagicbox/bin/MagicBox.min.js\n ** module id = 27\n ** module chunks = 0 1\n **/","!function(){\"use strict\";var t,e,n=\"undefined\",r=\"string\",i=self.navigator,o=String,a=Object.prototype.hasOwnProperty,l={},u={},s=!1,f=!0,c=/^\\s*application\\/(?:vnd\\.oftn\\.|x-)?l10n\\+json\\s*(?:$|;)/i,p=\"locale\",g=\"defaultLocale\",h=\"toLocaleString\",y=\"toLowerCase\",v=Array.prototype.indexOf||function(t){for(var e=this.length,n=0;e>n;n++)if(n in this&&this[n]===t)return n;return-1},d=function(e){var n=new t;return n.open(\"GET\",e,s),n.send(null),200!==n.status?(setTimeout(function(){var t=new Error(\"Unable to load localization data: \"+e);throw t.name=\"Localization Error\",t},0),{}):JSON.parse(n.responseText)},m=o[h]=function(t){if(arguments.length>0&&\"number\"!=typeof t)if(typeof t===r)m(d(t));else if(t===s)u={};else{var e,n,i;for(e in t)if(a.call(t,e)){if(n=t[e],e=e[y](),e in u&&n!==s||(u[e]={}),n===s)continue;if(typeof n===r){if(0!==o[p][y]().indexOf(e)){e in l||(l[e]=[]),l[e].push(n);continue}n=d(n)}for(i in n)a.call(n,i)&&(u[e][i]=n[i])}}return Function.prototype[h].apply(o,arguments)},w=function(t){for(var e,n=l[t],r=0,i=n.length;i>r;r++)e={},e[t]=d(n[r]),m(e);delete l[t]},b=o.prototype[h]=function(){var t,n=e,r=o[n?g:p],i=r[y]().split(\"-\"),a=i.length,c=this.valueOf();e=s;do if(t=i.slice(0,a).join(\"-\"),t in l&&w(t),t in u&&c in u[t])return u[t][c];while(a-->1);return!n&&o[g]?(e=f,b.call(c)):c};if(typeof XMLHttpRequest===n&&typeof ActiveXObject!==n){var L=ActiveXObject;t=function(){try{return new L(\"Msxml2.XMLHTTP.6.0\")}catch(t){}try{return new L(\"Msxml2.XMLHTTP.3.0\")}catch(e){}try{return new L(\"Msxml2.XMLHTTP\")}catch(n){}throw new Error(\"XMLHttpRequest not supported by this browser.\")}}else t=XMLHttpRequest;if(o[g]=o[g]||\"\",o[p]=i&&(i.language||i.userLanguage)||\"\",typeof document!==n)for(var T,M=document.getElementsByTagName(\"link\"),O=M.length;O--;){var X=M[O],x=(X.getAttribute(\"rel\")||\"\")[y]().split(/\\s+/);c.test(X.type)&&(-1!==v.call(x,\"localizations\")?m(X.getAttribute(\"href\")):-1!==v.call(x,\"localization\")&&(T={},T[(X.getAttribute(\"hreflang\")||\"\")[y]()]=X.getAttribute(\"href\"),m(T)))}}();\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = window.String.toLocaleString;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/exports-loader?window.String.toLocaleString!./lib/l10n/l10n.min.js\n ** module id = 28\n ** module chunks = 0 1\n **/","import * as Globalize from 'globalize';\nimport {LocaleString} from '../ExternalModulesShim';\nvar merge = function(obj1, obj2) {\n var obj3 = {};\n for(var attrname in obj1){obj3[attrname] = obj1[attrname]; }\n for(var attrname in obj2){obj3[attrname] = obj2[attrname]; }\n return obj3;\n}\nvar dict = {\n \"Unknown\": \"Unknown\",\n \"And\": \"AND\",\n \"Authenticating\": \"Authenticating {0}...\",\n \"Clear\": \"Clear {0}\",\n \"CompleteQuery\": \"Complete Query\",\n \"Exclude\": \"Exclude {0}\",\n \"EnterTag\": \"Add Tag\",\n \"Next\": \"Next\",\n \"Last\": \"Last\",\n \"Link\": \"Link\",\n \"Or\": \"OR\",\n \"Previous\": \"Previous\",\n \"QueryDidntMatchAnyDocuments\": \"Your query did not match any documents.\",\n \"QueryException\": \"Your query has an error: {0}.\",\n \"Me\": \"Me\",\n \"Remove\": \"Remove\",\n \"Search\": \"Search\",\n \"SearchFor\": \"Search for {0}\",\n \"ShareQuery\": \"Share Query\",\n \"Preferences\": \"Preferences\",\n \"LinkOpeningSettings\": \"Link Opening Settings\",\n \"Reauthenticate\": \"Reauthenticate {0}\",\n \"ResultsFilteringExpression\": \"Results Filtering Expressions\",\n \"FiltersInYourPreferences\": \"Filters in your preferences\",\n \"Create\": \"Create\",\n \"SearchIn\": \"Search in {0}\",\n \"Seconds\": \"in {0} seconds\",\n \"ShowingResultsOf\": \"Results {0}-{1} of {2}\",\n \"SwitchTo\": \"Switch to {0}\",\n \"Unexclude\": \"Unexclude {0}\",\n \"ClearAllFilters\": \"Clear All Filters\",\n \"SkipLogin\": \"Skip login\",\n \"LoginInProgress\": \"Login in progress, please wait ...\",\n \"Login\": \"Log In\",\n \"GetStarted\": \"Get Started\",\n \"More\": \"More\",\n \"NMore\": \"{0} more...\",\n \"Less\": \"Fewer\",\n \"Settings\": \"Settings\",\n \"Score\": \"Score\",\n \"ScoreDescription\": \"The score is computed from the number of occurrences as well as from the position in the result set.\",\n \"Occurrences\": \"Occurrences\",\n \"OccurrencesDescription\": \"Sort by number of occurrences, with values having the highest number appearing first.\",\n \"Label\": \"Label\",\n \"Of\": \"of\",\n \"LabelDescription\": \"Sort alphabetically on the field values.\",\n \"Value\": \"Value\",\n \"ValueDescription\": \"Sort on the values of the first computed field\",\n \"AlphaAscending\": \"Value Ascending\",\n \"AlphaDescending\": \"Value Descending\",\n \"ChiSquare\": \"Chi Square\",\n \"Nosort\": \"No Sort\",\n \"NosortDescription\": \"Do not sort the values. The values will be returned in a random order.\",\n \"RelativeFrequency\": \"Relative Frequency\",\n \"RelativeFrequencyDescription\": \"Sort based on the relative frequency of values. Less common values will appear higher.\",\n \"DateDistribution\": \"Date distribution\",\n \"Custom\": \"Custom\",\n \"CustomDescription\": \"Sort based on a custom order\",\n \"ComputedField\": \"Computed Field\",\n \"Ascending\": \"Ascending\",\n \"Descending\": \"Descending\",\n \"noResultFor\": \"No results for {0}\",\n \"autoCorrectedQueryTo\": \"Query was automatically corrected to {0}\",\n \"didYouMean\": \"Did you mean: {0}\",\n \"SuggestedResults\": \"Suggested Results\",\n \"SuggestedQueries\": \"Suggested Queries\",\n \"MostRelevantItems\": \"Most relevant items:\",\n \"AllItems\": \"All items:\",\n \"ShowLess\": \"Show less\",\n \"ShowMore\": \"Show more\",\n \"HideFacet\": \"Hide Facet\",\n \"ShowFacet\": \"Show Facet\",\n \"AndOthers\": \"and {0} others\",\n \"Others\": \"{0} others\",\n \"MostRelevantPosts\": \"Most Relevant Posts:\",\n \"CompleteThread\": \"Complete Thread:\",\n \"ShowCompleteThread\": \"Show Complete Thread\",\n \"ShowOnlyTopMatchingPosts\": \"Show Only Top Matching Posts\",\n \"MostRelevantReplies\": \"Most Relevant Replies:\",\n \"AllConversation\": \"All Conversation:\",\n \"ShowAllConversation\": \"Show All Conversation\",\n \"ShowAllReplies\": \"Show All Replies\",\n \"ShowOnlyMostRelevantReplies\": \"Show Only Most Relevant Replies\",\n \"Close\": \"Close\",\n \"Open\": \"Open\",\n \"OpenInOutlookWhenPossible\": \"Open in Outlook (when possible)\",\n \"AlwaysOpenInNewWindow\": \"Always open results in new window\",\n \"Quickview\": \"Quick View\",\n \"NoQuickview\": \"The Quick View for this document is unavailable\",\n \"ErrorReport\": \"Error Report\",\n \"OopsError\": \"Something went wrong.\",\n \"ProblemPersists\": \"If the problem persists contact the administrator.\",\n \"GoBack\": \"Go Back\",\n \"Reset\": \"Reset\",\n \"Retry\": \"Retry\",\n \"MoreInfo\": \"More Information\",\n \"Username\": \"Username\",\n \"Password\": \"Password\",\n \"PostedBy\": \"Posted by\",\n \"CannotConnect\": \"Cannot connect to the server address.\",\n \"BadUserPass\": \"Password does not match with username.\",\n \"PleaseEnterYourCredentials\": \"Please enter your credentials for {0}.\",\n \"PleaseEnterYourSearchPage\": \"Please enter your search page URL\",\n \"Collapse\": \"Collapse\",\n \"Collapsable\": \"Collapsible\",\n \"Expand\": \"Expand\",\n \"Today\": \"Today\",\n \"Yesterday\": \"Yesterday\",\n \"Tomorrow\": \"Tomorrow\",\n \"Duration\": \"Duration: {0}\",\n \"IndexDuration\": \"Index Duration: {0}\",\n \"ProxyDuration\": \"Proxy Duration: {0}\",\n \"ClientDuration\": \"Client Duration: {0}\",\n \"Unavailable\": \"Unavailable\",\n \"Reply\": \"Reply\",\n \"ReplyAll\": \"Reply All\",\n \"Forward\": \"Forward\",\n \"From\": \"From\",\n \"Caption\": \"Caption\",\n \"Expression\": \"Expression\",\n \"Tab\": \"Tab\",\n \"Tabs\": \"Tabs\",\n \"EnterExpressionName\": \"Enter expression name\",\n \"EnterExpressionToFilterWith\": \"Enter expression to filter results with\",\n \"SelectTab\": \"Select Tab\",\n \"SelectAll\": \"Select All\",\n \"PageUrl\": \"Search page URL\",\n \"ErrorSavingToDevice\": \"Error while saving the information to your device\",\n \"ErrorReadingFromDevice\": \"Error while reading the information from your device\",\n \"AppIntro\": \"Speak with a product specialist who can answer your questions about Coveo and help you decide which Coveo solution is right for you. Or, try a live demo !\",\n \"TryDemo\": \"Try the demo\",\n \"ContactUs\": \"Contact us\",\n \"NewToCoveo\": \"New to Coveo?\",\n \"LetUsHelpGetStarted\": \"Let us help you get started\",\n \"LikesThis\": \"{0} likes this.\",\n \"CannotConnectSearchPage\": \"Cannot connect to your search page\",\n \"AreYouSureDeleteFilter\": \"Are you sure you want to delete the filter {0} with the expression {1}\",\n \"OnlineHelp\": \"Online Help\",\n \"Done\": \"Done\",\n \"SaveFacetState\": \"Save this facet state\",\n \"ClearFacetState\": \"Clear facet state\",\n \"DisplayingTheOnlyMessage\": \"Displaying the only message in this conversation\",\n \"NoNetworkConnection\": \"No network connection\",\n \"UnknownConnection\": \"Unknown connection\",\n \"EthernetConnection\": \"Ethernet connection\",\n \"WiFi\": \"WiFi connection\",\n \"CELL\": \"Cellular connection\",\n \"CELL_2G\": \"Cellular 2G connection\",\n \"CELL_3G\": \"Cellular 3G connection\",\n \"CELL_4G\": \"Cellular 4G connection\",\n \"Relevance\": \"Relevance\",\n \"Date\": \"Date\",\n \"Amount\": \"Amount\",\n \"QueryExceptionNoException\": \"No exception\",\n \"QueryExceptionInvalidSyntax\": \"Invalid syntax\",\n \"QueryExceptionInvalidCustomField\": \"Invalid custom field\",\n \"QueryExceptionInvalidDate\": \"Invalid date\",\n \"QueryExceptionInvalidExactPhrase\": \"Invalid exact phrase\",\n \"QueryExceptionInvalidDateOp\": \"Invalid date operator\",\n \"QueryExceptionInvalidNear\": \"Invalid NEAR operator\",\n \"QueryExceptionInvalidWeightedNear\": \"Invalid weighted NEAR\",\n \"QueryExceptionInvalidTerm\": \"Invalid term\",\n \"QueryExceptionTooManyTerms\": \"Too many terms\",\n \"QueryExceptionWildcardTooGeneral\": \"Wildcard too general\",\n \"QueryExceptionInvalidSortField\": \"Invalid sort field\",\n \"QueryExceptionInvalidSmallStringOp\": \"Invalid small string operator\",\n \"QueryExceptionRequestedResultsMax\": \"Requested results maximum\",\n \"QueryExceptionAggregatedMirrorDead\": \"Aggregated mirror is offline\",\n \"QueryExceptionAggregatedMirrorQueryTimeOut\": \"Aggregated mirror query timeout\",\n \"QueryExceptionAggregatedMirrorInvalidBuildNumber\": \"Aggregated mirror invalid build number\",\n \"QueryExceptionAggregatedMirrorCannotConnect\": \"Aggregated mirror cannot connect\",\n \"QueryExceptionNotEnoughLeadingCharsWildcard\": \"Not enough leading character wildcard\",\n \"QueryExceptionSecurityInverterNotFound\": \"Security inverter not found\",\n \"QueryExceptionSecurityInverterAccessDenied\": \"Security inverter access denied\",\n \"QueryExceptionAggregatedMirrorCannotImpersonate\": \"Aggregated mirror cannot impersonate\",\n \"QueryExceptionUnexpected\": \"Unexpected\",\n \"QueryExceptionAccessDenied\": \"Access denied\",\n \"QueryExceptionSuperUserTokenInvalid\": \"Super user token invalid\",\n \"QueryExceptionSuperUserTokenExpired\": \"Super user token is expired\",\n \"QueryExceptionLicenseQueriesExpired\": \"Queries license expired\",\n \"QueryExceptionLicenseSuperUserTokenNotSupported\": \"License super user token not supported\",\n \"QueryExceptionInvalidSession\": \"Invalid session\",\n \"QueryExceptionInvalidDocument\": \"Invalid document\",\n \"QueryExceptionSearchDisabled\": \"Search disabled\",\n \"FileType\": \"File type\",\n \"ShowAttachment\": \"Show attachment\",\n \"OnFeed\": \"on {0}'s feed.\",\n \"Author\": \"Author\",\n \"NoTitle\": \"No title\",\n \"CurrentSelections\": \"Current selections\",\n \"AllContent\": \"All content\",\n \"CancelLastAction\": \"Cancel last action\",\n \"SearchTips\": \"Search tips\",\n \"CheckSpelling\": \"Check the spelling of your keywords.\",\n \"TryUsingFewerKeywords\": \"Try using fewer, different or more general keywords.\",\n \"SelectFewerFilters\": \"Select fewer filters to broaden your search.\",\n \"Document\": \"Document\",\n \"Time\": \"Time\",\n \"StartDate\": \"Start Date\",\n \"StartTime\": \"Start Time\",\n \"DurationTitle\": \"Duration\",\n \"UserQuery\": \"User query\",\n \"ShowUserActions\": \"Show User Actions\",\n \"NoData\": \"No data available\",\n \"EventType\": \"Event type\",\n \"GoToFullSearch\": \"Full search\",\n \"GoToEdition\": \"Customize Panel\",\n \"RemoveContext\": \"Remove context\",\n \"BoxAttachToCase\": \"Attach to case\",\n \"AttachToCase\": \"Attach to case\",\n \"Attach\": \"Attach\",\n \"Attached\": \"Attached\",\n \"Detach\": \"Detach\",\n \"Details\": \"Details\",\n \"AdditionalFilters\": \"Additional filters\",\n \"SelectNonContextualSearch\": \"Remove the context from the current record to broaden your search\",\n \"CopyPasteToSupport\": \"Copy paste this message to Coveo Support team for more information.\",\n \"FollowQueryDescription\": \"Alert me for changes to the search results of this query.\",\n \"SearchAlerts_Panel\": \"Manage Alerts\",\n \"SearchAlerts_PanelDescription\": \"View and manage your search alerts.\",\n \"SearchAlerts_PanelNoSearchAlerts\": \"You have no subscriptions.\",\n \"SearchAlerts_Fail\": \"The Search Alerts service is currently unavailable.\",\n \"SearchAlerts_Type\": \"Type\",\n \"SearchAlerts_Content\": \"Content\",\n \"SearchAlerts_Actions\": \"Action\",\n \"EmptyQuery\": \"<empty>\",\n \"SearchAlerts_Type_followQuery\": \"Query\",\n \"SearchAlerts_Type_followDocument\": \"Item\",\n \"SearchAlerts_unFollowing\": \"Stop Following\",\n \"SearchAlerts_follow\": \"Follow\",\n \"SearchAlerts_followed\": \"Followed\",\n \"SearchAlerts_followQuery\": \"Follow Query\",\n \"Subscription_StopFollowingQuery\": \"Stop Following Query\",\n \"SearchAlerts_Frequency\": \"When\",\n \"SubscriptionsManageSubscriptions\": \"Manage Alerts\",\n \"SubscriptionsMessageFollowQuery\": \"You will receive alerts when the query {0} returns new or updated items.\",\n \"SubscriptionsMessageFollow\": \"You will receive alerts for changes to the item {0}.\",\n \"Expiration\": \"Expiration\",\n \"Monthly\": \"Monthly\",\n \"Daily\": \"Daily\",\n \"Monday\": \"Monday\",\n \"Tuesday\": \"Tuesday\",\n \"Wednesday\": \"Wednesday\",\n \"Thursday\": \"Thursday\",\n \"Friday\": \"Friday\",\n \"Saturday\": \"Saturday\",\n \"Sunday\": \"Sunday\",\n \"NextDay\": \"Next {0}\",\n \"LastDay\": \"Last {0}\",\n \"StartTypingCaseForSuggestions\": \"Describe your problem to see possible solutions\",\n \"ExportToExcel\": \"Export to Excel\",\n \"ExportToExcelDescription\": \"Export search results to Excel\",\n \"CaseCreationNoResults\": \"No recommended solutions were found\",\n \"SortBy\": \"Sort by\",\n \"BoxCreateArticle\": \"Create Article\",\n \"Facets\": \"Facets\",\n \"AdvancedSearch\": \"Advanced Search\",\n \"Keywords\": \"Keywords\",\n \"AllTheseWords\": \"All these words\",\n \"ExactPhrase\": \"This exact phrase\",\n \"AnyOfTheseWords\": \"Any of these words\",\n \"NoneOfTheseWords\": \"None of these words\",\n \"Anytime\": \"Anytime\",\n \"InTheLast\": \"In the last\",\n \"Days\": \"days\",\n \"Months\": \"months\",\n \"Between\": \"Between\",\n \"Language\": \"Language\",\n \"Size\": \"Size\",\n \"AtLeast\": \"at least\",\n \"AtMost\": \"at most\",\n \"Contains\": \"contains\",\n \"DoesNotContain\": \"does not contain\",\n \"Matches\": \"matches\",\n \"Bytes\": \"bytes\",\n \"list\": \"List\",\n \"card\": \"Card\",\n \"table\": \"Table\",\n \"ResultLinks\": \"Result links\",\n \"EnableQuerySyntax\": \"Enable query syntax\",\n \"On\": \"On\",\n \"Off\": \"Off\",\n \"Automatic\": \"Automatic\",\n \"ResultsPerPage\": \"Results per page\",\n \"objecttype_people\": \"People\",\n \"objecttype_message\": \"Message\",\n \"objecttype_feed\": \"RSS Feed\",\n \"objecttype_thread\": \"Thread\",\n \"objecttype_file\": \"File\",\n \"objecttype_board\": \"Board\",\n \"objecttype_category\": \"Category\",\n \"objecttype_account\": \"Account\",\n \"objecttype_annotation\": \"Note\",\n \"objecttype_campaign\": \"Campaign\",\n \"objecttype_case\": \"Case\",\n \"objecttype_contentversion\": \"Salesforce File\",\n \"objecttype_contact\": \"Contact\",\n \"objecttype_contract\": \"Contract\",\n \"objecttype_event\": \"Event\",\n \"objecttype_email\": \"Email\",\n \"objecttype_goal\": \"Goal\",\n \"objecttype_incident\": \"Case\",\n \"objecttype_invoice\": \"Invoice\",\n \"objecttype_lead\": \"Lead\",\n \"objecttype_list\": \"Marketing List\",\n \"objecttype_solution\": \"Solution\",\n \"objecttype_task\": \"Task\",\n \"objecttype_user\": \"User\",\n \"objecttype_attachment\": \"Attachment\",\n \"objecttype_casecomment\": \"Case Comment\",\n \"objecttype_opportunity\": \"Opportunity\",\n \"objecttype_opportunityproduct\": \"Opportunity Product\",\n \"objecttype_feeditem\": \"Chatter\",\n \"objecttype_feedcomment\": \"Chatter\",\n \"objecttype_note\": \"Note\",\n \"objecttype_product\": \"Product\",\n \"objecttype_partner\": \"Partner\",\n \"objecttype_queueitem\": \"Queue Item\",\n \"objecttype_quote\": \"Quote\",\n \"objecttype_salesliterature\": \"Sales Literature\",\n \"objecttype_salesorder\": \"Sales Order\",\n \"objecttype_service\": \"Service\",\n \"objecttype_socialprofile\": \"Social Profile\",\n \"objecttype_kbdocumentation\": \"Documentation\",\n \"objecttype_kbtechnicalarticle\": \"Documentation\",\n \"objecttype_kbsolution\": \"Solution\",\n \"objecttype_kbknowledgearticle\": \"Knowledge Article\",\n \"objecttype_kbattachment\": \"Attachment\",\n \"objecttype_kbarticle\": \"Article\",\n \"objecttype_kbarticlecomment\": \"Article Comment\",\n \"objecttype_knowledgearticle\": \"Knowledge Article\",\n \"filetype_box user\": \"Box User\",\n \"filetype_html\": \"HTML File\",\n \"filetype_wiki\": \"Wiki\",\n \"filetype_webscraperwebpage\": \"Web Page\",\n \"filetype_image\": \"Image\",\n \"filetype_folder\": \"Folder\",\n \"filetype_txt\": \"Text\",\n \"filetype_zip\": \"Zip File\",\n \"filetype_olefile\": \"OLE file\",\n \"filetype_gmailmessage\": \"Gmail Message\",\n \"filetype_pdf\": \"PDF File\",\n \"filetype_swf\": \"Flash File\",\n \"filetype_xml\": \"XML File\",\n \"filetype_vsd\": \"Visio\",\n \"filetype_svg\": \"SVG\",\n \"filetype_svm\": \"Open Office\",\n \"filetype_rssitem\": \"RSS feed\",\n \"filetype_doc\": \"Document\",\n \"filetype_docx\": \"Microsoft Word Document\",\n \"filetype_xls\": \"Spreadsheet Document\",\n \"filetype_ppt\": \"Presentation Document\",\n \"filetype_video\": \"Video\",\n \"filetype_youtube\": \"YouTube video\",\n \"filetype_saleforceitem\": \"Salesforce\",\n \"filetype_dynamicscrmitem\": \"Dynamics CRM\",\n \"filetype_salesforceitem\": \"Salesforce\",\n \"filetype_odt\": \"Open Text Document\",\n \"filetype_cfpage\": \"Confluence Page\",\n \"filetype_cfcomment\": \"Confluence Comment\",\n \"filetype_cfspace\": \"Confluence Space\",\n \"filetype_cfblogentry\": \"Confluence Blog Entry\",\n \"filetype_confluencespace\": \"Confluence Space\",\n \"filetype_exchangemessage\": \"Message\",\n \"filetype_exchangeappointment\": \"Appointment\",\n \"filetype_exchangenote\": \"Note\",\n \"filetype_exchangetask\": \"Task\",\n \"filetype_exchangeperson\": \"Exchange User\",\n \"filetype_activedirperson\": \"Active Directory User\",\n \"filetype_exchangeactivity\": \"Activity\",\n \"filetype_exchangecalendarmessage\": \"Calendar Message\",\n \"filetype_exchangedocument\": \"Exchange Document\",\n \"filetype_exchangedsn\": \"DSN\",\n \"filetype_exchangefreebusy\": \"Free/Busy\",\n \"filetype_exchangegroup\": \"Group\",\n \"filetype_exchangerssfeed\": \"RSS Feed\",\n \"filetype_exchangejunkmessage\": \"Junk Email\",\n \"filetype_exchangeofficecom\": \"Communications\",\n \"filetype_lithiummessage\": \"Lithium Message\",\n \"filetype_lithiumthread\": \"Lithium Thread\",\n \"filetype_lithiumboard\": \"Lithium Board\",\n \"filetype_lithiumcategory\": \"Lithium Category\",\n \"filetype_lithiumcommunity\": \"Lithium Community\",\n \"filetype_spportal\": \"Portal\",\n \"filetype_spsite\": \"Site\",\n \"filetype_spuserprofile\": \"SharePoint User\",\n \"filetype_sparea\": \"Area\",\n \"filetype_spannouncement\": \"Announcement\",\n \"filetype_spannouncementlist\": \"Announcements\",\n \"filetype_spcontact\": \"Contact\",\n \"filetype_spcontactlist\": \"Contacts\",\n \"filetype_spcustomlist\": \"Custom Lists\",\n \"filetype_spdiscussionboard\": \"Discussion Board\",\n \"filetype_spdiscussionboardlist\": \"Discussion Boards\",\n \"filetype_spdocumentlibrarylist\": \"Document Library\",\n \"filetype_spevent\": \"Event\",\n \"filetype_speventlist\": \"Events\",\n \"filetype_spformlibrarylist\": \"Form Library\",\n \"filetype_spissue\": \"Issue\",\n \"filetype_spissuelist\": \"Issues\",\n \"filetype_splink\": \"Link\",\n \"filetype_splinklist\": \"Links\",\n \"filetype_sppicturelibrarylist\": \"Picture Library\",\n \"filetype_spsurvey\": \"Survey\",\n \"filetype_spsurveylist\": \"Surveys\",\n \"filetype_sptask\": \"Task\",\n \"filetype_sptasklist\": \"Tasks\",\n \"filetype_spagenda\": \"Agenda\",\n \"filetype_spagendalist\": \"Ordres du jour\",\n \"filetype_spattendee\": \"Attendee\",\n \"filetype_spattendeelist\": \"Attendees\",\n \"filetype_spcustomgridlist\": \"Custom Grids\",\n \"filetype_spdecision\": \"Decision\",\n \"filetype_spdecisionlist\": \"Decisions\",\n \"filetype_spobjective\": \"Objective\",\n \"filetype_spobjectivelist\": \"Objectives\",\n \"filetype_sptextbox\": \"Textbox\",\n \"filetype_sptextboxlist\": \"Textbox list\",\n \"filetype_spthingstobring\": \"Thing To Bring\",\n \"filetype_spthingstobringlist\": \"Things To Bring\",\n \"filetype_sparealisting\": \"Area Listing\",\n \"filetype_spmeetingserie\": \"Meeting series\",\n \"filetype_spmeetingserielist\": \"Meeting Series List\",\n \"filetype_spsitedirectory\": \"Site Directory Item\",\n \"filetype_spsitedirectorylist\": \"Site Directory\",\n \"filetype_spdatasource\": \"Data Source\",\n \"filetype_spdatasourcelist\": \"Data Source List\",\n \"filetype_splisttemplatecataloglist\": \"List Template Gallery\",\n \"filetype_spwebpartcataloglist\": \"WebPart Gallery\",\n \"filetype_spwebtemplatecataloglist\": \"Site Template Gallery\",\n \"filetype_spworkspacepagelist\": \"Workspace Pages\",\n \"filetype_spunknownlist\": \"Custom List\",\n \"filetype_spadministratortask\": \"Administrator Task\",\n \"filetype_spadministratortasklist\": \"Administrator Tasks\",\n \"filetype_spareadocumentlibrarylist\": \"Area Document Library\",\n \"filetype_spblogcategory\": \"Blog Category\",\n \"filetype_spblogcategorylist\": \"Blog Categories\",\n \"filetype_spblogcomment\": \"Blog Comment\",\n \"filetype_spblogcommentlist\": \"Blog Comments\",\n \"filetype_spblogpost\": \"Blog Post\",\n \"filetype_spblogpostlist\": \"Blog Posts\",\n \"filetype_spdataconnectionlibrarylist\": \"Data Connection Library\",\n \"filetype_spdistributiongroup\": \"Distribution Group\",\n \"filetype_spdistributiongrouplist\": \"Distribution Groups\",\n \"filetype_spipfslist\": \"InfoPath Forms Servers\",\n \"filetype_spkeyperformanceindicator\": \"Key Performance Indicator\",\n \"filetype_spkeyperformanceindicatorlist\": \"Key Performance Indicators\",\n \"filetype_splanguagesandtranslator\": \"Languages and Translator\",\n \"filetype_splanguagesandtranslatorlist\": \"Languages and Translators\",\n \"filetype_spmasterpagescataloglist\": \"Master Page Gallery\",\n \"filetype_spnocodeworkflowlibrarylist\": \"No-code Workflow Libraries\",\n \"filetype_spprojecttask\": \"Project Task\",\n \"filetype_spprojecttasklist\": \"Project Tasks\",\n \"filetype_sppublishingpageslibrarylist\": \"Page Library\",\n \"filetype_spreportdocumentlibrarylist\": \"Report Document Library\",\n \"filetype_spreportlibrarylist\": \"Report Library\",\n \"filetype_spslidelibrarylist\": \"Slide Library\",\n \"filetype_sptab\": \"Tabs\",\n \"filetype_sptablist\": \"Tabs List\",\n \"filetype_sptranslationmanagementlibrarylist\": \"Translation Management Library\",\n \"filetype_spuserinformation\": \"User Information\",\n \"filetype_spuserinformationlist\": \"User Information List\",\n \"filetype_spwikipagelibrarylist\": \"Wiki Page Library\",\n \"filetype_spworkflowhistory\": \"Workflow History\",\n \"filetype_spworkflowhistorylist\": \"Workflow History List\",\n \"filetype_spworkflowprocess\": \"Custom Workflow Process\",\n \"filetype_spworkflowprocesslist\": \"Custom Workflow Processes\",\n \"filetype_sppublishingimageslibrarylist\": \"Publishing Image Library\",\n \"filetype_spcirculation\": \"Circulation\",\n \"filetype_spcirculationlist\": \"Circulations\",\n \"filetype_spdashboardslibrarylist\": \"Dashboards Library\",\n \"filetype_spdataconnectionforperformancepointlibrarylist\": \"PerformancePoint Data Connection Library\",\n \"filetype_sphealthreport\": \"Health Report\",\n \"filetype_sphealthreportlist\": \"Health Reports\",\n \"filetype_sphealthrule\": \"Health Rule\",\n \"filetype_sphealthrulelist\": \"Health Rules\",\n \"filetype_spimedictionary\": \"IME Dictionary\",\n \"filetype_spimedictionarylist\": \"IME Dictionaries\",\n \"filetype_spperformancepointcontent\": \"PerformancePoint Content\",\n \"filetype_spperformancepointcontentlist\": \"PerformancePoint Contents\",\n \"filetype_spphonecallmemo\": \"Phone Call Memo\",\n \"filetype_spphonecallmemolist\": \"Phone Call Memos\",\n \"filetype_sprecordlibrarylist\": \"Record Library\",\n \"filetype_spresource\": \"Resource\",\n \"filetype_spresourcelist\": \"Resources\",\n \"filetype_spprocessdiagramslibrarylist\": \"Process Diagram Library\",\n \"filetype_spsitethemeslibrarylist\": \"Site Theme Library\",\n \"filetype_spsolutionslibrarylist\": \"Solution Library\",\n \"filetype_spwfpublibrarylist\": \"WFPUB Library\",\n \"filetype_spwhereabout\": \"Whereabout\",\n \"filetype_spwhereaboutlist\": \"Whereabouts\",\n \"filetype_spdocumentlink\": \"Link to a Document\",\n \"filetype_spdocumentset\": \"Document Set\",\n \"filetype_spmicrofeedpost\": \"Microfeed Post\",\n \"filetype_spmicrofeedlist\": \"Microfeed\",\n \"filetype_splistfolder\": \"List Folder\",\n \"filetype_youtubevideo\": \"YouTube video\",\n \"filetype_youtubeplaylistitem\": \"YouTube playlist item\",\n}\nexport function defaultLanguage() {\n var locales = String[\"locales\"] || (String[\"locales\"] = {});\n locales[\"en\"] = merge(locales[\"en\"], dict);\n String[\"toLocaleString\"].call(this, { \"en\": dict });\n String[\"locale\"] = \"en\";\n String[\"defaultLocale\"] = \"en\";\n Globalize.culture(\"en\")\n}\nexport function setLanguageAfterPageLoaded() {\n var locales = String[\"locales\"] || (String[\"locales\"] = {});\n locales[\"en\"] = merge(locales[\"en\"], dict);\n String[\"toLocaleString\"].call(this, { \"en\": dict });\n String[\"locale\"] = \"en\";\n String[\"defaultLocale\"] = \"en\";\n Globalize.culture(\"en\")\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/strings/DefaultLanguage.ts\n **/","module.exports = global[\"Globalize\"] = require(\"-!/home/travis/build/coveo/search-ui/lib/globalize/globalize.min.js\");\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/globalize/globalize.min.js\n ** module id = 30\n ** module chunks = 0 1\n **/","/*! globalize - v0.1.1 - 2013-04-30\n* https://github.com/jquery/globalize\n* Copyright 2013 ; Licensed MIT */\nvar Globalize = (function(e,r){var t,n,a,s,u,l,i,c,o,f,d,p,h,g,b,m,y,M,v,k,z,F,A,x;t=function(e){return new t.prototype.init(e)},\"undefined\"!=typeof require&&\"undefined\"!=typeof exports&&\"undefined\"!=typeof module?module.exports=t:e.Globalize=t,t.cultures={},t.prototype={constructor:t,init:function(e){return this.cultures=t.cultures,this.cultureSelector=e,this}},t.prototype.init.prototype=t.prototype,t.cultures[\"default\"]={name:\"en\",englishName:\"English\",nativeName:\"English\",isRTL:!1,language:\"en\",numberFormat:{pattern:[\"-n\"],decimals:2,\",\":\",\",\".\":\".\",groupSizes:[3],\"+\":\"+\",\"-\":\"-\",NaN:\"NaN\",negativeInfinity:\"-Infinity\",positiveInfinity:\"Infinity\",percent:{pattern:[\"-n %\",\"n %\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"%\"},currency:{pattern:[\"($n)\",\"$n\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"$\"}},calendars:{standard:{name:\"Gregorian_USEnglish\",\"/\":\"/\",\":\":\":\",firstDay:0,days:{names:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],namesAbbr:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],namesShort:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"]},months:{names:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\",\"\"],namesAbbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"\"]},AM:[\"AM\",\"am\",\"AM\"],PM:[\"PM\",\"pm\",\"PM\"],eras:[{name:\"A.D.\",start:null,offset:0}],twoDigitYearMax:2029,patterns:{d:\"M/d/yyyy\",D:\"dddd, MMMM dd, yyyy\",t:\"h:mm tt\",T:\"h:mm:ss tt\",f:\"dddd, MMMM dd, yyyy h:mm tt\",F:\"dddd, MMMM dd, yyyy h:mm:ss tt\",M:\"MMMM dd\",Y:\"yyyy MMMM\",S:\"yyyy'-'MM'-'dd'T'HH':'mm':'ss\"}}},messages:{}},t.cultures[\"default\"].calendar=t.cultures[\"default\"].calendars.standard,t.cultures.en=t.cultures[\"default\"],t.cultureSelector=\"en\",n=/^0x[a-f0-9]+$/i,a=/^[+\\-]?infinity$/i,s=/^[+\\-]?\\d*\\.?\\d*(e[+\\-]?\\d+)?$/,u=/^\\s+|\\s+$/g,l=function(e,r){if(e.indexOf)return e.indexOf(r);for(var t=0,n=e.length;n>t;t++)if(e[t]===r)return t;return-1},i=function(e,r){return e.substr(e.length-r.length)===r},c=function(){var e,t,n,a,s,u,l=arguments[0]||{},i=1,p=arguments.length,h=!1;for(\"boolean\"==typeof l&&(h=l,l=arguments[1]||{},i=2),\"object\"==typeof l||f(l)||(l={});p>i;i++)if(null!=(e=arguments[i]))for(t in e)n=l[t],a=e[t],l!==a&&(h&&a&&(d(a)||(s=o(a)))?(s?(s=!1,u=n&&o(n)?n:[]):u=n&&d(n)?n:{},l[t]=c(h,u,a)):a!==r&&(l[t]=a));return l},o=Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},f=function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},d=function(e){return\"[object Object]\"===Object.prototype.toString.call(e)},p=function(e,r){return 0===e.indexOf(r)},h=function(e){return(e+\"\").replace(u,\"\")},g=function(e){return isNaN(e)?0/0:Math[0>e?\"ceil\":\"floor\"](e)},b=function(e,r,t){var n;for(n=e.length;r>n;n+=1)e=t?\"0\"+e:e+\"0\";return e},m=function(e,r){for(var t=0,n=!1,a=0,s=e.length;s>a;a++){var u=e.charAt(a);switch(u){case\"'\":n?r.push(\"'\"):t++,n=!1;break;case\"\\\\\":n&&r.push(\"\\\\\"),n=!n;break;default:r.push(u),n=!1}}return t},y=function(e,r){r=r||\"F\";var t,n=e.patterns,a=r.length;if(1===a){if(t=n[r],!t)throw\"Invalid date format string '\"+r+\"'.\";r=t}else 2===a&&\"%\"===r.charAt(0)&&(r=r.charAt(1));return r},M=function(e,r,t){function n(e,r){var t,n=e+\"\";return r>1&&r>n.length?(t=v[r-2]+n,t.substr(t.length-r,r)):t=n}function a(){return h||g?h:(h=A.test(r),g=!0,h)}function s(e,r){if(b)return b[r];switch(r){case 0:return e.getFullYear();case 1:return e.getMonth();case 2:return e.getDate();default:throw\"Invalid part value \"+r}}var u,l=t.calendar,i=l.convert;if(!r||!r.length||\"i\"===r){if(t&&t.name.length)if(i)u=M(e,l.patterns.F,t);else{var c=new Date(e.getTime()),o=z(e,l.eras);c.setFullYear(F(e,l,o)),u=c.toLocaleString()}else u=\"\"+e;return u}var f=l.eras,d=\"s\"===r;r=y(l,r),u=[];var p,h,g,b,v=[\"0\",\"00\",\"000\"],A=/([^d]|^)(d|dd)([^d]|$)/g,x=0,I=k();for(!d&&i&&(b=i.fromGregorian(e));;){var S=I.lastIndex,w=I.exec(r),C=r.slice(S,w?w.index:r.length);if(x+=m(C,u),!w)break;if(x%2)u.push(w[0]);else{var D=w[0],H=D.length;switch(D){case\"ddd\":case\"dddd\":var O=3===H?l.days.namesAbbr:l.days.names;u.push(O[e.getDay()]);break;case\"d\":case\"dd\":h=!0,u.push(n(s(e,2),H));break;case\"MMM\":case\"MMMM\":var N=s(e,1);u.push(l.monthsGenitive&&a()?l.monthsGenitive[3===H?\"namesAbbr\":\"names\"][N]:l.months[3===H?\"namesAbbr\":\"names\"][N]);break;case\"M\":case\"MM\":u.push(n(s(e,1)+1,H));break;case\"y\":case\"yy\":case\"yyyy\":N=b?b[0]:F(e,l,z(e,f),d),4>H&&(N%=100),u.push(n(N,H));break;case\"h\":case\"hh\":p=e.getHours()%12,0===p&&(p=12),u.push(n(p,H));break;case\"H\":case\"HH\":u.push(n(e.getHours(),H));break;case\"m\":case\"mm\":u.push(n(e.getMinutes(),H));break;case\"s\":case\"ss\":u.push(n(e.getSeconds(),H));break;case\"t\":case\"tt\":N=12>e.getHours()?l.AM?l.AM[0]:\" \":l.PM?l.PM[0]:\" \",u.push(1===H?N.charAt(0):N);break;case\"f\":case\"ff\":case\"fff\":u.push(n(e.getMilliseconds(),3).substr(0,H));break;case\"z\":case\"zz\":p=e.getTimezoneOffset()/60,u.push((0>=p?\"+\":\"-\")+n(Math.floor(Math.abs(p)),H));break;case\"zzz\":p=e.getTimezoneOffset()/60,u.push((0>=p?\"+\":\"-\")+n(Math.floor(Math.abs(p)),2)+\":\"+n(Math.abs(e.getTimezoneOffset()%60),2));break;case\"g\":case\"gg\":l.eras&&u.push(l.eras[z(e,f)].name);break;case\"/\":u.push(l[\"/\"]);break;default:throw\"Invalid date format pattern '\"+D+\"'.\"}}}return u.join(\"\")},function(){var e;e=function(e,r,t){var n=t.groupSizes,a=n[0],s=1,u=Math.pow(10,r),l=Math.round(e*u)/u;isFinite(l)||(l=e),e=l;var i=e+\"\",c=\"\",o=i.split(/e/i),f=o.length>1?parseInt(o[1],10):0;i=o[0],o=i.split(\".\"),i=o[0],c=o.length>1?o[1]:\"\",f>0?(c=b(c,f,!1),i+=c.slice(0,f),c=c.substr(f)):0>f&&(f=-f,i=b(i,f+1,!0),c=i.slice(-f,i.length)+c,i=i.slice(0,-f)),c=r>0?t[\".\"]+(c.length>r?c.slice(0,r):b(c,r)):\"\";for(var d=i.length-1,p=t[\",\"],h=\"\";d>=0;){if(0===a||a>d)return i.slice(0,d+1)+(h.length?p+h+c:c);h=i.slice(d-a+1,d+1)+(h.length?p+h:\"\"),d-=a,n.length>s&&(a=n[s],s++)}return i.slice(0,d+1)+p+h+c},v=function(r,t,n){if(!isFinite(r))return 1/0===r?n.numberFormat.positiveInfinity:r===-1/0?n.numberFormat.negativeInfinity:n.numberFormat.NaN;if(!t||\"i\"===t)return n.name.length?r.toLocaleString():\"\"+r;t=t||\"D\";var a,s=n.numberFormat,u=Math.abs(r),l=-1;t.length>1&&(l=parseInt(t.slice(1),10));var i,c=t.charAt(0).toUpperCase();switch(c){case\"D\":a=\"n\",u=g(u),-1!==l&&(u=b(\"\"+u,l,!0)),0>r&&(u=\"-\"+u);break;case\"N\":i=s;case\"C\":i=i||s.currency;case\"P\":i=i||s.percent,a=0>r?i.pattern[0]:i.pattern[1]||\"n\",-1===l&&(l=i.decimals),u=e(u*(\"P\"===c?100:1),l,i);break;default:throw\"Bad number format specifier: \"+c}for(var o=/n|\\$|-|%/g,f=\"\";;){var d=o.lastIndex,p=o.exec(a);if(f+=a.slice(d,p?p.index:a.length),!p)break;switch(p[0]){case\"n\":f+=u;break;case\"$\":f+=s.currency.symbol;break;case\"-\":/[1-9]/.test(u)&&(f+=s[\"-\"]);break;case\"%\":f+=s.percent.symbol}}return f}}(),k=function(){return/\\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g},z=function(e,r){if(!r)return 0;for(var t,n=e.getTime(),a=0,s=r.length;s>a;a++)if(t=r[a].start,null===t||n>=t)return a;return 0},F=function(e,r,t,n){var a=e.getFullYear();return!n&&r.eras&&(a-=r.eras[t].offset),a},function(){var e,r,t,n,a,s,u;e=function(e,r){if(100>r){var t=new Date,n=z(t),a=F(t,e,n),s=e.twoDigitYearMax;s=\"string\"==typeof s?(new Date).getFullYear()%100+parseInt(s,10):s,r+=a-a%100,r>s&&(r-=100)}return r},r=function(e,r,t){var n,a=e.days,i=e._upperDays;return i||(e._upperDays=i=[u(a.names),u(a.namesAbbr),u(a.namesShort)]),r=s(r),t?(n=l(i[1],r),-1===n&&(n=l(i[2],r))):n=l(i[0],r),n},t=function(e,r,t){var n=e.months,a=e.monthsGenitive||e.months,i=e._upperMonths,c=e._upperMonthsGen;i||(e._upperMonths=i=[u(n.names),u(n.namesAbbr)],e._upperMonthsGen=c=[u(a.names),u(a.namesAbbr)]),r=s(r);var o=l(t?i[1]:i[0],r);return 0>o&&(o=l(t?c[1]:c[0],r)),o},n=function(e,r){var t=e._parseRegExp;if(t){var n=t[r];if(n)return n}else e._parseRegExp=t={};for(var a,s=y(e,r).replace(/([\\^\\$\\.\\*\\+\\?\\|\\[\\]\\(\\)\\{\\}])/g,\"\\\\\\\\$1\"),u=[\"^\"],l=[],i=0,c=0,o=k();null!==(a=o.exec(s));){var f=s.slice(i,a.index);if(i=o.lastIndex,c+=m(f,u),c%2)u.push(a[0]);else{var d,p=a[0],h=p.length;switch(p){case\"dddd\":case\"ddd\":case\"MMMM\":case\"MMM\":case\"gg\":case\"g\":d=\"(\\\\D+)\";break;case\"tt\":case\"t\":d=\"(\\\\D*)\";break;case\"yyyy\":case\"fff\":case\"ff\":case\"f\":d=\"(\\\\d{\"+h+\"})\";break;case\"dd\":case\"d\":case\"MM\":case\"M\":case\"yy\":case\"y\":case\"HH\":case\"H\":case\"hh\":case\"h\":case\"mm\":case\"m\":case\"ss\":case\"s\":d=\"(\\\\d\\\\d?)\";break;case\"zzz\":d=\"([+-]?\\\\d\\\\d?:\\\\d{2})\";break;case\"zz\":case\"z\":d=\"([+-]?\\\\d\\\\d?)\";break;case\"/\":d=\"(\\\\/)\";break;default:throw\"Invalid date format pattern '\"+p+\"'.\"}d&&u.push(d),l.push(a[0])}}m(s.slice(i),u),u.push(\"$\");var g=u.join(\"\").replace(/\\s+/g,\"\\\\s+\"),b={regExp:g,groups:l};return t[r]=b},a=function(e,r,t){return r>e||e>t},s=function(e){return e.split(\"\\u00a0\").join(\" \").toUpperCase()},u=function(e){for(var r=[],t=0,n=e.length;n>t;t++)r[t]=s(e[t]);return r},A=function(s,u,l){s=h(s);var i=l.calendar,c=n(i,u),o=RegExp(c.regExp).exec(s);if(null===o)return null;for(var f,d=c.groups,g=null,b=null,m=null,y=null,M=null,v=0,k=0,z=0,F=0,A=null,x=!1,I=0,S=d.length;S>I;I++){var w=o[I+1];if(w){var C=d[I],D=C.length,H=parseInt(w,10);switch(C){case\"dd\":case\"d\":if(y=H,a(y,1,31))return null;break;case\"MMM\":case\"MMMM\":if(m=t(i,w,3===D),a(m,0,11))return null;break;case\"M\":case\"MM\":if(m=H-1,a(m,0,11))return null;break;case\"y\":case\"yy\":case\"yyyy\":if(b=4>D?e(i,H):H,a(b,0,9999))return null;break;case\"h\":case\"hh\":if(v=H,12===v&&(v=0),a(v,0,11))return null;break;case\"H\":case\"HH\":if(v=H,a(v,0,23))return null;break;case\"m\":case\"mm\":if(k=H,a(k,0,59))return null;break;case\"s\":case\"ss\":if(z=H,a(z,0,59))return null;break;case\"tt\":case\"t\":if(x=i.PM&&(w===i.PM[0]||w===i.PM[1]||w===i.PM[2]),!x&&(!i.AM||w!==i.AM[0]&&w!==i.AM[1]&&w!==i.AM[2]))return null;break;case\"f\":case\"ff\":case\"fff\":if(F=H*Math.pow(10,3-D),a(F,0,999))return null;break;case\"ddd\":case\"dddd\":if(M=r(i,w,3===D),a(M,0,6))return null;break;case\"zzz\":var O=w.split(/:/);if(2!==O.length)return null;if(f=parseInt(O[0],10),a(f,-12,13))return null;var N=parseInt(O[1],10);if(a(N,0,59))return null;A=60*f+(p(w,\"-\")?-N:N);break;case\"z\":case\"zz\":if(f=H,a(f,-12,13))return null;A=60*f;break;case\"g\":case\"gg\":var T=w;if(!T||!i.eras)return null;T=h(T.toLowerCase());for(var j=0,$=i.eras.length;$>j;j++)if(T===i.eras[j].name.toLowerCase()){g=j;break}if(null===g)return null}}}var P,G=new Date,E=i.convert;if(P=E?E.fromGregorian(G)[0]:G.getFullYear(),null===b?b=P:i.eras&&(b+=i.eras[g||0].offset),null===m&&(m=0),null===y&&(y=1),E){if(G=E.toGregorian(b,m,y),null===G)return null}else{if(G.setFullYear(b,m,y),G.getDate()!==y)return null;if(null!==M&&G.getDay()!==M)return null}if(x&&12>v&&(v+=12),G.setHours(v,k,z,F),null!==A){var Y=G.getMinutes()-(A+G.getTimezoneOffset());G.setHours(G.getHours()+parseInt(Y/60,10),Y%60)}return G}}(),x=function(e,r,t){var n,a=r[\"-\"],s=r[\"+\"];switch(t){case\"n -\":a=\" \"+a,s=\" \"+s;case\"n-\":i(e,a)?n=[\"-\",e.substr(0,e.length-a.length)]:i(e,s)&&(n=[\"+\",e.substr(0,e.length-s.length)]);break;case\"- n\":a+=\" \",s+=\" \";case\"-n\":p(e,a)?n=[\"-\",e.substr(a.length)]:p(e,s)&&(n=[\"+\",e.substr(s.length)]);break;case\"(n)\":p(e,\"(\")&&i(e,\")\")&&(n=[\"-\",e.substr(1,e.length-2)])}return n||[\"\",e]},t.prototype.findClosestCulture=function(e){return t.findClosestCulture.call(this,e)},t.prototype.format=function(e,r,n){return t.format.call(this,e,r,n)},t.prototype.localize=function(e,r){return t.localize.call(this,e,r)},t.prototype.parseInt=function(e,r,n){return t.parseInt.call(this,e,r,n)},t.prototype.parseFloat=function(e,r,n){return t.parseFloat.call(this,e,r,n)},t.prototype.culture=function(e){return t.culture.call(this,e)},t.addCultureInfo=function(e,r,t){var n={},a=!1;\"string\"!=typeof e?(t=e,e=this.culture().name,n=this.cultures[e]):\"string\"!=typeof r?(t=r,a=null==this.cultures[e],n=this.cultures[e]||this.cultures[\"default\"]):(a=!0,n=this.cultures[r]),this.cultures[e]=c(!0,{},n,t),a&&(this.cultures[e].calendar=this.cultures[e].calendars.standard)},t.findClosestCulture=function(e){var r;if(!e)return this.findClosestCulture(this.cultureSelector)||this.cultures[\"default\"];if(\"string\"==typeof e&&(e=e.split(\",\")),o(e)){var t,n,a=this.cultures,s=e,u=s.length,l=[];for(n=0;u>n;n++){e=h(s[n]);var i,c=e.split(\";\");t=h(c[0]),1===c.length?i=1:(e=h(c[1]),0===e.indexOf(\"q=\")?(e=e.substr(2),i=parseFloat(e),i=isNaN(i)?0:i):i=1),l.push({lang:t,pri:i})}for(l.sort(function(e,r){return e.prir.pri?-1:0}),n=0;u>n;n++)if(t=l[n].lang,r=a[t])return r;for(n=0;u>n;n++)for(t=l[n].lang;;){var f=t.lastIndexOf(\"-\");if(-1===f)break;if(t=t.substr(0,f),r=a[t])return r}for(n=0;u>n;n++){t=l[n].lang;for(var d in a){var p=a[d];if(p.language===t)return p}}}else if(\"object\"==typeof e)return e;return r||null},t.format=function(e,r,t){var n=this.findClosestCulture(t);return e instanceof Date?e=M(e,r,n):\"number\"==typeof e&&(e=v(e,r,n)),e},t.localize=function(e,r){return this.findClosestCulture(r).messages[e]||this.cultures[\"default\"].messages[e]},t.parseDate=function(e,r,t){t=this.findClosestCulture(t);var n,a,s;if(r){if(\"string\"==typeof r&&(r=[r]),r.length)for(var u=0,l=r.length;l>u;u++){var i=r[u];if(i&&(n=A(e,i,t)))break}}else{s=t.calendar.patterns;for(a in s)if(n=A(e,s[a],t))break}return n||null},t.parseInt=function(e,r,n){return g(t.parseFloat(e,r,n))},t.parseFloat=function(e,r,t){\"number\"!=typeof r&&(t=r,r=10);var u=this.findClosestCulture(t),l=0/0,i=u.numberFormat;if(e.indexOf(u.numberFormat.currency.symbol)>-1&&(e=e.replace(u.numberFormat.currency.symbol,\"\"),e=e.replace(u.numberFormat.currency[\".\"],u.numberFormat[\".\"])),e.indexOf(u.numberFormat.percent.symbol)>-1&&(e=e.replace(u.numberFormat.percent.symbol,\"\")),e=e.replace(/ /g,\"\"),a.test(e))l=parseFloat(e);else if(!r&&n.test(e))l=parseInt(e,16);else{var c=x(e,i,i.pattern[0]),o=c[0],f=c[1];\"\"===o&&\"(n)\"!==i.pattern[0]&&(c=x(e,i,\"(n)\"),o=c[0],f=c[1]),\"\"===o&&\"-n\"!==i.pattern[0]&&(c=x(e,i,\"-n\"),o=c[0],f=c[1]),o=o||\"+\";var d,p,h=f.indexOf(\"e\");0>h&&(h=f.indexOf(\"E\")),0>h?(p=f,d=null):(p=f.substr(0,h),d=f.substr(h+1));var g,b,m=i[\".\"],y=p.indexOf(m);0>y?(g=p,b=null):(g=p.substr(0,y),b=p.substr(y+m.length));var M=i[\",\"];g=g.split(M).join(\"\");var v=M.replace(/\\u00A0/g,\" \");M!==v&&(g=g.split(v).join(\"\"));var k=o+g;if(null!==b&&(k+=\".\"+b),null!==d){var z=x(d,i,\"-n\");k+=\"e\"+(z[0]||\"+\")+z[1]}s.test(k)&&(l=parseFloat(k))}return l},t.culture=function(e){return e!==r&&(this.cultureSelector=e),this.findClosestCulture(e)||this.cultures[\"default\"]}; return Globalize;}(this));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/globalize/globalize.min.js\n ** module id = 31\n ** module chunks = 0 1\n **/","export { Assert } from './misc/Assert';\nexport { Cache } from './misc/Cache';\nexport { Defer } from './misc/Defer';\nexport { L10N } from './misc/L10N';\nexport { Logger } from './misc/Logger';\nexport { Options } from './misc/Options';\nexport { l } from './strings/Strings';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/MiscModules.ts\n **/","export class Cache {\n constructor(public onEmpty?: () => Type) {\n }\n\n private cache: Type[] = [];\n\n public get(): Type {\n if (this.cache.length == 0) {\n return this.onEmpty();\n } else {\n return this.cache.pop();\n }\n }\n\n public push(value: Type) {\n this.cache.push(value);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/Cache.ts\n **/","import _ = require('underscore');\n\nexport class Defer {\n private static functions = [];\n\n static defer(code: () => void) {\n Defer.functions.push(code);\n Defer.arm();\n }\n\n static flush() {\n while (Defer.popOne()) {\n }\n }\n\n private static arm() {\n _.defer(() => {\n if (Defer.popOne()) {\n Defer.arm();\n }\n });\n }\n\n private static popOne() {\n if (Defer.functions.length > 0) {\n var fun = Defer.functions[0];\n Defer.functions = _.rest(Defer.functions);\n fun();\n return Defer.functions.length > 0;\n } else {\n return false;\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/Defer.ts\n **/","import { LocaleString } from '../ExternalModulesShim';\nimport _ = require('underscore');\n\nString.toLocaleString = LocaleString;\nconst pluralRegex = /(((?!<\\/pl>).)*)<\\/pl>/g;\nconst singularRegex = /(((?!<\\/sn>).)*)<\\/sn>/g;\n\nexport var L10N = {\n format: (key: string, ...args: any[]) => {\n let value = key.toLocaleString();\n if (args.length > 0) {\n let last = _.last(args);\n // Last argument is either the count or a boolean forcing plural (true) or singular (false)\n if (_.isBoolean(last) || _.isNumber(last)) {\n args.pop();\n value = L10N.formatPlSn(value, last);\n }\n _.each(args, (arg, i) => value = value.replace(`{${i}}`, arg));\n }\n return value;\n },\n formatPlSn: (value: string, count: number | boolean) => {\n let isPlural = _.isBoolean(count) ? count : count > 1;\n if (isPlural) {\n value = value.replace(pluralRegex, '$1').replace(singularRegex, '');\n } else {\n value = value.replace(pluralRegex, '').replace(singularRegex, '$1');\n }\n return value;\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/L10N.ts\n **/","import { Utils } from '../utils/Utils';\nimport _ = require('underscore');\n\nexport class Options {\n public merge(provided: T): T {\n return _.extend({}, this, provided);\n }\n\n public mergeDeep(provided: T): T {\n return _.extend({}, Utils.extendDeep(this, provided));\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/misc/Options.ts\n **/","import { L10N } from '../misc/L10N';\nexport function l(str : \"Unknown\");\nexport function l(str : \"And\");\nexport function l(str : \"Authenticating\" , param0: string);\nexport function l(str : \"Clear\" , param0: string);\nexport function l(str : \"CompleteQuery\");\nexport function l(str : \"Exclude\" , param0: string);\nexport function l(str : \"EnterTag\");\nexport function l(str : \"Next\");\nexport function l(str : \"Last\");\nexport function l(str : \"Link\");\nexport function l(str : \"Or\");\nexport function l(str : \"Previous\");\nexport function l(str : \"QueryDidntMatchAnyDocuments\");\nexport function l(str : \"QueryException\" , param0: string);\nexport function l(str : \"Me\");\nexport function l(str : \"Remove\");\nexport function l(str : \"Search\");\nexport function l(str : \"SearchFor\" , param0: string);\nexport function l(str : \"ShareQuery\");\nexport function l(str : \"Preferences\");\nexport function l(str : \"LinkOpeningSettings\");\nexport function l(str : \"Reauthenticate\" , param0: string);\nexport function l(str : \"ResultsFilteringExpression\");\nexport function l(str : \"FiltersInYourPreferences\");\nexport function l(str : \"Create\");\nexport function l(str : \"SearchIn\" , param0: string);\nexport function l(str : \"Seconds\" , param0: string, count: number);\nexport function l(str : \"ShowingResultsOf\" , param0: string, param1: string, param2: string, count: number);\nexport function l(str : \"SwitchTo\" , param0: string);\nexport function l(str : \"Unexclude\" , param0: string);\nexport function l(str : \"ClearAllFilters\");\nexport function l(str : \"SkipLogin\");\nexport function l(str : \"LoginInProgress\");\nexport function l(str : \"Login\");\nexport function l(str : \"GetStarted\");\nexport function l(str : \"More\");\nexport function l(str : \"NMore\" , param0: string);\nexport function l(str : \"Less\");\nexport function l(str : \"Settings\");\nexport function l(str : \"Score\");\nexport function l(str : \"ScoreDescription\");\nexport function l(str : \"Occurrences\");\nexport function l(str : \"OccurrencesDescription\");\nexport function l(str : \"Label\");\nexport function l(str : \"Of\");\nexport function l(str : \"LabelDescription\");\nexport function l(str : \"Value\");\nexport function l(str : \"ValueDescription\");\nexport function l(str : \"AlphaAscending\");\nexport function l(str : \"AlphaDescending\");\nexport function l(str : \"ChiSquare\");\nexport function l(str : \"Nosort\");\nexport function l(str : \"NosortDescription\");\nexport function l(str : \"RelativeFrequency\");\nexport function l(str : \"RelativeFrequencyDescription\");\nexport function l(str : \"DateDistribution\");\nexport function l(str : \"Custom\");\nexport function l(str : \"CustomDescription\");\nexport function l(str : \"ComputedField\");\nexport function l(str : \"Ascending\");\nexport function l(str : \"Descending\");\nexport function l(str : \"noResultFor\" , param0: string);\nexport function l(str : \"autoCorrectedQueryTo\" , param0: string);\nexport function l(str : \"didYouMean\" , param0: string);\nexport function l(str : \"SuggestedResults\");\nexport function l(str : \"SuggestedQueries\");\nexport function l(str : \"MostRelevantItems\");\nexport function l(str : \"AllItems\");\nexport function l(str : \"ShowLess\");\nexport function l(str : \"ShowMore\");\nexport function l(str : \"HideFacet\");\nexport function l(str : \"ShowFacet\");\nexport function l(str : \"AndOthers\" , param0: string, count: number);\nexport function l(str : \"Others\" , param0: string, count: number);\nexport function l(str : \"MostRelevantPosts\");\nexport function l(str : \"CompleteThread\");\nexport function l(str : \"ShowCompleteThread\");\nexport function l(str : \"ShowOnlyTopMatchingPosts\");\nexport function l(str : \"MostRelevantReplies\");\nexport function l(str : \"AllConversation\");\nexport function l(str : \"ShowAllConversation\");\nexport function l(str : \"ShowAllReplies\");\nexport function l(str : \"ShowOnlyMostRelevantReplies\");\nexport function l(str : \"Close\");\nexport function l(str : \"Open\");\nexport function l(str : \"OpenInOutlookWhenPossible\");\nexport function l(str : \"AlwaysOpenInNewWindow\");\nexport function l(str : \"Quickview\");\nexport function l(str : \"NoQuickview\");\nexport function l(str : \"ErrorReport\");\nexport function l(str : \"OopsError\");\nexport function l(str : \"ProblemPersists\");\nexport function l(str : \"GoBack\");\nexport function l(str : \"Reset\");\nexport function l(str : \"Retry\");\nexport function l(str : \"MoreInfo\");\nexport function l(str : \"Username\");\nexport function l(str : \"Password\");\nexport function l(str : \"PostedBy\");\nexport function l(str : \"CannotConnect\");\nexport function l(str : \"BadUserPass\");\nexport function l(str : \"PleaseEnterYourCredentials\" , param0: string);\nexport function l(str : \"PleaseEnterYourSearchPage\");\nexport function l(str : \"Collapse\");\nexport function l(str : \"Collapsable\");\nexport function l(str : \"Expand\");\nexport function l(str : \"Today\");\nexport function l(str : \"Yesterday\");\nexport function l(str : \"Tomorrow\");\nexport function l(str : \"Duration\" , param0: string);\nexport function l(str : \"IndexDuration\" , param0: string);\nexport function l(str : \"ProxyDuration\" , param0: string);\nexport function l(str : \"ClientDuration\" , param0: string);\nexport function l(str : \"Unavailable\");\nexport function l(str : \"Reply\");\nexport function l(str : \"ReplyAll\");\nexport function l(str : \"Forward\");\nexport function l(str : \"From\");\nexport function l(str : \"Caption\");\nexport function l(str : \"Expression\");\nexport function l(str : \"Tab\");\nexport function l(str : \"Tabs\");\nexport function l(str : \"EnterExpressionName\");\nexport function l(str : \"EnterExpressionToFilterWith\");\nexport function l(str : \"SelectTab\");\nexport function l(str : \"SelectAll\");\nexport function l(str : \"PageUrl\");\nexport function l(str : \"ErrorSavingToDevice\");\nexport function l(str : \"ErrorReadingFromDevice\");\nexport function l(str : \"AppIntro\");\nexport function l(str : \"TryDemo\");\nexport function l(str : \"ContactUs\");\nexport function l(str : \"NewToCoveo\");\nexport function l(str : \"LetUsHelpGetStarted\");\nexport function l(str : \"LikesThis\" , param0: string, count: number);\nexport function l(str : \"CannotConnectSearchPage\");\nexport function l(str : \"AreYouSureDeleteFilter\" , param0: string, param1: string);\nexport function l(str : \"OnlineHelp\");\nexport function l(str : \"Done\");\nexport function l(str : \"SaveFacetState\");\nexport function l(str : \"ClearFacetState\");\nexport function l(str : \"DisplayingTheOnlyMessage\");\nexport function l(str : \"NoNetworkConnection\");\nexport function l(str : \"UnknownConnection\");\nexport function l(str : \"EthernetConnection\");\nexport function l(str : \"WiFi\");\nexport function l(str : \"CELL\");\nexport function l(str : \"CELL_2G\");\nexport function l(str : \"CELL_3G\");\nexport function l(str : \"CELL_4G\");\nexport function l(str : \"Relevance\");\nexport function l(str : \"Date\");\nexport function l(str : \"Amount\");\nexport function l(str : \"QueryExceptionNoException\");\nexport function l(str : \"QueryExceptionInvalidSyntax\");\nexport function l(str : \"QueryExceptionInvalidCustomField\");\nexport function l(str : \"QueryExceptionInvalidDate\");\nexport function l(str : \"QueryExceptionInvalidExactPhrase\");\nexport function l(str : \"QueryExceptionInvalidDateOp\");\nexport function l(str : \"QueryExceptionInvalidNear\");\nexport function l(str : \"QueryExceptionInvalidWeightedNear\");\nexport function l(str : \"QueryExceptionInvalidTerm\");\nexport function l(str : \"QueryExceptionTooManyTerms\");\nexport function l(str : \"QueryExceptionWildcardTooGeneral\");\nexport function l(str : \"QueryExceptionInvalidSortField\");\nexport function l(str : \"QueryExceptionInvalidSmallStringOp\");\nexport function l(str : \"QueryExceptionRequestedResultsMax\");\nexport function l(str : \"QueryExceptionAggregatedMirrorDead\");\nexport function l(str : \"QueryExceptionAggregatedMirrorQueryTimeOut\");\nexport function l(str : \"QueryExceptionAggregatedMirrorInvalidBuildNumber\");\nexport function l(str : \"QueryExceptionAggregatedMirrorCannotConnect\");\nexport function l(str : \"QueryExceptionNotEnoughLeadingCharsWildcard\");\nexport function l(str : \"QueryExceptionSecurityInverterNotFound\");\nexport function l(str : \"QueryExceptionSecurityInverterAccessDenied\");\nexport function l(str : \"QueryExceptionAggregatedMirrorCannotImpersonate\");\nexport function l(str : \"QueryExceptionUnexpected\");\nexport function l(str : \"QueryExceptionAccessDenied\");\nexport function l(str : \"QueryExceptionSuperUserTokenInvalid\");\nexport function l(str : \"QueryExceptionSuperUserTokenExpired\");\nexport function l(str : \"QueryExceptionLicenseQueriesExpired\");\nexport function l(str : \"QueryExceptionLicenseSuperUserTokenNotSupported\");\nexport function l(str : \"QueryExceptionInvalidSession\");\nexport function l(str : \"QueryExceptionInvalidDocument\");\nexport function l(str : \"QueryExceptionSearchDisabled\");\nexport function l(str : \"FileType\");\nexport function l(str : \"ShowAttachment\");\nexport function l(str : \"OnFeed\" , param0: string);\nexport function l(str : \"Author\");\nexport function l(str : \"NoTitle\");\nexport function l(str : \"CurrentSelections\");\nexport function l(str : \"AllContent\");\nexport function l(str : \"CancelLastAction\");\nexport function l(str : \"SearchTips\");\nexport function l(str : \"CheckSpelling\");\nexport function l(str : \"TryUsingFewerKeywords\");\nexport function l(str : \"SelectFewerFilters\");\nexport function l(str : \"Document\");\nexport function l(str : \"Time\");\nexport function l(str : \"StartDate\");\nexport function l(str : \"StartTime\");\nexport function l(str : \"DurationTitle\");\nexport function l(str : \"UserQuery\");\nexport function l(str : \"ShowUserActions\");\nexport function l(str : \"NoData\");\nexport function l(str : \"EventType\");\nexport function l(str : \"GoToFullSearch\");\nexport function l(str : \"GoToEdition\");\nexport function l(str : \"RemoveContext\");\nexport function l(str : \"BoxAttachToCase\");\nexport function l(str : \"AttachToCase\");\nexport function l(str : \"Attach\");\nexport function l(str : \"Attached\");\nexport function l(str : \"Detach\");\nexport function l(str : \"Details\");\nexport function l(str : \"AdditionalFilters\");\nexport function l(str : \"SelectNonContextualSearch\");\nexport function l(str : \"CopyPasteToSupport\");\nexport function l(str : \"FollowQueryDescription\");\nexport function l(str : \"SearchAlerts_Panel\");\nexport function l(str : \"SearchAlerts_PanelDescription\");\nexport function l(str : \"SearchAlerts_PanelNoSearchAlerts\");\nexport function l(str : \"SearchAlerts_Fail\");\nexport function l(str : \"SearchAlerts_Type\");\nexport function l(str : \"SearchAlerts_Content\");\nexport function l(str : \"SearchAlerts_Actions\");\nexport function l(str : \"EmptyQuery\");\nexport function l(str : \"SearchAlerts_Type_followQuery\");\nexport function l(str : \"SearchAlerts_Type_followDocument\");\nexport function l(str : \"SearchAlerts_unFollowing\");\nexport function l(str : \"SearchAlerts_follow\");\nexport function l(str : \"SearchAlerts_followed\");\nexport function l(str : \"SearchAlerts_followQuery\");\nexport function l(str : \"Subscription_StopFollowingQuery\");\nexport function l(str : \"SearchAlerts_Frequency\");\nexport function l(str : \"SubscriptionsManageSubscriptions\");\nexport function l(str : \"SubscriptionsMessageFollowQuery\" , param0: string);\nexport function l(str : \"SubscriptionsMessageFollow\" , param0: string);\nexport function l(str : \"Expiration\");\nexport function l(str : \"Monthly\");\nexport function l(str : \"Daily\");\nexport function l(str : \"Monday\");\nexport function l(str : \"Tuesday\");\nexport function l(str : \"Wednesday\");\nexport function l(str : \"Thursday\");\nexport function l(str : \"Friday\");\nexport function l(str : \"Saturday\");\nexport function l(str : \"Sunday\");\nexport function l(str : \"NextDay\" , param0: string);\nexport function l(str : \"LastDay\" , param0: string);\nexport function l(str : \"StartTypingCaseForSuggestions\");\nexport function l(str : \"ExportToExcel\");\nexport function l(str : \"ExportToExcelDescription\");\nexport function l(str : \"CaseCreationNoResults\");\nexport function l(str : \"SortBy\");\nexport function l(str : \"BoxCreateArticle\");\nexport function l(str : \"Facets\");\nexport function l(str : \"AdvancedSearch\");\nexport function l(str : \"Keywords\");\nexport function l(str : \"AllTheseWords\");\nexport function l(str : \"ExactPhrase\");\nexport function l(str : \"AnyOfTheseWords\");\nexport function l(str : \"NoneOfTheseWords\");\nexport function l(str : \"Anytime\");\nexport function l(str : \"InTheLast\");\nexport function l(str : \"Days\");\nexport function l(str : \"Months\");\nexport function l(str : \"Between\");\nexport function l(str : \"Language\");\nexport function l(str : \"Size\");\nexport function l(str : \"AtLeast\");\nexport function l(str : \"AtMost\");\nexport function l(str : \"Contains\");\nexport function l(str : \"DoesNotContain\");\nexport function l(str : \"Matches\");\nexport function l(str : \"Bytes\");\nexport function l(str : \"list\");\nexport function l(str : \"card\");\nexport function l(str : \"table\");\nexport function l(str : \"ResultLinks\");\nexport function l(str : \"EnableQuerySyntax\");\nexport function l(str : \"On\");\nexport function l(str : \"Off\");\nexport function l(str : \"Automatic\");\nexport function l(str : \"ResultsPerPage\");\nexport function l(str : \"objecttype_people\");\nexport function l(str : \"objecttype_message\");\nexport function l(str : \"objecttype_feed\");\nexport function l(str : \"objecttype_thread\");\nexport function l(str : \"objecttype_file\");\nexport function l(str : \"objecttype_board\");\nexport function l(str : \"objecttype_category\");\nexport function l(str : \"objecttype_account\");\nexport function l(str : \"objecttype_annotation\");\nexport function l(str : \"objecttype_campaign\");\nexport function l(str : \"objecttype_case\");\nexport function l(str : \"objecttype_contentversion\");\nexport function l(str : \"objecttype_contact\");\nexport function l(str : \"objecttype_contract\");\nexport function l(str : \"objecttype_event\");\nexport function l(str : \"objecttype_email\");\nexport function l(str : \"objecttype_goal\");\nexport function l(str : \"objecttype_incident\");\nexport function l(str : \"objecttype_invoice\");\nexport function l(str : \"objecttype_lead\");\nexport function l(str : \"objecttype_list\");\nexport function l(str : \"objecttype_solution\");\nexport function l(str : \"objecttype_task\");\nexport function l(str : \"objecttype_user\");\nexport function l(str : \"objecttype_attachment\");\nexport function l(str : \"objecttype_casecomment\");\nexport function l(str : \"objecttype_opportunity\");\nexport function l(str : \"objecttype_opportunityproduct\");\nexport function l(str : \"objecttype_feeditem\");\nexport function l(str : \"objecttype_feedcomment\");\nexport function l(str : \"objecttype_note\");\nexport function l(str : \"objecttype_product\");\nexport function l(str : \"objecttype_partner\");\nexport function l(str : \"objecttype_queueitem\");\nexport function l(str : \"objecttype_quote\");\nexport function l(str : \"objecttype_salesliterature\");\nexport function l(str : \"objecttype_salesorder\");\nexport function l(str : \"objecttype_service\");\nexport function l(str : \"objecttype_socialprofile\");\nexport function l(str : \"objecttype_kbdocumentation\");\nexport function l(str : \"objecttype_kbtechnicalarticle\");\nexport function l(str : \"objecttype_kbsolution\");\nexport function l(str : \"objecttype_kbknowledgearticle\");\nexport function l(str : \"objecttype_kbattachment\");\nexport function l(str : \"objecttype_kbarticle\");\nexport function l(str : \"objecttype_kbarticlecomment\");\nexport function l(str : \"objecttype_knowledgearticle\");\nexport function l(str : \"filetype_box user\");\nexport function l(str : \"filetype_html\");\nexport function l(str : \"filetype_wiki\");\nexport function l(str : \"filetype_webscraperwebpage\");\nexport function l(str : \"filetype_image\");\nexport function l(str : \"filetype_folder\");\nexport function l(str : \"filetype_txt\");\nexport function l(str : \"filetype_zip\");\nexport function l(str : \"filetype_olefile\");\nexport function l(str : \"filetype_gmailmessage\");\nexport function l(str : \"filetype_pdf\");\nexport function l(str : \"filetype_swf\");\nexport function l(str : \"filetype_xml\");\nexport function l(str : \"filetype_vsd\");\nexport function l(str : \"filetype_svg\");\nexport function l(str : \"filetype_svm\");\nexport function l(str : \"filetype_rssitem\");\nexport function l(str : \"filetype_doc\");\nexport function l(str : \"filetype_docx\");\nexport function l(str : \"filetype_xls\");\nexport function l(str : \"filetype_ppt\");\nexport function l(str : \"filetype_video\");\nexport function l(str : \"filetype_youtube\");\nexport function l(str : \"filetype_saleforceitem\");\nexport function l(str : \"filetype_dynamicscrmitem\");\nexport function l(str : \"filetype_salesforceitem\");\nexport function l(str : \"filetype_odt\");\nexport function l(str : \"filetype_cfpage\");\nexport function l(str : \"filetype_cfcomment\");\nexport function l(str : \"filetype_cfspace\");\nexport function l(str : \"filetype_cfblogentry\");\nexport function l(str : \"filetype_confluencespace\");\nexport function l(str : \"filetype_exchangemessage\");\nexport function l(str : \"filetype_exchangeappointment\");\nexport function l(str : \"filetype_exchangenote\");\nexport function l(str : \"filetype_exchangetask\");\nexport function l(str : \"filetype_exchangeperson\");\nexport function l(str : \"filetype_activedirperson\");\nexport function l(str : \"filetype_exchangeactivity\");\nexport function l(str : \"filetype_exchangecalendarmessage\");\nexport function l(str : \"filetype_exchangedocument\");\nexport function l(str : \"filetype_exchangedsn\");\nexport function l(str : \"filetype_exchangefreebusy\");\nexport function l(str : \"filetype_exchangegroup\");\nexport function l(str : \"filetype_exchangerssfeed\");\nexport function l(str : \"filetype_exchangejunkmessage\");\nexport function l(str : \"filetype_exchangeofficecom\");\nexport function l(str : \"filetype_lithiummessage\");\nexport function l(str : \"filetype_lithiumthread\");\nexport function l(str : \"filetype_lithiumboard\");\nexport function l(str : \"filetype_lithiumcategory\");\nexport function l(str : \"filetype_lithiumcommunity\");\nexport function l(str : \"filetype_spportal\");\nexport function l(str : \"filetype_spsite\");\nexport function l(str : \"filetype_spuserprofile\");\nexport function l(str : \"filetype_sparea\");\nexport function l(str : \"filetype_spannouncement\");\nexport function l(str : \"filetype_spannouncementlist\");\nexport function l(str : \"filetype_spcontact\");\nexport function l(str : \"filetype_spcontactlist\");\nexport function l(str : \"filetype_spcustomlist\");\nexport function l(str : \"filetype_spdiscussionboard\");\nexport function l(str : \"filetype_spdiscussionboardlist\");\nexport function l(str : \"filetype_spdocumentlibrarylist\");\nexport function l(str : \"filetype_spevent\");\nexport function l(str : \"filetype_speventlist\");\nexport function l(str : \"filetype_spformlibrarylist\");\nexport function l(str : \"filetype_spissue\");\nexport function l(str : \"filetype_spissuelist\");\nexport function l(str : \"filetype_splink\");\nexport function l(str : \"filetype_splinklist\");\nexport function l(str : \"filetype_sppicturelibrarylist\");\nexport function l(str : \"filetype_spsurvey\");\nexport function l(str : \"filetype_spsurveylist\");\nexport function l(str : \"filetype_sptask\");\nexport function l(str : \"filetype_sptasklist\");\nexport function l(str : \"filetype_spagenda\");\nexport function l(str : \"filetype_spagendalist\");\nexport function l(str : \"filetype_spattendee\");\nexport function l(str : \"filetype_spattendeelist\");\nexport function l(str : \"filetype_spcustomgridlist\");\nexport function l(str : \"filetype_spdecision\");\nexport function l(str : \"filetype_spdecisionlist\");\nexport function l(str : \"filetype_spobjective\");\nexport function l(str : \"filetype_spobjectivelist\");\nexport function l(str : \"filetype_sptextbox\");\nexport function l(str : \"filetype_sptextboxlist\");\nexport function l(str : \"filetype_spthingstobring\");\nexport function l(str : \"filetype_spthingstobringlist\");\nexport function l(str : \"filetype_sparealisting\");\nexport function l(str : \"filetype_spmeetingserie\");\nexport function l(str : \"filetype_spmeetingserielist\");\nexport function l(str : \"filetype_spsitedirectory\");\nexport function l(str : \"filetype_spsitedirectorylist\");\nexport function l(str : \"filetype_spdatasource\");\nexport function l(str : \"filetype_spdatasourcelist\");\nexport function l(str : \"filetype_splisttemplatecataloglist\");\nexport function l(str : \"filetype_spwebpartcataloglist\");\nexport function l(str : \"filetype_spwebtemplatecataloglist\");\nexport function l(str : \"filetype_spworkspacepagelist\");\nexport function l(str : \"filetype_spunknownlist\");\nexport function l(str : \"filetype_spadministratortask\");\nexport function l(str : \"filetype_spadministratortasklist\");\nexport function l(str : \"filetype_spareadocumentlibrarylist\");\nexport function l(str : \"filetype_spblogcategory\");\nexport function l(str : \"filetype_spblogcategorylist\");\nexport function l(str : \"filetype_spblogcomment\");\nexport function l(str : \"filetype_spblogcommentlist\");\nexport function l(str : \"filetype_spblogpost\");\nexport function l(str : \"filetype_spblogpostlist\");\nexport function l(str : \"filetype_spdataconnectionlibrarylist\");\nexport function l(str : \"filetype_spdistributiongroup\");\nexport function l(str : \"filetype_spdistributiongrouplist\");\nexport function l(str : \"filetype_spipfslist\");\nexport function l(str : \"filetype_spkeyperformanceindicator\");\nexport function l(str : \"filetype_spkeyperformanceindicatorlist\");\nexport function l(str : \"filetype_splanguagesandtranslator\");\nexport function l(str : \"filetype_splanguagesandtranslatorlist\");\nexport function l(str : \"filetype_spmasterpagescataloglist\");\nexport function l(str : \"filetype_spnocodeworkflowlibrarylist\");\nexport function l(str : \"filetype_spprojecttask\");\nexport function l(str : \"filetype_spprojecttasklist\");\nexport function l(str : \"filetype_sppublishingpageslibrarylist\");\nexport function l(str : \"filetype_spreportdocumentlibrarylist\");\nexport function l(str : \"filetype_spreportlibrarylist\");\nexport function l(str : \"filetype_spslidelibrarylist\");\nexport function l(str : \"filetype_sptab\");\nexport function l(str : \"filetype_sptablist\");\nexport function l(str : \"filetype_sptranslationmanagementlibrarylist\");\nexport function l(str : \"filetype_spuserinformation\");\nexport function l(str : \"filetype_spuserinformationlist\");\nexport function l(str : \"filetype_spwikipagelibrarylist\");\nexport function l(str : \"filetype_spworkflowhistory\");\nexport function l(str : \"filetype_spworkflowhistorylist\");\nexport function l(str : \"filetype_spworkflowprocess\");\nexport function l(str : \"filetype_spworkflowprocesslist\");\nexport function l(str : \"filetype_sppublishingimageslibrarylist\");\nexport function l(str : \"filetype_spcirculation\");\nexport function l(str : \"filetype_spcirculationlist\");\nexport function l(str : \"filetype_spdashboardslibrarylist\");\nexport function l(str : \"filetype_spdataconnectionforperformancepointlibrarylist\");\nexport function l(str : \"filetype_sphealthreport\");\nexport function l(str : \"filetype_sphealthreportlist\");\nexport function l(str : \"filetype_sphealthrule\");\nexport function l(str : \"filetype_sphealthrulelist\");\nexport function l(str : \"filetype_spimedictionary\");\nexport function l(str : \"filetype_spimedictionarylist\");\nexport function l(str : \"filetype_spperformancepointcontent\");\nexport function l(str : \"filetype_spperformancepointcontentlist\");\nexport function l(str : \"filetype_spphonecallmemo\");\nexport function l(str : \"filetype_spphonecallmemolist\");\nexport function l(str : \"filetype_sprecordlibrarylist\");\nexport function l(str : \"filetype_spresource\");\nexport function l(str : \"filetype_spresourcelist\");\nexport function l(str : \"filetype_spprocessdiagramslibrarylist\");\nexport function l(str : \"filetype_spsitethemeslibrarylist\");\nexport function l(str : \"filetype_spsolutionslibrarylist\");\nexport function l(str : \"filetype_spwfpublibrarylist\");\nexport function l(str : \"filetype_spwhereabout\");\nexport function l(str : \"filetype_spwhereaboutlist\");\nexport function l(str : \"filetype_spdocumentlink\");\nexport function l(str : \"filetype_spdocumentset\");\nexport function l(str : \"filetype_spmicrofeedpost\");\nexport function l(str : \"filetype_spmicrofeedlist\");\nexport function l(str : \"filetype_splistfolder\");\nexport function l(str : \"filetype_youtubevideo\");\nexport function l(str : \"filetype_youtubeplaylistitem\");\nexport function l(...params : any[]);\nexport function l(...params : any[]) { return L10N.format.apply(this, arguments) };\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/strings/Strings.ts\n **/","export { AnalyticsEndpoint } from './rest/AnalyticsEndpoint';\nexport { EndpointCaller } from './rest/EndpointCaller';\nexport { QueryError } from './rest/QueryError';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/RestModules.ts\n **/","import { Logger } from '../misc/Logger';\nimport { EndpointCaller, IEndpointCallerOptions } from '../rest/EndpointCaller';\nimport { IAPIAnalyticsVisitResponseRest } from './APIAnalyticsVisitResponse';\nimport { IErrorResponse } from '../rest/EndpointCaller';\nimport { IAPIAnalyticsSearchEventsResponse } from '../rest/APIAnalyticsSearchEventsResponse';\nimport { ISearchEvent } from '../rest/SearchEvent';\nimport { IClickEvent } from '../rest/ClickEvent';\nimport { IAPIAnalyticsEventResponse } from './APIAnalyticsEventResponse';\nimport { Assert } from '../misc/Assert';\nimport { ICustomEvent } from './CustomEvent';\nimport { ITopQueries } from './TopQueries';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { Cookie } from '../utils/CookieUtils';\nimport { ISuccessResponse } from '../rest/EndpointCaller';\nimport { IStringMap } from '../rest/GenericParam';\nimport _ = require('underscore');\n\nexport interface IAnalyticsEndpointOptions {\n token: string;\n serviceUrl: string;\n organization: string;\n}\n\nexport class AnalyticsEndpoint {\n logger: Logger;\n\n static DEFAULT_ANALYTICS_URI = 'https://usageanalytics.coveo.com';\n static DEFAULT_ANALYTICS_VERSION = 'v15';\n static CUSTOM_ANALYTICS_VERSION = undefined;\n static VISITOR_COOKIE_TIME = 10000 * 24 * 60 * 60 * 1000;\n\n static pendingRequest: Promise;\n\n private visitId: string;\n private organization: string;\n public endpointCaller: EndpointCaller;\n\n constructor(public options: IAnalyticsEndpointOptions) {\n this.logger = new Logger(this);\n\n var endpointCallerOptions: IEndpointCallerOptions = {\n accessToken: (this.options.token && this.options.token != '') ? this.options.token : null\n };\n this.endpointCaller = new EndpointCaller(endpointCallerOptions);\n this.organization = options.organization;\n }\n\n public getCurrentVisitId(): string {\n return this.visitId;\n }\n\n public getCurrentVisitIdPromise(): Promise {\n return new Promise((resolve, reject) => {\n if (this.getCurrentVisitId()) {\n resolve(this.getCurrentVisitId());\n } else {\n var url = this.buildAnalyticsUrl('/analytics/visit');\n this.getFromService(url, {})\n .then((response: IAPIAnalyticsVisitResponseRest) => {\n this.visitId = response.id;\n resolve(this.visitId);\n })\n .catch((response: IErrorResponse) => {\n reject(response);\n });\n }\n });\n }\n\n public sendSearchEvents(searchEvents: ISearchEvent[]): Promise {\n if (searchEvents.length > 0) {\n this.logger.info('Logging analytics search events', searchEvents);\n return this.sendToService(searchEvents, 'searches', 'searchEvents');\n }\n }\n\n public sendDocumentViewEvent(documentViewEvent: IClickEvent): Promise {\n Assert.exists(documentViewEvent);\n this.logger.info('Logging analytics document view', documentViewEvent);\n return this.sendToService(documentViewEvent, 'click', 'clickEvent');\n }\n\n public sendCustomEvent(customEvent: ICustomEvent) {\n Assert.exists(customEvent);\n this.logger.info('Logging analytics custom event', customEvent);\n return this.sendToService(customEvent, 'custom', 'customEvent');\n }\n\n public getTopQueries(params: ITopQueries): Promise {\n var url = this.buildAnalyticsUrl('/stats/topQueries');\n return this.getFromService(url, params);\n }\n\n private sendToService(data: D, path: string, paramName: string): Promise {\n var url = QueryUtils.mergePath(this.options.serviceUrl, '/rest/' + (AnalyticsEndpoint.CUSTOM_ANALYTICS_VERSION || AnalyticsEndpoint.DEFAULT_ANALYTICS_VERSION) + '/analytics/' + path);\n var queryString = [];\n\n if (this.organization) {\n queryString.push('org=' + this.organization);\n }\n if (Cookie.get('visitorId')) {\n queryString.push('visitor=' + encodeURIComponent(Cookie.get('visitorId')));\n }\n\n // We use pendingRequest because we don't want to have 2 request to analytics at the same time.\n // Otherwise the cookie visitId won't be set correctly.\n if (AnalyticsEndpoint.pendingRequest == null) {\n AnalyticsEndpoint.pendingRequest = this.endpointCaller.call({\n errorsAsSuccess: false,\n method: 'POST',\n queryString: queryString,\n requestData: data,\n url: url,\n responseType: 'text',\n requestDataType: 'application/json'\n }).then((res: ISuccessResponse) => {\n return this.handleAnalyticsEventResponse(res.data);\n }).finally(() => {\n AnalyticsEndpoint.pendingRequest = null;\n });\n return AnalyticsEndpoint.pendingRequest;\n } else {\n return AnalyticsEndpoint.pendingRequest.finally(() => {\n return this.sendToService(data, path, paramName);\n });\n }\n }\n\n private getFromService(url: string, params: IStringMap): Promise {\n var paramsToSend = (this.options.token && this.options.token != '') ? _.extend({ 'access_token': this.options.token }, params) : params;\n return this.endpointCaller.call({\n errorsAsSuccess: false,\n method: 'GET',\n queryString: this.options.organization ? ['org=' + encodeURIComponent(this.options.organization)] : [],\n requestData: paramsToSend,\n responseType: 'json',\n url: url\n }).then((res: ISuccessResponse) => {\n return res.data;\n });\n }\n\n private handleAnalyticsEventResponse(response: IAPIAnalyticsEventResponse | IAPIAnalyticsSearchEventsResponse) {\n var visitId: string;\n var visitorId: string;\n\n if (response['visitId']) {\n visitId = response['visitId'];\n visitorId = response['visitorId'];\n } else if (response['searchEventResponses']) {\n visitId = (_.first(response['searchEventResponses'])).visitId;\n visitorId = (_.first(response['searchEventResponses'])).visitorId;\n }\n\n if (visitId) {\n this.visitId = visitId;\n }\n if (visitorId) {\n Cookie.set('visitorId', visitorId, AnalyticsEndpoint.VISITOR_COOKIE_TIME);\n }\n\n return response;\n }\n\n\n private buildAnalyticsUrl(path: string) {\n return this.options.serviceUrl + '/rest/' + (AnalyticsEndpoint.CUSTOM_ANALYTICS_VERSION || AnalyticsEndpoint.DEFAULT_ANALYTICS_VERSION) + path;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/rest/AnalyticsEndpoint.ts\n **/","// Code originally taken from : https://developers.livechatinc.com/blog/setting-cookies-to-subdomains-in-javascript/\nexport class Cookie {\n private static prefix: string = 'coveo_';\n\n static set(name: string, value: string, expiration?: number) {\n let domain: string, domainParts: string[], date, expires: string, host: string;\n\n if (expiration) {\n date = new Date();\n date.setTime(date.getTime() + expiration);\n expires = '; expires=' + date.toGMTString();\n } else {\n expires = '';\n }\n\n host = location.hostname;\n if (host.split('.').length === 1) {\n // no '.' in a domain - it's localhost or something similar\n document.cookie = this.prefix + name + '=' + value + expires + '; path=/';\n } else {\n // Remember the cookie on all subdomains.\n //\n // Start with trying to set cookie to the top domain.\n // (example: if user is on foo.com, try to set\n // cookie to domain '.com')\n //\n // If the cookie will not be set, it means '.com'\n // is a top level domain and we need to\n // set the cookie to '.foo.com'\n domainParts = host.split('.');\n domainParts.shift();\n domain = '.' + domainParts.join('.');\n\n document.cookie = this.prefix + name + '=' + value + expires + '; path=/; domain=' + domain;\n\n // check if cookie was successfuly set to the given domain\n // (otherwise it was a Top-Level Domain)\n if (Cookie.get(name) == null || Cookie.get(name) != value) {\n // append '.' to current domain\n domain = '.' + host;\n document.cookie = this.prefix + name + '=' + value + expires + '; path=/; domain=' + domain;\n }\n }\n }\n\n static get(name: string) {\n let nameEQ = this.prefix + name + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) == 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n return null;\n }\n\n static erase(name: string) {\n Cookie.set(name, '', -1);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/CookieUtils.ts\n **/","export { AdvancedSearchEvents } from './events/AdvancedSearchEvents';\nexport { AnalyticsEvents } from './events/AnalyticsEvents';\nexport { BreadcrumbEvents } from './events/BreadcrumbEvents';\nexport { DebugEvents } from './events/DebugEvents';\nexport { ImageResultListEvents } from './events/ImageResultListEvents';\nexport { InitializationEvents } from './events/InitializationEvents';\nexport { OmniboxEvents } from './events/OmniboxEvents';\nexport { PreferencesPanelEvents } from './events/PreferencesPanelEvents';\nexport { QueryEvents } from './events/QueryEvents';\nexport { ResultListEvents } from './events/ResultListEvents';\nexport { ResultLayoutEvents } from './events/ResultLayoutEvents';\nexport { SearchAlertsEvents } from './events/SearchAlertEvents';\nexport { SettingsEvents } from './events/SettingsEvents';\nexport { SliderEvents } from './events/SliderEvents';\nexport { StandaloneSearchInterfaceEvents } from './events/StandaloneSearchInterfaceEvents';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/EventsModules.ts\n **/","import { IExternalAdvancedSearchSection } from '../ui/AdvancedSearch/AdvancedSearchInput';\nimport { IQueryOptions } from '../controllers/QueryController';\nimport { IQueryResults } from '../rest/QueryResults';\n\n/**\n * Argument sent to all handlers bound on {@link AdvancedSearchEvents.buildingAdvancedSearch}\n */\nexport interface IBuildingAdvancedSearchEventArgs {\n /**\n * Sections which external code can populate by pushing into this array.\n */\n sections: IExternalAdvancedSearchSection[];\n /**\n * An easy way to execute a new query.\n * @param options\n */\n executeQuery: (options: IQueryOptions) => Promise;\n}\n\n/**\n * This static class is there to contains the different string definition for all the events related to the {@link AdvancedSearch} component.\n */\nexport class AdvancedSearchEvents {\n\n /**\n * Triggered when the {@link AdvancedSearch} component is being built.\n *\n * Allows external code to add new sections in the **Advanced Search** panel.\n *\n * All bound handlers receive {@link IBuildingAdvancedSearchEventArgs} as an argument\n *\n * @type {string}\n */\n public static buildingAdvancedSearch = 'buildingAdvancedSearch';\n public static executeAdvancedSearch = 'executeAdvancedSearch';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/AdvancedSearchEvents.ts\n **/","import { IAPIDocumentViewEvent } from '../rest/APIDocumentViewEvent';\nimport { IAPISearchEvent } from '../rest/APISearchEvent';\nimport { IAPICustomEvent } from '../rest/APICustomEvent';\n\nexport interface IAnalyticsSearchEventsArgs {\n searchEvents: IAPISearchEvent[];\n}\n\nexport interface IAnalyticsDocumentViewEventArgs {\n documentViewEvent: IAPIDocumentViewEvent;\n}\n\nexport interface IAnalyticsCustomEventArgs {\n customEvent: IAPICustomEvent;\n}\n\n/**\n * Argument sent to all handlers bound on {@link AnalyticsEvents.changeAnalyticsCustomData}.\n *\n * It extends the {@link IChangeableAnalyticsDataObject} interface.\n *\n * Take note that only the attributes described by {@link IChangeableAnalyticsDataObject} can be modified by external code.\n */\nexport interface IChangeAnalyticsCustomDataEventArgs extends IChangeableAnalyticsDataObject {\n /**\n * The type of the event that was just triggered.\n *\n * This can help external code to discriminate the event that it wishes to modify.\n */\n type: 'SearchEvent' | 'CustomEvent' | 'ClickEvent';\n /**\n * The type of the event.\n *\n * The type is normally a generic string that regroups all events triggered by the same feature or component.\n *\n * For example, all analytics events related to the Searchbox will all use the same actionType.\n *\n * Analytics events related to Facets, on the other hand, would use a different actionType.\n */\n actionType: string;\n /**\n * The cause of the event.\n *\n * All analytics events triggered by a different component will use a different action cause.\n *\n * For example, triggering a query by using the search box will send a `searchBoxSubmit` actionCause.\n *\n * Triggering a query with a facet selection, on the other hand, will send a `facetSelect`.\n */\n actionCause: string;\n}\n\n/**\n * The interface that describe the metadata for every analytics event.\n */\nexport interface IChangeableAnalyticsMetaObject {\n /**\n * The metadata for every analytics event is a simple key value pair, where the value has to be a simple string.\n *\n * The value cannot be a complex object.\n */\n [name: string]: string;\n}\n\n/**\n * The interface that describe part of the analytics event that can be modified.\n */\nexport interface IChangeableAnalyticsDataObject {\n /**\n * The metadata for the current event.\n *\n * External code can modify an existing value, or add a new key - value pair.\n */\n metaObject: IChangeableAnalyticsMetaObject;\n /**\n * The originLevel1 property can be used to describe the high level origin of the event.\n *\n * For example, this can be the location of the search page, or any name that allows you to uniquely identify a search interface.\n *\n * If not provided, this value will be `default`.\n */\n originLevel1: string;\n /**\n * The originLevel2 property can be used to describe the mid level origin of the event.\n *\n * By default, the framework will populate this with the currently selected tab.\n */\n originLevel2: string;\n /**\n * The originLevel3 property can be used to describe the low level origin of the event.\n *\n * By default, this property will be left empty.\n */\n originLevel3: string;\n /**\n * The language of the search interface.\n *\n * By default, this will be populated by the currently loaded localization and culture file for the search interface.\n */\n language: string;\n}\n\n/**\n * This static class is there to contains the different string definition for all the events related to analytics.\n */\nexport class AnalyticsEvents {\n public static searchEvent = 'analyticsSearchEvent';\n public static documentViewEvent = 'analyticsDocumentViewEvent';\n public static customEvent = 'analyticsCustomEvent';\n /**\n * Triggered whenever an analytics event is logged. This event allows external code to modify the analytics data.\n *\n * All bound handlers will receive {@link IChangeAnalyticsCustomDataEventArgs} as an argument.\n *\n * The string value is `changeAnalyticsCustomData`.\n */\n public static changeAnalyticsCustomData = 'changeAnalyticsCustomData';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/AnalyticsEvents.ts\n **/","/**\n * Represent an item to insert in the breadcrumb\n */\nexport interface IBreadcrumbItem {\n /**\n * The HTMLElement to insert in the breadcrumb\n */\n element: HTMLElement;\n}\n\n/**\n * Event triggered when populating the breadcrumb\n */\nexport interface IPopulateBreadcrumbEventArgs {\n breadcrumbs: IBreadcrumbItem[];\n}\n\nexport interface IClearBreadcrumbEventArgs {\n}\n\n/**\n * This static class is there to contains the different string definition for all the events related to {@link Breadcrumb}.\n */\nexport class BreadcrumbEvents {\n /**\n * Triggered when the breadcrumb needs to update its content. External code can use this event to provide bits of HTML that should be included in the breadcrumb.\n *\n * All handlers bound to this event will receive a {@link IPopulateBreadcrumbEventArgs} as an argument.\n */\n public static populateBreadcrumb = 'populateBreadcrumb';\n /**\n * Triggered when the user clicks the Clear All button in the breadcrumb. When this event is raised, every filter that is included in the breadcrumb should be removed.\n *\n * This event does not provide custom event data.\n */\n public static clearBreadcrumb = 'clearBreadcrumb';\n public static redrawBreadcrumb = 'redrawBreadcrumb';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/BreadcrumbEvents.ts\n **/","export class DebugEvents {\n public static showDebugPanel = 'showDebugPanel';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/DebugEvents.ts\n **/","\nexport interface ICompletedImageResultsLayoutEventArgs {\n}\n\nexport class ImageResultListEvents {\n public static imageResultsLayoutComplete = 'imageResultsLayoutComplete';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/ImageResultListEvents.ts\n **/","/**\n * This static class is there to contain the different string definitions for all the events related to initialization.\n *\n * Note that these events will only be triggered when the {@link init} function is called.\n *\n * This means these events are normally called only once when the search interface is initialized.\n */\nexport class InitializationEvents {\n /**\n * This event is triggered right before each components inside the search interface get initialized (eg: Before the constructor of each component is executed).\n *\n * The string value is `beforeInitialization`.\n * @type {string}\n */\n public static beforeInitialization = 'beforeInitialization';\n /**\n * Triggered after the components are initialized (eg: After the constructor of each component is executed)\n * but before their state is set from the hash portion of the URL (e.g., http://mysearchinterface#q=myQuery ).\n *\n * This is also before the first query is launched (if the {@link SearchInterface.options.autoTriggerQuery} is `true`).\n *\n * The string value is `afterComponentsInitialization`.\n * @type {string}\n */\n public static afterComponentsInitialization = 'afterComponentsInitialization';\n /**\n * Triggered right before the state from the URL (e.g., http://mysearchinterface#q=myQuery ) gets applied in the interface.\n *\n * This will typically only be useful if the {@link SearchInterface.options.enableHistory} is set to `true`.\n *\n * The string value is `restoreHistoryState`.\n * @type {string}\n */\n public static restoreHistoryState = 'restoreHistoryState';\n /**\n * Triggered right after the UI is fully initialized.\n *\n * Concretely this means that the constructor of each component has been executed, and that the state coming for the URL (e.g., http://mysearchinterface#q=myquery) has been applied.\n *\n * It is triggered *before* the first query is launched, and if the {@link SearchInterface.options.autoTriggerQuery} is `true`.\n *\n * The string value is `afterInitialization`.\n * @type {string}\n */\n public static afterInitialization = 'afterInitialization';\n /**\n * This is triggered when the UI needs to be dynamically removed so that components can unbind any internal handlers they might have set globally on the window or the document.\n *\n * After this event has been executed, the search interface can be dynamically removed and all handlers can be considered cleanly removed.\n *\n * The string value is `nuke`.\n * @type {string}\n */\n public static nuke = 'nuke';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/InitializationEvents.ts\n **/","/// \n\n// The reference to magic-box with the triple slash is needed for dts-generator\n\nimport { IOmniboxData, IOmniboxDataRow } from '../ui/Omnibox/OmniboxInterface';\n\nexport interface IPopulateOmniboxEventArgs extends IOmniboxData {\n}\n\nexport interface IPopulateOmniboxEventRow extends IOmniboxDataRow {\n}\n\nexport interface IOmniboxPreprocessResultForQueryEventArgs {\n result: Coveo.MagicBox.Result;\n}\n\nexport interface ICloseOmniboxEventArgs {\n}\n\nexport class OmniboxEvents {\n public static populateOmnibox = 'populateOmnibox';\n public static openOmnibox = 'openOmnibox';\n public static closeOmnibox = 'closeOmnibox';\n\n public static populateOmniboxSuggestions = 'populateOmniboxSuggestions';\n public static omniboxPreprocessResultForQuery = 'omniboxPreprocessResultForQuery';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/OmniboxEvents.ts\n **/","\nexport interface ISavePreferencesEventArgs {\n}\n\nexport class PreferencesPanelEvents {\n public static savePreferences = 'savePreferences';\n public static exitPreferencesWithoutSave = 'exitPreferencesWithoutSave';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/PreferencesPanelEvents.ts\n **/","import { Component } from '../ui/Base/Component';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IQuery } from '../rest/Query';\nimport { ISearchEndpoint, IEndpointCallOptions } from '../rest/SearchEndpointInterface';\nimport { IEndpointError } from '../rest/EndpointError';\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.newQuery}\n */\nexport interface INewQueryEventArgs {\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n /**\n * If this property is set to true by any handlers, the query will not be executed.\n */\n cancel: boolean;\n origin?: Component;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.buildingQuery}\n */\nexport interface IBuildingQueryEventArgs {\n /**\n * Allow handlers to modify the query by using the {@link QueryBuilder}\n */\n queryBuilder: QueryBuilder;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n /**\n * If this property is set to true by any handlers, the query will not be executed.\n */\n cancel: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.doneBuildingQuery}\n */\nexport interface IDoneBuildingQueryEventArgs {\n /**\n * Allow handlers to modify the query by using the {@link QueryBuilder}\n */\n queryBuilder: QueryBuilder;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n /**\n * If this property is set to true by any handlers, the query will not be executed.\n */\n cancel: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.duringQuery}\n */\nexport interface IDuringQueryEventArgs {\n /**\n * The {@link QueryBuilder} that was used for the current query\n */\n queryBuilder: QueryBuilder;\n /**\n * The query that was just executed\n */\n query: IQuery;\n /**\n * A promises for the results that will be returned by the Search API\n */\n promise: Promise;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.querySuccess}\n */\nexport interface IQuerySuccessEventArgs {\n /**\n * The query that was just executed\n */\n query: IQuery;\n /**\n * The results returned by the query that was executed\n */\n results: IQueryResults;\n /**\n * The {@link QueryBuilder} that was used for the current query\n */\n queryBuilder: QueryBuilder;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.fetchMoreSuccess}\n */\nexport interface IFetchMoreSuccessEventArgs {\n /**\n * The query that was just executed\n */\n query: IQuery;\n /**\n * The results returned by the query that was executed\n */\n results: IQueryResults;\n /**\n * The {@link QueryBuilder} that was used for the current query\n */\n queryBuilder: QueryBuilder;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.queryError}\n */\nexport interface IQueryErrorEventArgs {\n /**\n * The {@link QueryBuilder} that was used for the current query\n */\n queryBuilder: QueryBuilder;\n /**\n * The endpoint on which the error happened.\n */\n endpoint: ISearchEndpoint;\n /**\n * The query that was just executed\n */\n query: IQuery;\n /**\n * The error info / message itself.\n */\n error: IEndpointError;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.preprocessResults}\n */\nexport interface IPreprocessResultsEventArgs {\n /**\n * The {@link QueryBuilder} that was used for the current query\n */\n queryBuilder: QueryBuilder;\n /**\n * The query that was just executed\n */\n query: IQuery;\n /**\n * The results returned by the query that was executed\n */\n results: IQueryResults;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.preprocessMoreResults}\n */\nexport interface IPreprocessMoreResultsEventArgs {\n /**\n * The results returned by the query that was executed\n */\n results: IQueryResults;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.noResults}\n */\nexport interface INoResultsEventArgs {\n /**\n * The {@link QueryBuilder} that was used for the current query\n */\n queryBuilder: QueryBuilder;\n /**\n * The query that was just executed\n */\n query: IQuery;\n /**\n * The results returned by the query that was executed\n */\n results: IQueryResults;\n /**\n * Determine if the query is a \"search as you type\"\n */\n searchAsYouType: boolean;\n /**\n * If set to true by any handler, the last query will automatically be re-executed again.\n */\n retryTheQuery: boolean;\n}\n\nexport interface IBuildingCallOptionsEventArgs {\n options: IEndpointCallOptions;\n}\n\n/**\n * This static class is there to contains the different string definition for all the events related to query.\n *\n * Note that these events will only be triggered when the {@link QueryController.executeQuery} method is used, either directly or by using {@link executeQuery}\n */\nexport class QueryEvents {\n /**\n * Triggered when a new query is launched.\n *\n * All bound handlers will receive {@link INewQueryEventArgs} as an argument.\n *\n * The string value is `newQuery`.\n * @type {string}\n */\n public static newQuery = 'newQuery';\n /**\n * Triggered when the query is being built.\n *\n * This is typically where all components will contribute their part to the {@link IQuery} using the {@link QueryBuilder}.\n *\n * All bound handlers will receive {@link IBuildingQueryEventArgs} as an argument.\n *\n * The string value is `buildingQuery`.\n * @type {string}\n */\n public static buildingQuery = 'buildingQuery';\n /**\n * Triggered when the query is done being built.\n *\n * This is typically where the facet will add it's {@link IGroupByRequest} to the {@link IQuery}.\n *\n * All bound handlers will receive {@link IDoneBuildingQueryEventArgs} as an argument.\n *\n * The string value is `doneBuildingQuery`.\n * @type {string}\n */\n public static doneBuildingQuery = 'doneBuildingQuery';\n /**\n * Triggered when the query is being executed on the Search API.\n *\n * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument.\n *\n * The string value is `duringQuery`.\n * @type {string}\n */\n public static duringQuery = 'duringQuery';\n /**\n * Triggered when more results are being fetched on the Search API (think : infinite scrolling, or pager).\n *\n * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument.\n *\n * The string value is `duringFetchMoreQuery`.\n * @type {string}\n */\n public static duringFetchMoreQuery = 'duringFetchMoreQuery';\n /**\n * Triggered when a query successfully returns from the Search API.\n *\n * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument.\n *\n * The string value is `querySuccess`.\n * @type {string}\n */\n public static querySuccess = 'querySuccess';\n /**\n * Triggered when a more results were successfully returned from the Search API. (think : infinite scrolling, or pager).\n *\n * All bound handlers will receive {@link IFetchMoreSuccessEventArgs} as an argument.\n *\n * The string value is `fetchMoreSuccess`.\n * @type {string}\n */\n public static fetchMoreSuccess = 'fetchMoreSuccess';\n /**\n * Triggered after the main query success event has finished executing.\n *\n * This is typically where facets will process the {@link IGroupByResult} and render themselves.\n *\n * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument.\n *\n * The string value is `deferredQuerySuccess`.\n * @type {string}\n */\n public static deferredQuerySuccess = 'deferredQuerySuccess';\n /**\n * Triggered when there was an error executing a query on the Search API.\n *\n * All bound handlers will receive {@link IQueryErrorEventArgs} as an argument.\n *\n * The string value is `queryError`.\n * @type {string}\n */\n public static queryError = 'queryError';\n /**\n * Triggered before the {@link QueryEvents.querySuccess} event.\n *\n * This allows external code to modify the results before rendering them.\n *\n * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results.\n *\n * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument.\n *\n * The string value is `preprocessResults`.\n * @type {string}\n */\n public static preprocessResults = 'preprocessResults';\n /**\n * Triggered before the {@link QueryEvents.fetchMoreSuccess} event.\n *\n * This allows external code to modify the results before rendering them.\n *\n * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results.\n *\n * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument.\n *\n * The string value is `preprocessMoreResults`.\n * @type {string}\n */\n public static preprocessMoreResults = 'preprocessMoreResults';\n /**\n * Triggered when there is no result for a particular query.\n *\n * All bound handlers will receive {@link INoResultsEventArgs} as an argument.\n *\n * The string value is `noResults`.\n * @type {string}\n */\n public static noResults = 'noResults';\n public static buildingCallOptions = 'buildingCallOptions';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/QueryEvents.ts\n **/","import { IQueryResult } from '../rest/QueryResult';\nimport { IQueryResults } from '../rest/QueryResults';\n\nexport interface IDisplayedNewResultEventArgs {\n result: IQueryResult;\n item: HTMLElement;\n}\n\nexport interface IDisplayedNewResultsEventArgs {\n}\n\nexport interface IOpenQuickviewEventArgs {\n termsToHighlight: any;\n}\n\nexport interface IChangeLayoutEventArgs {\n layout: string;\n results?: IQueryResults;\n}\n\nexport class ResultListEvents {\n public static newResultsDisplayed = 'newResultsDisplayed';\n public static newResultDisplayed = 'newResultDisplayed';\n public static openQuickview = 'openQuickview';\n public static changeLayout = 'changeLayout';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/ResultListEvents.ts\n **/","export interface IResultLayoutPopulateArgs {\n layouts: string[];\n}\nexport class ResultLayoutEvents {\n public static populateResultLayout = 'populateResultLayout';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/ResultLayoutEvents.ts\n **/","import { ISubscription } from '../rest/Subscription';\n\nexport interface ISearchAlertsEventArgs {\n subscription: ISubscription;\n dom?: HTMLElement;\n}\n\nexport interface ISearchAlertsFailEventArgs {\n dom?: HTMLElement;\n}\n\nexport interface ISearchAlertsPopulateMessageEventArgs {\n text: Array;\n}\n\nexport interface ISearchAlertsPopulateMessageText {\n lineThrough: boolean;\n value: string;\n}\n\nexport class SearchAlertsEvents {\n public static searchAlertsCreated = 'searchAlertsCreated';\n public static searchAlertsDeleted = 'searchAlertsDeleted';\n public static searchAlertsFail = 'searchAlertsFail';\n public static searchAlertsPopulateMessage = 'searchAlertsPopulateMessage';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/SearchAlertEvents.ts\n **/","export class SettingsEvents {\n public static settingsPopulateMenu = 'settingsPopulateMenu';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/SettingsEvents.ts\n **/","export interface IGraphValueSelectedArgs {\n start: any;\n end: any;\n value: any;\n}\n\nexport class SliderEvents {\n public static startSlide = 'startSlide';\n public static duringSlide = 'duringSlide';\n public static endSlide = 'endSlide';\n public static graphValueSelected = 'graphValueSelected';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/SliderEvents.ts\n **/","export interface IBeforeRedirectEventArgs {\n searchPageUri: string;\n cancel: boolean;\n}\n\nexport class StandaloneSearchInterfaceEvents {\n public static beforeRedirect = 'beforeRedirect';\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/events/StandaloneSearchInterfaceEvents.ts\n **/","export { ColorUtils } from './utils/ColorUtils';\nexport { Cookie } from './utils/CookieUtils';\nexport { CurrencyUtils } from './utils/CurrencyUtils';\nexport { DateUtils } from './utils/DateUtils';\nexport { DeviceUtils } from './utils/DeviceUtils';\nexport { Dom, $$ } from './utils/Dom';\nexport { DomUtils } from './utils/DomUtils';\nexport { EmailUtils } from './utils/EmailUtils';\nexport { HashUtils } from './utils/HashUtils';\nexport { HighlightUtils, StringAndHoles } from './utils/HighlightUtils';\nexport { HTMLUtils } from './utils/HtmlUtils';\nexport { KEYBOARD, KeyboardUtils } from './utils/KeyboardUtils';\nexport { LocalStorageUtils } from './utils/LocalStorageUtils';\nexport { OSUtils, OS_NAME } from './utils/OSUtils';\nexport { PopupUtils } from './utils/PopupUtils';\nexport { QueryUtils } from './utils/QueryUtils';\nexport { StreamHighlightUtils } from './utils/StreamHighlightUtils';\nexport { StringUtils } from './utils/StringUtils';\nexport { TimeSpan } from './utils/TimeSpanUtils';\nexport { Utils } from './utils/Utils';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UtilsModules.ts\n **/","export class ColorUtils {\n static hsvToRgb(h, s, v) {\n var r, g, b;\n\n var i = Math.floor(h * 6);\n var f = h * 6 - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v, g = t, b = p;\n break;\n case 1:\n r = q, g = v, b = p;\n break;\n case 2:\n r = p, g = v, b = t;\n break;\n case 3:\n r = p, g = q, b = v;\n break;\n case 4:\n r = t, g = p, b = v;\n break;\n case 5:\n r = v, g = p, b = q;\n break;\n }\n\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n }\n\n static rgbToHsv(r, g, b) {\n r = r / 255, g = g / 255, b = b / 255;\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max == 0 ? 0 : d / max;\n\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [h, s, v];\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/ColorUtils.ts\n **/","import { Assert } from '../misc/Assert';\nimport { Options } from '../misc/Options';\nimport { Utils } from '../utils/Utils';\nimport Globalize = require('globalize');\n\nexport interface ICurrencyToStringOptions {\n decimals?: number;\n symbol?: string;\n}\n\nclass DefaultCurrencyToStringOptions extends Options implements ICurrencyToStringOptions {\n decimals: number = 0;\n symbol: string;\n}\n\nexport class CurrencyUtils {\n static currencyToString(value: number, options?: ICurrencyToStringOptions): string {\n if (Utils.isNullOrUndefined(value)) {\n return '';\n }\n value = Number(value);\n\n Assert.isNumber(value);\n\n options = new DefaultCurrencyToStringOptions().merge(options);\n\n var currency = Globalize.culture().numberFormat.currency;\n var backup = currency.symbol;\n\n if (Utils.isNonEmptyString(options.symbol)) {\n currency.symbol = options.symbol;\n }\n\n var str = Globalize.format(value, 'c' + options.decimals.toString());\n currency.symbol = backup;\n\n return str;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/CurrencyUtils.ts\n **/","import { Options } from '../misc/Options';\nimport { Utils } from './Utils';\nimport { l } from '../strings/Strings';\nimport { TimeSpan } from './TimeSpanUtils';\nimport Globalize = require('globalize');\nimport _ = require('underscore');\n\nexport interface IDateToStringOptions {\n now?: Date;\n useTodayYesterdayAndTomorrow?: boolean;\n useWeekdayIfThisWeek?: boolean;\n omitYearIfCurrentOne?: boolean;\n useLongDateFormat?: boolean;\n includeTimeIfToday?: boolean;\n includeTimeIfThisWeek?: boolean;\n alwaysIncludeTime?: boolean;\n predefinedFormat?: string;\n}\n\nclass DefaultDateToStringOptions extends Options implements IDateToStringOptions {\n now: Date = new Date();\n useTodayYesterdayAndTomorrow = true;\n useWeekdayIfThisWeek = true;\n omitYearIfCurrentOne = true;\n useLongDateFormat = false;\n includeTimeIfToday = true;\n includeTimeIfThisWeek = true;\n alwaysIncludeTime = false;\n predefinedFormat: string = undefined;\n}\n\nexport class DateUtils {\n static convertFromJsonDateIfNeeded(date: string): Date;\n static convertFromJsonDateIfNeeded(date: number): Date;\n static convertFromJsonDateIfNeeded(date: Date): Date;\n static convertFromJsonDateIfNeeded(date: any): Date {\n if (_.isDate(date)) {\n return date;\n } else if (date !== null && !isNaN(Number(date))) {\n return new Date(Number(date));\n } else if (_.isString(date)) {\n return new Date(date.replace('@', ' '));\n } else {\n return undefined;\n }\n }\n\n static dateForQuery(date: Date): string {\n return date.getFullYear() + '/' + DateUtils.padNumber((date.getMonth() + 1).toString()) + '/' + DateUtils.padNumber(date.getDate().toString());\n }\n\n private static padNumber(num: string, length: number = 2): string {\n while (num.length < length) {\n num = '0' + num;\n }\n return num;\n }\n\n static keepOnlyDatePart(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n static offsetDateByDays(date: Date, offset: number): Date {\n var newDate = new Date(date.valueOf());\n newDate.setDate(newDate.getDate() + offset);\n\n return newDate;\n }\n\n static dateToString(d: Date, options?: IDateToStringOptions): string {\n if (Utils.isNullOrUndefined(d)) {\n return '';\n }\n\n options = new DefaultDateToStringOptions().merge(options);\n\n var dateOnly = DateUtils.keepOnlyDatePart(d);\n\n if (options.predefinedFormat) {\n return Globalize.format(dateOnly, options.predefinedFormat);\n }\n\n var today = DateUtils.keepOnlyDatePart(options.now);\n if (options.useTodayYesterdayAndTomorrow) {\n if (dateOnly.valueOf() == today.valueOf()) {\n return l('Today');\n }\n var tomorrow = DateUtils.offsetDateByDays(today, 1);\n if (dateOnly.valueOf() == tomorrow.valueOf()) {\n return l('Tomorrow');\n }\n var yesterday = DateUtils.offsetDateByDays(today, -1);\n if (dateOnly.valueOf() == yesterday.valueOf()) {\n return l('Yesterday');\n }\n }\n\n var isThisWeek = Math.abs(TimeSpan.fromDates(dateOnly, today).getDays()) < 7;\n if (options.useWeekdayIfThisWeek && isThisWeek) {\n if (dateOnly.valueOf() > today.valueOf()) {\n return l('NextDay', Globalize.format(dateOnly, 'dddd'));\n } else {\n return l('LastDay', Globalize.format(dateOnly, 'dddd'));\n }\n }\n\n if (options.omitYearIfCurrentOne && dateOnly.getFullYear() === today.getFullYear()) {\n return Globalize.format(dateOnly, 'M');\n }\n\n if (options.useLongDateFormat) {\n return Globalize.format(dateOnly, 'D');\n }\n\n return Globalize.format(dateOnly, 'd');\n }\n\n static timeToString(date: Date, options?: IDateToStringOptions): string {\n if (Utils.isNullOrUndefined(date)) {\n return '';\n }\n\n return Globalize.format(date, 't');\n }\n\n static dateTimeToString(date: Date, options?: IDateToStringOptions): string {\n if (Utils.isNullOrUndefined(date)) {\n return '';\n }\n\n options = new DefaultDateToStringOptions().merge(options);\n\n var today = DateUtils.keepOnlyDatePart(options.now);\n var isThisWeek = Math.abs(TimeSpan.fromDates(date, today).getDays()) < 7;\n var datePart = DateUtils.dateToString(date, options);\n var dateWithoutTime = DateUtils.keepOnlyDatePart(date);\n\n if (options.alwaysIncludeTime || (options.includeTimeIfThisWeek && isThisWeek) || (options.includeTimeIfToday && dateWithoutTime.valueOf() == today.valueOf())) {\n return datePart + ', ' + DateUtils.timeToString(date);\n } else {\n return datePart;\n }\n }\n\n static monthToString(month: number): string {\n var date = new Date(1980, month);\n return Globalize.format(date, 'MMMM');\n }\n\n static isValid(date: any) {\n if (date instanceof Date) {\n return !isNaN(date.getTime());\n }\n return false;\n }\n\n static timeBetween(from: Date, to: Date) {\n if (Utils.isNullOrUndefined(from) || Utils.isNullOrUndefined(to)) {\n return '';\n }\n\n return ('0' + ((to.getTime() - from.getTime()) / (1000 * 60 * 60)).toFixed()).slice(-2) +\n ':' + ('0' + ((to.getTime() - from.getTime()) % (1000 * 60 * 60) / (1000 * 60)).toFixed()).slice(-2) +\n ':' + ('0' + ((to.getTime() - from.getTime()) % (1000 * 60) / (1000)).toFixed()).slice(-2);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/DateUtils.ts\n **/","import { Utils } from '../utils/Utils';\nimport { JQueryUtils } from '../utils/JQueryutils';\nimport { Assert } from '../misc/Assert';\nimport { Logger } from '../misc/Logger';\nimport _ = require('underscore');\n\nexport interface IOffset {\n left: number;\n top: number;\n}\n\n/**\n * This is essentially an helper class for dom manipulation.
\n * This is intended to provide some basic functionality normally offered by jQuery.
\n * To minimize the multiple jQuery conflict we have while integrating in various system, we implemented the very small subset that the framework needs.
\n * See {@link $$}, which is a function that wraps this class constructor, for less verbose code.\n */\nexport class Dom {\n private static CLASS_NAME_REGEX = /-?[_a-zA-Z]+[_a-zA-Z0-9-]*/g;\n private static ONLY_WHITE_SPACE_REGEX = /^\\s*$/;\n\n public el: HTMLElement;\n\n /**\n * Create a new Dom object with the given HTMLElement\n * @param el The HTMLElement to wrap in a Dom object\n */\n constructor(el: HTMLElement) {\n Assert.exists(el);\n this.el = el;\n }\n\n private static handlers: { eventHandle: Function, fn: EventListener }[] = [];\n\n /**\n * Helper function to quickly create an HTMLElement\n * @param type The type of the element (e.g. div, span)\n * @param props The props (id, className, attributes) of the element
\n * Can be either specified in dashed-case strings ('my-attribute') or camelCased keys (myAttribute),\n * the latter of which will automatically get replaced to dash-case.\n * @param innerHTML The contents of the new HTMLElement, either in string form or as another HTMLElement\n */\n static createElement(type: string, props?: Object, ...children: Array): HTMLElement {\n const elem: HTMLElement = document.createElement(type);\n\n for (const key in props) {\n if (key === 'className') {\n elem.className = props['className'];\n } else {\n const attr = key.indexOf('-') !== -1 ? key : Utils.toDashCase(key);\n elem.setAttribute(attr, props[key]);\n }\n }\n\n _.each(children, (child: string | HTMLElement | Dom) => {\n if (child instanceof HTMLElement) {\n elem.appendChild(child);\n } else if (_.isString(child)) {\n elem.innerHTML += child;\n } else if (child instanceof Dom) {\n elem.appendChild(child.el);\n }\n });\n\n return elem;\n }\n\n /**\n * Adds the element to the children of the current element\n * @param element The element to append\n * @returns {string}\n */\n public append(element: HTMLElement) {\n this.el.appendChild(element);\n }\n\n /**\n * Get the css value of the specified property.
\n * @param property The property\n * @returns {string}\n */\n public css(property: string): string {\n if (this.el.style[property]) {\n return this.el.style[property];\n }\n return window.getComputedStyle(this.el).getPropertyValue(property);\n }\n\n /**\n * Get or set the text content of the HTMLElement.
\n * @param txt Optional. If given, this will set the text content of the element. If not, will return the text content.\n * @returns {string}\n */\n public text(txt?: string): string {\n if (Utils.isUndefined(txt)) {\n return this.el.innerText || this.el.textContent;\n } else {\n if (this.el.innerText != undefined) {\n this.el.innerText = txt;\n } else if (this.el.textContent != undefined) {\n this.el.textContent = txt;\n }\n }\n }\n\n /**\n * Performant way to transform a NodeList to an array of HTMLElement, for manipulation
\n * http://jsperf.com/nodelist-to-array/72\n * @param nodeList a {NodeList} to convert to an array\n * @returns {HTMLElement[]}\n */\n public nodeListToArray(nodeList: NodeList): HTMLElement[] {\n let i = nodeList.length;\n const arr: HTMLElement[] = new Array(i);\n while (i--) {\n arr[i] = nodeList.item(i);\n }\n return arr;\n }\n\n /**\n * Empty (remove all child) from the element;\n */\n public empty(): void {\n while (this.el.firstChild) {\n this.el.removeChild(this.el.firstChild);\n }\n }\n\n /**\n * Empty the element and all childs from the dom;\n */\n public remove(): void {\n this.el.parentNode.removeChild(this.el);\n }\n\n /**\n * Show the element;\n */\n public show(): void {\n this.el.style.display = 'block';\n }\n\n /**\n * Hide the element;\n */\n public hide(): void {\n this.el.style.display = 'none';\n }\n\n /**\n * Toggle the element visibility.
\n * Optional visible parameter, if specified will set the element visibility\n * @param visible Optional parameter to display or hide the element\n */\n public toggle(visible?: boolean): void {\n if (visible === undefined) {\n if (this.el.style.display == 'block') {\n this.hide();\n } else {\n this.show();\n }\n } else {\n if (visible) {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n\n /**\n * Returns the value of the specified attribute.\n * @param name The name of the attribute\n */\n public getAttribute(name: string): string {\n return this.el.getAttribute(name);\n }\n\n /**\n * Sets the value of the specified attribute.\n * @param name The name of the attribute\n * @param value The value to set\n */\n public setAttribute(name: string, value: string) {\n this.el.setAttribute(name, value);\n }\n\n /**\n * Find a child element, given a CSS selector\n * @param selector A CSS selector, can be a .className or #id\n * @returns {HTMLElement}\n */\n public find(selector: string): HTMLElement {\n return this.el.querySelector(selector);\n }\n\n /**\n * Check if the element match the selector.
\n * The selector can be a class, an id or a tag.
\n * Eg : .is('.foo') or .is('#foo') or .is('div').\n */\n public is(selector: string): boolean {\n if (this.el.tagName.toLowerCase() == selector.toLowerCase()) {\n return true;\n }\n if (selector[0] == '.') {\n if (this.hasClass(selector.substr(1))) {\n return true;\n }\n }\n\n if (selector[0] == '#') {\n if (this.el.getAttribute('id') == selector.substr(1)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Get the first element that matches the classname by testing the element itself and traversing up through its ancestors in the DOM tree.\n *\n * Stops at the body of the document\n * @param className A CSS classname\n */\n public closest(className: string): HTMLElement {\n return this.traverseAncestorForClass(this.el, className);\n }\n\n /**\n * Get the first element that matches the classname by testing the element itself and traversing up through its ancestors in the DOM tree.\n *\n * Stops at the body of the document\n * @returns {any}\n */\n public parent(className: string): HTMLElement {\n if (this.el.parentElement == undefined) {\n return undefined;\n }\n return this.traverseAncestorForClass(this.el.parentElement, className);\n }\n\n /**\n * Get all the ancestors of the current element that match the given className\n *\n * Return an empty array if none found.\n * @param className\n * @returns {HTMLElement[]}\n */\n public parents(className: string): HTMLElement[] {\n const parentsFound = [];\n let parentFound = this.parent(className);\n while (parentFound) {\n parentsFound.push(parentFound);\n parentFound = new Dom(parentFound).parent(className);\n }\n return parentsFound;\n }\n\n /**\n * Return all children\n * @returns {HTMLElement[]}\n */\n public children(): HTMLElement[] {\n return this.nodeListToArray(this.el.children);\n }\n\n /**\n * Return all siblings\n * @returns {HTMLElement[]}\n */\n public siblings(selector: string): HTMLElement[] {\n const sibs = [];\n let currentElement = this.el.parentNode.firstChild;\n for (; currentElement; currentElement = currentElement.nextSibling) {\n if (currentElement != this.el) {\n if (this.matches(currentElement, selector) || !selector) {\n sibs.push(currentElement);\n }\n }\n }\n return sibs;\n }\n\n private matches(element: HTMLElement, selector: string) {\n const all = document.querySelectorAll(selector);\n for (let i = 0; i < all.length; i++) {\n if (all[i] === element) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Find all children that match the given CSS selector\n * @param selector A CSS selector, can be a .className\n * @returns {HTMLElement[]}\n */\n public findAll(selector: string): HTMLElement[] {\n return this.nodeListToArray(this.el.querySelectorAll(selector));\n }\n\n /**\n * Find the child elements using a className\n * @param className Class of the childs elements to find\n * @returns {HTMLElement[]}\n */\n public findClass(className: string): HTMLElement[] {\n if ('getElementsByClassName' in this.el) {\n return this.nodeListToArray(this.el.getElementsByClassName(className));\n }\n // For ie 8\n return this.nodeListToArray(this.el.querySelectorAll('.' + className));\n }\n\n /**\n * Find an element using an ID\n * @param id ID of the element to find\n * @returns {HTMLElement}\n */\n public findId(id: string): HTMLElement {\n return document.getElementById(id);\n }\n\n /**\n * Add a class to the element. Takes care of not adding the same class if the element already has it.\n * @param className Classname to add to the element\n */\n public addClass(classNames: string[]): void;\n public addClass(className: string): void;\n public addClass(className: any): void {\n if (_.isArray(className)) {\n _.each(className, (name: string) => {\n this.addClass(name);\n });\n } else {\n if (!this.hasClass(className)) {\n if (this.el.className) {\n this.el.className += ' ' + className;\n } else {\n this.el.className = className;\n }\n }\n }\n }\n\n /**\n * Remove the class on the element. Works even if the element does not possess the class.\n * @param className Classname to remove on the the element\n */\n public removeClass(className: string): void {\n this.el.className = this.el.className.replace(new RegExp(`(^|\\\\s)${className}(\\\\s|\\\\b)`, 'g'), '$1').trim();\n }\n\n /**\n * Toggle the class on the element.\n * @param className Classname to toggle\n * @swtch If true, add the class regardless and if false, remove the class\n */\n public toggleClass(className: string, swtch?: boolean): void {\n if (Utils.isNullOrUndefined(swtch)) {\n if (this.hasClass(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n } else {\n if (swtch) {\n this.addClass(className);\n } else {\n this.removeClass(className);\n }\n }\n }\n\n /**\n * Sets the inner html of the element\n * @param html The html to set\n */\n public setHtml(html: string) {\n this.el.innerHTML = html;\n }\n\n /**\n * Return an array with all the classname on the element. Empty array if the element has not classname\n * @returns {any|Array}\n */\n public getClass(): string[] {\n return this.el.className.match(Dom.CLASS_NAME_REGEX) || [];\n }\n\n /**\n * Check if the element has the given class name\n * @param className Classname to verify\n * @returns {boolean}\n */\n public hasClass(className: string): boolean {\n return _.contains(this.getClass(), className);\n }\n\n /**\n * Detach the element from the DOM.\n */\n public detach(): void {\n this.el.parentElement && this.el.parentElement.removeChild(this.el);\n }\n\n /**\n * Insert the current node after the given reference node\n * @param refNode\n */\n public insertAfter(refNode: HTMLElement): void {\n refNode.parentNode && refNode.parentNode.insertBefore(this.el, refNode.nextSibling);\n }\n\n /**\n * Insert the current node before the given reference node\n * @param refNode\n */\n public insertBefore(refNode: HTMLElement): void {\n refNode.parentNode && refNode.parentNode.insertBefore(this.el, refNode);\n }\n\n /**\n * Insert the given node as the first child of the current node\n * @param toPrepend\n */\n public prepend(toPrepend: HTMLElement) {\n if (this.el.firstChild) {\n new Dom(toPrepend).insertBefore(this.el.firstChild);\n } else {\n this.el.appendChild(toPrepend);\n }\n }\n\n /**\n * Bind an event handler on the element. Accepts either one (a string) or multiple (Array) event type.
\n * @param types The {string} or {Array} of types on which to bind an event handler\n * @param eventHandle The function to execute when the event is triggered\n */\n public on(types: string[], eventHandle: (evt: Event, data: any) => void): void;\n public on(type: string, eventHandle: (evt: Event, data: any) => void): void;\n public on(type: any, eventHandle: (evt: Event, data: any) => void): void {\n if (_.isArray(type)) {\n _.each(type, (t: string) => {\n this.on(t, eventHandle);\n });\n } else {\n const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n const jq = JQueryUtils.getJQuery();\n if (jq) {\n jq(this.el).on(modifiedType, eventHandle);\n } else if (this.el.addEventListener) {\n const fn = (e: CustomEvent) => {\n eventHandle(e, e.detail);\n };\n Dom.handlers.push({\n eventHandle: eventHandle,\n fn: fn\n });\n this.el.addEventListener(modifiedType, fn, false);\n } else if (this.el['on']) {\n this.el['on']('on' + modifiedType, eventHandle);\n }\n }\n }\n\n /**\n * Bind an event handler on the element. Accepts either one (a string) or multiple (Array) event type.
\n * The event handler will execute only ONE time.\n * @param types The {string} or {Array} of types on which to bind an event handler\n * @param eventHandle The function to execute when the event is triggered\n */\n public one(types: string[], eventHandle: (evt: Event, args?: any) => void): void;\n public one(type: string, eventHandle: (evt: Event, args?: any) => void): void;\n public one(type: any, eventHandle: (evt: Event, args?: any) => void): void {\n if (_.isArray(type)) {\n _.each(type, (t: string) => {\n this.one(t, eventHandle);\n });\n } else {\n const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n const once = (e: Event, args: any) => {\n this.off(modifiedType, once);\n return eventHandle(e, args);\n };\n this.on(modifiedType, once);\n }\n }\n\n /**\n * Remove an event handler on the element. Accepts either one (a string) or multiple (Array) event type.
\n * @param types The {string} or {Array} of types on which to remove an event handler\n * @param eventHandle The function to remove on the element\n */\n public off(types: string[], eventHandle: (evt: Event, arg?: any) => void): void;\n public off(type: string, eventHandle: (evt: Event, arg?: any) => void): void;\n public off(type: any, eventHandle: (evt: Event, arg?: any) => void): void {\n if (_.isArray(type)) {\n _.each(type, (t: string) => {\n this.off(t, eventHandle);\n });\n } else {\n const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n const jq = JQueryUtils.getJQuery();\n if (jq) {\n jq(this.el).off(modifiedType, eventHandle);\n } else if (this.el.removeEventListener) {\n let idx = 0;\n const found = _.find(Dom.handlers, (handlerObj: { eventHandle: Function, fn: EventListener }, i) => {\n if (handlerObj.eventHandle == eventHandle) {\n idx = i;\n return true;\n }\n });\n if (found) {\n this.el.removeEventListener(modifiedType, found.fn, false);\n Dom.handlers.splice(idx, 1);\n }\n } else if (this.el['off']) {\n this.el['off']('on' + modifiedType, eventHandle);\n }\n }\n }\n\n /**\n * Trigger an event on the element.\n * @param type The event type to trigger\n * @param data\n */\n public trigger(type: string, data?: { [key: string]: any }): void {\n const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n const jq = JQueryUtils.getJQuery();\n if (jq) {\n jq(this.el).trigger(modifiedType, data);\n } else if (CustomEvent !== undefined) {\n const event = new CustomEvent(modifiedType, { detail: data, bubbles: true });\n this.el.dispatchEvent(event);\n } else {\n new Logger(this).error('CANNOT TRIGGER EVENT FOR OLDER BROWSER');\n }\n }\n\n /**\n * Check if the element is \"empty\" (has no innerHTML content). Whitespace is considered empty
\n * @returns {boolean}\n */\n public isEmpty(): boolean {\n return Dom.ONLY_WHITE_SPACE_REGEX.test(this.el.innerHTML);\n }\n\n /**\n * Check if the element is a descendant of parent\n * @param other\n */\n public isDescendant(parent: HTMLElement): boolean {\n let node = this.el.parentNode;\n while (node != null) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n\n /**\n * Replace the current element with the other element, then detach the current element\n * @param otherElem\n */\n public replaceWith(otherElem: HTMLElement): void {\n const parent = this.el.parentNode;\n if (parent) {\n new Dom(otherElem).insertAfter(this.el);\n }\n this.detach();\n }\n\n // based on http://api.jquery.com/position/\n /**\n * Return the position relative to the offset parent.\n */\n public position(): IOffset {\n const offsetParent = this.offsetParent();\n const offset = this.offset();\n let parentOffset: IOffset = { top: 0, left: 0 };\n\n if (!$$(offsetParent).is('html')) {\n parentOffset = $$(offsetParent).offset();\n }\n\n let borderTopWidth = parseInt($$(offsetParent).css('borderTopWidth'));\n let borderLeftWidth = parseInt($$(offsetParent).css('borderLeftWidth'));\n borderTopWidth = isNaN(borderTopWidth) ? 0 : borderTopWidth;\n borderLeftWidth = isNaN(borderLeftWidth) ? 0 : borderLeftWidth;\n\n parentOffset = {\n top: parentOffset.top + borderTopWidth,\n left: parentOffset.left + borderLeftWidth\n };\n\n let marginTop = parseInt(this.css('marginTop'));\n let marginLeft = parseInt(this.css('marginLeft'));\n marginTop = isNaN(marginTop) ? 0 : marginTop;\n marginLeft = isNaN(marginLeft) ? 0 : marginLeft;\n\n return {\n top: offset.top - parentOffset.top - marginTop,\n left: offset.left - parentOffset.left - marginLeft\n };\n }\n\n // based on https://api.jquery.com/offsetParent/\n /**\n * Returns the offset parent. The offset parent is the closest parent that is positioned.\n * An element is positioned when its position property is not 'static', which is the default.\n */\n public offsetParent(): HTMLElement {\n let offsetParent = this.el.offsetParent;\n\n while (offsetParent instanceof HTMLElement && $$(offsetParent).css('position') === 'static') {\n // Will break out if it stumbles upon an non-HTMLElement and return documentElement\n offsetParent = (offsetParent).offsetParent;\n }\n\n if (!(offsetParent instanceof HTMLElement)) {\n return document.documentElement;\n }\n return offsetParent;\n }\n\n // based on http://api.jquery.com/offset/\n /**\n * Return the position relative to the document.\n */\n public offset(): IOffset {\n // In <=IE11, calling getBoundingClientRect on a disconnected node throws an error\n if (!this.el.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n\n const rect = this.el.getBoundingClientRect();\n\n if (rect.width || rect.height) {\n let doc = this.el.ownerDocument;\n let docElem = doc.documentElement;\n\n return {\n top: rect.top + window.pageYOffset - docElem.clientTop,\n left: rect.left + window.pageXOffset - docElem.clientLeft\n };\n }\n return rect;\n }\n\n /**\n * Returns the offset width of the element\n */\n public width(): number {\n return this.el.offsetWidth;\n }\n\n /**\n * Returns the offset height of the element\n */\n public height(): number {\n return this.el.offsetHeight;\n }\n\n /**\n * Clone the node\n * @param deep true if the children of the node should also be cloned, or false to clone only the specified node.\n * @returns {Dom}\n */\n public clone(deep = false): Dom {\n return $$(this.el.cloneNode(deep));\n }\n\n private processEventTypeToBeJQueryCompatible(event: string): string {\n // From https://api.jquery.com/on/\n // [...]\n // > In addition, the .trigger() method can trigger both standard browser event names and custom event names to call attached handlers. Event names should only contain alphanumerics, underscore, and colon characters.\n if (event) {\n return event.replace(/[^a-zA-Z0-9\\:\\_]/g, '');\n }\n return event;\n }\n\n private traverseAncestorForClass(current = this.el, className: string): HTMLElement {\n if (className.indexOf('.') == 0) {\n className = className.substr(1);\n }\n let found = false;\n while (!found) {\n if ($$(current).hasClass(className)) {\n found = true;\n }\n if (current.tagName.toLowerCase() == 'body') {\n break;\n }\n if (current.parentElement == null) {\n break;\n }\n if (!found) {\n current = current.parentElement;\n }\n }\n if (found) {\n return current;\n }\n return undefined;\n }\n}\n\nexport class Win {\n constructor(public win: Window) {\n }\n\n public height(): number {\n return this.win.innerHeight;\n }\n\n public width(): number {\n return this.win.innerWidth;\n }\n\n public scrollY(): number {\n return this.supportPageOffset() ? this.win.pageYOffset : this.isCSS1Compat() ? this.win.document.documentElement.scrollTop : this.win.document.body.scrollTop;\n }\n\n public scrollX(): number {\n return this.supportPageOffset() ? window.pageXOffset : this.isCSS1Compat() ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n\n private isCSS1Compat() {\n return (this.win.document.compatMode || '') === 'CSS1Compat';\n }\n\n private supportPageOffset() {\n return this.win.pageXOffset !== undefined;\n }\n}\n\nexport class Doc {\n constructor(public doc: Document) {\n }\n\n public height(): number {\n const body = this.doc.body;\n return Math.max(body.scrollHeight, body.offsetHeight);\n }\n\n public width(): number {\n const body = this.doc.body;\n return Math.max(body.scrollWidth, body.offsetWidth);\n }\n}\n\n/**\n * Convenience wrapper for the {@link Dom} class. Used to do $$(element).
\n * If passed with an argument which is not an HTMLElement, it will call {@link Dom.createElement}.\n * @param el The HTMLElement to wrap in a Dom object\n * @param type See {@link Dom.createElement}\n * @param props See {@link Dom.createElement}\n * @param ...children See {@link Dom.createElement}\n */\nexport function $$(dom: Dom): Dom;\nexport function $$(html: HTMLElement): Dom;\nexport function $$(type: string, props?: Object, ...children: Array): Dom;\nexport function $$(...args: any[]): Dom {\n if (args.length === 1 && args[0] instanceof Dom) {\n return args[0];\n } else if (args.length === 1 && (!_.isString(args[0]))) {\n return new Dom(args[0]);\n } else {\n return new Dom(Dom.createElement.apply(Dom, args));\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/Dom.ts\n **/","import { $$, Dom } from './Dom';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { IResultsComponentBindings } from '../ui/Base/ResultsComponentBindings';\nimport { DateUtils } from './DateUtils';\nimport { FileTypes } from '../ui/Misc/FileTypes';\nimport { Utils } from './Utils';\nimport { StringUtils } from './StringUtils';\n\nexport class DomUtils {\n static getPopUpCloseButton(captionForClose: string, captionForReminder: string): string {\n let container = document.createElement('span');\n\n let closeButton = document.createElement('span');\n $$(closeButton).addClass('coveo-close-button');\n container.appendChild(closeButton);\n\n let iconClose = document.createElement('span');\n $$(iconClose).addClass('coveo-icon');\n $$(iconClose).addClass('coveo-sprites-quickview-close');\n closeButton.appendChild(iconClose);\n\n $$(closeButton).text(captionForClose);\n\n let closeReminder = document.createElement('span');\n $$(closeReminder).addClass('coveo-pop-up-reminder');\n $$(closeReminder).text(captionForReminder);\n container.appendChild(closeReminder);\n\n return container.outerHTML;\n }\n\n static getBasicLoadingAnimation() {\n let loadDotClass = 'coveo-loading-dot';\n let dom = document.createElement('div');\n dom.className = 'coveo-first-loading-animation';\n dom.innerHTML = `\n
\n
\n
\n
\n
\n
`;\n return dom;\n }\n\n static highlightElement(initialString: string, valueToSearch: string): string {\n let regex = new RegExp(Utils.escapeRegexCharacter(StringUtils.latinize(valueToSearch)), 'i');\n let firstChar = StringUtils.latinize(initialString).search(regex);\n let lastChar = firstChar + valueToSearch.length;\n return `${StringUtils.htmlEncode(initialString.slice(0, firstChar))}${StringUtils.htmlEncode(initialString.slice(firstChar, lastChar))}${StringUtils.htmlEncode(initialString.slice(lastChar))}`;\n }\n\n static getLoadingSpinner(): HTMLElement {\n let loading = $$('div', {\n className: 'coveo-loading-spinner'\n });\n return loading.el;\n }\n\n static getModalBoxHeader(title: string): Dom {\n let header = $$('div');\n header.el.innerHTML = `
\n \n \n \n
\n
\n ${title || ''}\n
`;\n return header;\n }\n\n static getQuickviewHeader(result: IQueryResult, options: { showDate: boolean; title: string }, bindings: IResultsComponentBindings): Dom {\n let date = '';\n if (options.showDate) {\n date = DateUtils.dateTimeToString(new Date(Utils.getFieldValue(result, 'date')));\n }\n let fileType = FileTypes.get(result);\n let header = $$('div');\n header.el.innerHTML = `
\n ${date}\n \n \n \n
\n `;\n new Coveo[Coveo['Salesforce'] ? 'SalesforceResultLink' : 'ResultLink'](header.find('.coveo-quickview-pop-up-reminder'), undefined, bindings, result);\n return header;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/DomUtils.ts\n **/","import { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport { Assert } from '../../misc/Assert';\nimport _ = require('underscore');\n\n// On-demand mapping of file types to captions. Used by facets, but I don't\n// really like this. Maybe a dedicated filetype facet would be better? Hmm...\nlet fileTypeCaptions: { [id: string]: string };\n\nexport interface IFileTypeInfo {\n icon: string;\n caption: string;\n}\n\nexport class FileTypes {\n static get(result: IQueryResult): IFileTypeInfo {\n var objecttype = Utils.getFieldValue(result, 'objecttype');\n var filetype = Utils.getFieldValue(result, 'filetype');\n\n // When @objecttype is File we fallback on @filetype for icons and such\n if (Utils.isNonEmptyString(objecttype) && objecttype.toLowerCase() != 'file') {\n return FileTypes.getObjectType(objecttype);\n } else if (Utils.isNonEmptyString(filetype)) {\n return FileTypes.getFileType(filetype);\n } else {\n return {\n // This will render a default icon. Really it should not happen.\n icon: 'coveo-icon filetype',\n caption: l('Unknown')\n };\n }\n }\n\n static getObjectType(objecttype: string): IFileTypeInfo {\n // We must use lowercase filetypes because that's how the CSS classes\n // are generated (they are case sensitive, alas).\n objecttype = objecttype.toLowerCase();\n\n const variableValue = `objecttype_${objecttype}`;\n // Most object types have a set of localized strings in the main dictionary\n var localizedString = l(variableValue);\n\n return {\n 'icon': 'coveo-icon objecttype ' + objecttype.replace(' ', '-'),\n caption: localizedString != variableValue ? localizedString : objecttype\n };\n }\n\n static getFileType(filetype: string): IFileTypeInfo {\n // We must use lowercase filetypes because that's how the CSS classes\n // are generated (they are case sensitive, alas).\n filetype = filetype.toLowerCase();\n\n // Sometimes, filetype begins with a period (typically means the index has\n // no idea and uses the file extension as a filetype).\n if (filetype[0] == '.') {\n filetype = filetype.substring(1);\n }\n\n const variableValue = `filetype_${filetype}`;\n // Most filetypes have a set of localized strings in the main dictionary\n let localizedString = l(variableValue);\n\n return {\n 'icon': 'coveo-icon filetype ' + filetype.replace(' ', '-'),\n caption: localizedString != variableValue ? localizedString : filetype\n };\n }\n\n static getFileTypeCaptions() {\n if (fileTypeCaptions == undefined) {\n fileTypeCaptions = {};\n var strings = String['locales'][String['locale'].toLowerCase()];\n Assert.isNotUndefined(strings);\n _.each(_.keys(strings), function (key) {\n if (key.indexOf('filetype_') == 0) {\n fileTypeCaptions[key.substr('filetype_'.length)] = key.toLocaleString();\n } else if (key.indexOf('objecttype_') == 0) {\n fileTypeCaptions[key.substr('objecttype_'.length)] = key.toLocaleString();\n }\n });\n }\n\n return fileTypeCaptions;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Misc/FileTypes.ts\n **/","import { Assert } from '../misc/Assert';\nimport { IHighlight } from '../rest/Highlight';\nimport { $$ } from '../utils/Dom';\nimport * as latinize from 'latinize';\nimport _ = require('underscore');\n\nexport class StringUtils {\n static javascriptEncode(value: string): string {\n Assert.isString(value);\n\n value = value.replace(/\\\\/g, '\\\\\\\\');\n value = value.replace(/'/g, '\\\\\\'');\n value = value.replace(/\"/g, '\\\\\"');\n\n return value;\n }\n\n static htmlEncode(value: string): string {\n Assert.isString(value);\n let div = $$('div');\n div.text(value);\n return div.el.innerHTML;\n }\n\n static splice(value: string, index: number, remove: number, toAdd: string): string {\n return value.slice(0, index) + toAdd + value.slice(index + Math.abs(remove));\n }\n\n static removeMiddle(value: string, length: number, toAdd: string): string {\n if (value.length < length) {\n return value;\n }\n let toRemove = value.length - length;\n let index = Math.floor(length / 2);\n return StringUtils.splice(value, index, toRemove, toAdd);\n }\n\n static regexEncode(value: string): string {\n Assert.isString(value);\n return value.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n }\n\n static stringToRegex(value: string, ignoreAccent = false): string {\n Assert.isString(value);\n let encoded = StringUtils.regexEncode(value);\n\n if (ignoreAccent) {\n return _.map(encoded, (char: string) => {\n let regexp = _.find(StringUtils.accented, (regexp: RegExp) => char.match(regexp) != null);\n if (regexp) {\n return regexp.source;\n }\n return char;\n }).join('');\n }\n\n return encoded;\n }\n\n static wildcardsToRegex(value: string, ignoreAccent = false): string {\n Assert.isString(value);\n\n let encoded = StringUtils.stringToRegex(value, ignoreAccent);\n\n encoded = encoded.replace(/\\\\\\*/, '.*');\n encoded = encoded.replace(/\\\\\\?/, '.');\n\n return encoded;\n }\n\n static getHighlights(strToSearch: string, regexToFind: RegExp, dataHighlightGroupTerm: string): IHighlight[] {\n let match, indexes: IHighlight[] = [];\n\n while (match = regexToFind.exec(strToSearch)) {\n let desiredMatch = match[2];\n let undesiredMatch = match[1];\n let offset = match.index + undesiredMatch.length;\n indexes.push({ offset: offset, length: desiredMatch.length, dataHighlightGroupTerm: dataHighlightGroupTerm });\n if (!regexToFind.global) {\n break;\n }\n }\n return _.isEmpty(indexes) ? undefined : indexes;\n }\n\n static encodeCarriageReturn(strToEncode: string): string {\n Assert.isString(strToEncode);\n return strToEncode.replace(/\\n/g, '
');\n }\n\n static equalsCaseInsensitive(str1: string, str2: string) {\n return str1.toLowerCase() == str2.toLowerCase();\n }\n\n static match(value: string, regex: RegExp) {\n let results: string[][] = [];\n let arr: string[];\n while ((arr = regex.exec(value)) !== null) {\n results.push(arr);\n }\n return results;\n }\n\n static hashCode(str: string): string {\n let hash = 0;\n let len = str.length;\n for (let i = 0; i < len; i++) {\n let char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash.toString(16);\n }\n\n // http://stackoverflow.com/a/25575009\n static latinize(str: string) {\n return latinize(str);\n }\n\n static capitalizeFirstLetter(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n public static accented: { [letter: string]: RegExp } = {\n 'A': /[Aa\\xaa\\xc0-\\xc5\\xe0-\\xe5\\u0100-\\u0105\\u01cd\\u01ce\\u0200-\\u0203\\u0226\\u0227\\u1d2c\\u1d43\\u1e00\\u1e01\\u1e9a\\u1ea0-\\u1ea3\\u2090\\u2100\\u2101\\u213b\\u249c\\u24b6\\u24d0\\u3371-\\u3374\\u3380-\\u3384\\u3388\\u3389\\u33a9-\\u33af\\u33c2\\u33ca\\u33df\\u33ff\\uff21\\uff41]/g,\n 'B': /[Bb\\u1d2e\\u1d47\\u1e02-\\u1e07\\u212c\\u249d\\u24b7\\u24d1\\u3374\\u3385-\\u3387\\u33c3\\u33c8\\u33d4\\u33dd\\uff22\\uff42]/g,\n 'C': /[Cc\\xc7\\xe7\\u0106-\\u010d\\u1d9c\\u2100\\u2102\\u2103\\u2105\\u2106\\u212d\\u216d\\u217d\\u249e\\u24b8\\u24d2\\u3376\\u3388\\u3389\\u339d\\u33a0\\u33a4\\u33c4-\\u33c7\\uff23\\uff43]/g,\n 'D': /[Dd\\u010e\\u010f\\u01c4-\\u01c6\\u01f1-\\u01f3\\u1d30\\u1d48\\u1e0a-\\u1e13\\u2145\\u2146\\u216e\\u217e\\u249f\\u24b9\\u24d3\\u32cf\\u3372\\u3377-\\u3379\\u3397\\u33ad-\\u33af\\u33c5\\u33c8\\uff24\\uff44]/g,\n 'E': /[Ee\\xc8-\\xcb\\xe8-\\xeb\\u0112-\\u011b\\u0204-\\u0207\\u0228\\u0229\\u1d31\\u1d49\\u1e18-\\u1e1b\\u1eb8-\\u1ebd\\u2091\\u2121\\u212f\\u2130\\u2147\\u24a0\\u24ba\\u24d4\\u3250\\u32cd\\u32ce\\uff25\\uff45]/g,\n 'F': /[Ff\\u1da0\\u1e1e\\u1e1f\\u2109\\u2131\\u213b\\u24a1\\u24bb\\u24d5\\u338a-\\u338c\\u3399\\ufb00-\\ufb04\\uff26\\uff46]/g,\n 'G': /[Gg\\u011c-\\u0123\\u01e6\\u01e7\\u01f4\\u01f5\\u1d33\\u1d4d\\u1e20\\u1e21\\u210a\\u24a2\\u24bc\\u24d6\\u32cc\\u32cd\\u3387\\u338d-\\u338f\\u3393\\u33ac\\u33c6\\u33c9\\u33d2\\u33ff\\uff27\\uff47]/g,\n 'H': /[Hh\\u0124\\u0125\\u021e\\u021f\\u02b0\\u1d34\\u1e22-\\u1e2b\\u1e96\\u210b-\\u210e\\u24a3\\u24bd\\u24d7\\u32cc\\u3371\\u3390-\\u3394\\u33ca\\u33cb\\u33d7\\uff28\\uff48]/g,\n 'I': /[Ii\\xcc-\\xcf\\xec-\\xef\\u0128-\\u0130\\u0132\\u0133\\u01cf\\u01d0\\u0208-\\u020b\\u1d35\\u1d62\\u1e2c\\u1e2d\\u1ec8-\\u1ecb\\u2071\\u2110\\u2111\\u2139\\u2148\\u2160-\\u2163\\u2165-\\u2168\\u216a\\u216b\\u2170-\\u2173\\u2175-\\u2178\\u217a\\u217b\\u24a4\\u24be\\u24d8\\u337a\\u33cc\\u33d5\\ufb01\\ufb03\\uff29\\uff49]/g,\n 'J': /[Jj\\u0132-\\u0135\\u01c7-\\u01cc\\u01f0\\u02b2\\u1d36\\u2149\\u24a5\\u24bf\\u24d9\\u2c7c\\uff2a\\uff4a]/g,\n 'K': /[Kk\\u0136\\u0137\\u01e8\\u01e9\\u1d37\\u1d4f\\u1e30-\\u1e35\\u212a\\u24a6\\u24c0\\u24da\\u3384\\u3385\\u3389\\u338f\\u3391\\u3398\\u339e\\u33a2\\u33a6\\u33aa\\u33b8\\u33be\\u33c0\\u33c6\\u33cd-\\u33cf\\uff2b\\uff4b]/g,\n 'L': /[Ll\\u0139-\\u0140\\u01c7-\\u01c9\\u02e1\\u1d38\\u1e36\\u1e37\\u1e3a-\\u1e3d\\u2112\\u2113\\u2121\\u216c\\u217c\\u24a7\\u24c1\\u24db\\u32cf\\u3388\\u3389\\u33d0-\\u33d3\\u33d5\\u33d6\\u33ff\\ufb02\\ufb04\\uff2c\\uff4c]/g,\n 'M': /[Mm\\u1d39\\u1d50\\u1e3e-\\u1e43\\u2120\\u2122\\u2133\\u216f\\u217f\\u24a8\\u24c2\\u24dc\\u3377-\\u3379\\u3383\\u3386\\u338e\\u3392\\u3396\\u3399-\\u33a8\\u33ab\\u33b3\\u33b7\\u33b9\\u33bd\\u33bf\\u33c1\\u33c2\\u33ce\\u33d0\\u33d4-\\u33d6\\u33d8\\u33d9\\u33de\\u33df\\uff2d\\uff4d]/g,\n 'N': /[Nn\\xd1\\xf1\\u0143-\\u0149\\u01ca-\\u01cc\\u01f8\\u01f9\\u1d3a\\u1e44-\\u1e4b\\u207f\\u2115\\u2116\\u24a9\\u24c3\\u24dd\\u3381\\u338b\\u339a\\u33b1\\u33b5\\u33bb\\u33cc\\u33d1\\uff2e\\uff4e]/g,\n 'O': /[Oo\\xba\\xd2-\\xd6\\xf2-\\xf6\\u014c-\\u0151\\u01a0\\u01a1\\u01d1\\u01d2\\u01ea\\u01eb\\u020c-\\u020f\\u022e\\u022f\\u1d3c\\u1d52\\u1ecc-\\u1ecf\\u2092\\u2105\\u2116\\u2134\\u24aa\\u24c4\\u24de\\u3375\\u33c7\\u33d2\\u33d6\\uff2f\\uff4f]/g,\n 'P': /[Pp\\u1d3e\\u1d56\\u1e54-\\u1e57\\u2119\\u24ab\\u24c5\\u24df\\u3250\\u3371\\u3376\\u3380\\u338a\\u33a9-\\u33ac\\u33b0\\u33b4\\u33ba\\u33cb\\u33d7-\\u33da\\uff30\\uff50]/g,\n 'Q': /[Qq\\u211a\\u24ac\\u24c6\\u24e0\\u33c3\\uff31\\uff51]/g,\n 'R': /[Rr\\u0154-\\u0159\\u0210-\\u0213\\u02b3\\u1d3f\\u1d63\\u1e58-\\u1e5b\\u1e5e\\u1e5f\\u20a8\\u211b-\\u211d\\u24ad\\u24c7\\u24e1\\u32cd\\u3374\\u33ad-\\u33af\\u33da\\u33db\\uff32\\uff52]/g,\n 'S': /[Ss\\u015a-\\u0161\\u017f\\u0218\\u0219\\u02e2\\u1e60-\\u1e63\\u20a8\\u2101\\u2120\\u24ae\\u24c8\\u24e2\\u33a7\\u33a8\\u33ae-\\u33b3\\u33db\\u33dc\\ufb06\\uff33\\uff53]/g,\n 'T': /[Tt\\u0162-\\u0165\\u021a\\u021b\\u1d40\\u1d57\\u1e6a-\\u1e71\\u1e97\\u2121\\u2122\\u24af\\u24c9\\u24e3\\u3250\\u32cf\\u3394\\u33cf\\ufb05\\ufb06\\uff34\\uff54]/g,\n 'U': /[Uu\\xd9-\\xdc\\xf9-\\xfc\\u0168-\\u0173\\u01af\\u01b0\\u01d3\\u01d4\\u0214-\\u0217\\u1d41\\u1d58\\u1d64\\u1e72-\\u1e77\\u1ee4-\\u1ee7\\u2106\\u24b0\\u24ca\\u24e4\\u3373\\u337a\\uff35\\uff55]/g,\n 'V': /[Vv\\u1d5b\\u1d65\\u1e7c-\\u1e7f\\u2163-\\u2167\\u2173-\\u2177\\u24b1\\u24cb\\u24e5\\u2c7d\\u32ce\\u3375\\u33b4-\\u33b9\\u33dc\\u33de\\uff36\\uff56]/g,\n 'W': /[Ww\\u0174\\u0175\\u02b7\\u1d42\\u1e80-\\u1e89\\u1e98\\u24b2\\u24cc\\u24e6\\u33ba-\\u33bf\\u33dd\\uff37\\uff57]/g,\n 'X': /[Xx\\u02e3\\u1e8a-\\u1e8d\\u2093\\u213b\\u2168-\\u216b\\u2178-\\u217b\\u24b3\\u24cd\\u24e7\\u33d3\\uff38\\uff58]/g,\n 'Y': /[Yy\\xdd\\xfd\\xff\\u0176-\\u0178\\u0232\\u0233\\u02b8\\u1e8e\\u1e8f\\u1e99\\u1ef2-\\u1ef9\\u24b4\\u24ce\\u24e8\\u33c9\\uff39\\uff59]/g,\n 'Z': /[Zz\\u0179-\\u017e\\u01f1-\\u01f3\\u1dbb\\u1e90-\\u1e95\\u2124\\u2128\\u24b5\\u24cf\\u24e9\\u3390-\\u3394\\uff3a\\uff5a]/g\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/StringUtils.ts\n **/","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = factory();\n } else {\n // running in browser\n root.latinize = factory();\n }\n})(this, function() {\n\n function latinize(str) {\n if (typeof str === 'string') {\n return str.replace(/[^A-Za-z0-9]/g, function(x) {\n return latinize.characters[x] || x;\n });\n } else {\n return str;\n }\n }\n\n latinize.characters = {\n 'Á': 'A',\n 'Ă': 'A',\n 'Ắ': 'A',\n 'Ặ': 'A',\n 'Ằ': 'A',\n 'Ẳ': 'A',\n 'Ẵ': 'A',\n 'Ǎ': 'A',\n 'Â': 'A',\n 'Ấ': 'A',\n 'Ậ': 'A',\n 'Ầ': 'A',\n 'Ẩ': 'A',\n 'Ẫ': 'A',\n 'Ä': 'A',\n 'Ǟ': 'A',\n 'Ȧ': 'A',\n 'Ǡ': 'A',\n 'Ạ': 'A',\n 'Ȁ': 'A',\n 'À': 'A',\n 'Ả': 'A',\n 'Ȃ': 'A',\n 'Ā': 'A',\n 'Ą': 'A',\n 'Å': 'A',\n 'Ǻ': 'A',\n 'Ḁ': 'A',\n 'Ⱥ': 'A',\n 'Ã': 'A',\n 'Ꜳ': 'AA',\n 'Æ': 'AE',\n 'Ǽ': 'AE',\n 'Ǣ': 'AE',\n 'Ꜵ': 'AO',\n 'Ꜷ': 'AU',\n 'Ꜹ': 'AV',\n 'Ꜻ': 'AV',\n 'Ꜽ': 'AY',\n 'Ḃ': 'B',\n 'Ḅ': 'B',\n 'Ɓ': 'B',\n 'Ḇ': 'B',\n 'Ƀ': 'B',\n 'Ƃ': 'B',\n 'Ć': 'C',\n 'Č': 'C',\n 'Ç': 'C',\n 'Ḉ': 'C',\n 'Ĉ': 'C',\n 'Ċ': 'C',\n 'Ƈ': 'C',\n 'Ȼ': 'C',\n 'Ď': 'D',\n 'Ḑ': 'D',\n 'Ḓ': 'D',\n 'Ḋ': 'D',\n 'Ḍ': 'D',\n 'Ɗ': 'D',\n 'Ḏ': 'D',\n 'Dz': 'D',\n 'Dž': 'D',\n 'Đ': 'D',\n 'Ƌ': 'D',\n 'DZ': 'DZ',\n 'DŽ': 'DZ',\n 'É': 'E',\n 'Ĕ': 'E',\n 'Ě': 'E',\n 'Ȩ': 'E',\n 'Ḝ': 'E',\n 'Ê': 'E',\n 'Ế': 'E',\n 'Ệ': 'E',\n 'Ề': 'E',\n 'Ể': 'E',\n 'Ễ': 'E',\n 'Ḙ': 'E',\n 'Ë': 'E',\n 'Ė': 'E',\n 'Ẹ': 'E',\n 'Ȅ': 'E',\n 'È': 'E',\n 'Ẻ': 'E',\n 'Ȇ': 'E',\n 'Ē': 'E',\n 'Ḗ': 'E',\n 'Ḕ': 'E',\n 'Ę': 'E',\n 'Ɇ': 'E',\n 'Ẽ': 'E',\n 'Ḛ': 'E',\n 'Ꝫ': 'ET',\n 'Ḟ': 'F',\n 'Ƒ': 'F',\n 'Ǵ': 'G',\n 'Ğ': 'G',\n 'Ǧ': 'G',\n 'Ģ': 'G',\n 'Ĝ': 'G',\n 'Ġ': 'G',\n 'Ɠ': 'G',\n 'Ḡ': 'G',\n 'Ǥ': 'G',\n 'Ḫ': 'H',\n 'Ȟ': 'H',\n 'Ḩ': 'H',\n 'Ĥ': 'H',\n 'Ⱨ': 'H',\n 'Ḧ': 'H',\n 'Ḣ': 'H',\n 'Ḥ': 'H',\n 'Ħ': 'H',\n 'Í': 'I',\n 'Ĭ': 'I',\n 'Ǐ': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ḯ': 'I',\n 'İ': 'I',\n 'Ị': 'I',\n 'Ȉ': 'I',\n 'Ì': 'I',\n 'Ỉ': 'I',\n 'Ȋ': 'I',\n 'Ī': 'I',\n 'Į': 'I',\n 'Ɨ': 'I',\n 'Ĩ': 'I',\n 'Ḭ': 'I',\n 'Ꝺ': 'D',\n 'Ꝼ': 'F',\n 'Ᵹ': 'G',\n 'Ꞃ': 'R',\n 'Ꞅ': 'S',\n 'Ꞇ': 'T',\n 'Ꝭ': 'IS',\n 'Ĵ': 'J',\n 'Ɉ': 'J',\n 'Ḱ': 'K',\n 'Ǩ': 'K',\n 'Ķ': 'K',\n 'Ⱪ': 'K',\n 'Ꝃ': 'K',\n 'Ḳ': 'K',\n 'Ƙ': 'K',\n 'Ḵ': 'K',\n 'Ꝁ': 'K',\n 'Ꝅ': 'K',\n 'Ĺ': 'L',\n 'Ƚ': 'L',\n 'Ľ': 'L',\n 'Ļ': 'L',\n 'Ḽ': 'L',\n 'Ḷ': 'L',\n 'Ḹ': 'L',\n 'Ⱡ': 'L',\n 'Ꝉ': 'L',\n 'Ḻ': 'L',\n 'Ŀ': 'L',\n 'Ɫ': 'L',\n 'Lj': 'L',\n 'Ł': 'L',\n 'LJ': 'LJ',\n 'Ḿ': 'M',\n 'Ṁ': 'M',\n 'Ṃ': 'M',\n 'Ɱ': 'M',\n 'Ń': 'N',\n 'Ň': 'N',\n 'Ņ': 'N',\n 'Ṋ': 'N',\n 'Ṅ': 'N',\n 'Ṇ': 'N',\n 'Ǹ': 'N',\n 'Ɲ': 'N',\n 'Ṉ': 'N',\n 'Ƞ': 'N',\n 'Nj': 'N',\n 'Ñ': 'N',\n 'NJ': 'NJ',\n 'Ó': 'O',\n 'Ŏ': 'O',\n 'Ǒ': 'O',\n 'Ô': 'O',\n 'Ố': 'O',\n 'Ộ': 'O',\n 'Ồ': 'O',\n 'Ổ': 'O',\n 'Ỗ': 'O',\n 'Ö': 'O',\n 'Ȫ': 'O',\n 'Ȯ': 'O',\n 'Ȱ': 'O',\n 'Ọ': 'O',\n 'Ő': 'O',\n 'Ȍ': 'O',\n 'Ò': 'O',\n 'Ỏ': 'O',\n 'Ơ': 'O',\n 'Ớ': 'O',\n 'Ợ': 'O',\n 'Ờ': 'O',\n 'Ở': 'O',\n 'Ỡ': 'O',\n 'Ȏ': 'O',\n 'Ꝋ': 'O',\n 'Ꝍ': 'O',\n 'Ō': 'O',\n 'Ṓ': 'O',\n 'Ṑ': 'O',\n 'Ɵ': 'O',\n 'Ǫ': 'O',\n 'Ǭ': 'O',\n 'Ø': 'O',\n 'Ǿ': 'O',\n 'Õ': 'O',\n 'Ṍ': 'O',\n 'Ṏ': 'O',\n 'Ȭ': 'O',\n 'Ƣ': 'OI',\n 'Ꝏ': 'OO',\n 'Ɛ': 'E',\n 'Ɔ': 'O',\n 'Ȣ': 'OU',\n 'Ṕ': 'P',\n 'Ṗ': 'P',\n 'Ꝓ': 'P',\n 'Ƥ': 'P',\n 'Ꝕ': 'P',\n 'Ᵽ': 'P',\n 'Ꝑ': 'P',\n 'Ꝙ': 'Q',\n 'Ꝗ': 'Q',\n 'Ŕ': 'R',\n 'Ř': 'R',\n 'Ŗ': 'R',\n 'Ṙ': 'R',\n 'Ṛ': 'R',\n 'Ṝ': 'R',\n 'Ȑ': 'R',\n 'Ȓ': 'R',\n 'Ṟ': 'R',\n 'Ɍ': 'R',\n 'Ɽ': 'R',\n 'Ꜿ': 'C',\n 'Ǝ': 'E',\n 'Ś': 'S',\n 'Ṥ': 'S',\n 'Š': 'S',\n 'Ṧ': 'S',\n 'Ş': 'S',\n 'Ŝ': 'S',\n 'Ș': 'S',\n 'Ṡ': 'S',\n 'Ṣ': 'S',\n 'Ṩ': 'S',\n 'ß': 'ss',\n 'Ť': 'T',\n 'Ţ': 'T',\n 'Ṱ': 'T',\n 'Ț': 'T',\n 'Ⱦ': 'T',\n 'Ṫ': 'T',\n 'Ṭ': 'T',\n 'Ƭ': 'T',\n 'Ṯ': 'T',\n 'Ʈ': 'T',\n 'Ŧ': 'T',\n 'Ɐ': 'A',\n 'Ꞁ': 'L',\n 'Ɯ': 'M',\n 'Ʌ': 'V',\n 'Ꜩ': 'TZ',\n 'Ú': 'U',\n 'Ŭ': 'U',\n 'Ǔ': 'U',\n 'Û': 'U',\n 'Ṷ': 'U',\n 'Ü': 'U',\n 'Ǘ': 'U',\n 'Ǚ': 'U',\n 'Ǜ': 'U',\n 'Ǖ': 'U',\n 'Ṳ': 'U',\n 'Ụ': 'U',\n 'Ű': 'U',\n 'Ȕ': 'U',\n 'Ù': 'U',\n 'Ủ': 'U',\n 'Ư': 'U',\n 'Ứ': 'U',\n 'Ự': 'U',\n 'Ừ': 'U',\n 'Ử': 'U',\n 'Ữ': 'U',\n 'Ȗ': 'U',\n 'Ū': 'U',\n 'Ṻ': 'U',\n 'Ų': 'U',\n 'Ů': 'U',\n 'Ũ': 'U',\n 'Ṹ': 'U',\n 'Ṵ': 'U',\n 'Ꝟ': 'V',\n 'Ṿ': 'V',\n 'Ʋ': 'V',\n 'Ṽ': 'V',\n 'Ꝡ': 'VY',\n 'Ẃ': 'W',\n 'Ŵ': 'W',\n 'Ẅ': 'W',\n 'Ẇ': 'W',\n 'Ẉ': 'W',\n 'Ẁ': 'W',\n 'Ⱳ': 'W',\n 'Ẍ': 'X',\n 'Ẋ': 'X',\n 'Ý': 'Y',\n 'Ŷ': 'Y',\n 'Ÿ': 'Y',\n 'Ẏ': 'Y',\n 'Ỵ': 'Y',\n 'Ỳ': 'Y',\n 'Ƴ': 'Y',\n 'Ỷ': 'Y',\n 'Ỿ': 'Y',\n 'Ȳ': 'Y',\n 'Ɏ': 'Y',\n 'Ỹ': 'Y',\n 'Ź': 'Z',\n 'Ž': 'Z',\n 'Ẑ': 'Z',\n 'Ⱬ': 'Z',\n 'Ż': 'Z',\n 'Ẓ': 'Z',\n 'Ȥ': 'Z',\n 'Ẕ': 'Z',\n 'Ƶ': 'Z',\n 'IJ': 'IJ',\n 'Œ': 'OE',\n 'ᴀ': 'A',\n 'ᴁ': 'AE',\n 'ʙ': 'B',\n 'ᴃ': 'B',\n 'ᴄ': 'C',\n 'ᴅ': 'D',\n 'ᴇ': 'E',\n 'ꜰ': 'F',\n 'ɢ': 'G',\n 'ʛ': 'G',\n 'ʜ': 'H',\n 'ɪ': 'I',\n 'ʁ': 'R',\n 'ᴊ': 'J',\n 'ᴋ': 'K',\n 'ʟ': 'L',\n 'ᴌ': 'L',\n 'ᴍ': 'M',\n 'ɴ': 'N',\n 'ᴏ': 'O',\n 'ɶ': 'OE',\n 'ᴐ': 'O',\n 'ᴕ': 'OU',\n 'ᴘ': 'P',\n 'ʀ': 'R',\n 'ᴎ': 'N',\n 'ᴙ': 'R',\n 'ꜱ': 'S',\n 'ᴛ': 'T',\n 'ⱻ': 'E',\n 'ᴚ': 'R',\n 'ᴜ': 'U',\n 'ᴠ': 'V',\n 'ᴡ': 'W',\n 'ʏ': 'Y',\n 'ᴢ': 'Z',\n 'á': 'a',\n 'ă': 'a',\n 'ắ': 'a',\n 'ặ': 'a',\n 'ằ': 'a',\n 'ẳ': 'a',\n 'ẵ': 'a',\n 'ǎ': 'a',\n 'â': 'a',\n 'ấ': 'a',\n 'ậ': 'a',\n 'ầ': 'a',\n 'ẩ': 'a',\n 'ẫ': 'a',\n 'ä': 'a',\n 'ǟ': 'a',\n 'ȧ': 'a',\n 'ǡ': 'a',\n 'ạ': 'a',\n 'ȁ': 'a',\n 'à': 'a',\n 'ả': 'a',\n 'ȃ': 'a',\n 'ā': 'a',\n 'ą': 'a',\n 'ᶏ': 'a',\n 'ẚ': 'a',\n 'å': 'a',\n 'ǻ': 'a',\n 'ḁ': 'a',\n 'ⱥ': 'a',\n 'ã': 'a',\n 'ꜳ': 'aa',\n 'æ': 'ae',\n 'ǽ': 'ae',\n 'ǣ': 'ae',\n 'ꜵ': 'ao',\n 'ꜷ': 'au',\n 'ꜹ': 'av',\n 'ꜻ': 'av',\n 'ꜽ': 'ay',\n 'ḃ': 'b',\n 'ḅ': 'b',\n 'ɓ': 'b',\n 'ḇ': 'b',\n 'ᵬ': 'b',\n 'ᶀ': 'b',\n 'ƀ': 'b',\n 'ƃ': 'b',\n 'ɵ': 'o',\n 'ć': 'c',\n 'č': 'c',\n 'ç': 'c',\n 'ḉ': 'c',\n 'ĉ': 'c',\n 'ɕ': 'c',\n 'ċ': 'c',\n 'ƈ': 'c',\n 'ȼ': 'c',\n 'ď': 'd',\n 'ḑ': 'd',\n 'ḓ': 'd',\n 'ȡ': 'd',\n 'ḋ': 'd',\n 'ḍ': 'd',\n 'ɗ': 'd',\n 'ᶑ': 'd',\n 'ḏ': 'd',\n 'ᵭ': 'd',\n 'ᶁ': 'd',\n 'đ': 'd',\n 'ɖ': 'd',\n 'ƌ': 'd',\n 'ı': 'i',\n 'ȷ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'dz': 'dz',\n 'dž': 'dz',\n 'é': 'e',\n 'ĕ': 'e',\n 'ě': 'e',\n 'ȩ': 'e',\n 'ḝ': 'e',\n 'ê': 'e',\n 'ế': 'e',\n 'ệ': 'e',\n 'ề': 'e',\n 'ể': 'e',\n 'ễ': 'e',\n 'ḙ': 'e',\n 'ë': 'e',\n 'ė': 'e',\n 'ẹ': 'e',\n 'ȅ': 'e',\n 'è': 'e',\n 'ẻ': 'e',\n 'ȇ': 'e',\n 'ē': 'e',\n 'ḗ': 'e',\n 'ḕ': 'e',\n 'ⱸ': 'e',\n 'ę': 'e',\n 'ᶒ': 'e',\n 'ɇ': 'e',\n 'ẽ': 'e',\n 'ḛ': 'e',\n 'ꝫ': 'et',\n 'ḟ': 'f',\n 'ƒ': 'f',\n 'ᵮ': 'f',\n 'ᶂ': 'f',\n 'ǵ': 'g',\n 'ğ': 'g',\n 'ǧ': 'g',\n 'ģ': 'g',\n 'ĝ': 'g',\n 'ġ': 'g',\n 'ɠ': 'g',\n 'ḡ': 'g',\n 'ᶃ': 'g',\n 'ǥ': 'g',\n 'ḫ': 'h',\n 'ȟ': 'h',\n 'ḩ': 'h',\n 'ĥ': 'h',\n 'ⱨ': 'h',\n 'ḧ': 'h',\n 'ḣ': 'h',\n 'ḥ': 'h',\n 'ɦ': 'h',\n 'ẖ': 'h',\n 'ħ': 'h',\n 'ƕ': 'hv',\n 'í': 'i',\n 'ĭ': 'i',\n 'ǐ': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ḯ': 'i',\n 'ị': 'i',\n 'ȉ': 'i',\n 'ì': 'i',\n 'ỉ': 'i',\n 'ȋ': 'i',\n 'ī': 'i',\n 'į': 'i',\n 'ᶖ': 'i',\n 'ɨ': 'i',\n 'ĩ': 'i',\n 'ḭ': 'i',\n 'ꝺ': 'd',\n 'ꝼ': 'f',\n 'ᵹ': 'g',\n 'ꞃ': 'r',\n 'ꞅ': 's',\n 'ꞇ': 't',\n 'ꝭ': 'is',\n 'ǰ': 'j',\n 'ĵ': 'j',\n 'ʝ': 'j',\n 'ɉ': 'j',\n 'ḱ': 'k',\n 'ǩ': 'k',\n 'ķ': 'k',\n 'ⱪ': 'k',\n 'ꝃ': 'k',\n 'ḳ': 'k',\n 'ƙ': 'k',\n 'ḵ': 'k',\n 'ᶄ': 'k',\n 'ꝁ': 'k',\n 'ꝅ': 'k',\n 'ĺ': 'l',\n 'ƚ': 'l',\n 'ɬ': 'l',\n 'ľ': 'l',\n 'ļ': 'l',\n 'ḽ': 'l',\n 'ȴ': 'l',\n 'ḷ': 'l',\n 'ḹ': 'l',\n 'ⱡ': 'l',\n 'ꝉ': 'l',\n 'ḻ': 'l',\n 'ŀ': 'l',\n 'ɫ': 'l',\n 'ᶅ': 'l',\n 'ɭ': 'l',\n 'ł': 'l',\n 'lj': 'lj',\n 'ſ': 's',\n 'ẜ': 's',\n 'ẛ': 's',\n 'ẝ': 's',\n 'ḿ': 'm',\n 'ṁ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'ᵯ': 'm',\n 'ᶆ': 'm',\n 'ń': 'n',\n 'ň': 'n',\n 'ņ': 'n',\n 'ṋ': 'n',\n 'ȵ': 'n',\n 'ṅ': 'n',\n 'ṇ': 'n',\n 'ǹ': 'n',\n 'ɲ': 'n',\n 'ṉ': 'n',\n 'ƞ': 'n',\n 'ᵰ': 'n',\n 'ᶇ': 'n',\n 'ɳ': 'n',\n 'ñ': 'n',\n 'nj': 'nj',\n 'ó': 'o',\n 'ŏ': 'o',\n 'ǒ': 'o',\n 'ô': 'o',\n 'ố': 'o',\n 'ộ': 'o',\n 'ồ': 'o',\n 'ổ': 'o',\n 'ỗ': 'o',\n 'ö': 'o',\n 'ȫ': 'o',\n 'ȯ': 'o',\n 'ȱ': 'o',\n 'ọ': 'o',\n 'ő': 'o',\n 'ȍ': 'o',\n 'ò': 'o',\n 'ỏ': 'o',\n 'ơ': 'o',\n 'ớ': 'o',\n 'ợ': 'o',\n 'ờ': 'o',\n 'ở': 'o',\n 'ỡ': 'o',\n 'ȏ': 'o',\n 'ꝋ': 'o',\n 'ꝍ': 'o',\n 'ⱺ': 'o',\n 'ō': 'o',\n 'ṓ': 'o',\n 'ṑ': 'o',\n 'ǫ': 'o',\n 'ǭ': 'o',\n 'ø': 'o',\n 'ǿ': 'o',\n 'õ': 'o',\n 'ṍ': 'o',\n 'ṏ': 'o',\n 'ȭ': 'o',\n 'ƣ': 'oi',\n 'ꝏ': 'oo',\n 'ɛ': 'e',\n 'ᶓ': 'e',\n 'ɔ': 'o',\n 'ᶗ': 'o',\n 'ȣ': 'ou',\n 'ṕ': 'p',\n 'ṗ': 'p',\n 'ꝓ': 'p',\n 'ƥ': 'p',\n 'ᵱ': 'p',\n 'ᶈ': 'p',\n 'ꝕ': 'p',\n 'ᵽ': 'p',\n 'ꝑ': 'p',\n 'ꝙ': 'q',\n 'ʠ': 'q',\n 'ɋ': 'q',\n 'ꝗ': 'q',\n 'ŕ': 'r',\n 'ř': 'r',\n 'ŗ': 'r',\n 'ṙ': 'r',\n 'ṛ': 'r',\n 'ṝ': 'r',\n 'ȑ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ȓ': 'r',\n 'ṟ': 'r',\n 'ɼ': 'r',\n 'ᵲ': 'r',\n 'ᶉ': 'r',\n 'ɍ': 'r',\n 'ɽ': 'r',\n 'ↄ': 'c',\n 'ꜿ': 'c',\n 'ɘ': 'e',\n 'ɿ': 'r',\n 'ś': 's',\n 'ṥ': 's',\n 'š': 's',\n 'ṧ': 's',\n 'ş': 's',\n 'ŝ': 's',\n 'ș': 's',\n 'ṡ': 's',\n 'ṣ': 's',\n 'ṩ': 's',\n 'ʂ': 's',\n 'ᵴ': 's',\n 'ᶊ': 's',\n 'ȿ': 's',\n 'ɡ': 'g',\n 'ᴑ': 'o',\n 'ᴓ': 'o',\n 'ᴝ': 'u',\n 'ť': 't',\n 'ţ': 't',\n 'ṱ': 't',\n 'ț': 't',\n 'ȶ': 't',\n 'ẗ': 't',\n 'ⱦ': 't',\n 'ṫ': 't',\n 'ṭ': 't',\n 'ƭ': 't',\n 'ṯ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'ʈ': 't',\n 'ŧ': 't',\n 'ᵺ': 'th',\n 'ɐ': 'a',\n 'ᴂ': 'ae',\n 'ǝ': 'e',\n 'ᵷ': 'g',\n 'ɥ': 'h',\n 'ʮ': 'h',\n 'ʯ': 'h',\n 'ᴉ': 'i',\n 'ʞ': 'k',\n 'ꞁ': 'l',\n 'ɯ': 'm',\n 'ɰ': 'm',\n 'ᴔ': 'oe',\n 'ɹ': 'r',\n 'ɻ': 'r',\n 'ɺ': 'r',\n 'ⱹ': 'r',\n 'ʇ': 't',\n 'ʌ': 'v',\n 'ʍ': 'w',\n 'ʎ': 'y',\n 'ꜩ': 'tz',\n 'ú': 'u',\n 'ŭ': 'u',\n 'ǔ': 'u',\n 'û': 'u',\n 'ṷ': 'u',\n 'ü': 'u',\n 'ǘ': 'u',\n 'ǚ': 'u',\n 'ǜ': 'u',\n 'ǖ': 'u',\n 'ṳ': 'u',\n 'ụ': 'u',\n 'ű': 'u',\n 'ȕ': 'u',\n 'ù': 'u',\n 'ủ': 'u',\n 'ư': 'u',\n 'ứ': 'u',\n 'ự': 'u',\n 'ừ': 'u',\n 'ử': 'u',\n 'ữ': 'u',\n 'ȗ': 'u',\n 'ū': 'u',\n 'ṻ': 'u',\n 'ų': 'u',\n 'ᶙ': 'u',\n 'ů': 'u',\n 'ũ': 'u',\n 'ṹ': 'u',\n 'ṵ': 'u',\n 'ᵫ': 'ue',\n 'ꝸ': 'um',\n 'ⱴ': 'v',\n 'ꝟ': 'v',\n 'ṿ': 'v',\n 'ʋ': 'v',\n 'ᶌ': 'v',\n 'ⱱ': 'v',\n 'ṽ': 'v',\n 'ꝡ': 'vy',\n 'ẃ': 'w',\n 'ŵ': 'w',\n 'ẅ': 'w',\n 'ẇ': 'w',\n 'ẉ': 'w',\n 'ẁ': 'w',\n 'ⱳ': 'w',\n 'ẘ': 'w',\n 'ẍ': 'x',\n 'ẋ': 'x',\n 'ᶍ': 'x',\n 'ý': 'y',\n 'ŷ': 'y',\n 'ÿ': 'y',\n 'ẏ': 'y',\n 'ỵ': 'y',\n 'ỳ': 'y',\n 'ƴ': 'y',\n 'ỷ': 'y',\n 'ỿ': 'y',\n 'ȳ': 'y',\n 'ẙ': 'y',\n 'ɏ': 'y',\n 'ỹ': 'y',\n 'ź': 'z',\n 'ž': 'z',\n 'ẑ': 'z',\n 'ʑ': 'z',\n 'ⱬ': 'z',\n 'ż': 'z',\n 'ẓ': 'z',\n 'ȥ': 'z',\n 'ẕ': 'z',\n 'ᵶ': 'z',\n 'ᶎ': 'z',\n 'ʐ': 'z',\n 'ƶ': 'z',\n 'ɀ': 'z',\n 'ff': 'ff',\n 'ffi': 'ffi',\n 'ffl': 'ffl',\n 'fi': 'fi',\n 'fl': 'fl',\n 'ij': 'ij',\n 'œ': 'oe',\n 'st': 'st',\n 'ₐ': 'a',\n 'ₑ': 'e',\n 'ᵢ': 'i',\n 'ⱼ': 'j',\n 'ₒ': 'o',\n 'ᵣ': 'r',\n 'ᵤ': 'u',\n 'ᵥ': 'v',\n 'ₓ': 'x',\n 'Ё': 'YO',\n 'Й': 'I',\n 'Ц': 'TS',\n 'У': 'U',\n 'К': 'K',\n 'Е': 'E',\n 'Н': 'N',\n 'Г': 'G',\n 'Ш': 'SH',\n 'Щ': 'SCH',\n 'З': 'Z',\n 'Х': 'H',\n 'Ъ': \"'\",\n 'ё': 'yo',\n 'й': 'i',\n 'ц': 'ts',\n 'у': 'u',\n 'к': 'k',\n 'е': 'e',\n 'н': 'n',\n 'г': 'g',\n 'ш': 'sh',\n 'щ': 'sch',\n 'з': 'z',\n 'х': 'h',\n 'ъ': \"'\",\n 'Ф': 'F',\n 'Ы': 'I',\n 'В': 'V',\n 'А': 'a',\n 'П': 'P',\n 'Р': 'R',\n 'О': 'O',\n 'Л': 'L',\n 'Д': 'D',\n 'Ж': 'ZH',\n 'Э': 'E',\n 'ф': 'f',\n 'ы': 'i',\n 'в': 'v',\n 'а': 'a',\n 'п': 'p',\n 'р': 'r',\n 'о': 'o',\n 'л': 'l',\n 'д': 'd',\n 'ж': 'zh',\n 'э': 'e',\n 'Я': 'Ya',\n 'Ч': 'CH',\n 'С': 'S',\n 'М': 'M',\n 'И': 'I',\n 'Т': 'T',\n 'Ь': \"'\",\n 'Б': 'B',\n 'Ю': 'YU',\n 'я': 'ya',\n 'ч': 'ch',\n 'с': 's',\n 'м': 'm',\n 'и': 'i',\n 'т': 't',\n 'ь': \"'\",\n 'б': 'b',\n 'ю': 'yu'\n };\n\n return latinize;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/latinize/latinize.js\n ** module id = 65\n ** module chunks = 0 1\n **/","import { Utils } from './Utils';\nimport { l } from '../strings/Strings';\nimport _ = require('underscore');\n\nexport class EmailUtils {\n static splitSemicolonSeparatedListOfEmailAddresses(addresses: string): string[] {\n var addressesAsList: string[] = addresses.split(/\\s*;\\s*/);\n return _.filter(addressesAsList, (s: string) => {\n return Utils.exists(s) && Utils.isNonEmptyString(Utils.trim(s));\n });\n }\n\n static emailAddressesToHyperlinks(addresses: string[], companyDomain?: string, me?: string, lengthLimit = 2, truncateName = false): string {\n addresses = _.filter(addresses, (s: string) => {\n return Utils.exists(s) && Utils.isNonEmptyString(Utils.trim(s));\n });\n var hyperlinks = _.map(addresses, (item) => {\n var emailArray = EmailUtils.parseEmail(item);\n var email = emailArray[1];\n var name = emailArray[0];\n if (Utils.exists(me) && email == me) {\n name = l('Me');\n }\n if (truncateName) {\n var split = name.split(' ');\n if (!Utils.isNullOrUndefined(split[1])) {\n name = split[0] + ' ' + split[1].substring(0, 1) + '.';\n }\n }\n var domainIndex = email.indexOf('@') >= 0 ? email.indexOf('@') + 1 : 0;\n var domain = email.substr(domainIndex);\n if (Utils.exists(companyDomain) && domain != companyDomain) {\n name += ' (' + domain + ')';\n }\n\n return '' + name + '';\n });\n var excess = hyperlinks.length - lengthLimit;\n var andOthers = excess > 0 ? EmailUtils.buildEmailAddressesAndOthers(_.last(hyperlinks, excess)) : '';\n return _.first(hyperlinks, lengthLimit).join(', ') + andOthers;\n }\n\n static buildEmailAddressesAndOthers(excessHyperLinks: string[]) {\n return ' ' + l('AndOthers', excessHyperLinks.length.toString(), excessHyperLinks.length) + '' +\n ' , ' + excessHyperLinks.join(' , ') + '';\n }\n\n static parseEmail(email: string): string[] {\n let name: string;\n let match = (email).match(/^\\s*(.*)\\s+<(.*)>$/);\n if (match != null) {\n name = match[1];\n if (/^'.*'|'.*'$/.test(name)) {\n name = name.substr(1, name.length - 2);\n }\n email = match[2];\n } else {\n name = email;\n email = email;\n }\n return [name, email];\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/EmailUtils.ts\n **/","import { Assert } from '../misc/Assert';\nimport { Utils } from '../utils/Utils';\nimport _ = require('underscore');\n\ninterface IHashUtils {\n getHash(w: any);\n getValue();\n encodeValues();\n}\n\nexport class HashUtils {\n private static DELIMITER = {\n 'objectStart': '{',\n 'objectEnd': '}',\n 'arrayStart': '[',\n 'arrayEnd': ']',\n 'objectStartRegExp': '^{',\n 'objectEndRegExp': '}+$',\n 'arrayStartRegExp': '^[',\n 'arrayEndRegExp': ']+$'\n };\n\n public static getHash(w = window): string {\n Assert.exists(w);\n\n // window.location.hash returns the DECODED hash on Firefox (it's a well known bug),\n // so any & in values will be already unescaped. This breaks our value splitting.\n // The following trick works on all browsers.\n let ret = '#' + (w.location.href.split('#')[1] || '');\n return HashUtils.getAjaxcrawlableHash(ret);\n }\n\n public static getValue(key: string, toParse: string): any {\n Assert.isNonEmptyString(key);\n Assert.exists(toParse);\n toParse = HashUtils.getAjaxcrawlableHash(toParse);\n let paramValue = HashUtils.getRawValue(key, toParse);\n if (paramValue != undefined) {\n paramValue = HashUtils.getValueDependingOnType(key, paramValue);\n }\n return paramValue;\n }\n\n public static encodeValues(values: {}): string {\n let hash: String[] = [];\n _.each(<_.Dictionary>values, (valueToEncode, key, obj?) => {\n let encodedValue = '';\n if (Utils.isNonEmptyArray(valueToEncode)) {\n encodedValue = HashUtils.encodeArray(valueToEncode);\n } else if (_.isObject(valueToEncode) && Utils.isNonEmptyArray(_.keys(valueToEncode))) {\n encodedValue = HashUtils.encodeObject(valueToEncode);\n } else if (!Utils.isNullOrUndefined(valueToEncode)) {\n encodedValue = encodeURIComponent(valueToEncode.toString());\n }\n if (encodedValue != '') {\n hash.push(key + '=' + encodedValue);\n }\n });\n\n return hash.join('&');\n }\n\n private static getAjaxcrawlableHash(hash: string) {\n if (hash[1] != undefined && hash[1] == '!') {\n return hash.substring(0, 1) + hash.substring(2);\n } else {\n return hash;\n }\n }\n\n private static getRawValue(key: string, toParse: string): string {\n Assert.exists(key);\n Assert.exists(toParse);\n Assert.check(toParse.indexOf('#') == 0 || toParse == '');\n\n let toParseArray = toParse.substr(1).split('&');\n let paramPos = 0;\n let loop = true;\n let paramValue: string = undefined;\n while (loop) {\n let paramValuePair = toParseArray[paramPos].split('=');\n if (paramValuePair[0] == key) {\n loop = false;\n paramValue = paramValuePair[1];\n } else {\n paramPos++;\n if (paramPos >= toParseArray.length) {\n paramPos = undefined;\n loop = false;\n }\n }\n }\n return paramValue;\n }\n\n private static getValueDependingOnType(key: string, paramValue: string): any {\n let type = HashUtils.getValueType(key, paramValue);\n let returnValue;\n\n if (type == 'object') {\n returnValue = HashUtils.decodeObject(paramValue);\n } else if (type == 'array') {\n returnValue = HashUtils.decodeArray(paramValue);\n } else {\n returnValue = decodeURIComponent(paramValue);\n }\n return returnValue;\n }\n\n private static getValueType(key: string, paramValue: string): string {\n if (key == 'q') {\n return 'other';\n } else if (HashUtils.isObject(paramValue)) {\n return 'object';\n } else if (HashUtils.isArray(paramValue)) {\n return 'array';\n } else {\n return 'other';\n }\n }\n\n private static isArrayStartNotEncoded(value: string) {\n return value.substr(0, 1) == HashUtils.DELIMITER.arrayStart;\n }\n\n private static isArrayStartEncoded(value: string) {\n return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.arrayStart)) == 0;\n }\n\n private static isArrayEndNotEncoded(value: string) {\n return value.substr(value.length - 1);\n }\n\n private static isArrayEndEncoded(value: string) {\n return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.arrayEnd)) == value.length - encodeURIComponent(HashUtils.DELIMITER.arrayEnd).length;\n }\n\n private static isObjectStartNotEncoded(value: string) {\n return value.substr(0, 1) == HashUtils.DELIMITER.objectStart;\n }\n\n private static isObjectStartEncoded(value: string) {\n return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.objectStart)) == 0;\n }\n\n private static isObjectEndNotEncoded(value: string) {\n return value.substr(value.length - 1) == HashUtils.DELIMITER.objectEnd;\n }\n\n private static isObjectEndEncoded(value: string) {\n return value.indexOf(encodeURIComponent(HashUtils.DELIMITER.objectEnd)) == value.length - encodeURIComponent(HashUtils.DELIMITER.objectEnd).length;\n }\n\n private static isObject(value: string) {\n let isObjectStart = HashUtils.isObjectStartNotEncoded(value) || HashUtils.isObjectStartEncoded(value);\n let isObjectEnd = HashUtils.isObjectEndNotEncoded(value) || HashUtils.isObjectEndEncoded(value);\n return isObjectStart && isObjectEnd;\n }\n\n private static isArray(value: string) {\n let isArrayStart = HashUtils.isArrayStartNotEncoded(value) || HashUtils.isArrayStartEncoded(value);\n let isArrayEnd = HashUtils.isArrayEndNotEncoded(value) || HashUtils.isArrayEndEncoded(value);\n return isArrayStart && isArrayEnd;\n }\n\n public static encodeArray(array: string[]): string {\n let arrayReturn = _.map(array, (value) => {\n return encodeURIComponent(value);\n });\n return HashUtils.DELIMITER.arrayStart + arrayReturn.join(',') + HashUtils.DELIMITER.arrayEnd;\n }\n\n public static encodeObject(obj: Object): string {\n let retArray = _.map(<_.Dictionary>obj, (val, key?, obj?) => {\n return `\"${encodeURIComponent(key)}\":${this.encodeValue(val)}`;\n });\n return HashUtils.DELIMITER.objectStart + retArray.join(' , ') + HashUtils.DELIMITER.objectEnd;\n }\n\n private static encodeValue(val: any) {\n let encodedValue = '';\n if (_.isArray(val)) {\n encodedValue = HashUtils.encodeArray(val);\n } else if (_.isObject(val)) {\n encodedValue = HashUtils.encodeObject(val);\n } else if (_.isNumber(val) || _.isBoolean(val)) {\n encodedValue = encodeURIComponent(val.toString());\n } else {\n encodedValue = '\"' + encodeURIComponent(val) + '\"';\n }\n return encodedValue;\n }\n\n private static decodeObject(obj: string): Object {\n if (HashUtils.isObjectStartEncoded(obj) && HashUtils.isObjectEndEncoded(obj)) {\n obj = obj.replace(/encodeURIComponent(HashUtils.Delimiter.objectStart)/, HashUtils.DELIMITER.objectStart);\n obj = obj.replace(encodeURIComponent(HashUtils.DELIMITER.objectEnd), HashUtils.DELIMITER.objectEnd);\n }\n return JSON.parse(decodeURIComponent(obj));\n }\n\n private static decodeArray(value: string): any[] {\n if (HashUtils.isArrayStartEncoded(value) && HashUtils.isArrayEndEncoded(value)) {\n value = value.replace(encodeURIComponent(HashUtils.DELIMITER.arrayStart), HashUtils.DELIMITER.arrayStart);\n value = value.replace(encodeURIComponent(HashUtils.DELIMITER.arrayEnd), HashUtils.DELIMITER.arrayEnd);\n }\n value = value.substr(1);\n value = value.substr(0, value.length - 1);\n let array = value.split(',');\n return _.map(array, (val) => {\n return decodeURIComponent(val);\n });\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/HashUtils.ts\n **/","import { Utils } from './Utils';\nimport { IHighlight } from '../rest/Highlight';\nimport { Assert } from '../misc/Assert';\nimport _ = require('underscore');\n\nexport interface IStringHole {\n begin: number;\n size: number;\n replacementSize: number;\n}\n\nexport class StringAndHoles {\n value: string;\n holes: IStringHole[];\n\n static SHORTEN_END: string = '...';\n static WORD_SHORTER: number = 10;\n\n static replace(str: string, find: string, replace: string): StringAndHoles {\n const strAndHoles = new StringAndHoles();\n\n if (Utils.isNullOrEmptyString(str)) {\n return strAndHoles;\n }\n\n let index = str.lastIndexOf(find);\n if (index == -1) {\n strAndHoles.value = str;\n return strAndHoles;\n }\n\n const holes: IStringHole[] = [];\n while (index >= 0) {\n const hole = {\n begin: index,\n size: find.length,\n replacementSize: replace.length\n };\n holes.push(hole);\n str = str.slice(0, index) + replace + str.slice(index + find.length);\n index = str.lastIndexOf(find);\n }\n\n strAndHoles.holes = holes;\n strAndHoles.value = str;\n return strAndHoles;\n }\n\n /**\n * Shorten the passed path intelligently (path-aware).\n * Works with *local paths* and *network paths*\n * @param uriOrig The path to shorten\n * @param length The length to which the path will be shortened.\n */\n static shortenPath(uriOrig: string, length: number): StringAndHoles {\n const strAndHoles = new StringAndHoles();\n let uri = uriOrig;\n if (Utils.isNullOrEmptyString(uri) || (uri.length <= length)) {\n strAndHoles.value = uri;\n return strAndHoles;\n }\n\n const holes: IStringHole[] = [];\n\n let first = -1;\n if (Utils.stringStartsWith(uri, '\\\\\\\\')) {\n first = uri.indexOf('\\\\', first + 2);\n } else {\n first = uri.indexOf('\\\\');\n }\n\n if (first !== -1) {\n let removed = 0;\n let next = uri.indexOf('\\\\', first + 1);\n while (next !== -1 && uri.length - removed + StringAndHoles.SHORTEN_END.length > length) {\n removed = next - first - 1;\n next = uri.indexOf('\\\\', next + 1);\n }\n\n if (removed > 0) {\n uri = uri.slice(0, first + 1) + StringAndHoles.SHORTEN_END + uri.slice(removed);\n const hole = {\n begin: first + 1,\n size: removed - StringAndHoles.SHORTEN_END.length,\n replacementSize: StringAndHoles.SHORTEN_END.length\n };\n holes.push(hole);\n }\n }\n\n if (uri.length > length) {\n const over = uri.length - length + StringAndHoles.SHORTEN_END.length;\n const start = uri.length - over;\n uri = uri.slice(0, start) + StringAndHoles.SHORTEN_END;\n const hole = {\n begin: start,\n size: over,\n replacementSize: StringAndHoles.SHORTEN_END.length\n };\n holes.push(hole);\n }\n\n strAndHoles.holes = holes;\n strAndHoles.value = uri;\n return strAndHoles;\n }\n\n /**\n * Shorten the passed string.\n * @param toShortenOrig The string to shorten\n * @param length The length to which the string will be shortened.\n * @param toAppend The string to append at the end (usually, it is set to '...')\n */\n static shortenString(toShortenOrig: string, length: number = 200, toAppend?: string): StringAndHoles {\n const toShorten = toShortenOrig;\n toAppend = Utils.toNotNullString(toAppend);\n const strAndHoles = new StringAndHoles();\n if (Utils.isNullOrEmptyString(toShorten) || length <= toAppend.length) {\n strAndHoles.value = toShorten;\n return strAndHoles;\n }\n\n if (toShorten.length <= length) {\n strAndHoles.value = toShorten;\n return strAndHoles;\n }\n\n let str = toShorten;\n\n length = length - toAppend.length;\n str = str.slice(0, length);\n\n if (toShorten.charAt(str.length) !== ' ') {\n const pos = str.lastIndexOf(' ');\n if (pos !== -1 && str.length - pos < StringAndHoles.WORD_SHORTER) {\n str = str.slice(0, pos);\n }\n }\n const holes: IStringHole[] = [];\n holes[0] = {\n begin: str.length,\n size: toShorten.length - str.length,\n replacementSize: toAppend.length\n };\n str += toAppend;\n strAndHoles.value = str;\n strAndHoles.holes = holes;\n return strAndHoles;\n }\n\n /**\n * Shorten the passed URI intelligently (path-aware).\n * @param toShortenOrig The URI to shorten\n * @param length The length to which the URI will be shortened.\n */\n static shortenUri(uri: string, length: number): StringAndHoles {\n const strAndHoles = new StringAndHoles();\n if (Utils.isNullOrEmptyString(uri) || (uri.length <= length)) {\n strAndHoles.value = uri;\n return strAndHoles;\n }\n\n const holes: IStringHole[] = [];\n\n let first = uri.indexOf('//');\n if (first !== -1) {\n first = uri.indexOf('/', first + 2);\n }\n\n if (first !== -1) {\n let removed = 0;\n let next = uri.indexOf('/', first + 1);\n while (next !== -1 && uri.length - removed + StringAndHoles.SHORTEN_END.length > length) {\n removed = next - first - 1;\n next = uri.indexOf('/', next + 1);\n }\n\n if (removed > 0) {\n uri = uri.slice(0, first + 1) + StringAndHoles.SHORTEN_END + uri.slice(first + 1 + removed);\n const hole = {\n begin: first + 1,\n size: removed,\n replacementSize: StringAndHoles.SHORTEN_END.length\n };\n holes.push(hole);\n }\n }\n\n if (uri.length > length) {\n const over = uri.length - length + StringAndHoles.SHORTEN_END.length;\n const start = uri.length - over;\n uri = uri.slice(0, start) + StringAndHoles.SHORTEN_END;\n const hole = {\n begin: start,\n size: over,\n replacementSize: StringAndHoles.SHORTEN_END.length\n };\n holes.push(hole);\n }\n\n strAndHoles.holes = holes;\n strAndHoles.value = uri;\n return strAndHoles;\n }\n}\n\nexport class HighlightUtils {\n /**\n * Highlight the passed string using specified highlights and holes.\n * @param content The string to highlight items in.\n * @param highlights The highlighted positions to highlight in the string.\n * @param holes Possible holes which are used to skip highlighting.\n * @param cssClass The css class to use on the highlighting `span`.\n */\n static highlightString(content: string, highlights: IHighlight[], holes: IStringHole[], cssClass: string): string {\n Assert.isNotUndefined(highlights);\n Assert.isNotNull(highlights);\n Assert.isNonEmptyString(cssClass);\n if (Utils.isNullOrEmptyString(content)) {\n return content;\n }\n const maxIndex = content.length;\n let highlighted = '';\n let last = 0;\n for (let i = 0; i < highlights.length; i++) {\n const highlight = highlights[i];\n let start: number = highlight.offset;\n let end: number = start + highlight.length;\n\n if (holes !== null) {\n let skip = false;\n for (let j = 0; j < holes.length; j++) {\n const hole = holes[j];\n const holeBegin = hole.begin;\n const holeEnd = holeBegin + hole.size;\n if (start < holeBegin && end >= holeBegin && end < holeEnd) {\n end = holeBegin;\n } else if (start >= holeBegin && end < holeEnd) {\n skip = true;\n break;\n } else if (start >= holeBegin && start < holeEnd && end >= holeEnd) {\n start = holeBegin + hole.replacementSize;\n end -= hole.size - hole.replacementSize;\n } else if (start < holeBegin && end >= holeEnd) {\n end -= hole.size - hole.replacementSize;\n } else if (start >= holeEnd) {\n const offset = hole.size - hole.replacementSize;\n start -= offset;\n end -= offset;\n }\n }\n if (skip || start === end) {\n continue;\n }\n }\n\n if (end > maxIndex) {\n break;\n }\n\n highlighted += _.escape(content.slice(last, start));\n highlighted += `` tag.\n */\nexport interface IAnchorUtilsOptions {\n /**\n * The tag's text content.\n */\n text?: string;\n /**\n * The target (`href` attribute).\n */\n target?: string;\n /**\n * The CSS class(es) of the tag.\n */\n class?: string;\n}\n\n/**\n * Options for building an `` tag.\n */\nexport interface IImageUtilsOptions {\n /**\n * The alternative text for the image (`alt` attribute).\n */\n alt?: string;\n /**\n * The height of the image\n */\n height?: string;\n /**\n * The width of the image\n */\n width?: string;\n}\n\nexport class HTMLUtils {\n static buildAttributeString(options: any): string {\n var ret = [];\n _.each(options, (val: any, key?: string, obj?) => {\n if (val != undefined) {\n ret.push(key + '=' + JSON.stringify(val.toString()));\n }\n });\n return ret.join(' ');\n }\n}\n\nexport class AnchorUtils {\n static buildAnchor(href: string, options?: IAnchorUtilsOptions) {\n var text;\n if (!options || !options.text) {\n text = href;\n } else {\n text = options.text;\n options.text = undefined;\n }\n return `${text}`;\n }\n}\n\nexport class ImageUtils {\n static buildImage(src?: string, options?: IImageUtilsOptions) {\n var ret = '';\n return ret;\n }\n\n static selectImageFromResult(result: IQueryResult): HTMLElement {\n return document.querySelector(`img[data-coveo-uri-hash=${result.raw['urihash']}]`);\n }\n\n static buildImageWithDirectSrcAttribute(endpoint: SearchEndpoint, result: IQueryResult) {\n var image = new Image();\n var dataStreamUri = endpoint.getViewAsDatastreamUri(result.uniqueId, '$Thumbnail$', { contentType: 'image/png' });\n image.onload = () => {\n ImageUtils.selectImageFromResult(result).setAttribute('src', dataStreamUri);\n };\n image.src = dataStreamUri;\n }\n\n static buildImageWithBase64SrcAttribute(endpoint: SearchEndpoint, result: IQueryResult) {\n endpoint.getRawDataStream(result.uniqueId, '$Thumbnail$')\n .then((response) => {\n var rawBinary = String.fromCharCode.apply(null, new Uint8Array(response));\n ImageUtils.selectImageFromResult(result).setAttribute('src', 'data:image/png;base64, ' + btoa(rawBinary));\n })\n .catch(() => {\n ImageUtils.selectImageFromResult(result).remove();\n });\n }\n\n static buildImageFromResult(result: IQueryResult, endpoint: SearchEndpoint, options?: IImageUtilsOptions) {\n options = options ? options : {};\n\n let img = ImageUtils.buildImage(undefined, _.extend(options, { 'data-coveo-uri-hash': result.raw['urihash'] }));\n if (endpoint.isJsonp() || DeviceUtils.isIE8or9()) {\n // For jsonp and IE8-9 (XDomain) we can't GET/POST for binary data. We are limited to only setting the src attribute directly on the img.\n ImageUtils.buildImageWithDirectSrcAttribute(endpoint, result);\n } else {\n // Base 64 img allows us to GET/POST the image as raw binary, so that we can also pass the credential of the user\n // Useful for phonegap.\n ImageUtils.buildImageWithBase64SrcAttribute(endpoint, result);\n }\n return img;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/HtmlUtils.ts\n **/","import { Utils } from './Utils';\nimport _ = require('underscore');\n\nexport enum KEYBOARD {\n BACKSPACE = 8,\n TAB = 9,\n ENTER = 13,\n SHIFT = 16,\n CTRL = 17,\n ALT = 18,\n ESCAPE = 27,\n SPACEBAR = 32,\n PAGE_UP = 33,\n PAGE_DOWN = 34,\n HOME = 36,\n LEFT_ARROW = 37,\n UP_ARROW = 38,\n RIGHT_ARROW = 39,\n DOWN_ARROW = 40,\n INSERT = 45,\n DELETE = 46\n}\n\nexport class KeyboardUtils {\n static keysEqual(key, code) {\n if (!Utils.isNullOrUndefined(key.keyCode)) {\n return key.keyCode == code;\n } else if (!Utils.isNullOrUndefined(key.which)) {\n return key.which == code;\n }\n return false;\n }\n\n static isAllowedKeyForOmnibox(e: KeyboardEvent): boolean {\n var keycode = e.keyCode;\n var valid =\n (KeyboardUtils.isNumberKeyPushed(keycode)) ||\n (keycode == 32 || keycode == 13) || // spacebar & return key(s)\n (KeyboardUtils.isLetterKeyPushed(keycode)) ||\n (keycode > 95 && keycode < 112) || // numpad keys\n (keycode > 185 && keycode < 193) || // ;=,-./` (in order)\n (keycode > 218 && keycode < 223) || // [\\]' (in order)\n (keycode == KEYBOARD.BACKSPACE || keycode == KEYBOARD.DELETE) ||\n (KeyboardUtils.isArrowKeyPushed(keycode));\n\n return valid;\n }\n\n static isAllowedKeyForSearchAsYouType(e: KeyboardEvent): boolean {\n return KeyboardUtils.isAllowedKeyForOmnibox(e) && !KeyboardUtils.isArrowKeyPushed(e.keyCode);\n }\n\n static isDeleteOrBackspace(e: KeyboardEvent) {\n return KeyboardUtils.keysEqual(e, KEYBOARD.BACKSPACE) || KeyboardUtils.keysEqual(e, KEYBOARD.DELETE);\n }\n\n static isArrowKeyPushed(keycode: number): boolean {\n return keycode == KEYBOARD.LEFT_ARROW ||\n keycode == KEYBOARD.UP_ARROW ||\n keycode == KEYBOARD.RIGHT_ARROW ||\n keycode == KEYBOARD.DOWN_ARROW;\n }\n\n static isNumberKeyPushed(keycode: number): boolean {\n return keycode > 47 && keycode < 58;\n }\n\n static isLetterKeyPushed(keycode: number): boolean {\n return keycode > 64 && keycode < 91;\n }\n\n // Return a keyboard event listener that only executes the function if certain keys are pressed.\n static keypressAction(keyCode: KEYBOARD | KEYBOARD[], action: Function) {\n return (e: KeyboardEvent, ...data: any[]) => {\n if (e) {\n const eventCode = e.charCode || e.keyCode;\n if (eventCode) {\n if (_.isArray(keyCode) && _.contains(keyCode, eventCode)) {\n action(e);\n } else if (eventCode === keyCode) {\n action(e);\n }\n }\n }\n };\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/KeyboardUtils.ts\n **/","var localStorage = window.localStorage;\nexport class LocalStorageUtils {\n constructor(public id: string) {\n }\n\n public save(data: T) {\n try {\n if (localStorage != null) {\n localStorage.setItem(this.getLocalStorageKey(), JSON.stringify(data));\n }\n } catch (error) {\n }\n }\n\n public load(): T {\n try {\n if (localStorage == null) {\n return null;\n }\n var value = localStorage.getItem(this.getLocalStorageKey());\n return value && JSON.parse(value);\n } catch (error) {\n return null;\n }\n }\n\n public remove(key?: string) {\n try {\n if (localStorage != null) {\n if (key == undefined) {\n localStorage.removeItem(this.getLocalStorageKey());\n } else {\n var oldObj = this.load();\n delete oldObj[key];\n this.save(oldObj);\n }\n }\n } catch (error) {\n }\n }\n\n private getLocalStorageKey() {\n return 'coveo-' + this.id;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/LocalStorageUtils.ts\n **/","export enum OS_NAME {\n WINDOWS,\n MACOSX,\n UNIX,\n LINUX,\n UNKNOWN\n}\n\nexport class OSUtils {\n static get(nav = navigator) {\n var osName;\n if (nav.appVersion.indexOf('Win') != -1) {\n osName = OS_NAME.WINDOWS;\n } else if (nav.appVersion.indexOf('Mac') != -1) {\n osName = OS_NAME.MACOSX;\n } else if (nav.appVersion.indexOf('X11') != -1) {\n osName = OS_NAME.UNIX;\n } else if (nav.appVersion.indexOf('Linux') != -1) {\n osName = OS_NAME.LINUX;\n } else {\n osName = OS_NAME.UNKNOWN;\n }\n return osName;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/OSUtils.ts\n **/","import { $$, IOffset } from './Dom';\n\nexport interface IPosition {\n vertical: VerticalAlignment;\n horizontal: HorizontalAlignment;\n verticalOffset?: number;\n horizontalOffset?: number;\n horizontalClip?: boolean;\n}\n\nexport enum VerticalAlignment {\n TOP,\n MIDDLE,\n BOTTOM,\n INNERTOP,\n INNERBOTTOM\n}\n\nexport enum HorizontalAlignment {\n LEFT,\n CENTER,\n RIGHT,\n INNERLEFT,\n INNERRIGHT\n}\n\ninterface IElementBoundary {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}\n\nexport class PopupUtils {\n static positionPopup(popUp: HTMLElement, nextTo: HTMLElement, boundary: HTMLElement, desiredPosition: IPosition, appendTo?: HTMLElement, checkForBoundary = 0) {\n popUp.style.position = 'absolute';\n if (appendTo) {\n $$(appendTo).append(popUp);\n }\n desiredPosition.verticalOffset = desiredPosition.verticalOffset ? desiredPosition.verticalOffset : 0;\n desiredPosition.horizontalOffset = desiredPosition.horizontalOffset ? desiredPosition.horizontalOffset : 0;\n\n let popUpPosition = $$(nextTo).offset();\n PopupUtils.basicVerticalAlignment(popUpPosition, popUp, nextTo, desiredPosition);\n PopupUtils.basicHorizontalAlignment(popUpPosition, popUp, nextTo, desiredPosition);\n PopupUtils.finalAdjustement($$(popUp).offset(), popUpPosition, popUp, desiredPosition);\n\n let popUpBoundary = PopupUtils.getBoundary(popUp);\n let boundaryPosition = PopupUtils.getBoundary(boundary);\n if (checkForBoundary < 2) {\n let checkBoundary = PopupUtils.checkForOutOfBoundary(popUpBoundary, boundaryPosition);\n if (checkBoundary.horizontal != 'ok' && desiredPosition.horizontalClip === true) {\n let width = popUp.offsetWidth;\n if (popUpBoundary.left < boundaryPosition.left) {\n width -= boundaryPosition.left - popUpBoundary.left;\n }\n if (popUpBoundary.right > boundaryPosition.right) {\n width -= popUpBoundary.right - boundaryPosition.right;\n }\n popUp.style.width = width + 'px';\n checkBoundary.horizontal = 'ok';\n }\n if (checkBoundary.vertical != 'ok' || checkBoundary.horizontal != 'ok') {\n let newDesiredPosition = PopupUtils.alignInsideBoundary(desiredPosition, checkBoundary);\n PopupUtils.positionPopup(popUp, nextTo, boundary, newDesiredPosition, appendTo, checkForBoundary + 1);\n }\n }\n }\n\n private static finalAdjustement(popUpOffSet: IOffset, popUpPosition: IOffset, popUp: HTMLElement, desiredPosition: IPosition) {\n let position = $$(popUp).position();\n popUp.style.top = (position.top + desiredPosition.verticalOffset) - (popUpOffSet.top - popUpPosition.top) + 'px';\n popUp.style.left = (position.left + desiredPosition.horizontalOffset) - (popUpOffSet.left - popUpPosition.left) + 'px';\n }\n\n private static basicVerticalAlignment(popUpPosition: IOffset, popUp: HTMLElement, nextTo: HTMLElement, desiredPosition: IPosition) {\n switch (desiredPosition.vertical) {\n case VerticalAlignment.TOP:\n popUpPosition.top -= popUp.offsetHeight;\n break;\n case VerticalAlignment.BOTTOM:\n popUpPosition.top += nextTo.offsetHeight;\n break;\n case VerticalAlignment.MIDDLE:\n popUpPosition.top -= popUp.offsetHeight / 3;\n case VerticalAlignment.INNERTOP:\n break; // Nothing to do, it's the default alignment normally\n case VerticalAlignment.INNERBOTTOM:\n popUpPosition.top -= popUp.offsetHeight - nextTo.offsetHeight;\n break;\n default:\n break;\n }\n }\n\n private static basicHorizontalAlignment(popUpPosition: IOffset, popUp: HTMLElement, nextTo: HTMLElement, desiredPosition: IPosition) {\n switch (desiredPosition.horizontal) {\n case HorizontalAlignment.LEFT:\n popUpPosition.left -= popUp.offsetWidth;\n break;\n case HorizontalAlignment.RIGHT:\n popUpPosition.left += nextTo.offsetWidth;\n break;\n case HorizontalAlignment.CENTER:\n popUpPosition.left += PopupUtils.offSetToAlignCenter(popUp, nextTo);\n break;\n case HorizontalAlignment.INNERLEFT:\n break; // Nothing to do, it's the default alignment normally\n case HorizontalAlignment.INNERRIGHT:\n popUpPosition.left -= popUp.offsetWidth - nextTo.offsetWidth;\n break;\n default:\n break;\n }\n }\n\n private static alignInsideBoundary(oldPosition: IPosition, checkBoundary) {\n let newDesiredPosition = oldPosition;\n if (checkBoundary.horizontal == 'left') {\n newDesiredPosition.horizontal = HorizontalAlignment.RIGHT;\n }\n if (checkBoundary.horizontal == 'right') {\n newDesiredPosition.horizontal = HorizontalAlignment.LEFT;\n }\n if (checkBoundary.vertical == 'top') {\n newDesiredPosition.vertical = VerticalAlignment.BOTTOM;\n }\n if (checkBoundary.vertical == 'bottom') {\n newDesiredPosition.vertical = VerticalAlignment.TOP;\n }\n return newDesiredPosition;\n }\n\n private static offSetToAlignCenter(popUp: HTMLElement, nextTo: HTMLElement) {\n return (nextTo.offsetWidth - popUp.offsetWidth) / 2;\n }\n\n private static getBoundary(element: HTMLElement) {\n let boundaryOffset = $$(element).offset();\n let toAddVertically;\n if (element.tagName.toLowerCase() == 'body') {\n toAddVertically = Math.max(element.scrollHeight, element.offsetHeight);\n } else if (element.tagName.toLowerCase() == 'html') {\n toAddVertically = Math.max(element.clientHeight, element.scrollHeight, element.offsetHeight);\n } else {\n toAddVertically = element.offsetHeight;\n }\n return {\n top: boundaryOffset.top,\n left: boundaryOffset.left,\n right: boundaryOffset.left + element.offsetWidth,\n bottom: boundaryOffset.top + toAddVertically\n };\n }\n\n private static checkForOutOfBoundary(popUpBoundary: IElementBoundary, boundary: IElementBoundary) {\n let ret = {\n vertical: 'ok',\n horizontal: 'ok'\n };\n if (popUpBoundary.top < boundary.top) {\n ret.vertical = 'top';\n }\n if (popUpBoundary.bottom > boundary.bottom) {\n ret.vertical = 'bottom';\n }\n if (popUpBoundary.left < boundary.left) {\n ret.horizontal = 'left';\n }\n if (popUpBoundary.right > boundary.right) {\n ret.horizontal = 'right';\n }\n return ret;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/PopupUtils.ts\n **/","import { Options } from '../misc/Options';\nimport { HighlightUtils } from './HighlightUtils';\nimport { StringUtils } from './StringUtils';\nimport { Utils } from './Utils';\nimport { IHighlight } from '../rest/Highlight';\nimport { $$ } from './Dom';\nimport _ = require('underscore');\n\n// \\u2011: http://graphemica.com/%E2%80%91\n// Used to split terms and phrases. Should match characters that can separate words.\nconst wordBoundary = '[\\\\.\\\\-\\\\u2011\\\\s~=,.\\\\|\\\\/:\\'`’;_()!?&+]';\nconst regexStart = '(' + wordBoundary + '|^)(';\n\n/**\n * The possible options when highlighting a stream.\n */\nexport interface IStreamHighlightOptions {\n /**\n * The css class that the highlight will generate.\n * Defaults to `coveo-highlight`.\n */\n cssClass?: string;\n /**\n * The regex flags that should be applied to generate the highlighting.\n * Defaults to `gi`.\n */\n regexFlags?: string;\n}\n\nclass DefaultStreamHighlightOptions extends Options implements IStreamHighlightOptions {\n constructor(public cssClass = 'coveo-highlight', public shorten = 0, public regexFlags = 'gi') {\n super();\n }\n}\n\nexport class StreamHighlightUtils {\n static highlightStreamHTML(stream: string, termsToHighlight: { [originalTerm: string]: string[] }, phrasesToHighlight: { [phrase: string]: { [originalTerm: string]: string[] } }, options?: IStreamHighlightOptions) {\n const opts = new DefaultStreamHighlightOptions().merge(options);\n const container = createStreamHTMLContainer(stream);\n const allElements = $$(container).findAll('*');\n if (allElements.length > 0) {\n _.each(allElements, (elem: HTMLElement, i: number) => {\n const text = $$(elem).text();\n elem.innerHTML = HighlightUtils.highlightString(text, getRestHighlightsForAllTerms(text, termsToHighlight, phrasesToHighlight, opts), [], opts.cssClass);\n });\n } else {\n return StreamHighlightUtils.highlightStreamText(stream, termsToHighlight, phrasesToHighlight, options);\n }\n return container.innerHTML;\n }\n\n static highlightStreamText(stream: string, termsToHighlight: { [originalTerm: string]: string[] }, phrasesToHighlight: { [phrase: string]: { [originalTerm: string]: string[] } }, options?: IStreamHighlightOptions) {\n const opts = new DefaultStreamHighlightOptions().merge(options);\n return HighlightUtils.highlightString(stream, getRestHighlightsForAllTerms(stream, termsToHighlight, phrasesToHighlight, opts), [], opts.cssClass);\n }\n}\n\n\nfunction getRestHighlightsForAllTerms(toHighlight: string, termsToHighlight: { [originalTerm: string]: string[] }, phrasesToHighlight: { [phrase: string]: { [originalTerm: string]: string[] } }, opts: IStreamHighlightOptions): IHighlight[] {\n const indexes = [];\n const sortedTerms = _.keys(termsToHighlight).sort(termsSorting);\n _.each(sortedTerms, (term: string) => {\n let termsToIterate = _.compact([term].concat(termsToHighlight[term]).sort(termsSorting));\n termsToIterate = _.map(termsToIterate, (term) => Utils.escapeRegexCharacter(term));\n let regex = regexStart;\n regex += termsToIterate.join('|') + ')(?=(?:' + wordBoundary + '|$)+)';\n const indexesFound = StringUtils.getHighlights(toHighlight, new RegExp(regex, opts.regexFlags), term);\n if (indexesFound != undefined && Utils.isNonEmptyArray(indexesFound)) {\n indexes.push(indexesFound);\n }\n });\n\n _.each(phrasesToHighlight, (phrase, origPhrase) => {\n const split = origPhrase.split(' ');\n let regex = regexStart;\n _.each(split, (origWord, i) => {\n regex += '(?:' + [origWord].concat(phrase[origWord]).join('|') + ')';\n if (i == split.length - 1) {\n regex += '(?=';\n }\n regex += wordBoundary;\n if (i == split.length - 1) {\n regex += '|$)';\n }\n if (i != split.length - 1) {\n regex += '+';\n }\n });\n regex += ')';\n const indexesFound = StringUtils.getHighlights(toHighlight, new RegExp(regex, opts.regexFlags), origPhrase);\n if (indexesFound != undefined && Utils.isNonEmptyArray(indexesFound)) {\n indexes.push(indexesFound);\n }\n });\n\n return _.chain(indexes)\n .flatten()\n .compact()\n .uniq((highlight: IHighlight) => {\n return highlight.offset;\n })\n .sortBy((highlight: IHighlight) => {\n return highlight.offset;\n })\n .map((highlight) => {\n const keysFromTerms = _.keys(termsToHighlight);\n const keysFromPhrases = _.keys(phrasesToHighlight);\n const keys = keysFromTerms.concat(keysFromPhrases);\n const group = _.indexOf(keys, highlight.dataHighlightGroupTerm) + 1;\n return _.extend(highlight, { dataHighlightGroup: group });\n })\n .value();\n}\n\nfunction termsSorting(first: string, second: string) {\n return first.length - second.length;\n}\n\nfunction createStreamHTMLContainer(stream: string) {\n const container = $$('div').el;\n container.innerHTML = stream;\n return container;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils/StreamHighlightUtils.ts\n **/","export { QueryController } from './controllers/QueryController';\nexport { FacetQueryController } from './controllers/FacetQueryController';\nexport { FacetRangeQueryController } from './controllers/FacetRangeQueryController';\nexport { FacetSliderQueryController } from './controllers/FacetSliderQueryController';\nexport { HierarchicalFacetQueryController } from './controllers/HierarchicalFacetQueryController';\nexport { HistoryController } from './controllers/HistoryController';\nexport { LocalStorageHistoryController } from './controllers/LocalStorageHistoryController';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ControllersModules.ts\n **/","import { RootComponent } from '../ui/Base/RootComponent';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { IQuery } from '../rest/Query';\nimport { ISearchEndpoint, IEndpointCallOptions } from '../rest/SearchEndpointInterface';\nimport { SearchEndpoint } from '../rest/SearchEndpoint';\nimport { LocalStorageUtils } from '../utils/LocalStorageUtils';\nimport { ISearchInterfaceOptions } from '../ui/SearchInterface/SearchInterface';\nimport { Assert } from '../misc/Assert';\nimport { SearchEndpointWithDefaultCallOptions } from '../rest/SearchEndpointWithDefaultCallOptions';\nimport { INewQueryEventArgs, IPreprocessResultsEventArgs, INoResultsEventArgs, IQuerySuccessEventArgs, IQueryErrorEventArgs, IDuringQueryEventArgs, QueryEvents, IFetchMoreSuccessEventArgs, IDoneBuildingQueryEventArgs, IBuildingQueryEventArgs, IBuildingCallOptionsEventArgs } from '../events/QueryEvents';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { Defer } from '../misc/Defer';\nimport { $$, Dom } from '../utils/Dom';\nimport { Utils } from '../utils/Utils';\nimport { BaseComponent } from '../ui/Base/BaseComponent';\nimport { ModalBox } from '../ExternalModulesShim';\nimport { history } from 'coveo.analytics';\nimport _ = require('underscore');\n\n/**\n * Possible options when performing a query with the query controller\n */\nexport interface IQueryOptions {\n /**\n * If the analytics component is enabled in the interface, it will look for any query executed by the query controller for which no analytics event was associated.
\n * By setting this property to true, this will cancel this check when the query is performed\n */\n ignoreWarningSearchEvent?: boolean;\n /**\n * Specify that the query to execute is a search as you type. This information will be passed down in the query events for component and external code to determine their behavior\n */\n searchAsYouType?: boolean;\n /**\n * Specify a function that you wish to execute just before the query is executed\n */\n beforeExecuteQuery?: () => void;\n /**\n * Cancel the query\n */\n cancel?: boolean;\n /**\n * The component from which the query originated. For example the pager will set the property to tweak it's behaviour\n */\n origin?: any;\n\n /**\n * Whether or not to log the query in the user actions history when using the page view script: https://github.com/coveo/coveo.analytics.js.\n * Only the 'q' part of the query will be logged.\n * This option is useful, because it prevents the query to be logged twice when a {@link Recommendation} component is present.\n * It also makes sure that only relevant queries are logged. For exemple, the 'empty' interface load query isn't logged.\n */\n logInActionsHistory?: boolean;\n isFirstQuery?: boolean;\n keepLastSearchUid?: boolean;\n closeModalBox?: boolean;\n}\n\ninterface ILastQueryLocalStorage {\n hash: string;\n uid: string;\n expire: number;\n}\n\nclass DefaultQueryOptions implements IQueryOptions {\n searchAsYouType = false;\n beforeExecuteQuery: () => void;\n closeModalBox = true;\n cancel = false;\n logInActionsHistory = false;\n}\n\n/**\n * This class is automatically instantiated and bound to the root of your search interface when you initialize the framework.
\n * It is essentially a singleton that wraps the access to the {@link SearchEndpoint} endpoint to execute query, and is in charge of triggering the different query events.
\n * This is what every component of the framework uses internally to execute query or access the endpoint.
\n * When calling Coveo.executeQuery this class is used.\n */\nexport class QueryController extends RootComponent {\n static ID = 'QueryController';\n public historyStore: CoveoAnalytics.HistoryStore;\n\n private currentPendingQuery: Promise;\n private lastQueryBuilder: QueryBuilder;\n private lastQueryHash: string;\n private lastQuery: IQuery;\n private lastSearchUid: string;\n private lastQueryResults: IQueryResults;\n private currentError: any;\n private firstQuery: boolean;\n private createdOneQueryBuilder: boolean;\n private showingExecutingQueryAnimation = false;\n private overrideEndpoint: SearchEndpoint;\n\n private localStorage = new LocalStorageUtils('lastQueryHash');\n\n /**\n * Create a new query controller\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, public options: ISearchInterfaceOptions, public usageAnalytics, public searchInterface) {\n super(element, QueryController.ID);\n Assert.exists(element);\n Assert.exists(options);\n this.firstQuery = true;\n this.historyStore = new history.HistoryStore();\n }\n\n /**\n * Set the {@link SearchEndpoint} that the query controller should use to execute query\n * @param endpoint\n */\n public setEndpoint(endpoint: SearchEndpoint) {\n this.overrideEndpoint = endpoint;\n this.logger.debug('Endpoint set', endpoint);\n }\n\n /**\n * Get the {@link SearchEndpoint} that is currently used by the query controller to execute query\n * @returns {SearchEndpoint}\n */\n public getEndpoint(): ISearchEndpoint {\n let endpoint = this.overrideEndpoint || this.options.endpoint;\n\n // We must wrap the endpoint in a decorator that'll add the call options\n // we obtain by firing the proper event. Those are used for authentication\n // providers, and I guess other stuff later on.\n return new SearchEndpointWithDefaultCallOptions(endpoint, this.getCallOptions());\n }\n\n /**\n * Return the last query that was performed by the query controller\n * @returns {IQuery|Query}\n */\n public getLastQuery() {\n return this.lastQuery || new QueryBuilder().build();\n }\n\n /**\n * Return the last query results set.\n * @returns {IQueryResults}\n */\n public getLastResults() {\n return this.lastQueryResults;\n }\n\n /**\n * Execute a query and return a Promise of IQueryResults.
\n * This will execute the normal query flow, triggering all the necessary query events (newQuery
\n * All components present in the interface will act accordingly (modify the query and render results if needed).\n * @param options\n * @returns {Promise}\n */\n public executeQuery(options?: IQueryOptions): Promise {\n options = _.extend(new DefaultQueryOptions(), options);\n\n if (options.closeModalBox) {\n ModalBox.close(true);\n }\n\n this.logger.debug('Executing new query');\n\n this.cancelAnyCurrentPendingQuery();\n\n if (options.beforeExecuteQuery != null) {\n options.beforeExecuteQuery();\n }\n\n if (!options.ignoreWarningSearchEvent) {\n this.usageAnalytics.warnAboutSearchEvent();\n }\n\n this.showExecutingQueryAnimation();\n\n let dataToSendOnNewQuery: INewQueryEventArgs = {\n searchAsYouType: options.searchAsYouType,\n cancel: options.cancel,\n origin: options.origin\n };\n\n this.newQueryEvent(dataToSendOnNewQuery);\n\n if (dataToSendOnNewQuery.cancel) {\n this.cancelQuery();\n return;\n }\n\n let queryBuilder = this.createQueryBuilder(options);\n\n // The query was canceled\n if (!queryBuilder) {\n return;\n }\n\n let query = queryBuilder.build();\n if (options.logInActionsHistory) {\n this.logQueryInActionsHistory(query, options.isFirstQuery);\n }\n\n let endpointToUse = this.getEndpoint();\n\n let promise = this.currentPendingQuery = endpointToUse.search(query);\n promise.then((queryResults) => {\n Assert.exists(queryResults);\n let firstQuery = this.firstQuery;\n if (this.firstQuery) {\n this.firstQuery = false;\n }\n // If our promise is no longer the current one, then the query\n // has been cancel. We should do nothing here.\n if (promise !== this.currentPendingQuery) {\n return;\n }\n\n this.logger.debug('Query results received', query, queryResults);\n let enableHistory = this.searchInterface && this.searchInterface.options && this.searchInterface.options.enableHistory;\n\n if ((!firstQuery || enableHistory) && this.keepLastSearchUid(query, queryResults)) {\n queryResults.searchUid = this.getLastSearchUid();\n queryResults._reusedSearchUid = true;\n QueryUtils.setPropertyOnResults(queryResults, 'queryUid', this.getLastSearchUid());\n } else {\n this.lastQueryHash = this.queryHash(query, queryResults);\n this.lastSearchUid = queryResults.searchUid;\n }\n\n this.lastQuery = query;\n this.lastQueryResults = queryResults;\n this.currentError = null;\n\n let dataToSendOnPreprocessResult: IPreprocessResultsEventArgs = {\n queryBuilder: queryBuilder,\n query: query,\n results: queryResults,\n searchAsYouType: options.searchAsYouType\n };\n this.preprocessResultsEvent(dataToSendOnPreprocessResult);\n\n let dataToSendOnNoResult: INoResultsEventArgs = {\n queryBuilder: queryBuilder,\n query: query,\n results: queryResults,\n searchAsYouType: options.searchAsYouType,\n retryTheQuery: false\n };\n if (queryResults.results.length == 0) {\n this.noResultEvent(dataToSendOnNoResult);\n }\n\n if (dataToSendOnNoResult.retryTheQuery) {\n // When retrying the query, we must forward the results to the deferred we\n // initially returned, in case someone is listening on it.\n return this.executeQuery();\n } else {\n this.lastQueryBuilder = queryBuilder;\n this.currentPendingQuery = undefined;\n\n let dataToSendOnSuccess: IQuerySuccessEventArgs = {\n queryBuilder: queryBuilder,\n query: query,\n results: queryResults,\n searchAsYouType: options.searchAsYouType\n };\n this.querySuccessEvent(dataToSendOnSuccess);\n\n Defer.defer(() => {\n this.deferredQuerySuccessEvent(dataToSendOnSuccess);\n this.hideExecutingQueryAnimation();\n });\n return queryResults;\n }\n }).catch((error?: any) => {\n // If our deferred is no longer the current one, then the query\n // has been cancel. We should do nothing here.\n if (promise !== this.currentPendingQuery) {\n return;\n }\n\n this.logger.error('Query triggered an error', query, error);\n\n // this.currentPendingQuery.reject(error);\n this.currentPendingQuery = undefined;\n let dataToSendOnError: IQueryErrorEventArgs = {\n queryBuilder: queryBuilder,\n endpoint: endpointToUse,\n query: query,\n error: error,\n searchAsYouType: options.searchAsYouType\n };\n\n this.lastQuery = query;\n this.lastQueryResults = null;\n this.currentError = error;\n this.queryError(dataToSendOnError);\n\n this.hideExecutingQueryAnimation();\n });\n\n let dataToSendDuringQuery: IDuringQueryEventArgs = {\n queryBuilder: queryBuilder,\n query: query,\n searchAsYouType: options.searchAsYouType,\n promise: promise\n };\n this.duringQueryEvent(dataToSendDuringQuery);\n\n return this.currentPendingQuery;\n }\n\n /**\n * Using the same parameters as the last successful query, fetch another batch of results. Particularly useful for infinite scrolling, for example.\n * @param count\n * @returns {any}\n */\n public fetchMore(count: number): Promise {\n if (this.currentPendingQuery != undefined) {\n return undefined;\n }\n // Send all pending events (think : search as you type)\n // This allows us to get the real search id for the results when the query returns\n this.usageAnalytics.sendAllPendingEvents();\n\n let queryBuilder = new QueryBuilder();\n this.continueLastQueryBuilder(queryBuilder, count);\n let query = queryBuilder.build();\n let endpointToUse = this.getEndpoint();\n let promise: any = this.currentPendingQuery = endpointToUse.search(query);\n let dataToSendDuringQuery: IDuringQueryEventArgs = {\n queryBuilder: queryBuilder,\n query: query,\n searchAsYouType: false,\n promise: promise\n };\n $$(this.element).trigger(QueryEvents.duringFetchMoreQuery, dataToSendDuringQuery);\n this.lastQueryBuilder = queryBuilder;\n this.lastQuery = query;\n promise.then((results?: IQueryResults) => {\n // We re-use the search id from the initial search here, even though the\n // server provided us with a new one. 'Fetch mores' are considered to be\n // the same query from an analytics point of view.\n\n this.currentPendingQuery = undefined;\n\n if (this.lastQueryResults == null) {\n this.lastQueryResults = results;\n } else {\n _.forEach(results.results, (result) => {\n this.lastQueryResults.results.push(result);\n });\n }\n\n let dataToSendOnPreprocessResult: IPreprocessResultsEventArgs = {\n queryBuilder: queryBuilder,\n query: query,\n results: results,\n searchAsYouType: false\n };\n this.preprocessResultsEvent(dataToSendOnPreprocessResult);\n QueryUtils.setIndexAndUidOnQueryResults(query, results, this.getLastSearchUid(), results.pipeline, results.splitTestRun);\n let dataToSendOnFetchMoreSuccess: IFetchMoreSuccessEventArgs = {\n query: query,\n results: results,\n queryBuilder: queryBuilder,\n searchAsYouType: false\n };\n this.fetchMoreSuccessEvent(dataToSendOnFetchMoreSuccess);\n });\n return this.currentPendingQuery;\n }\n\n /**\n * Cancel any pending query\n */\n public cancelQuery(): void {\n this.cancelAnyCurrentPendingQuery();\n this.hideExecutingQueryAnimation();\n }\n\n public deferExecuteQuery(options?: IQueryOptions) {\n this.showExecutingQueryAnimation();\n Defer.defer(() => this.executeQuery(options));\n }\n\n public ensureCreatedQueryBuilder() {\n if (!this.createdOneQueryBuilder) {\n this.createQueryBuilder(new DefaultQueryOptions());\n }\n }\n\n public createQueryBuilder(options: IQueryOptions): QueryBuilder {\n Assert.exists(options);\n\n this.createdOneQueryBuilder = true;\n\n let queryBuilder = new QueryBuilder();\n\n // Default values, components will probably override them if they exists\n queryBuilder.language = String['locale'];\n queryBuilder.firstResult = queryBuilder.firstResult || 0;\n\n // Allow outside code to customize the query builder. We provide two events,\n // to allow someone to have a peep at the query builder after the first phase\n // and add some stuff depending on what was put in there. The facets are using\n // this mechanism to generate query overrides.\n let dataToSendDuringBuildingQuery: IBuildingQueryEventArgs = {\n queryBuilder: queryBuilder,\n searchAsYouType: options.searchAsYouType,\n cancel: options.cancel\n };\n this.buildingQueryEvent(dataToSendDuringBuildingQuery);\n\n let dataToSendDuringDoneBuildingQuery: IDoneBuildingQueryEventArgs = {\n queryBuilder: queryBuilder,\n searchAsYouType: options.searchAsYouType,\n cancel: options.cancel\n };\n this.doneBuildingQueryEvent(dataToSendDuringDoneBuildingQuery);\n\n if (dataToSendDuringBuildingQuery.cancel || dataToSendDuringDoneBuildingQuery.cancel) {\n this.cancelQuery();\n return;\n }\n\n let pipeline = this.getPipelineInUrl();\n if (pipeline) {\n queryBuilder.pipeline = pipeline;\n }\n\n return queryBuilder;\n }\n\n public isStandaloneSearchbox(): boolean {\n return Utils.isNonEmptyString(this.options.searchPageUri);\n }\n\n public saveLastQuery() {\n this.localStorage.save({\n expire: new Date().getTime() + 1000 * 60 * 30, // Psoucy rolled dice and said 30 mins was the magic number\n hash: this.lastQueryHash,\n uid: this.lastSearchUid\n });\n }\n\n\n // This field is exposed for components rendered in the results or on-demand which\n // need access to the entire query. For example, the QuickviewDocument need to pass\n // the entire query to the Search API. For other components, QueryStateModel or\n // listening to events like 'doneBuildingQuery' is the way to go.\n public getLastQueryHash(): string {\n if (this.lastQueryHash != null) {\n return this.lastQueryHash;\n }\n this.loadLastQueryHash();\n return this.lastQueryHash || this.queryHash(new QueryBuilder().build());\n }\n\n private getLastSearchUid(): string {\n if (this.lastSearchUid != null) {\n return this.lastSearchUid;\n }\n this.loadLastQueryHash();\n return this.lastSearchUid;\n }\n\n private loadLastQueryHash() {\n let lastQuery = this.localStorage.load();\n if (lastQuery != null && new Date().getTime() <= lastQuery.expire) {\n this.lastQueryHash = lastQuery.hash;\n this.lastSearchUid = lastQuery.uid;\n this.localStorage.remove();\n }\n }\n\n private continueLastQueryBuilder(queryBuilder: QueryBuilder, count: number) {\n _.extend(queryBuilder, this.lastQueryBuilder);\n queryBuilder.firstResult = queryBuilder.firstResult + queryBuilder.numberOfResults;\n queryBuilder.numberOfResults = count;\n }\n\n private getPipelineInUrl() {\n return QueryUtils.getUrlParameter('pipeline');\n }\n\n private cancelAnyCurrentPendingQuery() {\n if (Utils.exists(this.currentPendingQuery)) {\n this.logger.debug('Cancelling current pending query');\n Promise.reject('Cancelling current pending query');\n this.currentPendingQuery = undefined;\n return true;\n }\n return false;\n }\n\n private showExecutingQueryAnimation() {\n if (!this.showingExecutingQueryAnimation) {\n $$(this.element).addClass('coveo-executing-query');\n this.showingExecutingQueryAnimation = true;\n }\n }\n\n private hideExecutingQueryAnimation() {\n if (this.showingExecutingQueryAnimation) {\n $$(this.element).removeClass('coveo-executing-query');\n this.showingExecutingQueryAnimation = false;\n }\n }\n\n private keepLastSearchUid(query: IQuery, queryResults: IQueryResults) {\n return this.getLastQueryHash() == this.queryHash(query, queryResults);\n }\n\n private queryHash(query: IQuery, queryResults?: IQueryResults): string {\n let queryHash = JSON.stringify(_.omit(query, 'firstResult', 'groupBy', 'debug'));\n if (queryResults != null) {\n queryHash += queryResults.pipeline;\n }\n return queryHash;\n }\n\n private getCallOptions(): IEndpointCallOptions {\n let args: IBuildingCallOptionsEventArgs = {\n options: {\n authentication: []\n }\n };\n\n $$(this.element).trigger(QueryEvents.buildingCallOptions, args);\n return args.options;\n }\n\n private newQueryEvent(args) {\n $$(this.element).trigger(QueryEvents.newQuery, args);\n }\n\n private buildingQueryEvent(args) {\n $$(this.element).trigger(QueryEvents.buildingQuery, args);\n }\n\n private doneBuildingQueryEvent(args) {\n $$(this.element).trigger(QueryEvents.doneBuildingQuery, args);\n }\n\n private duringQueryEvent(args) {\n $$(this.element).trigger(QueryEvents.duringQuery, args);\n }\n\n private querySuccessEvent(args) {\n $$(this.element).trigger(QueryEvents.querySuccess, args);\n }\n\n private fetchMoreSuccessEvent(args) {\n $$(this.element).trigger(QueryEvents.fetchMoreSuccess, args);\n }\n\n private deferredQuerySuccessEvent(args) {\n $$(this.element).trigger(QueryEvents.deferredQuerySuccess, args);\n }\n\n private queryError(args) {\n $$(this.element).trigger(QueryEvents.queryError, args);\n }\n\n private preprocessResultsEvent(args) {\n $$(this.element).trigger(QueryEvents.preprocessResults, args);\n }\n\n private noResultEvent(args) {\n $$(this.element).trigger(QueryEvents.noResults, args);\n }\n\n public debugInfo() {\n let info: any = {\n 'query': this.lastQuery,\n };\n\n if (this.lastQueryResults != null) {\n info.queryDuration = () => this.buildQueryDurationSection(this.lastQueryResults);\n info.results = () => _.omit(this.lastQueryResults, 'results');\n }\n\n if (this.currentError != null) {\n info.error = () => this.currentError;\n }\n\n return info;\n }\n\n private buildQueryDurationSection(queryResults: IQueryResults) {\n let dom = Dom.createElement('div', { className: 'coveo-debug-queryDuration' });\n let graph = Dom.createElement('div', { className: 'coveo-debug-durations' });\n let debugRef = BaseComponent.getComponentRef('Debug');\n dom.appendChild(graph);\n _.forEach(debugRef.durationKeys, (key: string) => {\n let duration = queryResults[key];\n if (duration != null) {\n graph.appendChild(Dom.createElement('div', {\n className: 'coveo-debug-duration',\n style: `width:${duration}px`,\n 'data-id': key\n }));\n let legend = Dom.createElement('div', { className: 'coveo-debug-duration-legend', 'data-id': key });\n dom.appendChild(legend);\n let keyDom = Dom.createElement('span', { className: 'coveo-debug-duration-label' });\n keyDom.appendChild(document.createTextNode(key));\n legend.appendChild(keyDom);\n let durationDom = Dom.createElement('span', { className: 'coveo-debug-duration-value' });\n durationDom.appendChild(document.createTextNode(duration));\n legend.appendChild(durationDom);\n }\n });\n return dom;\n }\n\n private logQueryInActionsHistory(query: IQuery, isFirstQuery: boolean) {\n let queryElement: CoveoAnalytics.HistoryQueryElement = {\n name: 'Query',\n value: query.q,\n time: JSON.stringify(new Date())\n };\n this.historyStore.addElement(queryElement);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/controllers/QueryController.ts\n **/","import { BaseComponent } from './BaseComponent';\n\nexport class RootComponent extends BaseComponent {\n constructor(public element: HTMLElement, public type: string) {\n super(element, type);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Base/RootComponent.ts\n **/","import { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\n\ndeclare var Coveo;\n\nexport interface IComponentHtmlElement extends HTMLElement {\n CoveoBoundComponents?: BaseComponent[];\n}\n\n/**\n * Every component in the framework ultimately inherits from this base component class.\n */\nexport class BaseComponent {\n /**\n * Allows component to log in the dev console.\n */\n public logger: Logger;\n /**\n * A disabled component will not participate in the query, or listen to {@link ComponentEvents}.\n * @type {boolean}\n */\n public disabled = false;\n /**\n * The static ID that each component need to be identified.
\n * For example, SearchButton -> static ID : SearchButton -> className : CoveoSearchButton\n */\n static ID: string;\n\n constructor(public element: HTMLElement, public type: string) {\n Assert.exists(element);\n Assert.isNonEmptyString(type);\n this.logger = new Logger(this);\n BaseComponent.bindComponentToElement(element, this);\n }\n\n /**\n * Return the debug info about this component.\n * @returns {any}\n */\n public debugInfo() {\n var info: any = {};\n info[this['constructor']['ID']] = this;\n return info;\n }\n\n /**\n * Disable the component.\n * Normally this means that the component will not execute handlers for the framework events (query events, for example).\n * Component are enabled by default on creation.\n */\n public disable() {\n this.disabled = true;\n }\n\n /**\n * Enable the component.\n * Normally this means that the component will execute handlers for the framework events (query events, for example).\n * Components are enabled by default on creation.\n */\n public enable() {\n this.disabled = false;\n }\n\n static bindComponentToElement(element: HTMLElement, component: BaseComponent) {\n Assert.exists(element);\n Assert.exists(component);\n Assert.isNonEmptyString(component.type);\n element[BaseComponent.computeCssClassNameForType(component.type)] = component;\n $$(element).addClass(BaseComponent.computeCssClassNameForType(component.type));\n BaseComponent.getBoundComponentsForElement(element).push(component);\n }\n\n static computeCssClassName(componentClass: any): string {\n return BaseComponent.computeCssClassNameForType(componentClass['ID']);\n }\n\n static computeCssClassNameForType(type: string): string {\n Assert.isNonEmptyString(type);\n return 'Coveo' + type;\n }\n\n static computeSelectorForType(type: string): string {\n Assert.isNonEmptyString(type);\n return '.' + BaseComponent.computeCssClassNameForType(type);\n }\n\n static getBoundComponentsForElement(element: IComponentHtmlElement): BaseComponent[] {\n Assert.exists(element);\n\n if (element.CoveoBoundComponents == null) {\n element.CoveoBoundComponents = [];\n }\n return element.CoveoBoundComponents;\n }\n\n static getComponentRef(component: string): any {\n return Coveo[component];\n }\n\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Base/BaseComponent.ts\n **/","import { ExpressionBuilder } from './ExpressionBuilder';\nimport { IRankingFunction } from '../../rest/RankingFunction';\nimport { IQueryFunction } from '../../rest/QueryFunction';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\nimport { IQuery } from '../../rest/Query';\nimport _ = require('underscore');\n\n/**\n * Describe the expressions part of a QueryBuilder.\n */\nexport interface IQueryBuilderExpression {\n /**\n * The whole expression\n */\n full?: string;\n /**\n * The full part, but without the constant.\n */\n withoutConstant?: string;\n /**\n * The constant part of the expression\n */\n constant?: string;\n /**\n * The basic part of the expression\n */\n basic?: string;\n /**\n * The advanced part of the expression\n */\n advanced?: string;\n}\n\n/**\n * The QueryBuilder is used to build a {@link IQuery} that will be able to be executed using the Search API.
\n * The class exposes several members and methods that help components and external code to build up the final query that is sent to the Search API.
\n */\nexport class QueryBuilder {\n /**\n * Used to build the basic part of the query expression.
\n * This part typically consists of user-entered content such as query keywords, etc.\n * @type {Coveo.ExpressionBuilder}\n */\n public expression: ExpressionBuilder = new ExpressionBuilder();\n /**\n * Used to build the advanced part of the query expression.
\n * This part is typically formed of filter expressions generated by components such as facets, external code, etc.\n * @type {Coveo.ExpressionBuilder}\n */\n public advancedExpression: ExpressionBuilder = new ExpressionBuilder();\n /**\n * Used to build the advanced part of the query expression.
\n * This part is similar to `advancedExpression`, but its content is interpreted as a constant expression by the index and it takes advantage of special caching features.\n * @type {Coveo.ExpressionBuilder}\n */\n public constantExpression: ExpressionBuilder = new ExpressionBuilder();\n /**\n * The contextual text.
\n * This is the contextual text part of the query. It uses the Coveo Machine Learning service to pick key keywords from the text and add them to the basic expression.\n * This field is mainly used to pass context such a case description, long textual query or any other form of text that might help in\n * refining the query.\n */\n public longQueryExpression: ExpressionBuilder = new ExpressionBuilder();\n /**\n * Used to build the disjunctive part of the query expression.
\n * When present, this part is evaluated separately from the other expressions and the matching results are merged to those matching expressions, `advancedExpression` and `constantExpression`.
\n * The final boolean expression for the query is thus (basic advanced constant) OR (disjunction).\n * @type {Coveo.ExpressionBuilder}\n */\n public disjunctionExpression: ExpressionBuilder = new ExpressionBuilder();\n /**\n * The hub value set from the {@link Analytics} component.
\n * Used for analytics reporting in the Coveo platform.\n */\n public searchHub: string;\n /**\n * The tab value set from the {@link Tab} component.\n */\n public tab: string;\n public language: string;\n /**\n * Name of the query pipeline to use.
\n * This specifies the name of the query pipeline to use for the query. If not specified, the default value is default, which means the default query pipeline will be used.\n */\n public pipeline: string;\n /**\n * The maximum age for cached query results, in milliseconds.
\n * If results for the exact same request (including user identities) are available in the in-memory cache, they will be used if they are not older than the specified value.
\n * Otherwise, the query will be sent to the index.\n */\n public maximumAge: number;\n /**\n * Whether to enable wildcards on the basic expression keywords.
\n * This enables the wildcard features of the index. Coveo Platform will expand keywords containing wildcard characters to the possible matching keywords to broaden the query.
\n * (see : https://onlinehelp.coveo.com/en/ces/7.0/user/using_wildcards_in_queries.htm).
\n * If not specified, this parameter defaults to false.\n */\n public enableWildcards: boolean;\n /**\n * Whether to enable question marks with wildcards.
\n * This enables using the question mark ? character within wildcard expressions.\n */\n public enableQuestionMarks: boolean;\n /**\n * Whether to disable the special query syntax such as field references for the basic query expression (parameter q).\n * It is equivalent to a No syntax block applied to the basic query expression.\n * If not specified, the parameter defaults to false.\n */\n public disableQuerySyntax: boolean = false;\n /**\n * Whether to enable the support for operator in lowercase (AND OR -> and or).\n */\n public enableLowercaseOperators: boolean;\n /**\n * Whether to enable partial matching of the basic expression keywords.
\n * By activating this, when the basic expression contains at least {@link IQuery.partialMatchKeywords}, documents containing only the number of keywords specified by {@link IQuery.partialMatchThreshold} will also match the query.
\n * Without this option, documents are required to contain all the keywords in order to match the query.
\n * If not specified, this parameter defaults to false.\n */\n public enablePartialMatch: boolean;\n /**\n * The minimum number of keywords needed to activate partial match.
\n * This specifies the minimum number of keywords needed for the partial match feature to activate.
\n * If the basic expression contains less than this number of keywords, no transformation is applied on the query.
\n * If not specified, this parameter defaults to 5.\n */\n public partialMatchKeywords: number;\n /**\n * The threshold to use for matching documents when partial match is enabled.
\n * This specifies the minimum number of query keywords that a document must contain when partial match is enabled. This value can either be an absolute number or a percentage value based on the total number of keywords.
\n * If not specified, this parameter defaults to 50%.\n */\n public partialMatchThreshold: string;\n /**\n * This is the 0-based index of the first result to return.
\n * If not specified, this parameter defaults to 0.\n */\n public firstResult: number = 0;\n /**\n * This is the number of results to return, starting from {@link IQuery.firstResult}.
\n * If not specified, this parameter defaults to 10.\n */\n public numberOfResults: number = 10;\n /**\n * This specifies the length (in number of characters) of the excerpts generated by the indexer based on the keywords present in the query.
\n * The index includes the top most interesting sentences (in the order they appear in the document) that fit in the specified number of characters.
\n * When not specified, the default value is 200.\n */\n public excerptLength: number;\n /**\n * This specifies a field on which {@link Folding} should be performed.
\n * Folding is a kind of duplicate filtering where only the first result with any given value of the field is included in the result set.
\n * It's typically used to return only one result in a conversation, for example when forum posts in a thread are indexed as separate items.\n */\n public filterField: string;\n /**\n * Number of results that should be folded, using the {@link IQuery.filterField}.\n */\n public filterFieldRange: number;\n /**\n * Specifies the `parentField` when doing parent-child loading (See : {@link Folding}).\n */\n public parentField: string;\n /**\n * Specifies the childField when doing parent-child loading (See : {@link Folding}).\n */\n public childField: string;\n public fieldsToInclude: string[];\n public requiredFields: string[] = [];\n public includeRequiredFields: boolean = false;\n public fieldsToExclude: string[];\n /**\n * Whether to enable query corrections on this query (see {@link DidYouMean}).\n */\n public enableDidYouMean: boolean = false;\n /**\n * Whether to enable debug info on the query.
\n * This will return additional information on the resulting JSON response from the Search API.
\n * Mostly: execution report (a detailed breakdown of the parsed and executed query).\n */\n public enableDebug: boolean = false;\n /**\n * Whether the index should take collaborative rating in account when ranking result (see : {@link ResultRating}).\n */\n public enableCollaborativeRating: boolean;\n /**\n * This specifies the sort criterion(s) to use to sort results. If not specified, this parameter defaults to relevancy.
\n * Possible values are :
\n * -- relevancy : This uses all the configured ranking weights as well as any specified ranking expressions to rank results.
\n * -- dateascending / datedescending Sort using the value of the `@date` field, which is typically the last modification date of an item in the index.
\n * -- qre : Sort using only the weights applied through ranking expressions. This is much like using `relevancy` except that automatic weights based on keyword proximity etc, are not computed.
\n * -- nosort : Do not sort the results. The order in which items are returned is essentially random.
\n * -- @field ascending / @field descending Sort using the value of a custom field.\n */\n public sortCriteria: string = 'relevancy';\n public sortField: string;\n public retrieveFirstSentences: boolean = true;\n public timezone: string;\n public queryUid: string;\n /**\n * This specifies an array of Query Function operation that will be executed on the results.\n */\n public queryFunctions: IQueryFunction[] = [];\n /**\n * This specifies an array of Ranking Function operations that will be executed on the results.\n */\n public rankingFunctions: IRankingFunction[] = [];\n /**\n * This specifies an array of Group By operations that can be performed on the query results to extract facets.\n */\n public groupByRequests: IGroupByRequest[] = [];\n public enableDuplicateFiltering: boolean = false;\n /**\n * The context is a map of key_value that can be used in the Query pipeline in the Coveo platform.
\n */\n public context: { [key: string]: any };\n /**\n * The actions history represents the past actions a user made and is used by the Coveo Machine Learning service to suggest recommendations.\n * It is generated by the page view script (https://github.com/coveo/coveo.analytics.js).\n */\n public actionsHistory: string;\n /**\n * This is the ID of the recommendation interface that generated the query.\n */\n public recommendation: string;\n /**\n * Build the current content or state of the query builder and return a {@link IQuery}.
\n * build can be called multiple times on the same QueryBuilder.\n * @returns {IQuery}\n */\n build(): IQuery {\n var query: IQuery = {\n q: this.expression.build(),\n aq: this.advancedExpression.build(),\n cq: this.constantExpression.build(),\n lq: this.longQueryExpression.build(),\n dq: this.disjunctionExpression.build(),\n\n searchHub: this.searchHub,\n tab: this.tab,\n language: this.language,\n pipeline: this.pipeline,\n maximumAge: this.maximumAge,\n\n wildcards: this.enableWildcards,\n questionMark: this.enableQuestionMarks,\n lowercaseOperators: this.enableLowercaseOperators,\n partialMatch: this.enablePartialMatch,\n partialMatchKeywords: this.partialMatchKeywords,\n partialMatchThreshold: this.partialMatchThreshold,\n\n firstResult: this.firstResult,\n numberOfResults: this.numberOfResults,\n excerptLength: this.excerptLength,\n filterField: this.filterField,\n filterFieldRange: this.filterFieldRange,\n parentField: this.parentField,\n childField: this.childField,\n fieldsToInclude: this.computeFieldsToInclude(),\n fieldsToExclude: this.fieldsToExclude,\n enableDidYouMean: this.enableDidYouMean,\n sortCriteria: this.sortCriteria,\n sortField: this.sortField,\n queryFunctions: this.queryFunctions,\n rankingFunctions: this.rankingFunctions,\n groupBy: this.groupByRequests,\n retrieveFirstSentences: this.retrieveFirstSentences,\n timezone: this.timezone,\n disableQuerySyntax: this.disableQuerySyntax,\n enableDuplicateFiltering: this.enableDuplicateFiltering,\n enableCollaborativeRating: this.enableCollaborativeRating,\n debug: this.enableDebug,\n context: this.context,\n actionsHistory: this.actionsHistory,\n recommendation: this.recommendation\n };\n return query;\n }\n\n /**\n * Return only the expression(s) part(s) of the query, as a string.
\n * This means the basic, advanced and constant part in a complete expression {@link IQuery.q}, {@link IQuery.aq}, {@link IQuery.cq}.\n * @returns {string}\n */\n public computeCompleteExpression(): string {\n return this.computeCompleteExpressionParts().full;\n }\n\n /**\n * Return only the expression(s) part(s) of the query, as an object.\n * @returns {{full: string, withoutConstant: string, constant: string}}\n */\n public computeCompleteExpressionParts(): IQueryBuilderExpression {\n var withoutConstant = ExpressionBuilder.merge(this.expression, this.advancedExpression);\n\n return {\n full: ExpressionBuilder.mergeUsingOr(ExpressionBuilder.merge(withoutConstant, this.constantExpression), this.disjunctionExpression).build(),\n withoutConstant: ExpressionBuilder.mergeUsingOr(withoutConstant, this.disjunctionExpression).build(),\n basic: ExpressionBuilder.mergeUsingOr(this.expression, this.disjunctionExpression).build(),\n advanced: ExpressionBuilder.mergeUsingOr(this.advancedExpression, this.disjunctionExpression).build(),\n constant: ExpressionBuilder.mergeUsingOr(this.constantExpression, this.disjunctionExpression).build()\n };\n }\n\n /**\n * Return only the expression(s) part(s) of the query, as a string, except the given expression.
\n * This is used by {@link Facet}, to build their group by request with query override.\n * @param except\n * @returns {string}\n */\n public computeCompleteExpressionExcept(except: string): string {\n return this.computeCompleteExpressionPartsExcept(except).full;\n }\n\n /**\n * Return only the expression(s) part(s) of the query, as an object, except the given expression.
\n * This is used by {@link Facet}, to build their group by request with query override.\n * @param except\n * @returns {{full: string, withoutConstant: string, constant: string}}\n */\n public computeCompleteExpressionPartsExcept(except: string): IQueryBuilderExpression {\n var withoutConstantAndExcept = ExpressionBuilder.merge(this.expression, this.advancedExpression);\n withoutConstantAndExcept.remove(except);\n\n var basicAndExcept = new ExpressionBuilder();\n basicAndExcept.fromExpressionBuilder(this.expression);\n basicAndExcept.remove(except);\n\n var advancedAndExcept = new ExpressionBuilder();\n advancedAndExcept.fromExpressionBuilder(this.advancedExpression);\n advancedAndExcept.remove(except);\n\n return {\n full: ExpressionBuilder.mergeUsingOr(ExpressionBuilder.merge(withoutConstantAndExcept, this.constantExpression), this.disjunctionExpression).build(),\n withoutConstant: ExpressionBuilder.mergeUsingOr(withoutConstantAndExcept, this.disjunctionExpression).build(),\n basic: ExpressionBuilder.mergeUsingOr(basicAndExcept, this.disjunctionExpression).build(),\n advanced: ExpressionBuilder.mergeUsingOr(advancedAndExcept, this.disjunctionExpression).build(),\n constant: ExpressionBuilder.mergeUsingOr(this.constantExpression, this.disjunctionExpression).build()\n };\n }\n\n /**\n * Add fields to specifically include when the results return.
\n * This can be used to accelerate the execution time of every query, as there is much less data to process if you whitelist specific fields.\n * @param fields\n */\n public addFieldsToInclude(fields: string[]) {\n this.fieldsToInclude = _.uniq((this.fieldsToInclude || []).concat(fields));\n }\n\n public addRequiredFields(fields: string[]) {\n this.requiredFields = _.uniq(this.requiredFields.concat(fields));\n }\n\n /**\n * Add fields to specifically exclude when the results return.
\n * This can be used to accelerate the execution time of every query, as there is much less data to process if you blacklist specific fields.\n * @param fields\n */\n public addFieldsToExclude(fields: string[]) {\n this.fieldsToExclude = _.uniq((this.fieldsToInclude || []).concat(fields));\n }\n\n public computeFieldsToInclude() {\n if (this.includeRequiredFields || this.fieldsToInclude != null) {\n return this.requiredFields.concat(this.fieldsToInclude || []);\n } else {\n return null;\n }\n }\n\n /**\n * Add a single context key->value pair to the query.
\n * This is used by the Query pipeline in the Coveo platform.\n * @param key\n * @param value\n */\n public addContextValue(key: string, value: any) {\n if (this.context == null) {\n this.context = {};\n }\n this.context[key] = value;\n }\n\n /**\n * Add a context object to the query.
\n * This can contain multiple key->value.
\n * This is used by the Query pipeline in the Coveo platform.\n * @param values\n */\n public addContext(values: { [key: string]: any }) {\n if (this.context == null) {\n this.context = {};\n }\n _.extend(this.context, values);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Base/QueryBuilder.ts\n **/","import { Assert } from '../../misc/Assert';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport _ = require('underscore');\n\n/**\n * An `ExpressionBuilder` that is mostly used by the {@link QueryBuilder}.
\n * It is used to build a single query expression.
\n * It allows combining multiple expression parts into a single string and provides utilities to generate common expression parts.\n */\nexport class ExpressionBuilder {\n private parts: string[] = []; // he he he\n public wrapParts: boolean = true;\n\n /**\n * Add a new part to the expression.\n * @param expression\n */\n public add(expression: string) {\n Assert.isNonEmptyString(expression);\n this.parts.push(expression);\n }\n\n /**\n * Take another `ExpressionBuilder`, and copy it.\n * @param expression\n */\n public fromExpressionBuilder(expression: ExpressionBuilder) {\n this.parts = this.parts.concat(expression.parts);\n }\n\n /**\n * Add a new part to the expression, but specific for field values
\n * eg @field=(value1,value2,value3).\n * @param field The field for which to create an expression (e.g.: @foo).\n * @param operator The operator to use e.g.: = (equal) == (strict equal) <> (not equal).\n * @param values The values to put in the expression.\n */\n public addFieldExpression(field: string, operator: string, values: string[]) {\n Assert.isNonEmptyString(field);\n Assert.stringStartsWith(field, '@');\n Assert.isNonEmptyString(operator);\n Assert.isLargerOrEqualsThan(1, values.length);\n\n this.add(QueryUtils.buildFieldExpression(field, operator, values));\n }\n\n /**\n * Add a new part to the expression, but specific for field values
\n * eg : NOT @field==(value1, value2, value3).\n * @param field The field for which to create an expression (e.g.: @foo)\n * @param values The values to put in the expression.\n */\n public addFieldNotEqualExpression(field: string, values: string[]) {\n Assert.isNonEmptyString(field);\n Assert.stringStartsWith(field, '@');\n Assert.isLargerOrEqualsThan(1, values.length);\n\n this.add(QueryUtils.buildFieldNotEqualExpression(field, values));\n }\n\n /**\n * Removes an expression from the builder.\n * @param expression\n */\n public remove(expression: string) {\n Assert.isNonEmptyString(expression);\n var index = _.indexOf(this.parts, expression);\n if (index != -1) {\n this.parts.splice(_.indexOf(this.parts, expression), 1);\n }\n }\n\n /**\n * Checks if the builder is currently empty.\n * @returns {boolean}\n */\n public isEmpty(): boolean {\n return this.parts.length == 0;\n }\n\n /**\n * Builds the expression string by combining all the parts together.
\n * @param exp expression to join the different parts, default to a space.\n * @returns {any}\n */\n public build(exp: string = ' '): string {\n if (this.parts.length == 0) {\n return undefined;\n } else if (this.parts.length == 1) {\n return this.parts[0];\n } else if (this.wrapParts) {\n return '(' + this.parts.join(')' + exp + '(') + ')';\n } else {\n return this.parts.join(exp);\n }\n }\n\n /**\n * Merges several `ExpressionBuilder` together.\n * @param builders Builders that should be merged.\n * @returns {Coveo.ExpressionBuilder}\n */\n static merge(...builders: ExpressionBuilder[]): ExpressionBuilder {\n var merged = new ExpressionBuilder();\n _.each(builders, (builder: ExpressionBuilder) => {\n merged.parts = merged.parts.concat(builder.parts);\n });\n\n return merged;\n }\n\n /**\n * Merges several `ExpressionBuilder` together, using the OR operator.\n * @param builders Builders that should be merged.\n * @returns {Coveo.ExpressionBuilder}\n */\n static mergeUsingOr(...builders: ExpressionBuilder[]): ExpressionBuilder {\n var nonEmpty = _.filter(builders, (b: ExpressionBuilder) => !b.isEmpty());\n\n var merged = new ExpressionBuilder();\n\n if (nonEmpty.length == 1) {\n merged.parts = [].concat(nonEmpty[0].parts);\n } else if (nonEmpty.length > 1) {\n var parts = _.map(nonEmpty, b => b.build());\n merged.add('(' + parts.join(') OR (') + ')');\n }\n return merged;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Base/ExpressionBuilder.ts\n **/","import { ISearchEndpoint, IEndpointCallOptions, IGetDocumentOptions, ISearchEndpointOptions, IViewAsHtmlOptions } from './SearchEndpointInterface';\nimport { IQuery } from './Query';\nimport { ITaggingRequest } from './TaggingRequest';\nimport { IRatingRequest } from './RatingRequest';\nimport { IRevealQuerySuggestRequest } from './RevealQuerySuggest';\nimport { IRevealQuerySuggestResponse } from './RevealQuerySuggest';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { IEndpointError } from '../rest/EndpointError';\nimport { IExtension } from '../rest/Extension';\nimport { IQueryResults } from './QueryResults';\nimport { IFieldDescription } from '../rest/FieldDescription';\nimport { IListFieldValuesRequest } from './ListFieldValuesRequest';\nimport { ISubscriptionRequest, ISubscription } from './Subscription';\nimport { ISentryLog } from './SentryLog';\nimport _ = require('underscore');\n\nexport class SearchEndpointWithDefaultCallOptions implements ISearchEndpoint {\n options: ISearchEndpointOptions;\n\n constructor(private endpoint: ISearchEndpoint, private callOptions?: IEndpointCallOptions) {\n this.options = endpoint.options;\n }\n\n public getBaseUri(): string {\n return this.endpoint.getBaseUri();\n }\n\n public getBaseAlertsUri(): string {\n return this.endpoint.getBaseAlertsUri();\n }\n\n public getAuthenticationProviderUri(provider: string, returnUri: string, message: string): string {\n return this.endpoint.getAuthenticationProviderUri(provider, returnUri, message);\n }\n\n public isJsonp(): boolean {\n return this.endpoint.isJsonp();\n }\n\n public search(query: IQuery, callOptions?: IEndpointCallOptions): Promise {\n return this.endpoint.search(query, this.enrichCallOptions(callOptions));\n }\n\n public getExportToExcelLink(query: IQuery, numberOfResults: number, callOptions?: IEndpointCallOptions): string {\n return this.endpoint.getExportToExcelLink(query, numberOfResults, this.enrichCallOptions(callOptions));\n }\n\n public tagDocument(taggingRequest: ITaggingRequest, callOptions?: IEndpointCallOptions): Promise {\n return this.endpoint.tagDocument(taggingRequest, this.enrichCallOptions(taggingRequest));\n }\n\n public getRevealQuerySuggest(request: IRevealQuerySuggestRequest, callOptions?: IEndpointCallOptions): Promise {\n return this.endpoint.getRevealQuerySuggest(request, this.enrichCallOptions(callOptions));\n }\n\n public rateDocument(ratingRequest: IRatingRequest, callOptions?: IEndpointCallOptions): Promise {\n return this.endpoint.rateDocument(ratingRequest, this.enrichCallOptions(callOptions));\n }\n\n public getRawDataStream(documentUniqueId: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions): Promise {\n return this.endpoint.getRawDataStream(documentUniqueId, dataStreamType, this.enrichCallOptions(callOptions));\n }\n\n public getDocument(documentUniqueId: string, callOptions?: IGetDocumentOptions): Promise {\n return this.endpoint.getDocument(documentUniqueId, this.enrichCallOptions(callOptions));\n }\n\n public getDocumentText(documentUniqueID: string, callOptions?: IEndpointCallOptions): Promise {\n return this.endpoint.getDocumentText(documentUniqueID, this.enrichCallOptions(callOptions));\n }\n\n public getDocumentHtml(documentUniqueID: string, callOptions?: IViewAsHtmlOptions): Promise {\n return this.endpoint.getDocumentHtml(documentUniqueID, this.enrichCallOptions(callOptions));\n }\n\n public getViewAsHtmlUri(documentUniqueID: string, callOptions?: IViewAsHtmlOptions): string {\n return this.endpoint.getViewAsHtmlUri(documentUniqueID, this.enrichCallOptions(callOptions));\n }\n\n public getViewAsDatastreamUri(documentUniqueID: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions): string {\n return this.endpoint.getViewAsDatastreamUri(documentUniqueID, dataStreamType, this.enrichCallOptions(callOptions));\n }\n\n public listFieldValues(request: IListFieldValuesRequest, callOptions?: IEndpointCallOptions): Promise {\n return this.endpoint.listFieldValues(request, this.enrichCallOptions(callOptions));\n }\n\n public listFields(callOptions?: IEndpointCallOptions): Promise {\n return this.endpoint.listFields(this.enrichCallOptions(callOptions));\n }\n\n public extensions(callOptions?: IEndpointCallOptions): Promise | Promise {\n return this.endpoint.extensions(this.enrichCallOptions(callOptions));\n }\n\n public follow(request: ISubscriptionRequest): Promise {\n return this.endpoint.follow(request);\n }\n\n public listSubscriptions(page: number): Promise {\n return this.endpoint.listSubscriptions(page);\n }\n\n public updateSubscription(subscription: ISubscription): Promise {\n return this.endpoint.updateSubscription(subscription);\n }\n\n public deleteSubscription(subscription: ISubscription): Promise {\n return this.endpoint.deleteSubscription(subscription);\n }\n\n public logError(sentryLog: ISentryLog): Promise {\n return this.endpoint.logError(sentryLog);\n }\n\n private enrichCallOptions(callOptions?: T): T {\n return _.extend({}, callOptions, this.callOptions);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/rest/SearchEndpointWithDefaultCallOptions.ts\n **/","\"use strict\";\nvar analytics = require('./analytics');\nexports.analytics = analytics;\nvar SimpleAnalytics = require('./simpleanalytics');\nexports.SimpleAnalytics = SimpleAnalytics;\nvar history = require('./history');\nexports.history = history;\nvar donottrack = require('./donottrack');\nexports.donottrack = donottrack;\nvar storage = require('./storage');\nexports.storage = storage;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/index.js\n ** module id = 82\n ** module chunks = 0 1\n **/","\"use strict\";\nvar history_1 = require('./history');\nrequire('whatwg-fetch');\nexports.Version = 'v15';\nexports.Endpoints = {\n default: 'https://usageanalytics.coveo.com',\n production: 'https://usageanalytics.coveo.com',\n dev: 'https://usageanalyticsdev.coveo.com',\n staging: 'https://usageanalyticsstaging.coveo.com'\n};\n;\nfunction defaultResponseTransformer(response) {\n return response.json().then(function (data) {\n data.raw = response;\n return data;\n });\n}\nvar Client = (function () {\n function Client(opts) {\n if (typeof opts === 'undefined') {\n throw new Error('You have to pass options to this constructor');\n }\n this.endpoint = opts.endpoint || exports.Endpoints.default;\n this.token = opts.token;\n this.version = opts.version || exports.Version;\n }\n Client.prototype.sendEvent = function (eventType, request) {\n return fetch(this.getRestEndpoint() + \"/analytics/\" + eventType, {\n method: 'POST',\n headers: this.getHeaders(),\n mode: 'cors',\n body: JSON.stringify(request),\n credentials: 'include'\n });\n };\n Client.prototype.sendSearchEvent = function (request) {\n return this.sendEvent('search', request).then(defaultResponseTransformer);\n };\n Client.prototype.sendClickEvent = function (request) {\n return this.sendEvent('click', request).then(defaultResponseTransformer);\n };\n Client.prototype.sendCustomEvent = function (request) {\n return this.sendEvent('custom', request).then(defaultResponseTransformer);\n };\n Client.prototype.sendViewEvent = function (request) {\n if (request.referrer === '') {\n delete request.referrer;\n }\n var store = new history_1.HistoryStore();\n var historyElement = {\n name: 'PageView',\n value: request.contentIdValue,\n time: JSON.stringify(new Date()),\n };\n store.addElement(historyElement);\n return this.sendEvent('view', request).then(defaultResponseTransformer);\n };\n Client.prototype.getVisit = function () {\n return fetch(this.getRestEndpoint() + \"/analytics/visit\")\n .then(defaultResponseTransformer);\n };\n Client.prototype.getHealth = function () {\n return fetch(this.getRestEndpoint() + \"/analytics/monitoring/health\")\n .then(defaultResponseTransformer);\n };\n Client.prototype.getRestEndpoint = function () {\n return this.endpoint + \"/rest/\" + this.version;\n };\n Client.prototype.getHeaders = function () {\n var headers = {\n 'Content-Type': \"application/json\"\n };\n if (this.token) {\n headers['Authorization'] = \"Bearer \" + this.token;\n }\n return headers;\n };\n return Client;\n}());\nexports.Client = Client;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Client;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/analytics.js\n ** module id = 83\n ** module chunks = 0 1\n **/","\"use strict\";\nvar storage_1 = require('./storage');\nvar detector = require('./detector');\nexports.STORE_KEY = '__coveo.analytics.history';\nexports.MAX_NUMBER_OF_HISTORY_ELEMENTS = 20;\nexports.MIN_THRESHOLD_FOR_DUPLICATE_VALUE = 1000 * 60;\nexports.MAX_VALUE_SIZE = 75;\nvar HistoryStore = (function () {\n function HistoryStore(store) {\n this.store = store || storage_1.getAvailableStorage();\n if (!(this.store instanceof storage_1.CookieStorage) && detector.hasCookieStorage()) {\n new storage_1.CookieStorage().removeItem(exports.STORE_KEY);\n }\n }\n ;\n HistoryStore.prototype.addElement = function (elem) {\n elem.internalTime = new Date().getTime();\n this.cropQueryElement(elem);\n var currentHistory = this.getHistoryWithInternalTime();\n if (currentHistory != null) {\n if (this.isValidEntry(elem)) {\n this.setHistory([elem].concat(currentHistory));\n }\n }\n else {\n this.setHistory([elem]);\n }\n };\n HistoryStore.prototype.getHistory = function () {\n var history = this.getHistoryWithInternalTime();\n return this.stripInternalTime(history);\n };\n HistoryStore.prototype.getHistoryWithInternalTime = function () {\n try {\n return JSON.parse(this.store.getItem(exports.STORE_KEY));\n }\n catch (e) {\n return [];\n }\n };\n HistoryStore.prototype.setHistory = function (history) {\n try {\n this.store.setItem(exports.STORE_KEY, JSON.stringify(history.slice(0, exports.MAX_NUMBER_OF_HISTORY_ELEMENTS)));\n }\n catch (e) { }\n };\n HistoryStore.prototype.clear = function () {\n try {\n this.store.removeItem(exports.STORE_KEY);\n }\n catch (e) { }\n };\n HistoryStore.prototype.getMostRecentElement = function () {\n var currentHistory = this.getHistoryWithInternalTime();\n if (currentHistory != null) {\n var sorted = currentHistory.sort(function (first, second) {\n if (first.internalTime == null && second.internalTime == null) {\n return 0;\n }\n if (first.internalTime == null && second.internalTime != null) {\n return 1;\n }\n if (first.internalTime != null && second.internalTime == null) {\n return -1;\n }\n return second.internalTime - first.internalTime;\n });\n return sorted[0];\n }\n return null;\n };\n HistoryStore.prototype.cropQueryElement = function (elem) {\n if (elem.name && elem.name.toLowerCase() == 'query' && elem.value != null) {\n elem.value = elem.value.slice(0, exports.MAX_VALUE_SIZE);\n }\n };\n HistoryStore.prototype.isValidEntry = function (elem) {\n var lastEntry = this.getMostRecentElement();\n if (lastEntry && lastEntry.value == elem.value) {\n return elem.internalTime - lastEntry.internalTime > exports.MIN_THRESHOLD_FOR_DUPLICATE_VALUE;\n }\n return true;\n };\n HistoryStore.prototype.stripInternalTime = function (history) {\n history.forEach(function (part, index, array) {\n delete part.internalTime;\n });\n return history;\n };\n return HistoryStore;\n}());\nexports.HistoryStore = HistoryStore;\n;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = HistoryStore;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/history.js\n ** module id = 84\n ** module chunks = 0 1\n **/","\"use strict\";\nvar detector = require('./detector');\nvar cookieutils_1 = require('./cookieutils');\nexports.preferredStorage = null;\nfunction getAvailableStorage() {\n if (exports.preferredStorage) {\n return exports.preferredStorage;\n }\n if (detector.hasLocalStorage()) {\n return localStorage;\n }\n if (detector.hasCookieStorage()) {\n return new CookieStorage();\n }\n if (detector.hasSessionStorage()) {\n return sessionStorage;\n }\n return new NullStorage();\n}\nexports.getAvailableStorage = getAvailableStorage;\nvar CookieStorage = (function () {\n function CookieStorage() {\n }\n CookieStorage.prototype.getItem = function (key) {\n return cookieutils_1.Cookie.get(key);\n };\n CookieStorage.prototype.removeItem = function (key) {\n cookieutils_1.Cookie.erase(key);\n };\n CookieStorage.prototype.setItem = function (key, data) {\n cookieutils_1.Cookie.set(key, data);\n };\n return CookieStorage;\n}());\nexports.CookieStorage = CookieStorage;\nvar NullStorage = (function () {\n function NullStorage() {\n }\n NullStorage.prototype.getItem = function (key) { return null; };\n NullStorage.prototype.removeItem = function (key) { };\n NullStorage.prototype.setItem = function (key, data) { };\n return NullStorage;\n}());\nexports.NullStorage = NullStorage;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/storage.js\n ** module id = 85\n ** module chunks = 0 1\n **/","\"use strict\";\nfunction hasLocalStorage() {\n try {\n return 'localStorage' in window && window['localStorage'] !== null;\n }\n catch (e) {\n return false;\n }\n}\nexports.hasLocalStorage = hasLocalStorage;\n;\nfunction hasSessionStorage() {\n try {\n return 'sessionStorage' in window && window['sessionStorage'] !== null;\n }\n catch (e) {\n return false;\n }\n}\nexports.hasSessionStorage = hasSessionStorage;\n;\nfunction hasCookieStorage() {\n return navigator.cookieEnabled;\n}\nexports.hasCookieStorage = hasCookieStorage;\n;\nfunction hasDocument() {\n return document !== null;\n}\nexports.hasDocument = hasDocument;\n;\nfunction hasDocumentLocation() {\n return hasDocument() && document.location !== null;\n}\nexports.hasDocumentLocation = hasDocumentLocation;\n;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/detector.js\n ** module id = 86\n ** module chunks = 0 1\n **/","\"use strict\";\nvar Cookie = (function () {\n function Cookie() {\n }\n Cookie.set = function (name, value, expiration) {\n var domain, domainParts, date, expires, host;\n if (expiration) {\n date = new Date();\n date.setTime(date.getTime() + expiration);\n expires = '; expires=' + date.toGMTString();\n }\n else {\n expires = '';\n }\n host = location.hostname;\n if (host.indexOf('.') === -1) {\n document.cookie = name + '=' + value + expires + '; path=/';\n }\n else {\n domainParts = host.split('.');\n domainParts.shift();\n domain = '.' + domainParts.join('.');\n document.cookie = name + '=' + value + expires + '; path=/; domain=' + domain;\n if (Cookie.get(name) == null || Cookie.get(name) != value) {\n domain = '.' + host;\n document.cookie = name + '=' + value + expires + '; path=/; domain=' + domain;\n }\n }\n };\n Cookie.get = function (name) {\n var cookiePrefix = name + '=';\n var cookieArray = document.cookie.split(';');\n for (var i = 0; i < cookieArray.length; i++) {\n var cookie = cookieArray[i];\n cookie = cookie.replace(/^\\s+/, '');\n if (cookie.indexOf(cookiePrefix) == 0) {\n return cookie.substring(cookiePrefix.length, cookie.length);\n }\n }\n return null;\n };\n Cookie.erase = function (name) {\n Cookie.set(name, '', -1);\n };\n return Cookie;\n}());\nexports.Cookie = Cookie;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/cookieutils.js\n ** module id = 87\n ** module chunks = 0 1\n **/","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/whatwg-fetch/fetch.js\n ** module id = 88\n ** module chunks = 0 1\n **/","\"use strict\";\nvar analytics = require('./analytics');\nvar objectassign_1 = require('./objectassign');\nvar utils_1 = require('./utils');\nvar SimpleAPI = (function () {\n function SimpleAPI() {\n }\n SimpleAPI.prototype.init = function (token, endpoint) {\n if (typeof token === 'undefined') {\n throw new Error(\"You must pass your token when you call 'init'\");\n }\n if (typeof token === 'string') {\n endpoint = endpoint || analytics.Endpoints.default;\n this.client = new analytics.Client({\n token: token,\n endpoint: endpoint\n });\n }\n else if (typeof token === 'object' && typeof token.sendEvent !== 'undefined') {\n this.client = token;\n }\n else {\n throw new Error(\"You must pass either your token or a valid object when you call 'init'\");\n }\n };\n SimpleAPI.prototype.send = function (event, customData) {\n if (typeof this.client == 'undefined') {\n throw new Error(\"You must call init before sending an event\");\n }\n customData = objectassign_1.default({}, {\n hash: window.location.hash\n }, customData);\n switch (event) {\n case 'pageview':\n this.client.sendViewEvent({\n location: window.location.toString(),\n referrer: document.referrer,\n language: document.documentElement.lang,\n title: document.title,\n contentIdKey: utils_1.popFromObject(customData, 'contentIdKey'),\n contentIdValue: utils_1.popFromObject(customData, 'contentIdValue'),\n contentType: utils_1.popFromObject(customData, 'contentType'),\n anonymous: utils_1.popFromObject(customData, 'anonymous'),\n customData: customData\n });\n return;\n default:\n throw new Error(\"Event type: '\" + event + \"' not implemented\");\n }\n };\n SimpleAPI.prototype.onLoad = function (callback) {\n if (typeof callback == 'undefined') {\n throw new Error(\"You must pass a function when you call 'onLoad'\");\n }\n callback();\n };\n return SimpleAPI;\n}());\nexports.SimpleAPI = SimpleAPI;\nvar simpleAPI = new SimpleAPI();\nexports.SimpleAnalytics = function (action) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var actionFunction = simpleAPI[action];\n if (actionFunction) {\n return actionFunction.apply(simpleAPI, params);\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports.SimpleAnalytics;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/simpleanalytics.js\n ** module id = 89\n ** module chunks = 0 1\n **/","\"use strict\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nvar objectAssignPonyfill = function (target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n sources.forEach(function (source) {\n var from = Object(source);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n output[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n var symbols = getOwnPropertySymbols(from);\n symbols.forEach(function (symbol) {\n if (propIsEnumerable.call(from, symbol)) {\n output[symbol] = from[symbol];\n }\n });\n }\n });\n return output;\n};\nexports.ponyfill = objectAssignPonyfill;\nexports.assign = typeof Object.assign === 'function' ? Object.assign : objectAssignPonyfill;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports.assign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/objectassign.js\n ** module id = 90\n ** module chunks = 0 1\n **/","\"use strict\";\nfunction popFromObject(object, key) {\n if (object) {\n var value = object[key];\n delete object[key];\n return value;\n }\n}\nexports.popFromObject = popFromObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/utils.js\n ** module id = 91\n ** module chunks = 0 1\n **/","\"use strict\";\nexports.doNotTrack = [true, 'yes', '1'].indexOf(navigator.doNotTrack || navigator.msDoNotTrack || window.doNotTrack);\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports.doNotTrack;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/coveo.analytics/dist/donottrack.js\n ** module id = 92\n ** module chunks = 0 1\n **/","/// \n\nimport { Facet } from '../ui/Facet/Facet';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\nimport { IGroupByResult } from '../rest/GroupByResult';\nimport { ExpressionBuilder } from '../ui/Base/ExpressionBuilder';\nimport { FacetValue } from '../ui/Facet/FacetValues';\nimport { Utils } from '../utils/Utils';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { FacetSearchParameters } from '../ui/Facet/FacetSearchParameters';\nimport { Assert } from '../misc/Assert';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { FacetUtils } from '../ui/Facet/FacetUtils';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IGroupByValue } from '../rest/GroupByValue';\nimport { IEndpointError } from '../rest/EndpointError';\nimport { IQueryBuilderExpression } from '../ui/Base/QueryBuilder';\nimport _ = require('underscore');\n\nexport class FacetQueryController {\n public expressionToUseForFacetSearch: string;\n public basicExpressionToUseForFacetSearch: string;\n public advancedExpressionToUseForFacetSearch: string;\n public constantExpressionToUseForFacetSearch: string;\n public lastGroupByRequestIndex: number;\n public lastGroupByRequest: IGroupByRequest;\n public lastGroupByResult: IGroupByResult;\n\n private currentSearchPromise: Promise;\n\n constructor(public facet: Facet) {\n }\n\n /**\n * Reset the expression for the facet search, used when a new query is triggered\n */\n public prepareForNewQuery() {\n this.lastGroupByRequestIndex = undefined;\n this.expressionToUseForFacetSearch = undefined;\n this.constantExpressionToUseForFacetSearch = undefined;\n }\n\n /**\n * Compute the filter expression that the facet need to output for the query\n * @returns {string}\n */\n public computeOurFilterExpression(): string {\n let builder = new ExpressionBuilder();\n let selected = this.facet.values.getSelected();\n if (selected.length > 0) {\n if (this.facet.options.useAnd) {\n _.each(selected, (value: FacetValue) => {\n builder.addFieldExpression(this.facet.options.field, '==', [value.value]);\n });\n } else {\n builder.addFieldExpression(this.facet.options.field, '==', _.map(selected, (value: FacetValue) => value.value));\n }\n }\n let excluded = this.facet.values.getExcluded();\n if (excluded.length > 0) {\n builder.addFieldNotEqualExpression(this.facet.options.field, _.map(excluded, (value: FacetValue) => value.value));\n }\n if (Utils.isNonEmptyString(this.facet.options.additionalFilter)) {\n builder.add(this.facet.options.additionalFilter);\n }\n return builder.build();\n }\n\n /**\n * Build the group by request for the facet, and insert it in the query builder\n * @param queryBuilder\n */\n public putGroupByIntoQueryBuilder(queryBuilder: QueryBuilder) {\n Assert.exists(queryBuilder);\n\n let allowedValues = this.createGroupByAllowedValues();\n let groupByRequest = this.createBasicGroupByRequest(allowedValues);\n\n let queryOverrideObject = this.createGroupByQueryOverride(queryBuilder);\n if (!Utils.isNullOrUndefined(queryOverrideObject)) {\n groupByRequest.queryOverride = queryOverrideObject.basic;\n groupByRequest.advancedQueryOverride = queryOverrideObject.advanced;\n groupByRequest.constantQueryOverride = queryOverrideObject.constant;\n this.expressionToUseForFacetSearch = queryOverrideObject.withoutConstant;\n this.basicExpressionToUseForFacetSearch = queryOverrideObject.basic;\n this.advancedExpressionToUseForFacetSearch = queryOverrideObject.advanced;\n this.constantExpressionToUseForFacetSearch = queryOverrideObject.constant;\n } else {\n let parts = queryBuilder.computeCompleteExpressionParts();\n this.expressionToUseForFacetSearch = parts.withoutConstant == null ? '@uri' : parts.withoutConstant;\n this.basicExpressionToUseForFacetSearch = parts.basic == null ? '@uri' : parts.basic;\n this.advancedExpressionToUseForFacetSearch = parts.advanced;\n this.constantExpressionToUseForFacetSearch = parts.constant;\n }\n this.lastGroupByRequestIndex = queryBuilder.groupByRequests.length;\n this.lastGroupByRequest = groupByRequest;\n queryBuilder.groupByRequests.push(groupByRequest);\n }\n\n /**\n * Search inside the facet, using a group by request\n * @param params\n * @param oldLength Optional params, used by the search method to call itself recursively to fetch all required values\n * @returns {Promise|Promise}\n */\n public search(params: FacetSearchParameters, oldLength = params.nbResults): Promise {\n return new Promise((resolve, reject) => {\n let onResult = (fieldValues?: IIndexFieldValue[]) => {\n let newLength = fieldValues.length;\n fieldValues = this.checkForFacetSearchValuesToRemove(fieldValues, params.valueToSearch);\n if (FacetUtils.needAnotherFacetSearch(fieldValues.length, newLength, oldLength, 5)) {\n // This means that we removed enough values from the returned one that we need to perform a new search with more values requested.\n params.nbResults += 5;\n return this.search(params, fieldValues.length);\n } else {\n resolve(fieldValues);\n }\n };\n\n let searchPromise = this.facet.getEndpoint().search(params.getQuery());\n this.currentSearchPromise = searchPromise;\n\n searchPromise.then((queryResults: IQueryResults) => {\n if (this.currentSearchPromise == searchPromise) {\n // params.getQuery() will generate a query for all excluded values + some new values\n // there is no clean way to do a group by and remove some values\n // so instead we request more values than we need, and crop all the one we don't want\n let valuesCropped: IGroupByValue[] = [];\n if (queryResults.groupByResults && queryResults.groupByResults[0]) {\n _.each(queryResults.groupByResults[0].values, (v: IGroupByValue) => {\n if (v.lookupValue) {\n if (!_.contains(params.alwaysExclude, v.lookupValue.toLowerCase())) {\n valuesCropped.push(v);\n }\n } else {\n if (!_.contains(params.alwaysExclude, v.value.toLowerCase())) {\n valuesCropped.push(v);\n }\n }\n });\n }\n onResult(_.first(valuesCropped, params.nbResults));\n } else {\n reject();\n }\n })\n .catch((error: IEndpointError) => {\n reject(error);\n });\n });\n }\n\n public fetchMore(numberOfValuesToFetch: number) {\n let params = new FacetSearchParameters(this.facet);\n params.alwaysInclude = this.facet.options.allowedValues || _.pluck(this.facet.values.getAll(), 'value');\n params.nbResults = numberOfValuesToFetch;\n return this.facet.getEndpoint().search(params.getQuery());\n }\n\n public searchInFacetToUpdateDelta(facetValues: FacetValue[]) {\n let params = new FacetSearchParameters(this.facet);\n let query = params.getQuery();\n query.aq = this.computeOurFilterExpression();\n _.each(facetValues, (facetValue: FacetValue) => {\n facetValue.waitingForDelta = true;\n });\n query.groupBy = [this.createBasicGroupByRequest(_.map(facetValues, (facetValue: FacetValue) => facetValue.value))];\n query.groupBy[0].completeFacetWithStandardValues = false;\n return this.facet.getEndpoint().search(query);\n }\n\n protected createGroupByAllowedValues() {\n // if you want to keep displayed values next time, take all current values as allowed values\n // otherwise take only the selected value\n if (this.facet.options.allowedValues != undefined) {\n return this.facet.options.allowedValues;\n } else if (this.facet.options.customSort != undefined) {\n // If there is a custom sort, we still need to add selectedValues to the group by\n // Filter out duplicates with a lower case comparison on the value\n return this.getUnionWithCustomSortLowercase(this.facet.options.customSort, this.getAllowedValuesFromSelected());\n } else {\n return _.map(this.getAllowedValuesFromSelected(), (facetValue: FacetValue) => facetValue.value);\n }\n }\n\n private getUnionWithCustomSortLowercase(customSort: string[], facetValues: FacetValue[]) {\n // This will take the custom sort, compare it against the passed in facetValues\n // The comparison is lowercase.\n // The union of the 2 arrays with duplicated filtered out is returned.\n\n let toCompare = _.map(customSort, (val: string) => {\n return val.toLowerCase();\n });\n let filtered = _.chain(facetValues)\n .filter((facetValue: FacetValue) => {\n return !_.contains(toCompare, facetValue.value.toLowerCase());\n })\n .map((facetValue: FacetValue) => {\n return facetValue.value;\n })\n .value();\n return _.compact(customSort.concat(filtered));\n }\n\n protected getAllowedValuesFromSelected() {\n let facetValues: FacetValue[] = [];\n if (this.facet.options.useAnd || !this.facet.keepDisplayedValuesNextTime) {\n let selected = this.facet.values.getSelected();\n if (selected.length == 0) {\n return undefined;\n }\n facetValues = this.facet.values.getSelected();\n } else {\n facetValues = this.facet.values.getAll();\n }\n return facetValues;\n }\n\n private createGroupByQueryOverride(queryBuilder: QueryBuilder): IQueryBuilderExpression {\n let additionalFilter = this.facet.options.additionalFilter ? this.facet.options.additionalFilter : '';\n let queryOverrideObject: IQueryBuilderExpression = undefined;\n\n if (this.facet.options.useAnd) {\n if (Utils.isNonEmptyString(additionalFilter)) {\n queryOverrideObject = queryBuilder.computeCompleteExpressionParts();\n if (Utils.isEmptyString(queryOverrideObject.basic)) {\n queryOverrideObject.basic = '@uri';\n }\n }\n } else {\n if (this.facet.values.hasSelectedOrExcludedValues()) {\n queryOverrideObject = queryBuilder.computeCompleteExpressionPartsExcept(this.computeOurFilterExpression());\n if (Utils.isEmptyString(queryOverrideObject.basic)) {\n queryOverrideObject.basic = '@uri';\n }\n } else {\n if (Utils.isNonEmptyString(additionalFilter)) {\n queryOverrideObject = queryBuilder.computeCompleteExpressionParts();\n if (Utils.isEmptyString(queryOverrideObject.basic)) {\n queryOverrideObject.basic = '@uri';\n }\n }\n }\n }\n\n if (queryOverrideObject) {\n if (Utils.isNonEmptyString(additionalFilter)) {\n queryOverrideObject.constant = queryOverrideObject.constant ? queryOverrideObject.constant + ' ' + additionalFilter : additionalFilter;\n }\n }\n _.each(_.keys(queryOverrideObject), (k) => {\n if (Utils.isEmptyString(queryOverrideObject[k]) || Utils.isNullOrUndefined(queryOverrideObject[k])) {\n delete queryOverrideObject[k];\n }\n });\n if (_.keys(queryOverrideObject).length == 0) {\n queryOverrideObject = undefined;\n }\n return queryOverrideObject;\n }\n\n protected createBasicGroupByRequest(allowedValues?: string[], addComputedField: boolean = true): IGroupByRequest {\n let nbOfRequestedValues = this.facet.numberOfValues;\n if (this.facet.options.customSort != null) {\n // If we have a custom sort, we need to make sure that we always request at least enough values to always receive them\n let usedValues = this.getUnionWithCustomSortLowercase(this.facet.options.customSort, this.facet.values.getSelected().concat(this.facet.values.getExcluded()));\n nbOfRequestedValues = Math.max(nbOfRequestedValues, usedValues.length);\n }\n let groupByRequest: IGroupByRequest = {\n field: this.facet.options.field,\n maximumNumberOfValues: nbOfRequestedValues + (this.facet.options.enableMoreLess ? 1 : 0),\n sortCriteria: this.facet.options.sortCriteria,\n injectionDepth: this.facet.options.injectionDepth,\n completeFacetWithStandardValues: this.facet.options.allowedValues == undefined ? true : false\n };\n if (this.facet.options.lookupField) {\n groupByRequest.lookupField = this.facet.options.lookupField;\n }\n if (allowedValues != null) {\n groupByRequest.allowedValues = allowedValues;\n }\n\n if (addComputedField && Utils.isNonEmptyString(this.facet.options.computedField)) {\n groupByRequest.computedFields = [{\n field: this.facet.options.computedField,\n operation: this.facet.options.computedFieldOperation\n }];\n }\n return groupByRequest;\n }\n\n private checkForFacetSearchValuesToRemove(fieldValues: IIndexFieldValue[], valueToCheckAgainst: string) {\n let regex = FacetUtils.getRegexToUseForFacetSearch(valueToCheckAgainst, this.facet.options.facetSearchIgnoreAccents);\n\n return _.filter(fieldValues, (fieldValue) => {\n let isAllowed =\n _.isEmpty(this.facet.options.allowedValues) ||\n _.contains(this.facet.options.allowedValues, fieldValue.value);\n\n let value = this.facet.getValueCaption(fieldValue);\n return isAllowed && regex.test(value);\n });\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/controllers/FacetQueryController.ts\n **/","/// \n\nimport { Facet } from './Facet';\nimport { Utils } from '../../utils/Utils';\nimport { FacetUtils } from './FacetUtils';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\nimport { IQuery } from '../../rest/Query';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\nexport class FacetSearchParameters {\n public searchEvenIfEmpty: boolean;\n public nbResults: number;\n public ignoreAccents: boolean;\n public valueToSearch: string = '';\n public alwaysInclude: string[] = [];\n public alwaysExclude: string[] = [];\n public sortCriteria = 'occurrences';\n public fetchMore = false;\n\n constructor(public facet: Facet) {\n this.nbResults = facet.options.numberOfValuesInFacetSearch;\n this.ignoreAccents = facet.options.facetSearchIgnoreAccents;\n this.searchEvenIfEmpty = facet.searchInterface.isNewDesign();\n }\n\n public setValueToSearch(value: string) {\n this.valueToSearch = value;\n if (Utils.isNonEmptyString(value)) {\n this.valueToSearch = this.valueToSearch.trim();\n this.alwaysInclude = this.alwaysInclude.concat(FacetUtils.getValuesToUseForSearchInFacet(this.valueToSearch, this.facet));\n }\n return this;\n }\n\n public excludeCurrentlyDisplayedValuesInSearch(searchResults: HTMLElement) {\n _.each(this.getCurrentlyShowedValueInSearch(searchResults), (v) => {\n var expandedValues = FacetUtils.getValuesToUseForSearchInFacet(v, this.facet);\n _.each(expandedValues, (expanded) => {\n this.alwaysExclude.push(expanded);\n });\n });\n _.each(this.facet.getDisplayedFacetValues(), (v) => {\n var expandedValues = FacetUtils.getValuesToUseForSearchInFacet(v.value, this.facet);\n _.each(expandedValues, (expanded) => {\n this.alwaysExclude.push(expanded);\n });\n });\n }\n\n public getGroupByRequest(): IGroupByRequest {\n this.lowerCaseAll();\n var nbResults = this.nbResults;\n if (this.facet.searchInterface.isNewDesign()) {\n nbResults += this.alwaysExclude.length;\n }\n\n var typedByUser = [];\n if (this.valueToSearch) {\n typedByUser = ['*' + this.valueToSearch + '*'];\n }\n\n var request: IGroupByRequest = {\n allowedValues: typedByUser.concat(this.alwaysInclude).concat(this.alwaysExclude),\n maximumNumberOfValues: nbResults,\n completeFacetWithStandardValues: this.facet.options.lookupField ? false : true, // See : https://coveord.atlassian.net/browse/JSUI-728\n field: this.facet.options.field,\n sortCriteria: this.facet.options.sortCriteria || this.sortCriteria,\n injectionDepth: this.facet.options.injectionDepth,\n };\n\n if (this.facet.options.lookupField) {\n request.lookupField = this.facet.options.lookupField;\n }\n\n if (this.facet.options.computedField) {\n request.computedFields = [{\n field: this.facet.options.computedField,\n operation: this.facet.options.computedFieldOperation\n }];\n }\n return request;\n }\n\n public getQuery(): IQuery {\n var lastQuery = _.clone(this.facet.queryController.getLastQuery());\n if (!lastQuery) {\n // There should normally always be a last query available\n // If not, just create an empty one.\n lastQuery = new QueryBuilder().build();\n }\n lastQuery.q = this.facet.facetQueryController.basicExpressionToUseForFacetSearch;\n lastQuery.cq = this.facet.facetQueryController.constantExpressionToUseForFacetSearch;\n lastQuery.aq = this.facet.facetQueryController.advancedExpressionToUseForFacetSearch;\n lastQuery.enableDidYouMean = false;\n lastQuery.firstResult = 0;\n lastQuery.numberOfResults = 0;\n lastQuery.fieldsToInclude = [];\n lastQuery.groupBy = [this.getGroupByRequest()];\n return lastQuery;\n }\n\n private getCurrentlyShowedValueInSearch(searchResults: HTMLElement) {\n return _.map($$(searchResults).findAll('.coveo-facet-value-caption'), (val) => {\n return $$(val).text();\n });\n }\n\n private lowerCaseAll() {\n this.alwaysExclude = _.chain(this.alwaysExclude)\n .map((v) => {\n return v.toLowerCase();\n })\n .uniq()\n .value();\n\n this.alwaysInclude = _.chain(this.alwaysInclude)\n .map((v) => {\n return v.toLowerCase();\n })\n .uniq()\n .value();\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Facet/FacetSearchParameters.ts\n **/","/// \nimport { Facet } from './Facet';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { FileTypes } from '../Misc/FileTypes';\nimport { DateUtils } from '../../utils/DateUtils';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\ndeclare const Coveo;\n\nexport class FacetUtils {\n static getRegexToUseForFacetSearch(value: string, ignoreAccent: boolean) {\n return new RegExp(StringUtils.stringToRegex(value, ignoreAccent), 'i');\n }\n\n static getValuesToUseForSearchInFacet(original: string, facet: Facet): string[] {\n let ret = [original];\n let regex = this.getRegexToUseForFacetSearch(original, facet.options.facetSearchIgnoreAccents);\n if (facet.options.valueCaption) {\n _.chain(facet.options.valueCaption)\n .pairs()\n .filter((pair) => {\n return regex.test(pair[1]);\n })\n .each((match) => {\n ret.push(match[0]);\n });\n if (QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') || QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')) {\n _.each(FileTypes.getFileTypeCaptions(), (value: string, key: string) => {\n if (!(key in facet.options.valueCaption) && regex.test(value)) {\n ret.push(key);\n }\n });\n }\n } else if (QueryUtils.isStratusAgnosticField(facet.options.field, '@objecttype') || QueryUtils.isStratusAgnosticField(facet.options.field, '@filetype')) {\n _.each(_.filter(_.pairs(FileTypes.getFileTypeCaptions()), (pair) => {\n return regex.test(pair[1]);\n }), (match) => {\n ret.push(match[0]);\n });\n } else if (QueryUtils.isStratusAgnosticField(facet.options.field, '@month')) {\n _.each(_.range(1, 13), (month) => {\n if (regex.test(DateUtils.monthToString(month - 1))) {\n ret.push(('0' + month.toString()).substr(-2));\n }\n });\n }\n return ret;\n }\n\n static buildFacetSearchPattern(values: string[]) {\n values = _.map(values, (value) => {\n return Utils.escapeRegexCharacter(value);\n });\n values[0] = '.*' + values[0] + '.*';\n return values.join('|');\n }\n\n static needAnotherFacetSearch(currentSearchLength: number, newSearchLength: number, oldSearchLength: number, desiredSearchLength: number) {\n // Something was removed (currentSearch < newSearch)\n // && we might want to display more facet search result(currentSearch < desiredSearch)\n // && the new query returned more stuff than the old one so there's still more results(currentSearchLength > oldLength)\n return currentSearchLength < newSearchLength && currentSearchLength < desiredSearchLength && currentSearchLength > oldSearchLength;\n }\n\n static addNoStateCssClassToFacetValues(facet: Facet, container: HTMLElement) {\n // This takes care of adding the correct css class on each facet value checkbox (empty white box) if at least one value is selected in that facet\n if (facet.values.getSelected().length != 0) {\n let noStates = $$(container).findAll('li:not(.coveo-selected)');\n _.each(noStates, (noState) => {\n $$(noState).addClass('coveo-no-state');\n });\n }\n }\n\n static tryToGetTranslatedCaption(field: string, value: string) {\n let found: string;\n\n if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@filetype')) {\n found = FileTypes.getFileType(value.toLowerCase()).caption;\n } else if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@month')) {\n try {\n let month = parseInt(value);\n found = DateUtils.monthToString(month - 1);\n } catch (ex) {\n // Do nothing\n }\n }\n return found != undefined && Utils.isNonEmptyString(found) ? found : value;\n }\n\n static clipCaptionsToAvoidOverflowingTheirContainer(facet: Facet, forceClip?: boolean) {\n // in new design, we don't need this : use flexbox instead (sorry IE user)\n if (facet.getBindings && facet.getBindings().searchInterface && facet.getBindings().searchInterface.isNewDesign()) {\n return;\n }\n if (!(Coveo.HierarchicalFacet && facet instanceof Coveo.HierarchicalFacet) || forceClip) {\n facet.logger.trace('Clipping captions');\n // force facet to show to calculate width\n $$(facet.element).show();\n let element = facet.element;\n let captions = $$(element).findAll('.coveo-facet-value-caption');\n for (let i = 0; i < captions.length; i++) {\n if (captions[i].style.width != '') {\n captions[i].style.width = '';\n }\n }\n let labels = $$(element).findAll('.coveo-facet-value-label-wrapper');\n let labelsMaxWidth: { element: HTMLElement; width: number; crop: number; label: HTMLElement; }[] = [];\n for (let i = 0; i < labels.length; i++) {\n let label: HTMLElement = labels[i];\n let caption: HTMLElement = $$(label).find('.coveo-facet-value-caption');\n\n let labelWidth = label.scrollWidth;\n let labelVisibleWidth = label.clientWidth;\n\n let captionWidth = caption.scrollWidth;\n\n let crop = Math.max(0, labelWidth - labelVisibleWidth);\n if (crop) {\n labelsMaxWidth.push({\n element: caption,\n width: captionWidth,\n crop: crop,\n label: label\n });\n }\n }\n // remove the specific css class\n element.style.display = '';\n for (let i = 0; i < labelsMaxWidth.length; i++) {\n let labelMaxWidth = labelsMaxWidth[i];\n labelMaxWidth.element.style.width = labelMaxWidth.width - labelMaxWidth.crop + 'px';\n if (labelMaxWidth.crop > 0) {\n labelMaxWidth.label.setAttribute('title', $$(labelMaxWidth.element).text());\n } else {\n labelMaxWidth.label.setAttribute('title', null);\n }\n }\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Facet/FacetUtils.ts\n **/","/// \n\nimport { FacetQueryController } from './FacetQueryController';\nimport { FacetRange } from '../ui/FacetRange/FacetRange';\nimport { Utils } from '../utils/Utils';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\n\nexport class FacetRangeQueryController extends FacetQueryController {\n public graphGroupByQueriesIndex: number;\n\n constructor(public facet: FacetRange) {\n super(facet);\n }\n\n protected createBasicGroupByRequest(allowedValues?: string[], addComputedField: boolean = true) {\n var groupByQuery = super.createBasicGroupByRequest(null, addComputedField);\n groupByQuery.allowedValues = undefined;\n if (Utils.isNonEmptyArray(this.facet.options.ranges)) {\n groupByQuery = this.buildGroupByQueryForPredefinedRanges(groupByQuery);\n } else {\n groupByQuery = this.buildGroupByQueryForAutomaticRanges(groupByQuery);\n }\n return groupByQuery;\n }\n\n protected createGroupByAllowedValues(): string[] {\n return undefined;\n }\n\n private buildGroupByQueryForAutomaticRanges(groupByQuery: IGroupByRequest) {\n groupByQuery.generateAutomaticRanges = true;\n return groupByQuery;\n }\n\n private buildGroupByQueryForPredefinedRanges(groupByQuery: IGroupByRequest) {\n groupByQuery.rangeValues = this.facet.options.ranges;\n groupByQuery.maximumNumberOfValues = this.facet.options.ranges.length;\n return groupByQuery;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/controllers/FacetRangeQueryController.ts\n **/","/// \n\nimport { FacetSlider } from '../ui/FacetSlider/FacetSlider';\nimport { QueryEvents, IQuerySuccessEventArgs } from '../events/QueryEvents';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\nimport { ExpressionBuilder } from '../ui/Base/ExpressionBuilder';\nimport { IRangeValue } from '../rest/RangeValue';\nimport { DateUtils } from '../utils/DateUtils';\nimport { Logger } from '../misc/Logger';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport _ = require('underscore');\n\nexport class FacetSliderQueryController {\n public graphGroupByQueriesIndex: number;\n private rangeValuesForGraphToUse: { start: any; end: any }[];\n public lastGroupByRequestIndex: number;\n\n constructor(public facet: FacetSlider) {\n this.facet.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n }\n\n public prepareForNewQuery() {\n this.lastGroupByRequestIndex = undefined;\n }\n\n public putGroupByIntoQueryBuilder(queryBuilder: QueryBuilder) {\n if (this.facet.options.graph) {\n this.putGroupByForGraphIntoQueryBuilder(queryBuilder);\n }\n this.putGroupByForSliderIntoQueryBuilder(queryBuilder);\n }\n\n private createBasicGroupByRequest() {\n let groupByQuery: IGroupByRequest = {\n field: this.facet.options.field,\n completeFacetWithStandardValues: true,\n allowedValues: undefined\n };\n return groupByQuery;\n }\n\n public computeOurFilterExpression(boundary = [this.facet.startOfSlider, this.facet.endOfSlider]) {\n let builder = new ExpressionBuilder();\n if (boundary[0] != undefined && boundary[1] != undefined) {\n if (this.facet.options.excludeOuterBounds) {\n this.addFilterExpressionWithOuterBoundsExcluded(boundary[0], boundary[1], builder);\n } else {\n this.addFilterExpressionWithOuterBoundsIncluded(boundary[0], boundary[1], builder);\n }\n }\n return builder.build();\n }\n\n private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n if (!this.isAValidRangeResponse(args)) {\n let logger = new Logger(this);\n logger.error(`Cannot instantiate FacetSlider for this field : ${this.facet.options.field}. It needs to be configured as a numerical field in the index`);\n logger.error(`Disabling the FacetSlider`, this.facet);\n this.facet.disable();\n return;\n }\n\n if (this.facet.options && this.facet.options.graph && this.rangeValuesForGraphToUse == undefined) {\n this.rangeValuesForGraphToUse = [];\n let rawValues = args.results.groupByResults[this.graphGroupByQueriesIndex].values;\n _.each(rawValues, (rawValue) => {\n let rawSplit = rawValue.value.split('..');\n this.rangeValuesForGraphToUse.push({\n start: this.facet.options.dateField ? this.getISOFormat(rawSplit[0].replace('@', ' ')) : parseInt(rawSplit[0], 10),\n end: this.facet.options.dateField ? this.getISOFormat(rawSplit[1].replace('@', ' ')) : parseInt(rawSplit[1], 10)\n });\n });\n }\n }\n\n private isAValidRangeResponse(args: IQuerySuccessEventArgs) {\n if (this.lastGroupByRequestIndex != undefined && args.results.groupByResults[this.lastGroupByRequestIndex]) {\n let firstValue = args.results.groupByResults[this.lastGroupByRequestIndex].values[0];\n if (firstValue && !QueryUtils.isRangeString(firstValue.value)) {\n return false;\n }\n }\n return true;\n }\n\n private addFilterExpressionWithOuterBoundsIncluded(start: any, end: any, builder: ExpressionBuilder) {\n if (start != this.facet.options.start || end != this.facet.options.end) {\n if (this.facet.options.dateField) {\n start = this.getFilterDateFormat(start);\n end = this.getFilterDateFormat(end);\n }\n builder.addFieldExpression(this.facet.options.field, '==', [start + '..' + end]);\n }\n }\n\n private addFilterExpressionWithOuterBoundsExcluded(start: any, end: any, builder: ExpressionBuilder) {\n let startCompare = this.facet.options.start;\n let endCompare = this.facet.options.end;\n let startCompared = start;\n let endCompared = end;\n if (this.facet.options.dateField) {\n startCompared = this.getFilterDateFormat(start);\n endCompared = this.getFilterDateFormat(end);\n startCompare = this.getFilterDateFormat(startCompare);\n endCompare = this.getFilterDateFormat(endCompare);\n } else {\n startCompared += '';\n endCompared += '';\n startCompare += '';\n endCompare += '';\n }\n if (startCompared != startCompare && endCompared == endCompare) {\n builder.addFieldExpression(this.facet.options.field, '>=', [startCompared]);\n } else if (startCompared == startCompare && endCompared != endCompare) {\n builder.addFieldExpression(this.facet.options.field, '<=', [endCompared]);\n } else {\n this.addFilterExpressionWithOuterBoundsIncluded(start, end, builder);\n }\n }\n\n private putGroupByForGraphIntoQueryBuilder(queryBuilder: QueryBuilder) {\n this.graphGroupByQueriesIndex = queryBuilder.groupByRequests.length;\n let basicGroupByRequestForGraph = this.createBasicGroupByRequest();\n\n if (this.facet.isSimpleSliderConfig()) {\n basicGroupByRequestForGraph.rangeValues = this.createRangeValuesForGraphUsingStartAndEnd();\n basicGroupByRequestForGraph.generateAutomaticRanges = false;\n } else {\n basicGroupByRequestForGraph.generateAutomaticRanges = true;\n }\n\n let filter = this.computeOurFilterExpression(this.facet.getSliderBoundaryForQuery());\n if (filter != undefined) {\n let queryOverrideObject = queryBuilder.computeCompleteExpressionPartsExcept(filter);\n basicGroupByRequestForGraph.queryOverride = queryOverrideObject.basic;\n basicGroupByRequestForGraph.advancedQueryOverride = queryOverrideObject.advanced;\n basicGroupByRequestForGraph.constantQueryOverride = queryOverrideObject.constant;\n if (basicGroupByRequestForGraph.queryOverride == undefined) {\n basicGroupByRequestForGraph.queryOverride = this.facet.options.queryOverride || '@uri';\n } else {\n basicGroupByRequestForGraph.queryOverride += (this.facet.options.queryOverride ? ' ' + this.facet.options.queryOverride : '');\n }\n } else if (this.facet.options.queryOverride != null) {\n let completeExpression = queryBuilder.computeCompleteExpression();\n basicGroupByRequestForGraph.queryOverride = (completeExpression != null ? completeExpression + ' ' : '') + this.facet.options.queryOverride;\n }\n\n basicGroupByRequestForGraph.sortCriteria = 'nosort';\n basicGroupByRequestForGraph.maximumNumberOfValues = this.facet.options.graph.steps;\n queryBuilder.groupByRequests.push(basicGroupByRequestForGraph);\n }\n\n private putGroupByForSliderIntoQueryBuilder(queryBuilder: QueryBuilder) {\n this.lastGroupByRequestIndex = queryBuilder.groupByRequests.length;\n\n let maximumNumberOfValues = 1;\n if (this.facet.hasAGraph()) {\n maximumNumberOfValues = this.facet.options.graph.steps;\n }\n\n let rangeValues = undefined;\n const { start, end } = this.formatStartAndEnd();\n if (this.facet.isSimpleSliderConfig()) {\n rangeValues = [{\n start: start,\n end: end,\n label: 'slider',\n endInclusive: false\n }];\n }\n\n const basicGroupByRequestForSlider = this.createBasicGroupByRequest();\n basicGroupByRequestForSlider.maximumNumberOfValues = maximumNumberOfValues;\n basicGroupByRequestForSlider.queryOverride = this.facet.options.queryOverride || '@uri';\n basicGroupByRequestForSlider.sortCriteria = 'nosort';\n basicGroupByRequestForSlider.generateAutomaticRanges = !this.facet.isSimpleSliderConfig();\n basicGroupByRequestForSlider.rangeValues = rangeValues;\n queryBuilder.groupByRequests.push(basicGroupByRequestForSlider);\n }\n\n private createRangeValuesForGraphUsingStartAndEnd() {\n const { start, end } = this.formatStartAndEnd();\n let oneRange: IRangeValue = {\n start: start,\n end: end,\n endInclusive: true,\n label: 'Slider'\n };\n\n if (this.facet.options.graph.steps == undefined) {\n this.facet.options.graph.steps = 10;\n }\n if (this.facet.options.dateField && isNaN(this.facet.options.start)) {\n this.facet.options.start = new Date(this.facet.options.start).getTime();\n }\n if (this.facet.options.dateField && isNaN(this.facet.options.end)) {\n this.facet.options.end = new Date(this.facet.options.end).getTime();\n }\n if (this.rangeValuesForGraphToUse != undefined) {\n return this.usePrebuiltRange(oneRange);\n } else {\n return this.buildRange(oneRange);\n }\n }\n\n private usePrebuiltRange(basicRangeRequest: IRangeValue) {\n return _.map(this.rangeValuesForGraphToUse, (value) => {\n return {\n start: value.start,\n end: value.end,\n endInclusive: basicRangeRequest.endInclusive,\n label: basicRangeRequest.label\n };\n });\n }\n\n private buildRange(basicRangeRequest: IRangeValue) {\n let start = this.facet.options.start;\n let oneStep = (this.facet.options.end - this.facet.options.start) / this.facet.options.graph.steps;\n return _.map(_.range(0, this.facet.options.graph.steps, 1), (step) => {\n let newStart = start + (step * oneStep);\n let newEnd = start + ((step + 1) * oneStep);\n if (this.facet.options.dateField) {\n newStart = this.getISOFormat(newStart);\n newEnd = this.getISOFormat(newEnd);\n }\n return {\n endInclusive: basicRangeRequest.endInclusive,\n label: basicRangeRequest.label,\n start: newStart,\n end: newEnd\n };\n });\n }\n\n private formatStartAndEnd() {\n let start = this.facet.options.start;\n let end = this.facet.options.end;\n if (this.facet.options.dateField) {\n start = this.getISOFormat(start);\n end = this.getISOFormat(end);\n }\n return {\n start: start,\n end: end\n };\n }\n\n private getISOFormat(value: any) {\n if (value) {\n if (!isNaN(value)) {\n value = Number(value);\n }\n let date = new Date(value);\n if (!DateUtils.isValid(date)) {\n date = new Date(this.getBrowserCompatibleFormat(value));\n if (!DateUtils.isValid(date)) {\n // If we get here, we'll probably get an error further down the line when querying the index anyway ...\n this.facet.logger.error('Cannot parse this date format.', value, new Date(value));\n return undefined;\n }\n }\n return date.toISOString();\n } else {\n return undefined;\n }\n }\n\n private getFilterDateFormat(rawValue: any) {\n if (rawValue) {\n return this.getISOFormat(rawValue).replace('T', '@').replace('.000Z', '').replace(/-/g, '/');\n } else {\n return undefined;\n }\n }\n\n private getBrowserCompatibleFormat(value: string) {\n return value.replace('@', 'T').replace(/\\//g, '-');\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/controllers/FacetSliderQueryController.ts\n **/","/// \n/// \n\nimport { FacetQueryController } from './FacetQueryController';\nimport { HierarchicalFacet, IValueHierarchy } from '../ui/HierarchicalFacet/HierarchicalFacet';\nimport { FacetSearchParameters } from '../ui/Facet/FacetSearchParameters';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { FacetUtils } from '../ui/Facet/FacetUtils';\nimport _ = require('underscore');\n\nexport class HierarchicalFacetQueryController extends FacetQueryController {\n constructor(public facet: HierarchicalFacet) {\n super(facet);\n }\n\n public search(params: FacetSearchParameters, oldLength = params.nbResults): Promise {\n // Do a client side search, since HierarchicalFacet should normally have all value client side\n let regex = FacetUtils.getRegexToUseForFacetSearch(this.facet.facetSearch.getValueInInputForFacetSearch(), this.facet.options.facetSearchIgnoreAccents);\n return new Promise((resolve) => {\n let match = _.chain(this.facet.getAllValueHierarchy())\n .toArray()\n .filter((v: IValueHierarchy) => {\n return this.facet.getValueCaption(v.facetValue).match(regex) != null;\n })\n .first(this.facet.options.numberOfValuesInFacetSearch)\n .value();\n resolve(_.map(match, (v: IValueHierarchy) => {\n return v.facetValue;\n }));\n });\n }\n\n protected getAllowedValuesFromSelected() {\n return [];\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/controllers/HierarchicalFacetQueryController.ts\n **/","import { Assert } from '../misc/Assert';\nimport { QueryController } from '../controllers/QueryController';\nimport { Model } from '../models/Model';\nimport { InitializationEvents } from '../events/InitializationEvents';\nimport { $$ } from '../utils/Dom';\nimport { HashUtils } from '../utils/HashUtils';\nimport { Defer } from '../misc/Defer';\nimport { RootComponent } from '../ui/Base/RootComponent';\nimport { Utils } from '../utils/Utils';\nimport _ = require('underscore');\n\n/**\n * This component is instantiated automatically by the framework on the root if the {@link SearchInterface}.
\n * When the {@link SearchInterface.options.enableHistory} option is set to true, this component is instantiated.
\n * It's only job is to apply changes in the {@link QueryStateModel} to the hash in the URL, and vice versa.
\n * This component does *not* hold the state of the interface, it only represent it in the URL.\n */\nexport class HistoryController extends RootComponent {\n static ID = 'HistoryController';\n\n static attributesThatDoNotTriggerQuery = ['quickview'];\n\n private ignoreNextHashChange = false;\n private initialHashChange = false;\n private willUpdateHash: boolean = false;\n private hashchange: (...args: any[]) => void;\n\n /**\n * Create a new history controller\n * @param element\n * @param windoh For mock / test purposes.\n * @param model\n * @param queryController\n * @param hashUtilsModule For mock / test purposes.\n */\n constructor(element: HTMLElement, public windoh: Window, public model: Model, public queryController: QueryController, private hashUtils: typeof HashUtils = HashUtils) {\n super(element, HistoryController.ID);\n\n this.windoh = this.windoh || window;\n Assert.exists(this.model);\n Assert.exists(this.queryController);\n\n $$(this.element).on(InitializationEvents.restoreHistoryState, () => {\n this.logger.trace('Restore history state. Update model');\n this.updateModelFromHash();\n });\n\n $$(this.element).on(this.model.getEventName(Model.eventTypes.all), () => {\n this.logger.trace('Query model changed. Update hash');\n this.updateHashFromModel();\n });\n this.hashchange = () => {\n this.handleHashChange();\n };\n this.windoh.addEventListener('hashchange', this.hashchange);\n $$(this.element).on(InitializationEvents.nuke, () => this.handleNuke());\n }\n\n /**\n * Set the given map of key value in the hash of the URL\n * @param values\n */\n public setHashValues(values: {}) {\n this.logger.trace('Update history hash');\n\n let hash = '#' + this.hashUtils.encodeValues(values);\n this.ignoreNextHashChange = this.windoh.location.hash != hash;\n\n this.logger.trace('ignoreNextHashChange', this.ignoreNextHashChange);\n this.logger.trace('initialHashChange', this.initialHashChange);\n this.logger.trace('from', this.windoh.location.hash, 'to', hash);\n\n if (this.initialHashChange) {\n this.initialHashChange = false;\n this.windoh.location.replace(hash);\n this.logger.trace('History hash modified', hash);\n } else if (this.ignoreNextHashChange) {\n this.windoh.location.hash = hash;\n this.logger.trace('History hash created', hash);\n }\n }\n\n private handleNuke() {\n this.windoh.removeEventListener('hashchange', this.hashchange);\n }\n\n private handleHashChange() {\n this.logger.trace('History hash changed');\n\n if (this.ignoreNextHashChange) {\n this.logger.trace('History hash change ignored');\n this.ignoreNextHashChange = false;\n return;\n }\n\n let diff = this.updateModelFromHash();\n\n if (_.difference(diff, HistoryController.attributesThatDoNotTriggerQuery).length > 0) {\n this.queryController.executeQuery();\n }\n }\n\n private updateHashFromModel() {\n this.logger.trace('Model -> history hash');\n\n if (!this.willUpdateHash) {\n Defer.defer(() => {\n let attributes = this.model.getAttributes();\n this.setHashValues(attributes);\n this.logger.debug('Saving state to hash', attributes);\n this.willUpdateHash = false;\n });\n this.willUpdateHash = true;\n }\n }\n\n private updateModelFromHash() {\n this.logger.trace('History hash -> model');\n\n let toSet: { [key: string]: any } = {};\n let diff: string[] = [];\n _.each(<_.Dictionary>this.model.attributes, (value, key?, obj?) => {\n let valToSet = this.getHashValue(key);\n toSet[key] = valToSet;\n if (this.model.get(key) != valToSet) {\n diff.push(key);\n }\n });\n this.initialHashChange = true;\n this.model.setMultiple(toSet);\n return diff;\n }\n\n private getHashValue(key: string): any {\n Assert.isNonEmptyString(key);\n let value;\n try {\n value = this.hashUtils.getValue(key, this.hashUtils.getHash(this.windoh));\n } catch (error) {\n this.logger.error(`Could not parse parameter ${key} from URI`);\n }\n\n if (Utils.isUndefined(value)) {\n value = this.model.defaultAttributes[key];\n }\n\n return value;\n }\n\n public debugInfo() {\n return {\n 'state': this.model.getAttributes()\n };\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/controllers/HistoryController.ts\n **/","import { $$ } from '../utils/Dom';\nimport { Assert } from '../misc/Assert';\nimport { Utils } from '../utils/Utils';\nimport { BaseComponent } from '../ui/Base/BaseComponent';\nimport _ = require('underscore');\n\nexport const MODEL_EVENTS = {\n PREPROCESS: 'preprocess',\n CHANGE_ONE: 'change:',\n CHANGE: 'change',\n RESET: 'reset',\n ALL: 'all'\n};\n\nexport interface IModelSetOptions {\n silent?: boolean;\n customAttribute?: boolean;\n validateType?: boolean;\n}\n\nexport interface IAttributeChangedEventArg {\n attribute: string;\n value: any;\n}\n\nexport interface IAttributesChangedEventArg {\n attributes: {};\n}\n\nexport interface IModelChangedEventArg {\n model: Model;\n}\n\n/**\n * A *model* is a key-value store that triggers various JavaScript events when any value associated to one of its key changes.
\n * This class is meant to be extended, one of the most important extension being the {@link QueryStateModel} class.
\n * Components set values in this key-value store and listen to triggered events in order to update themselves accordingly.
\n */\nexport class Model extends BaseComponent {\n /**\n * The attributes contained in this model.
\n * Normally, you should not set attributes directly on this property, as this would prevent required events from being triggered.\n */\n public attributes: { [key: string]: any };\n public defaultAttributes: { [key: string]: any };\n private eventNameSpace;\n\n /**\n * The event types that can be triggered:
\n * • `preprocess`: triggered before a value is set on an attribute. This allows the value to be modified before it is set.
\n * • `changeOne`: triggered when a single value changes.
\n * • `change`: triggered when one or many values change.
\n * • `reset`: triggered when all attributes are reset to their default values.
\n * • `all`: triggered after the `change` event.
\n * @type {{preprocess: string, changeOne: string, change: string, reset: string, all: string}}\n */\n public static eventTypes = {\n preprocess: 'preprocess',\n changeOne: 'change:',\n change: 'change',\n reset: 'reset',\n all: 'all'\n };\n\n constructor(element: HTMLElement, id: string, attributes: { [key: string]: any }) {\n super(element, id);\n this.eventNameSpace = id;\n\n this.defaultAttributes = Utils.extendDeep(this.defaultAttributes, attributes);\n this.attributes = attributes;\n this.logger.debug('Creating model');\n }\n\n /**\n * Sets the value of a single specific attribute.
\n * Note: this method calls the `setMultiple` method.\n * @param attribute\n * the specific attribute whose value is to be set.\n * @param value\n * the value to set the attribute to.\n * @param options\n * the options (see {@link setMultiple}).\n */\n public set(attribute: string, value: any, options?: IModelSetOptions) {\n let toSet: { [key: string]: any } = {};\n toSet[attribute] = value;\n this.setMultiple(toSet, options);\n }\n\n /**\n * Gets an object containing all *active* registered attribute key-values.
\n * An attribute is considered active when its value is not in its default state.\n * @returns {{object}}\n */\n public getAttributes() {\n let attributes: { [key: string]: any } = {};\n _.each(this.attributes, (attribute, key) => {\n if (_.isObject(attribute)) {\n if (!Utils.objectEqual(attribute, this.defaultAttributes[key])) {\n attributes[key] = attribute;\n }\n } else if (attribute != this.defaultAttributes[key]) {\n attributes[key] = attribute;\n }\n });\n return attributes;\n }\n\n /**\n * Sets the values of one or many attributes.
\n * This method may trigger the following events (in order):
\n * • `preprocess`
\n * • `changeOne`
\n * • `change`
\n * • `all`\n * @param toSet\n * the key-value list of attributes with their new intended values.\n * @param options\n * if the `customAttribute` option is set to `true`, the method will not validate whether an attribute is registered or not.
\n * If the `validateType` option is set to `true`, the method will ensure that each value type is correct.
\n * If the `silent` option is set to `true`, then the `changeOne`, `change` and `all` events will not be triggered.\n */\n public setMultiple(toSet: { [key: string]: any }, options?: IModelSetOptions) {\n let anythingChanged = false;\n this.preprocessEvent(toSet);\n _.each(<_.Dictionary>toSet, (value, attribute?) => {\n if (!options || !options.customAttribute) {\n this.checkIfAttributeExists(attribute);\n }\n value = this.parseToCorrectType(attribute, value);\n if (!options || options.validateType) {\n if (!this.typeIsValid(attribute, value)) {\n return;\n }\n }\n if (this.checkIfAttributeChanged(attribute, value)) {\n this.attributes[attribute] = value;\n anythingChanged = true;\n if (options == null || !options.silent) {\n this.attributeHasChangedEvent(attribute);\n }\n }\n });\n if (anythingChanged && (options == null || !options.silent)) {\n this.attributesHasChangedEvent();\n this.anyEvent();\n }\n }\n\n /**\n * Sets a new default value to a single specific attribute.
\n * Note: specifying a new attribute default value does not set the attribute to that value. This can be done using the {@link setDefault} method.\n * @param attribute\n * the specific attribute whose default value is to be changed.\n * @param value\n * the new intended default value.\n * @param options\n * if the `customAttribute` option is set to `true`, the method will not validate whether the attribute is registered or not.\n */\n public setNewDefault(attribute: string, value: any, options?: IModelSetOptions) {\n if (!options || !options.customAttribute) {\n this.checkIfAttributeExists(attribute);\n }\n this.defaultAttributes[attribute] = value;\n }\n\n /**\n * Sets a single specific attribute to its default value.
\n * Note: this method calls the {@link setMultiple} method without specifying any option.\n * @param attribute\n * the specific attribute whose value is to be set to its default value.\n */\n public setDefault(attribute: string) {\n this.set(attribute, this.defaultAttributes[attribute]);\n }\n\n /**\n * Gets the value of a single specific attribute.
\n * If no attribute is specified, the method instead returns an object containing all registered attribute key-values.\n * @param attribute\n * the specific attribute whose value should be returned.\n * @returns {any}\n */\n public get(attribute?: string): any {\n if (attribute == undefined) {\n return this.attributes;\n } else {\n return this.attributes[attribute];\n }\n }\n\n /**\n * Gets the default value of a single specific attribute.
\n * If no attribute is specified, the method instead returns an object containing all registered attribute key-default values.\n * @param attribute\n * the specific attribute whose default value should be returned.\n * @returns {any}\n */\n public getDefault(attribute?: string): any {\n if (attribute == undefined) {\n return this.defaultAttributes;\n } else {\n return this.defaultAttributes[attribute];\n }\n }\n\n /**\n * Resets each registered attribute to its default value.
\n * Note: this method calls the {@link setMultiple} method without specifying any options.
\n * After the `setMultiple` call has returned, this method triggers the `reset` event.\n */\n public reset() {\n this.setMultiple(this.defaultAttributes);\n this.modelWasResetEvent();\n }\n\n /**\n * Registers a new attribute key-value.\n * @param attribute\n * the name of the new attribute to register.\n * @param defaultValue\n * the newly registered attribute default value.\n */\n public registerNewAttribute(attribute: string, defaultValue: any) {\n this.defaultAttributes[attribute] = defaultValue;\n this.attributes[attribute] = defaultValue;\n }\n\n /**\n * Gets a string displaying the event namespace followed by the specific event name. The returned string is formatted thus:
\n * `[eventNameSpace]:[eventName]`\n * @example `getEventName(\"reset\");` could return `\"state:reset\"`.\n * @param event\n * the event name.\n * @returns {string}\n */\n public getEventName(event: string) {\n return this.eventNameSpace + ':' + event;\n }\n\n private attributesHasChangedEvent() {\n $$(this.element).trigger(this.getEventName(Model.eventTypes.change), this.createAttributesChangedArgument());\n }\n\n private attributeHasChangedEvent(attr: string) {\n $$(this.element).trigger(this.getEventName(Model.eventTypes.changeOne) + attr, this.createAttributeChangedArgument(attr));\n }\n\n private preprocessEvent(attributes: { [key: string]: any }) {\n $$(this.element).trigger(this.getEventName(Model.eventTypes.preprocess), attributes);\n }\n\n private modelWasResetEvent() {\n $$(this.element).trigger(this.getEventName(Model.eventTypes.reset), this.createModelChangedArgument());\n }\n\n private anyEvent() {\n $$(this.element).trigger(this.getEventName(Model.eventTypes.all), this.createModelChangedArgument());\n }\n\n private createAttributeChangedArgument(attribute: string): IAttributeChangedEventArg {\n return { attribute: attribute, value: this.attributes[attribute] };\n }\n\n private createAttributesChangedArgument(): IAttributesChangedEventArg {\n return { attributes: this.attributes };\n }\n\n private createModelChangedArgument(): IModelChangedEventArg {\n return { model: this };\n }\n\n private checkIfAttributeExists(attribute: string) {\n Assert.check(_.has(this.attributes, attribute));\n }\n\n private typeIsValid(attribute: string, value: any): boolean {\n if (!Utils.isNullOrUndefined(this.attributes[attribute]) && !Utils.isUndefined(value)) {\n if (_.isNumber(this.attributes[attribute])) {\n return this.validateNumber(attribute, value);\n } else if (_.isBoolean(this.attributes[attribute])) {\n return this.validateBoolean(attribute, value);\n } else {\n return this.validateOther(attribute, value);\n }\n }\n return true;\n }\n\n private validateNumber(attribute: string, value: any): boolean {\n if (!_.isNumber(value) || isNaN(value)) {\n this.logger.error(`Non-matching type for ${attribute}. Expected number and got ${value}`);\n return false;\n }\n return true;\n }\n\n private validateBoolean(attribute: string, value: any) {\n if (!_.isBoolean(value) && !Utils.parseBooleanIfNotUndefined(value) !== undefined) {\n this.logger.error(`Non matching type for ${attribute}. Expected boolean and got ${value}`);\n return false;\n }\n return true;\n }\n\n private validateOther(attribute: string, value: any) {\n if (!Utils.isNullOrUndefined(this.defaultAttributes[attribute])) {\n if (typeof value !== typeof this.defaultAttributes[attribute]) {\n this.logger.error(`Non-matching type for ${attribute}. Expected ${typeof this.defaultAttributes[attribute]} and got ${value}`);\n return false;\n }\n }\n return true;\n }\n\n private parseToCorrectType(attribute: string, value: any): any {\n if (_.isNumber(this.attributes[attribute])) {\n return parseInt(value, 10);\n } else if (_.isBoolean(this.attributes[attribute])) {\n if (_.isBoolean(value)) {\n return value;\n } else {\n return Utils.parseBooleanIfNotUndefined(value);\n }\n }\n return value;\n }\n\n private checkIfAttributeChanged(attribute: string, newValue: any): boolean {\n let oldValue = this.attributes[attribute];\n if (_.isNumber(oldValue) || _.isString(oldValue) || _.isBoolean(oldValue)) {\n return oldValue !== newValue;\n }\n if (_.isArray(oldValue)) {\n return !Utils.arrayEqual(oldValue, newValue);\n }\n if (_.isObject(oldValue)) {\n return !Utils.objectEqual(oldValue, newValue);\n }\n return true;\n }\n\n public debugInfo() {\n return null;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/models/Model.ts\n **/","import { LocalStorageUtils } from '../utils/LocalStorageUtils';\nimport { Model } from '../models/Model';\nimport { QueryController } from './QueryController';\nimport { Logger } from '../misc/Logger';\nimport { Assert } from '../misc/Assert';\nimport { InitializationEvents } from '../events/InitializationEvents';\nimport { RootComponent } from '../ui/Base/RootComponent';\nimport { $$ } from '../utils/Dom';\nimport _ = require('underscore');\n\n/**\n * This component acts like the {@link HistoryController} excepts that is saves the {@link QueryStateModel} in the local storage.
\n * This will not allow 'back' and 'forward' navigation in the history, like the standard {@link HistoryController} allows. Instead, it load the query state only on page load.
\n * To enable this component, you should set the {@link SearchInterface.options.useLocalStorageForHistory} as well as the {@link SearchInterface.options.enableHistory} options to true.\n */\nexport class LocalStorageHistoryController extends RootComponent {\n static ID = 'LocalStorageHistoryController';\n\n public storage: LocalStorageUtils<{ [key: string]: any }>;\n private omit: string[] = [];\n\n /**\n * Create a new LocalStorageHistoryController instance\n * @param element\n * @param windoh For mock purpose\n * @param model\n * @param queryController\n */\n constructor(element: HTMLElement, public windoh: Window, public model: Model, public queryController: QueryController) {\n super(element, LocalStorageHistoryController.ID);\n if (!windoh['localStorage']) {\n new Logger(element).info('No local storage available in current browser. LocalStorageHistoryController cannot initialize itself', this);\n } else {\n this.storage = new LocalStorageUtils<{ [key: string]: any }>(LocalStorageHistoryController.ID);\n Assert.exists(this.model);\n Assert.exists(this.queryController);\n $$(this.element).on(InitializationEvents.restoreHistoryState, () => this.updateModelFromLocalStorage());\n $$(this.element).on(this.model.getEventName(Model.eventTypes.all), () => this.updateLocalStorageFromModel());\n }\n }\n\n /**\n * Specifies an array of attributes from the query state model that should not be persisted in the local storage\n * @param attributes\n */\n public withoutThoseAttribute(attributes: string[]) {\n this.omit = attributes;\n }\n\n private updateLocalStorageFromModel() {\n var attributes = _.omit(this.model.getAttributes(), this.omit);\n this.setStorageValues(attributes);\n this.logger.debug('Saving state to localstorage', attributes);\n }\n\n private updateModelFromLocalStorage() {\n var toSet: { [key: string]: any } = {};\n var loadedFromStorage = this.storage.load();\n _.each(<_.Dictionary>this.model.attributes, (value, key?, obj?) => {\n var valToSet = loadedFromStorage ? loadedFromStorage[key] : undefined;\n if (valToSet == undefined) {\n valToSet = this.model.defaultAttributes[key];\n }\n toSet[key] = valToSet;\n });\n this.model.setMultiple(toSet);\n }\n\n public setStorageValues(values: { [key: string]: any }) {\n this.storage.save(values);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/controllers/LocalStorageHistoryController.ts\n **/","export { Model } from './models/Model';\nexport { QueryStateModel } from './models/QueryStateModel';\nexport { ComponentOptionsModel } from './models/ComponentOptionsModel';\nexport { ComponentStateModel } from './models/ComponentStateModel';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ModelsModules.ts\n **/","import { Model, IModelSetOptions } from './Model';\nimport { Assert } from '../misc/Assert';\nimport { IStringMap } from '../rest/GenericParam';\nimport { Utils } from '../utils/Utils';\nimport _ = require('underscore');\n\nexport const QUERY_STATE_ATTRIBUTES = {\n Q: 'q',\n FIRST: 'first',\n T: 't',\n TG: 'tg',\n SORT: 'sort',\n LAYOUT: 'layout',\n HD: 'hd',\n HQ: 'hq',\n QUICKVIEW: 'quickview'\n};\n\nexport interface IQueryStateIncludedAttribute {\n title: string;\n included: string[];\n}\n\nexport interface IQueryStateExcludedAttribute {\n title: string;\n excluded: string[];\n}\n\n/**\n * The QueryStateModel is a key->value store of the state of every component that can affect a query.
\n * Component set values in this key -> value store, and listen to event triggered to react accordingly.
\n * For example, when a query is launched, the searchbox will set the 'q' attribute, the pager will set the 'first' attribute, etc.
\n * At the same time, this class will trigger the associated event when a value is modified.
\n * eg : The user change the content of the searchbox, and submit a query. This will trigger the following events :
\n * -- state:change:q (because the value of 'q' changed)
\n * -- state:change (because at least one value changed in the query state)
\n * Component or external code could hook handler on those events : document.addEventListener('state:change:q', handler);
\n * See : {@link Model}, as all the relevant method are exposed in the base class.
\n * Optionally, the state can be persisted to the query string to allow browser history management : See {@link HistoryController}\n */\nexport class QueryStateModel extends Model {\n static ID = 'state';\n\n static defaultAttributes = {\n q: '',\n first: 0,\n t: '',\n hd: '',\n hq: '',\n sort: '',\n layout: 'list',\n tg: '',\n quickview: ''\n };\n\n static attributesEnum = {\n q: 'q',\n first: 'first',\n t: 't',\n sort: 'sort',\n layout: 'layout',\n hd: 'hd',\n hq: 'hq',\n tg: 'tg',\n quickview: 'quickview'\n };\n\n static getFacetId(id: string, include: boolean = true) {\n return 'f:' + id + (include ? '' : ':not');\n }\n\n static getFacetOperator(id: string) {\n return 'f:' + id + ':operator';\n }\n\n static getFacetLookupValue(id: string) {\n return QueryStateModel.getFacetId(id) + ':lookupvalues';\n }\n\n /**\n * Create a new QueryState\n * @param element\n * @param attributes\n * @param bindings\n */\n constructor(element: HTMLElement, attributes?: IStringMap) {\n let merged = _.extend({}, QueryStateModel.defaultAttributes, attributes);\n super(element, QueryStateModel.ID, merged);\n }\n\n /**\n * Determine if at least one facet is currently active in the interface (this means that a facet has selected or excluded values)\n * @returns {boolean}\n */\n public atLeastOneFacetIsActive() {\n return !_.isUndefined(_.find(this.attributes, (value, key: any) => {\n return key.indexOf('f:') == 0 && Utils.isNonEmptyArray(value);\n }));\n }\n\n public set(attribute: string, value: any, options?: IModelSetOptions) {\n this.validate(attribute, value);\n super.set(attribute, value, options);\n }\n\n private validate(attribute: string, value: any) {\n if (attribute == QueryStateModel.attributesEnum.first) {\n Assert.isNumber(value);\n Assert.isLargerOrEqualsThan(0, value);\n }\n }\n}\n\nexport function setState(model: Model, args: any[]): any {\n Assert.exists(model);\n\n if (args.length == 0 || args[0] == undefined) {\n // No args means return the model\n return model;\n } else if (args.length == 1 && Utils.isNonEmptyString(args[0])) {\n // One string arg means retrieve value from model\n return model.get(args[0]);\n } else if (_.isObject(args[0])) {\n // One dictionary means set multiple values\n let toSet = args[0];\n let options = _.extend({ customAttribute: true }, args[1]);\n return model.setMultiple(toSet, options);\n } else if (args.length > 1) {\n // Otherwise we're setting a value\n let name = args[0];\n let value = args[1];\n let options = _.extend({ customAttribute: true }, args[2]);\n Assert.isNonEmptyString(name);\n return model.set(name, value, options);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/models/QueryStateModel.ts\n **/","import { Model } from './Model';\nimport _ = require('underscore');\n\nexport interface IComponentOptionsAttributes {\n resultLink: any;\n searchHub: string;\n}\n\nexport class ComponentOptionsModel extends Model {\n static ID = 'ComponentOptions';\n\n static defaultAttributes: IComponentOptionsAttributes = {\n resultLink: undefined,\n searchHub: undefined\n };\n\n static attributesEnum = {\n resultLink: 'resultLink',\n searchHub: 'searchHub'\n };\n\n constructor(element: HTMLElement, attributes?: IComponentOptionsAttributes) {\n var merged = _.extend({}, ComponentOptionsModel.defaultAttributes, attributes);\n super(element, ComponentOptionsModel.ID, merged);\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/models/ComponentOptionsModel.ts\n **/","import { Model } from './Model';\nimport { BaseComponent } from '../ui/Base/BaseComponent';\n\nexport class ComponentStateModel extends Model {\n static ID = 'ComponentState';\n\n constructor(element: HTMLElement) {\n super(element, ComponentStateModel.ID, {});\n }\n\n public registerComponent(componentId: string, component: BaseComponent) {\n var currentAttribute = this.attributes[componentId];\n if (currentAttribute == undefined) {\n this.attributes[componentId] = [component];\n } else {\n this.attributes[componentId].push(component);\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/models/ComponentStateModel.ts\n **/","export * from './ui/Base/RegisteredNamedMethods';\nexport { ComponentOptions, ComponentOptionsType } from './ui/Base/ComponentOptions';\nexport { Component } from './ui/Base/Component';\nexport { BaseComponent } from './ui/Base/BaseComponent';\nexport { RootComponent } from './ui/Base/RootComponent';\nexport { QueryBuilder } from './ui/Base/QueryBuilder';\nexport { ExpressionBuilder } from './ui/Base/ExpressionBuilder';\nexport { IResultsComponentBindings } from './ui/Base/ResultsComponentBindings';\n// Export Initialization under both name, for legacy reason and old code in the wild that\n// reference the old CoveoJQuery module\nexport { Initialization } from './ui/Base/Initialization';\nexport { Initialization as CoveoJQuery } from './ui/Base/Initialization';\nexport { initCoveoJQuery } from './ui/Base/CoveoJQuery';\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/UIBaseModules.ts\n **/","import { Initialization } from './Initialization';\nimport { Assert } from '../../misc/Assert';\nimport { QueryController } from '../../controllers/QueryController';\nimport { QueryStateModel, setState } from '../../models/QueryStateModel';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { Analytics } from '../Analytics/Analytics';\nimport { IAnalyticsClient } from '../Analytics/AnalyticsClient';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { $$ } from '../../utils/Dom';\nimport { IAnalyticsActionCause, IAnalyticsDocumentViewMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { BaseComponent } from '../Base/BaseComponent';\nimport { Component } from '../Base/Component';\nimport { IStandaloneSearchInterfaceOptions } from '../SearchInterface/SearchInterface';\nimport { IRecommendationOptions } from '../Recommendation/Recommendation';\nimport _ = require('underscore');\n\n/**\n * Initialize the framework with a basic search interface. Calls {@link Initialization.initSearchInterface}.
\n * If using the jQuery extension, this is called using $('#root').coveo('init');.\n * @param element The root of the interface to initialize.\n * @param options JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType : true}}).\n */\nexport function init(element: HTMLElement, options: any = {}) {\n Initialization.initializeFramework(element, options, () => {\n Initialization.initSearchInterface(element, options);\n });\n}\n\nInitialization.registerNamedMethod('init', (element: HTMLElement, options: any = {}) => {\n init(element, options);\n});\n\n/**\n * Initialize the framework with a standalone search box. Calls {@link Initialize.initStandaloneSearchInterface}.
\n * If using the jQuery extension, this is called using $('#root').coveo('initSearchbox');.\n * @param element The root of the interface to initialize.\n * @param searchPageUri The search page on which to redirect when there is a query.\n * @param options JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType : true}}).\n */\nexport function initSearchbox(element: HTMLElement, searchPageUri: string, options: any = {}): void {\n Assert.isNonEmptyString(searchPageUri);\n var searchInterfaceOptions = {};\n searchInterfaceOptions.searchPageUri = searchPageUri;\n searchInterfaceOptions.autoTriggerQuery = false;\n searchInterfaceOptions.hideUntilFirstQuery = false;\n searchInterfaceOptions.enableHistory = false;\n options = _.extend({}, options, { StandaloneSearchInterface: searchInterfaceOptions });\n Initialization.initializeFramework(element, options, () => {\n Initialization.initStandaloneSearchInterface(element, options);\n });\n}\n\nInitialization.registerNamedMethod('initSearchbox', (element: HTMLElement, searchPageUri: string, options: any = {}) => {\n initSearchbox(element, searchPageUri, options);\n});\n\n/**\n * Initialize the framework with a recommendation interface. Calls {@link Initialization.initRecommendationInterface}.
\n * If using the jQuery extension, this is called using $('#root').coveo('initRecommendation');.\n * @param element The root of the interface to initialize.\n * @param mainSearchInterface The search interface to link with the recommendation interface (see {@link Recommendation}).\n * @param userContext The user context to pass with the query generated in the recommendation interface (see {@link Recommendation}).\n * @param options JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType: true}}).\n */\nexport function initRecommendation(element: HTMLElement, mainSearchInterface?: HTMLElement, userContext?: { [name: string]: any }, options: any = {}): void {\n var recommendationOptions = {};\n recommendationOptions.mainSearchInterface = mainSearchInterface;\n recommendationOptions.userContext = JSON.stringify(userContext);\n recommendationOptions.enableHistory = false;\n options = _.extend({}, options, { Recommendation: recommendationOptions });\n Initialization.initializeFramework(element, options, () => {\n Initialization.initRecommendationInterface(element, options);\n });\n}\n\nInitialization.registerNamedMethod('initRecommendation', (element: HTMLElement, mainSearchInterface: HTMLElement, userContext: any = {}, options: any = {}) => {\n initRecommendation(element, mainSearchInterface, userContext, options);\n});\n\n\n/**\n * Execute a standard query. Active component in the interface will react to events/ push data in the query / handle the query success or failure as needed.
\n * It triggers a standard query flow for which the standard component will perform their expected behavior.
\n * If you wish to only perform a query on the index to retrieve results (without the component reacting), look into {@link SearchInterface} instead.
\n * Calling this method is the same as calling {@link QueryController.executeQuery}.\n * @param element The root of the interface to initialize.\n */\nexport function executeQuery(element: HTMLElement): Promise {\n Assert.exists(element);\n\n var queryController = Component.resolveBinding(element, QueryController);\n Assert.exists(queryController);\n return queryController.executeQuery();\n}\n\nInitialization.registerNamedMethod('executeQuery', (element: HTMLElement) => {\n return executeQuery(element);\n});\n\n/**\n * Perform operation on the state ({@link QueryStateModel} of the interface.
\n * Get the complete {@link QueryStateModel} object: Coveo.state(element)
.\n * Get an attribute from the {@link QueryStateModel}: Coveo.state(element, 'q') Can be any attribute.
\n * Set an attribute on the {@link QueryStateModel}: Coveo.state(element, 'q', 'foobar'). Can be any attribute.
\n * Set multiple attribute on the {@link QueryStateModel}: Coveo.state(element, {'q' : 'foobar' , sort : 'relevancy'}). Can be any attribute.
\n * If using the jQuery extension, this is called using $('#root').coveo('state');.\n * @param element The root of the interface for which to access the {@link QueryStateModel}.\n * @param args\n * @returns {any}\n */\nexport function state(element: HTMLElement, ...args: any[]): any {\n Assert.exists(element);\n var model = Component.resolveBinding(element, QueryStateModel);\n return setState(model, args);\n}\n\nInitialization.registerNamedMethod('state', (element: HTMLElement, ...args: any[]): any => {\n if (args.length != 0) {\n return state.apply(undefined, [element].concat(args));\n } else {\n return state.apply(undefined, [element]);\n }\n});\n\n/**\n * Get the component bound on the given `HTMLElement`.\n * @param element The `HTMLElement` for which to get the component instance.\n * @param componentClass If multiple components are bound to a single `HTMLElement`, you need to specify which components you wish to get.\n * @param noThrow By default, the GET method will throw if there is no component bound, or if there are multiple component and no `componentClass` is specified. This deletes the error if set to true.\n * @returns {Component}\n */\nexport function get(element: HTMLElement, componentClass?, noThrow?: boolean): BaseComponent {\n Assert.exists(element);\n return Component.get(element, componentClass, noThrow);\n}\n\nInitialization.registerNamedMethod('get', (element: HTMLElement, componentClass?: any, noThrow?: boolean): BaseComponent => {\n return get(element, componentClass, noThrow);\n});\n\nexport function result(element: HTMLElement, noThrow?: boolean): IQueryResult {\n Assert.exists(element);\n return Component.getResult(element, noThrow);\n}\n\nInitialization.registerNamedMethod('result', (element: HTMLElement, noThrow?: boolean): IQueryResult => {\n return result(element, noThrow);\n});\n\nfunction getCoveoAnalyticsClient(element: HTMLElement): IAnalyticsClient {\n var analytics = getCoveoAnalytics(element);\n if (analytics) {\n return analytics.client;\n } else {\n return undefined;\n }\n}\n\nfunction getCoveoAnalytics(element: HTMLElement): Analytics {\n var analyticsElement = $$(element).find('.' + Component.computeCssClassName(Analytics));\n if (analyticsElement) {\n return Component.get(analyticsElement);\n } else {\n return undefined;\n }\n}\n\n/**\n * Log a custom event on the Coveo Usage Analytics service.\n * @param element The root of the interface for which to log analytics events.\n * @param customEventCause The cause of the event.\n * @param metadata The metadata associated with the event (JSON key value).\n */\nexport function logCustomEvent(element: HTMLElement, customEventCause: IAnalyticsActionCause, metadata: IStringMap) {\n var client = getCoveoAnalyticsClient(element);\n if (client) {\n client.logCustomEvent(customEventCause, metadata, element);\n }\n}\n\nInitialization.registerNamedMethod('logCustomEvent', (element: HTMLElement, customEventCause: IAnalyticsActionCause, metadata: any) => {\n logCustomEvent(element, customEventCause, metadata);\n});\n\n/**\n * Log a `SearchEvent` on the Coveo Usage Analytics service.\n * @param element The root of the interface for which to log analytics events.\n * @param searchEventCause The cause of the event.\n * @param metadata The metadata associated with the event (JSON key value).\n */\nexport function logSearchEvent(element: HTMLElement, searchEventCause: IAnalyticsActionCause, metadata: IStringMap) {\n var client = getCoveoAnalyticsClient(element);\n if (client) {\n client.logSearchEvent(searchEventCause, metadata);\n }\n}\n\nInitialization.registerNamedMethod('logSearchEvent', (element: HTMLElement, searchEventCause: IAnalyticsActionCause, metadata: IStringMap) => {\n logSearchEvent(element, searchEventCause, metadata);\n});\n\n/**\n * Log a `SearchAsYouTypeEvent` on the Coveo Usage Analytics service.
\n * It is a bit different from a standard search event, as it will wait 5 seconds before sending the final `SearchAsYouType` event.\n * @param element The root of the interface for which to log analytics events.\n * @param searchAsYouTypeEventCause The cause of the event.\n * @param metadata The metadata associated with the event (JSON key value).\n */\nexport function logSearchAsYouTypeEvent(element: HTMLElement, searchAsYouTypeEventCause: IAnalyticsActionCause, metadata: IStringMap) {\n var client = getCoveoAnalyticsClient(element);\n if (client) {\n client.logSearchAsYouType(searchAsYouTypeEventCause, metadata);\n }\n}\n\nInitialization.registerNamedMethod('logSearchAsYouTypeEvent', (element: HTMLElement, searchAsYouTypeEventCause: IAnalyticsActionCause, metadata: IStringMap) => {\n logSearchAsYouTypeEvent(element, searchAsYouTypeEventCause, metadata);\n});\n\n/**\n * Log a `ClickEvent` on the Coveo Usage Analytics service.\n * @param element The root of the interface for which to log analytics events.\n * @param clickEventCause The cause of the event.\n * @param metadata The metadata associated with the event (JSON key value).\n * @param result The result that was clicked.\n */\nexport function logClickEvent(element: HTMLElement, clickEventCause: IAnalyticsActionCause, metadata: IStringMap, result: IQueryResult) {\n var client = getCoveoAnalyticsClient(element);\n if (client) {\n client.logClickEvent(clickEventCause, metadata, result, element);\n }\n}\n\nInitialization.registerNamedMethod('logClickEvent', (element: HTMLElement, clickEventCause: IAnalyticsActionCause, metadata: IStringMap, result: IQueryResult) => {\n logClickEvent(element, clickEventCause, metadata, result);\n});\n\n/**\n * Pass options to the framework, before it is initialized ({@link init}).
\n * All the options passed with this calls will be merged together on initialization.\n * @param element The root of the interface for which you wish to set options.\n * @param optionsToSet JSON options for the framework (e.g.: {Searchbox : {enableSearchAsYouType: true}}).\n */\nexport function options(element: HTMLElement, optionsToSet: any = {}) {\n Initialization.registerDefaultOptions(element, optionsToSet);\n}\n\nInitialization.registerNamedMethod('options', (element: HTMLElement, optionsToSet: any = {}) => {\n options(element, optionsToSet);\n});\n\n/**\n * Patch the given `methodName` on an instance of a component bound to an `HTMLElement` with a new handler.\n * @param element\n * @param methodName\n * @param handler\n */\nexport function patch(element: HTMLElement, methodName: string, handler: (...args: any[]) => any) {\n Initialization.monkeyPatchComponentMethod(methodName, element, handler);\n}\n\nInitialization.registerNamedMethod('patch', (element?: HTMLElement, methodName?: string, handler?: (...args: any[]) => any) => {\n patch(element, methodName, handler);\n});\n\nexport function initBox(element: HTMLElement, ...args: any[]) {\n var type, options: any = {}, injectMarkup;\n // This means : initBox, no type (no injection) and no options\n if (args.length == 0) {\n type = 'Standard';\n injectMarkup = false;\n } else if (args.length == 1) { // 1 arg, might be options or type\n // This mean a type (with injection) and no options\n if (typeof args[0] == 'string') {\n type = args[0];\n injectMarkup = true;\n } else if (typeof args[0] == 'object') { // This means no type(no injection) and with options\n type = 'Standard';\n injectMarkup = false;\n options = args[0];\n } else {\n Assert.fail('Invalid parameters to init a box');\n }\n } else if (args.length == 2) { // 2 args means both options and type (with injection);\n type = args[0];\n options = args[1];\n injectMarkup = true;\n }\n var merged: any = {};\n merged[type || 'Container'] = _.extend({}, options.SearchInterface, options[type]);\n options = _.extend({}, options, merged);\n Initialization.initializeFramework(element, options, () => {\n Initialization.initBoxInterface(element, options, type, injectMarkup);\n });\n}\n\n\nInitialization.registerNamedMethod('initBox', (element?: HTMLElement, ...args: any[]) => {\n initBox(element, args);\n});\n\nexport function nuke(element: HTMLElement) {\n $$(element).trigger(InitializationEvents.nuke);\n}\n\nInitialization.registerNamedMethod('nuke', (element: HTMLElement) => {\n nuke(element);\n});\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Base/RegisteredNamedMethods.ts\n **/","import { IQueryResult } from '../../rest/QueryResult';\nimport { Logger } from '../../misc/Logger';\nimport { IComponentDefinition, Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Utils } from '../../utils/Utils';\nimport { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { SearchInterface, StandaloneSearchInterface } from '../SearchInterface/SearchInterface';\nimport { QueryController } from '../../controllers/QueryController';\nimport { HashUtils } from '../../utils/HashUtils';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { ComponentStateModel } from '../../models/ComponentStateModel';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { BaseComponent } from '../Base/BaseComponent';\nimport { JQueryUtils } from '../../utils/JQueryutils';\nimport { IJQuery } from './CoveoJQuery';\nimport _ = require('underscore');\n\n/**\n * Represent the initialization parameters required to init a new component.\n */\nexport interface IInitializationParameters {\n options: any;\n result?: IQueryResult;\n bindings: IComponentBindings;\n}\n\n/**\n * The main purpose of this class is to initialize the framework (a.k.a the code executed when calling `Coveo.init`).
\n * It's also in charge or registering the available components, as well as the method that we expost to the global Coveo scope.
\n * For example, the `Coveo.executeQuery` function will be registed in this class by the {@link QueryController}.\n */\nexport class Initialization {\n private static logger = new Logger('Initialization');\n private static autoCreateComponents: { [s: string]: any; } = {};\n private static namedMethods: { [s: string]: any; } = {};\n\n /**\n * Register a new set of options for a given element.
\n * When the element is eventually initialized as a component, those options will be used / merged to create the final option set to use for this component.
\n * Note that this function should not normally be called directly, but instead using the global `Coveo.options` function\n * @param element\n * @param options\n */\n public static registerDefaultOptions(element: HTMLElement, options: {}): void {\n let existing = element['CoveoDefaultOptions'] || {};\n let updated = Utils.extendDeep(existing, options);\n element['CoveoDefaultOptions'] = updated;\n }\n\n public static resolveDefaultOptions(element: HTMLElement, options: {}): {} {\n let optionsForThisElement = element['CoveoDefaultOptions'];\n\n let optionsSoFar: {};\n if (Utils.exists(optionsForThisElement)) {\n optionsSoFar = Utils.extendDeep(optionsForThisElement, options);\n } else {\n optionsSoFar = options;\n }\n\n if (element.parentElement) {\n return Initialization.resolveDefaultOptions(element.parentElement, optionsSoFar);\n } else {\n return optionsSoFar;\n }\n }\n\n /**\n * Register a new Component to be recognized by the framework.
\n * This essentially mean that when we call `Coveo.init`, the Initialization class will scan the DOM for known component (which have registed themselves with this call) and create a new component on each element.\n * @param componentClass\n */\n public static registerAutoCreateComponent(componentClass: IComponentDefinition): void {\n Assert.exists(componentClass);\n Assert.exists(componentClass.ID);\n Assert.doesNotExists(Initialization.autoCreateComponents[componentClass.ID]);\n Assert.doesNotExists(Initialization.namedMethods[componentClass.ID]);\n Initialization.autoCreateComponents[componentClass.ID] = componentClass;\n }\n\n /**\n * Check if a component is already registed, using it's ID (e.g. : 'Facet').\n * @param componentClassId\n * @returns {boolean}\n */\n public static isComponentClassIdRegistered(componentClassId: string): boolean {\n return Utils.exists(Initialization.autoCreateComponents[componentClassId]);\n }\n\n /**\n * Return the list of all known components (the list of ID for each component).\n * @returns {string[]}\n */\n public static getListOfRegisteredComponents() {\n return _.keys(Initialization.autoCreateComponents);\n }\n\n /**\n * Return the component class definition, using it's ID (e.g. : 'CoveoFacet').\n * @param name\n * @returns {IComponentDefinition}\n */\n public static getRegisteredComponent(name: string) {\n return Initialization.autoCreateComponents[name];\n }\n\n /**\n * Initialize the framework. Note that this function should not normally be called directly, but instead using a globally registered function (e.g.: Coveo.init), or {@link Initialization.initSearchInterface} or {@link Initialization.initStandaloneSearchInterface}
\n * (e.g. : `Coveo.init` or `Coveo.initSearchbox`).\n * @param element The element on which to initialize the interface.\n * @param options The options for all components (eg: {Searchbox : {enableSearchAsYouType : true}}).\n * @param initSearchInterfaceFunction The function to execute to create the {@link SearchInterface} component. Different init call will create different {@link SearchInterface}.\n */\n public static initializeFramework(element: HTMLElement, options?: any, initSearchInterfaceFunction?: (...args: any[]) => void) {\n Assert.exists(element);\n let alreadyInitialized = Component.get(element, QueryController, true);\n if (alreadyInitialized) {\n this.logger.error('This DOM element has already been initialized as a search interface, skipping initialization', element);\n return;\n }\n\n options = Initialization.resolveDefaultOptions(element, options);\n\n Initialization.performInitFunctionsOption(options, InitializationEvents.beforeInitialization);\n $$(element).trigger(InitializationEvents.beforeInitialization);\n\n initSearchInterfaceFunction(element, options);\n Initialization.initExternalComponents(element, options);\n\n Initialization.performInitFunctionsOption(options, InitializationEvents.afterComponentsInitialization);\n $$(element).trigger(InitializationEvents.afterComponentsInitialization);\n\n $$(element).trigger(InitializationEvents.restoreHistoryState);\n\n Initialization.performInitFunctionsOption(options, InitializationEvents.afterInitialization);\n $$(element).trigger(InitializationEvents.afterInitialization);\n\n let searchInterface = Component.get(element, SearchInterface);\n\n\n // Elements that have the coveo-hide-until-loaded class are hidden by default.\n // Now that we're loaded (and before the first query returns), we can remove\n // the class. Also, we add a class that gives the opportunity for an animation\n // to apply at startup, such as a fade-in that comes in by default.\n let elemsHidden = $$(element).findAll('.coveo-hide-until-loaded');\n _.each(elemsHidden, (e: HTMLElement) => {\n $$(e).removeClass('coveo-hide-until-loaded');\n $$(e).addClass('coveo-show-after-loaded');\n });\n\n if (searchInterface.options.autoTriggerQuery) {\n Initialization.logFirstQueryCause(searchInterface);\n let shouldLogInActionHistory = true;\n // We should not log an action history if the interface is a standalone recommendation component.\n if (Coveo['Recommendation']) {\n shouldLogInActionHistory = !(searchInterface instanceof Coveo['Recommendation']);\n }\n (Component.get(element, QueryController)).executeQuery({\n logInActionsHistory: shouldLogInActionHistory,\n isFirstQuery: true\n });\n }\n }\n\n /**\n * Create a new standard search interface. This is the function executed when calling `Coveo.init`.\n * @param element\n * @param options\n */\n public static initSearchInterface(element: HTMLElement, options: any = {}) {\n options = Initialization.resolveDefaultOptions(element, options);\n let searchInterface = new SearchInterface(element, options.SearchInterface, options.Analytics);\n searchInterface.options.originalOptionsObject = options;\n let initParameters: IInitializationParameters = { options: options, bindings: searchInterface.getBindings() };\n Initialization.automaticallyCreateComponentsInside(element, initParameters, ['Recommendation']);\n }\n\n /**\n * Create a new standalone search interface (standalone search box). This is the function executed when calling `Coveo.initSearchbox`.\n * @param element\n * @param options\n */\n public static initStandaloneSearchInterface(element: HTMLElement, options: any = {}) {\n options = Initialization.resolveDefaultOptions(element, options);\n\n // Set trigger query on clear to false for standalone search interface automatically\n // Take care of not overriding any options that could have been set by external code.\n if (!options.Querybox) {\n options.Querybox = {};\n }\n if (!options.Omnibox) {\n options.Omnibox = {};\n }\n if (!options.Searchbox) {\n options.Searchbox = {};\n }\n if (!options.Querybox.triggerQueryOnClear || !options.Omnibox.triggerQueryOnClear || !options.Searchbox.triggerOnQueryClear) {\n options.Querybox.triggerQueryOnClear = false;\n options.Omnibox.triggerQueryOnClear = false;\n options.Searchbox.triggerQueryOnClear = false;\n }\n\n let searchInterface = new StandaloneSearchInterface(element, options.StandaloneSearchInterface, options.Analytics);\n searchInterface.options.originalOptionsObject = options;\n let initParameters: IInitializationParameters = { options: options, bindings: searchInterface.getBindings() };\n Initialization.automaticallyCreateComponentsInside(element, initParameters);\n }\n\n /**\n * Create a new recommendation search interface. This is the function executed when calling `Coveo.initRecommendation`.\n * @param element\n * @param options\n */\n public static initRecommendationInterface(element: HTMLElement, options: any = {}) {\n options = Initialization.resolveDefaultOptions(element, options);\n // Since a recommendation interface inherits from a search interface, we need to merge those if passed on init\n let optionsForRecommendation = _.extend({}, options.SearchInterface, options.Recommendation);\n // If there is a main search interface, modify the loading animation for the recommendation interface to a \"noop\" element\n // We don't want 2 animation overlapping\n if (optionsForRecommendation.mainSearchInterface) {\n optionsForRecommendation.firstLoadingAnimation = $$('span').el;\n }\n let recommendation = new window['Coveo']['Recommendation'](element, optionsForRecommendation, options.Analytics);\n recommendation.options.originalOptionsObject = options;\n let initParameters: IInitializationParameters = { options: options, bindings: recommendation.getBindings() };\n Initialization.automaticallyCreateComponentsInside(element, initParameters);\n }\n\n /**\n * Scan the element and all its children for known components. Initialize every known component found.\n * @param element The element for which to scan it's children.\n * @param initParameters Needed parameters to initialize all the children components.\n * @param ignore An optional list of component ID to ignore and skip when scanning for known components.\n */\n public static automaticallyCreateComponentsInside(element: HTMLElement, initParameters: IInitializationParameters, ignore?: string[]) {\n Assert.exists(element);\n\n let codeToExecute: { (): void }[] = [];\n\n let htmlElementsToIgnore: HTMLElement[] = [];\n // Scan for elements to ignore which can be a container component (with other component inside)\n // When a component is ignored, all it's children component should be ignored too.\n // Add them to the array of html elements that should be skipped.\n _.each(ignore, (toIgnore) => {\n let rootToIgnore = $$(element).find(`.${Component.computeCssClassNameForType(toIgnore)}`);\n if (rootToIgnore) {\n let childsElementsToIgnore = $$(rootToIgnore).findAll('*');\n htmlElementsToIgnore = htmlElementsToIgnore.concat(childsElementsToIgnore);\n }\n });\n\n for (let componentClassId in Initialization.autoCreateComponents) {\n if (!_.contains(ignore, componentClassId)) {\n let componentClass = Initialization.autoCreateComponents[componentClassId];\n let classname = Component.computeCssClassName(componentClass);\n let elements = $$(element).findAll('.' + classname);\n // From all the component we found which match the current className, remove those that should be ignored\n elements = _.difference(elements, htmlElementsToIgnore);\n if ($$(element).hasClass(classname) && !_.contains(htmlElementsToIgnore, element)) {\n elements.push(element);\n }\n if (elements.length != 0) {\n // Queue the code that will scan the now resolved selector to after we've\n // finished evaluating all selectors. This ensures that if a component\n // constructor adds child components under his tags, those won't get auto-\n // initialize by this invocation of this method. Components inserting child\n // components are responsible of invoking this method again if they want\n // child components to be auto-initialized.\n //\n // Explanation: If we don't do that, child components for which selector have\n // already been evaluated won't be initialized, whereas those that are next\n // in the list will be.\n codeToExecute.push(Initialization.createFunctionThatInitializesComponentOnElements(elements, componentClassId, componentClass, initParameters));\n }\n }\n }\n\n // Now that all selectors are executed, let's really initialize the components.\n _.each(codeToExecute, (code) => code());\n }\n\n /**\n * Create a new component on the given element.\n * @param componentClassId The ID of the component to initialize (e.g. : 'CoveoFacet').\n * @param element The HTMLElement on which to initialize.\n * @param initParameters Needed parameters to initialize the component.\n * @returns {Component}\n */\n public static createComponentOfThisClassOnElement(componentClassId: string, element: HTMLElement, initParameters?: IInitializationParameters): Component {\n Assert.isNonEmptyString(componentClassId);\n Assert.exists(element);\n\n let componentClass = Initialization.autoCreateComponents[componentClassId];\n Assert.exists(componentClass);\n\n let bindings: IComponentBindings = {};\n let options = {};\n let result: IQueryResult = undefined;\n\n if (initParameters != undefined) {\n _.each(<{ [key: string]: any }>initParameters.bindings, (value, key) => {\n bindings[key] = value;\n });\n options = initParameters.options;\n result = initParameters.result;\n }\n\n Initialization.logger.trace('Creating component of class ' + componentClassId, element, options);\n return new componentClass(element, options, bindings, result);\n }\n\n /**\n * Register a new globally available method in the Coveo namespace (e.g.: `Coveo.init`).\n * @param methodName The method name to register.\n * @param handler The function to execute when the method is called.\n */\n public static registerNamedMethod(methodName: string, handler: (element: HTMLElement, ...args: any[]) => any) {\n Assert.isNonEmptyString(methodName);\n Assert.doesNotExists(Initialization.autoCreateComponents[methodName]);\n Assert.doesNotExists(Initialization.namedMethods[methodName]);\n Assert.exists(handler);\n Initialization.namedMethods[methodName] = handler;\n }\n\n /**\n * Check if the method is already registed.\n * @param methodName\n * @returns {boolean}\n */\n public static isNamedMethodRegistered(methodName: string): boolean {\n return Utils.exists(Initialization.namedMethods[methodName]);\n }\n\n /**\n * 'Monkey patch' (replace the function with a new one) a given method on a component instance.\n * @param methodName\n * @param element\n * @param handler\n */\n public static monkeyPatchComponentMethod(methodName: string, element: HTMLElement, handler: (...args: any[]) => any) {\n Assert.isNonEmptyString(methodName);\n Assert.exists(handler);\n\n let componentClass;\n if (methodName.indexOf('.') > 0) {\n let splitArg = methodName.split('.');\n Assert.check(splitArg.length == 2, 'Invalid method name, correct syntax is CoveoComponent.methodName.');\n componentClass = splitArg[0];\n methodName = splitArg[1];\n }\n\n let boundComponent = Component.get(element, componentClass);\n Assert.exists(boundComponent);\n Assert.exists(boundComponent[methodName]);\n\n let originalMethodName = '__' + methodName;\n if (!Utils.exists(boundComponent[originalMethodName])) {\n boundComponent[originalMethodName] = boundComponent[methodName];\n }\n\n boundComponent[methodName] = handler;\n }\n\n public static initBoxInterface(element: HTMLElement, options: any = {}, type: string = 'Standard', injectMarkup: boolean = true) {\n options = Initialization.resolveDefaultOptions(element, options);\n let fromInitTypeToBoxReference = 'Box';\n if (type != 'Standard') {\n fromInitTypeToBoxReference += 'For' + type;\n }\n let boxRef = Component.getComponentRef(fromInitTypeToBoxReference);\n if (boxRef) {\n new Logger(element).info('Initializing box of type ' + fromInitTypeToBoxReference);\n let injectFunction: () => any = injectMarkup ? boxRef.getInjection : () => {\n };\n let box = new boxRef(element, options[fromInitTypeToBoxReference], options.Analytics, injectFunction, options);\n box.options.originalOptionsObject = options;\n let initParameters: IInitializationParameters = { options: options, bindings: box.getBindings() };\n Initialization.automaticallyCreateComponentsInside(element, initParameters);\n } else {\n new Logger(element).error('Trying to initialize box of type : ' + fromInitTypeToBoxReference + ' but not found in code (not compiled)!');\n Assert.fail('Cannot initialize unknown type of box');\n }\n }\n\n public static dispatchNamedMethodCall(methodName: string, element: HTMLElement, args: any[]): any {\n Assert.isNonEmptyString(methodName);\n Assert.exists(element);\n\n let namedMethodHandler: (element: HTMLElement, ...args: any[]) => any = Initialization.namedMethods[methodName];\n Assert.exists(namedMethodHandler);\n\n Initialization.logger.trace('Dispatching named method call of ' + methodName, element, args);\n if (args.length != 0) {\n return namedMethodHandler.apply(null, [element].concat(args));\n } else {\n return namedMethodHandler.apply(null, [element]);\n }\n\n }\n\n public static dispatchNamedMethodCallOrComponentCreation(token: string, element: HTMLElement, args: any[]): any {\n Assert.isNonEmptyString(token);\n Assert.exists(element);\n\n if (Initialization.isNamedMethodRegistered(token)) {\n return Initialization.dispatchNamedMethodCall(token, element, args);\n } else if (Initialization.isComponentClassIdRegistered(token)) {\n return Initialization.createComponentOfThisClassOnElement(token, element, args[0]);\n } else if (Initialization.isThereASingleComponentBoundToThisElement(element)) {\n return Initialization.dispatchMethodCallOnBoundComponent(token, element, args);\n } else {\n Assert.fail('No method or component named ' + token + ' are registered.');\n }\n }\n\n public static isSearchFromLink(searchInterface: SearchInterface) {\n return Utils.isNonEmptyString(searchInterface.getBindings().queryStateModel.get('q'));\n }\n\n private static isThereASingleComponentBoundToThisElement(element: HTMLElement): boolean {\n Assert.exists(element);\n return Utils.exists(Component.get(element));\n }\n\n private static dispatchMethodCallOnBoundComponent(methodName: string, element: HTMLElement, args: any[]): any {\n Assert.isNonEmptyString(methodName);\n Assert.exists(element);\n\n let boundComponent = Component.get(element);\n Assert.exists(boundComponent);\n\n let method = boundComponent[methodName];\n if (Utils.exists(method)) {\n return method.apply(boundComponent, args);\n } else {\n Assert.fail('No method named ' + methodName + ' exist on component ' + boundComponent.type);\n }\n }\n\n\n private static logFirstQueryCause(searchInterface: SearchInterface) {\n let firstQueryCause = HashUtils.getValue('firstQueryCause', HashUtils.getHash());\n if (firstQueryCause != null) {\n let meta = HashUtils.getValue('firstQueryMeta', HashUtils.getHash()) || {};\n searchInterface.usageAnalytics.logSearchEvent(analyticsActionCauseList[firstQueryCause], meta);\n } else {\n if (Initialization.isSearchFromLink(searchInterface)) {\n searchInterface.usageAnalytics.logSearchEvent(analyticsActionCauseList.searchFromLink, {});\n } else {\n searchInterface.usageAnalytics.logSearchEvent(analyticsActionCauseList.interfaceLoad, {});\n }\n }\n }\n\n private static performInitFunctionsOption(options, event: string) {\n if (Utils.exists(options)) {\n Initialization.performFunctions(options[event]);\n }\n }\n\n private static performFunctions(option) {\n if (Utils.exists(option)) {\n _.each(option, (func: () => void) => {\n if (typeof func == 'function') {\n func();\n }\n });\n }\n }\n\n private static initExternalComponents(element: HTMLElement, options?: any) {\n if (options && options['externalComponents']) {\n let searchInterface = Component.get(element, SearchInterface);\n let queryStateModel = Component.get(element, QueryStateModel);\n let componentStateModel = Component.get(element, ComponentStateModel);\n let queryController = Component.get(element, QueryController);\n let componentOptionsModel = Component.get(element, ComponentOptionsModel);\n let usageAnalytics = searchInterface.usageAnalytics;\n Assert.exists(searchInterface);\n Assert.exists(queryStateModel);\n Assert.exists(queryController);\n Assert.exists(componentStateModel);\n Assert.exists(usageAnalytics);\n let initParameters: IInitializationParameters = {\n options: options,\n bindings: {\n searchInterface: searchInterface,\n queryStateModel: queryStateModel,\n queryController: queryController,\n usageAnalytics: usageAnalytics,\n componentStateModel: componentStateModel,\n componentOptionsModel: componentOptionsModel,\n root: element\n }\n };\n _.each(options['externalComponents'], (externalComponent: HTMLElement | IJQuery) => {\n let elementToInstantiate = externalComponent;\n if (Utils.isHtmlElement(elementToInstantiate)) {\n Initialization.automaticallyCreateComponentsInside(elementToInstantiate, initParameters);\n } else if (JQueryUtils.isInstanceOfJQuery(elementToInstantiate)) {\n Initialization.automaticallyCreateComponentsInside(((elementToInstantiate).get(0)), initParameters);\n }\n });\n }\n }\n\n private static createFunctionThatInitializesComponentOnElements(elements: Element[], componentClassId: string, componentClass: BaseComponent, initParameters: IInitializationParameters) {\n return () => {\n _.each(elements, (matchingElement: HTMLElement) => {\n if (Component.get(matchingElement, componentClassId) == null) {\n // If options were provided, lookup options for this component class and\n // also for the element id. Merge them and pass those to the factory method.\n let optionsToUse = undefined;\n if (Utils.exists(initParameters.options)) {\n let optionsForComponentClass = initParameters.options[componentClassId];\n let optionsForElementId = initParameters.options[matchingElement.id];\n let initOptions = initParameters.options['initOptions'] ? initParameters.options['initOptions'][componentClassId] : {};\n optionsToUse = Utils.extendDeep(optionsForElementId, initOptions);\n optionsToUse = Utils.extendDeep(optionsForComponentClass, optionsToUse);\n }\n let initParamToUse = _.extend({}, initParameters, { options: optionsToUse });\n Initialization.createComponentOfThisClassOnElement(componentClass['ID'], matchingElement, initParamToUse);\n }\n });\n };\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Base/Initialization.ts\n **/","import { Assert } from '../../misc/Assert';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { JQueryUtils } from '../../utils/JQueryutils';\nimport { $$, Dom } from '../../utils/Dom';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { ComponentStateModel } from '../../models/ComponentStateModel';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { QueryController } from '../../controllers/QueryController';\nimport { SearchInterface } from '../../ui/SearchInterface/SearchInterface';\nimport { IAnalyticsClient } from '../../ui/Analytics/AnalyticsClient';\nimport { NoopAnalyticsClient } from '../../ui/Analytics/NoopAnalyticsClient';\nimport { BaseComponent } from './BaseComponent';\nimport { IComponentBindings } from './ComponentBindings';\nimport { DebugEvents } from '../../events/DebugEvents';\nimport _ = require('underscore');\n\n/**\n * Definition for a Component.\n */\nexport interface IComponentDefinition {\n /**\n * The static ID that each component need to be identified.
\n * For example, SearchButton -> static ID : SearchButton -> className : CoveoSearchButton\n */\n ID: string;\n /**\n * The generated `className` for this component.
\n * For example, SearchButton -> static ID : SearchButton -> className : CoveoSearchButton\n */\n className?: string;\n /**\n * Constructor for each component\n * @param element The HTMLElement on which the component will instantiate.\n * @param options The available options for the component.\n * @param bindings The bindings (or environment) for the component.For exemple, the {@link QueryController} or {@link SearchInterface}. Optional, if not provided, the component will resolve those automatically. This has a cost on performance, though, since it has to traverses it's parents to find the correct elements.\n * @param args Optional arguments, depending on the component type. For example, ResultComponent will receive the result there.\n */\n new (element: HTMLElement, options: any, bindings: IComponentBindings, ...args: any[]): Component;\n /**\n * The available options for the component.\n */\n options?: any;\n /**\n * The optional parent of the component, which will be a component itself.\n */\n parent?: IComponentDefinition;\n /**\n * The optional index fields that the component possess or display.\n */\n fields?: string[];\n}\n\n/**\n * The base class for every component in the framework.\n */\nexport class Component extends BaseComponent {\n /**\n * Allows the component to bind events and execute them only when it is enabled.\n * @type {Coveo.ComponentEvents}\n */\n public bind = new ComponentEvents(this);\n /**\n * A reference to the root HTMLElement (the {@link SearchInterface}).\n */\n public root: HTMLElement;\n /**\n * Contains the state of the query. Allows to get/set values. Trigger query state event when modified. Each component can listen to those events.\n */\n public queryStateModel: QueryStateModel;\n /**\n * Contains the state of different component (enabled vs disabled). Allows to get/set values. Trigger component state event when modified. Each component can listen to those events.\n */\n public componentStateModel: ComponentStateModel;\n /**\n * Contains the singleton that allows to trigger queries.\n */\n public queryController: QueryController;\n /**\n * A reference to the root of every component, the {@link SearchInterface}.\n */\n public searchInterface: SearchInterface;\n /**\n * A reference to the {@link Analytics.client}.\n */\n public usageAnalytics: IAnalyticsClient;\n /**\n * Contains the state of options for differents component. Mainly used by {@link ResultLink}.\n */\n public componentOptionsModel: ComponentOptionsModel;\n public ensureDom: Function;\n public options?: any;\n\n /**\n * Create a new Component. Resolve all {@link IComponentBindings} if not provided.
\n * Create a new Logger for this component.\n * Attach the component to the {@link SearchInterface}.
\n * @param element The HTMLElement on which to create the component. Used to bind data on the element.\n * @param type The unique identifier for this component. See : {@link IComponentDefinition.ID}. Used to generate the unique Coveo CSS class associated with every component.\n * @param bindings The environment for every component. Optional, but omitting to provide one will impact performance.\n */\n constructor(public element: HTMLElement, public type: string, bindings: IComponentBindings = {}) {\n super(element, type);\n this.root = bindings.root || this.resolveRoot();\n this.queryStateModel = bindings.queryStateModel || this.resolveQueryStateModel();\n this.componentStateModel = bindings.componentStateModel || this.resolveComponentStateModel();\n this.queryController = bindings.queryController || this.resolveQueryController();\n this.searchInterface = bindings.searchInterface || this.resolveSearchInterface();\n this.usageAnalytics = bindings.usageAnalytics || this.resolveUA();\n this.componentOptionsModel = bindings.componentOptionsModel || this.resolveComponentOptionsModel();\n this.ensureDom = _.once(() => this.createDom());\n\n if (this.searchInterface != null) {\n this.searchInterface.attachComponent(type, this);\n }\n\n this.initDebugInfo();\n }\n\n /**\n * Return the bindings, or environment, for the current component.\n * @returns {IComponentBindings}\n */\n public getBindings(): IComponentBindings {\n return {\n root: this.root,\n queryStateModel: this.queryStateModel,\n queryController: this.queryController,\n searchInterface: this.searchInterface,\n componentStateModel: this.componentStateModel,\n componentOptionsModel: this.componentOptionsModel,\n usageAnalytics: this.usageAnalytics\n };\n }\n\n public createDom() {\n // By default we do nothing\n }\n\n public resolveSearchInterface(): SearchInterface {\n return Component.resolveBinding(this.element, SearchInterface);\n }\n\n public resolveRoot(): HTMLElement {\n var resolvedSearchInterface = Component.resolveBinding(this.element, SearchInterface);\n return resolvedSearchInterface ? resolvedSearchInterface.element : undefined;\n }\n\n public resolveQueryController(): QueryController {\n return Component.resolveBinding(this.element, QueryController);\n }\n\n public resolveComponentStateModel(): ComponentStateModel {\n return Component.resolveBinding(this.element, ComponentStateModel);\n }\n\n public resolveQueryStateModel(): QueryStateModel {\n return Component.resolveBinding(this.element, QueryStateModel);\n }\n\n public resolveComponentOptionsModel(): ComponentOptionsModel {\n return Component.resolveBinding(this.element, ComponentOptionsModel);\n }\n\n public resolveUA(): IAnalyticsClient {\n var searchInterface = this.resolveSearchInterface();\n return (searchInterface && searchInterface.usageAnalytics) ? searchInterface.usageAnalytics : new NoopAnalyticsClient();\n }\n\n public resolveResult(): IQueryResult {\n return Component.getResult(this.element);\n }\n\n private initDebugInfo() {\n $$(this.element).on('dblclick', (e: MouseEvent) => {\n if (e.altKey) {\n var debugInfo = this.debugInfo();\n if (debugInfo != null) {\n $$(this.root).trigger(DebugEvents.showDebugPanel, this.debugInfo());\n }\n }\n });\n }\n\n /**\n * Get the bound component to the given HTMLElement. Throws an assert if the HTMLElement has no component bound, unless using the noThrow argument.
\n * If there is multiple component bound to the current HTMLElement, you must specify the component class.\n * @param element HTMLElement for which to get the bound component.\n * @param componentClass Optional component class. If the HTMLElement has multiple components bound, you must specify which one you are targeting.\n * @param noThrow Boolean option to tell the method to not throw on error.\n * @returns {Component}\n */\n static get(element: HTMLElement, componentClass?: any, noThrow?: boolean): BaseComponent {\n Assert.exists(element);\n\n if (_.isString(componentClass)) {\n return element[Component.computeCssClassNameForType(componentClass)];\n } else if (Utils.exists(componentClass)) {\n Assert.exists(componentClass.ID);\n return element[Component.computeCssClassNameForType(componentClass.ID)];\n } else {\n // No class specified, but we support returning the bound component\n // if there is exactly one.\n var boundComponents = BaseComponent.getBoundComponentsForElement(element);\n if (!noThrow) {\n Assert.check(boundComponents.length <= 1, 'More than one component is bound to this element. You need to specify the component type.');\n }\n return boundComponents[0];\n }\n }\n\n static getResult(element: HTMLElement, noThrow: boolean = false): IQueryResult {\n var resultElement = $$(element).closest('.CoveoResult');\n Assert.check(noThrow || resultElement != undefined);\n return resultElement['CoveoResult'];\n }\n\n static bindResultToElement(element: HTMLElement, result: IQueryResult) {\n Assert.exists(element);\n Assert.exists(result);\n $$(element).addClass('CoveoResult');\n element['CoveoResult'] = result;\n let jQuery = JQueryUtils.getJQuery();\n if (jQuery) {\n jQuery(element).data(result);\n }\n\n }\n\n static resolveBinding(element: HTMLElement, componentClass: any): BaseComponent {\n Assert.exists(element);\n Assert.exists(componentClass);\n Assert.exists(componentClass.ID);\n // first, look down\n var found;\n if ($$(element).is('.' + Component.computeCssClassNameForType(componentClass.ID))) {\n found = element;\n } else {\n var findDown = $$(element).findClass(Component.computeCssClassNameForType(componentClass.ID));\n if (!findDown || findDown.length == 0) {\n var findUp = $$(element).closest(Component.computeCssClassNameForType(componentClass.ID));\n if (findUp) {\n found = findUp;\n }\n } else {\n found = findDown;\n }\n }\n if (found) {\n return found[Component.computeCssClassNameForType(componentClass.ID)];\n } else {\n return undefined;\n }\n }\n\n\n static pointElementsToDummyForm(element: HTMLElement) {\n let inputs = $$(element).is('input') ? [element] : [];\n inputs = inputs.concat($$(element).findAll('input'));\n _.each(_.compact(inputs), (input) => {\n input.setAttribute('form', 'coveo-dummy-form');\n });\n }\n}\n\n/**\n * Used by the various Coveo Component to trigger and bind event.
\n * It adds a small logic to execute handler or triggers only when the component is \"enabled\".
\n * A component is disabled by calling {Component.disable}
\n * Typically, a component is disabled when it is not active in the current {Tab}.
\n * It can also be disabled by external code.
\n * The class serves as a way to not execute handler on component that are invisible and inactive in the query.\n */\nexport class ComponentEvents {\n /**\n * Create a new `ComponentEvents` for the given {@link Component}.\n * @param owner The {@link Component} which owns those events handler and trigger.\n */\n constructor(public owner: Component) {\n Assert.exists(owner);\n }\n\n /**\n * Execute the handler for the given event on the given target element.
\n * Execute only if the component is \"enabled\" (see {@link Component.enable}).\n * @param el The target on which the event will originate.\n * @param event The event for which to register an handler.\n * @param handler The function to execute when the event is triggered.\n */\n public on(el: HTMLElement | Window | Document, event: string, handler: Function);\n public on(el: Dom, event: string, handler: Function);\n public on(arg: any, event: string, handler: Function) {\n if (!JQueryUtils.getJQuery() || !JQueryUtils.isInstanceOfJQuery(arg)) {\n var htmlEl: HTMLElement = arg;\n $$(htmlEl).on(event, this.wrapToCallIfEnabled(handler));\n } else {\n var jq: Dom = arg;\n jq.on(event, this.wrapToCallIfEnabled(handler));\n }\n }\n\n /**\n * Execute the handler for the given event on the given target element.
\n * Execute only if the component is \"enabled\" (see {@link Component.enable}).
\n * Execute the handler only ONE time.\n * @param el The target on which the event will originate.\n * @param event The event for which to register an handler.\n * @param handler The function to execute when the event is triggered.\n */\n public one(el: HTMLElement, event: string, handler: Function);\n public one(el: Dom, event: string, handler: Function);\n public one(arg: any, event: string, handler: Function) {\n if (arg instanceof HTMLElement) {\n var htmlEl: HTMLElement = arg;\n $$(htmlEl).one(event, this.wrapToCallIfEnabled(handler));\n } else {\n var jq: Dom = arg;\n jq.one(event, this.wrapToCallIfEnabled(handler));\n }\n }\n\n /**\n * Bind on the \"root\" of the Component. The root is typically the {@link SearchInterface}.
\n * Bind an event using native javascript code.\n * @param event The event for which to register an handler.\n * @param handler The function to execute when the event is triggered.\n */\n public onRootElement(event: string, handler: (args: T) => any) {\n this.on(this.owner.root, event, handler);\n }\n\n /**\n * Bind on the \"root\" of the Component. The root is typically the {@link SearchInterface}.
\n * Bind an event using native javascript code.\n * The handler will execute only ONE time.\n * @param event The event for which to register an handler.\n * @param handler The function to execute when the event is triggered.\n */\n public oneRootElement(event: string, handler: (args: T) => any) {\n this.one(this.owner.root, event, handler);\n }\n\n /**\n * Bind an event related specially to the query state model.
\n * This will build the correct string event and execute the handler only if the component is activated.\n * @param eventType The event type for which to register an event.\n * @param attribute The attribute for which to register an event.\n * @param handler The handler to execute when the query state event is triggered.\n */\n public onQueryState(eventType: string, attribute?: string, handler?: (args: T) => any) {\n this.onRootElement(this.getQueryStateEventName(eventType, attribute), handler);\n }\n\n /**\n * Bind an event related specially to the query state model.
\n * This will build the correct string event and execute the handler only if the component is activated.
\n * Will execute only once.\n * @param eventType The event type for which to register an event.\n * @param attribute The attribute for which to register an event.\n * @param handler The handler to execute when the query state event is triggered.\n */\n public oneQueryState(eventType: string, attribute?: string, handler?: (args: T) => any) {\n this.oneRootElement(this.getQueryStateEventName(eventType, attribute), handler);\n }\n\n /**\n * Trigger an event on the target element, with optional arguments.\n * @param el The target HTMLElement on which to trigger the event.\n * @param event The event to trigger.\n * @param args The optional argument to pass to the handlers.\n */\n public trigger(el: HTMLElement, event: string, args?: Object);\n public trigger(el: Dom, event: string, args?: Object);\n public trigger(arg: any, event: string, args?: Object) {\n this.wrapToCallIfEnabled(() => {\n if (arg instanceof HTMLElement) {\n var htmlEl: HTMLElement = arg;\n $$(htmlEl).trigger(event, args);\n } else {\n var jq: Dom = arg;\n jq.trigger(event, args);\n }\n })(args);\n }\n\n /**\n * Execute the function only if the component is enabled.\n * @param func The function to execute if the component is enabled.\n * @returns {function(...[any]): *}\n */\n private wrapToCallIfEnabled(func: Function) {\n return (...args: any[]) => {\n if (!this.owner.disabled) {\n if (args && args[0] instanceof CustomEvent) {\n if (args[0].detail) {\n args = [args[0].detail];\n }\n } else if (args && JQueryUtils.isInstanceOfJqueryEvent(args[0])) {\n if (args[1] != undefined) {\n args = [args[1]];\n } else {\n args = [];\n }\n }\n return func.apply(this.owner, args);\n }\n };\n }\n\n private getQueryStateEventName(eventType: string, attribute?: string): string {\n var evtName;\n if (eventType && attribute) {\n evtName = this.owner.queryStateModel.getEventName(eventType + attribute);\n } else {\n evtName = this.owner.queryStateModel.getEventName(eventType);\n }\n return evtName;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/Base/Component.ts\n **/","import { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { ComponentOptions, IFieldOption } from '../Base/ComponentOptions';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$ } from '../../utils/Dom';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { ComponentStateModel } from '../../models/ComponentStateModel';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { QueryController } from '../../controllers/QueryController';\nimport { Model, IAttributeChangedEventArg } from '../../models/Model';\nimport { QueryEvents, IBuildingQueryEventArgs, INewQueryEventArgs, IQuerySuccessEventArgs, IQueryErrorEventArgs } from '../../events/QueryEvents';\nimport { IBeforeRedirectEventArgs, StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { HistoryController } from '../../controllers/HistoryController';\nimport { LocalStorageHistoryController } from '../../controllers/LocalStorageHistoryController';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { IAnalyticsClient } from '../Analytics/AnalyticsClient';\nimport { NoopAnalyticsClient } from '../Analytics/NoopAnalyticsClient';\nimport { Utils } from '../../utils/Utils';\nimport { RootComponent } from '../Base/RootComponent';\nimport { BaseComponent } from '../Base/BaseComponent';\nimport { Debug } from '../Debug/Debug';\nimport { HashUtils } from '../../utils/HashUtils';\nimport * as fastclick from 'fastclick';\nimport jstz = require('jstimezonedetect');\nimport { SentryLogger } from '../../misc/SentryLogger';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { ResponsiveComponents } from '../ResponsiveComponents/ResponsiveComponents';\nimport _ = require('underscore');\n\nexport interface ISearchInterfaceOptions {\n enableHistory?: boolean;\n enableAutomaticResponsiveMode?: boolean;\n useLocalStorageForHistory?: boolean;\n resultsPerPage?: number;\n excerptLength?: number;\n expression?: string;\n filterField?: IFieldOption;\n hideUntilFirstQuery?: boolean;\n firstLoadingAnimation?: HTMLElement;\n autoTriggerQuery?: boolean;\n timezone?: string;\n enableDebugInfo?: boolean;\n enableCollaborativeRating?: boolean;\n enableDuplicateFiltering?: boolean;\n\n pipeline?: string;\n maximumAge?: number;\n searchPageUri?: string;\n initOptions?: any;\n endpoint?: SearchEndpoint;\n originalOptionsObject?: any;\n}\n\n/**\n * The SearchInterface component is the root and main component of your Coveo search interface. You should place all\n * other Coveo components inside the SearchInterface component.\n *\n * It is also on the HTMLElement of the SearchInterface component that you call the {@link init} function.\n *\n * It is advisable to specify a unique HTML `id` attribute for the SearchInterface component in order to be able to\n * reference it easily.\n *\n * **Example:**\n *\n * ```html\n * \n *\n * [ ... ]\n *\n * \n *\n * [ ... ]\n * \n *\n * \n * \n *\n * [ ... ]\n *\n * \n *\n * [ ... ]\n *\n * \n * ```\n */\nexport class SearchInterface extends RootComponent implements IComponentBindings {\n static ID = 'SearchInterface';\n\n /**\n * The options for the search interface\n * @componentOptions\n */\n static options: ISearchInterfaceOptions = {\n\n /**\n * Specifies whether to allow the end user to navigate search history using the **Back** and **Forward** buttons\n * of the browser.\n *\n * If this options is `true`, the SearchInterface component saves the state of the current query in the hash portion\n * of the URL when the user submits the query.\n *\n * **Example:**\n * > If the `enableHistory` option is `true` and the current query is `foobar`, the SearchInterface component\n * > saves `q=foobar` in the URL hash when the user submits the query.\n *\n * Default value is `false`.\n */\n enableHistory: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * Specifies whether to enable automatic responsive mode (i.e., automatically placing {@link Facet} and {@link Tab}\n * components in dropdown menus under the search box when the width of the SearchInterface HTML element reaches or\n * falls behind a certain pixel threshold).\n *\n * You might want to set this option to `false` if automatic responsive mode does not suit the specific design needs\n * of your implementation.\n *\n * **Note:**\n *\n * > If this option is `true`, you can also specify whether to enable responsive mode for Facet components (see\n * > {@link Facet.options.enableResponsiveMode}) and for Tab components (see\n * > {@link Tab.options.enableResponsiveMode}).\n * >\n * > In addition, you can specify the label you wish to display on the dropdown buttons (see\n * > {@link Facet.options.dropdownHeaderLabel} and {@link Tab.options.dropdownHeaderLabel}).\n *\n * Default value is `true`.\n */\n enableAutomaticResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n /**\n * Specifies whether to save the interface state in the local storage of the browser.\n *\n * You might want to set this option to `true` for reasons specifically important for your implementation.\n *\n * Default value is `false`.\n */\n useLocalStorageForHistory: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * Specifies the number of results to display on each page.\n *\n * For more advanced features, see the {@link ResultsPerPage} component.\n *\n * Default value is `10`. Minimum value is `0`.\n */\n resultsPerPage: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 0 }),\n\n /**\n * Specifies the number of characters to get at query time to create an excerpt of the result.\n *\n * This setting is global and cannot be modified on a per-result basis.\n *\n * See also the {@link Excerpt} component.\n *\n * Default value is `200`. Minimum value is `0`.\n */\n excerptLength: ComponentOptions.buildNumberOption({ defaultValue: 200, min: 0 }),\n\n /**\n * Specifies an expression to add to each query.\n *\n * You might want to use this options to add a global filter to your entire search interface that applies for all\n * tabs.\n *\n * You should not use this option to address security concerns (it is JavaScript, after all).\n *\n * **Note:**\n *\n * > It also is possible to set this option separately for each {@link Tab} component\n * > (see {@link Tab.options.expression}).\n *\n * Default value is `''`.\n */\n expression: ComponentOptions.buildStringOption({ defaultValue: '' }),\n\n /**\n * Specifies the name of a field to use as a custom filter when executing the query (also referred to as\n * \"folding\").\n *\n * Setting a value for this option causes the index to return only one result having any particular value inside the\n * filter field. Any other matching result is \"folded\" inside the childResults member of each JSON query result.\n *\n * This feature is typically useful with threaded conversations to include only one top-level result per\n * conversation. Thus, the field you specify for this option will typically be value unique to each thread that is\n * shared by all items (e.g., posts, emails, etc) in the thread.\n *\n * For more advanced features, see the {@link Folding} component.\n *\n * Default value is the empty string (`''`).\n */\n filterField: ComponentOptions.buildFieldOption({ defaultValue: '' }),\n\n /**\n * Specifies whether to display a loading animation before the first query successfully returns.\n *\n * **Note:**\n *\n * > If you do not set this options to `false`, the loading animation will still run until the first query\n * > successfully returns even if the [autoTriggerQuery]{@link SearchInterface.options.autoTriggerQuery} option is\n * `false`.\n *\n * See also the [firstLoadingAnimation]{@link SearchInterface.options.firstLoadingAnimation} option.\n *\n * Default value is `true`.\n */\n hideUntilFirstQuery: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n /**\n * Specifies the animation that you wish to display while your interface is loading.\n *\n * You can either specify the CSS selector of an HTML element that matches the default CSS class\n * (`coveo-first-loading-animation`), or add `-selector` to the markup attribute of this option to specify the CSS\n * selector of an HTML element that matches any CSS class.\n *\n * See also the [hideUntilFirstQuery]{@link SearchInterface.options.hideUntilFirstQuery} option.\n *\n * **Examples:**\n *\n * In this first case, the SearchInterface uses the HTML element whose `id` attribute is `MyAnimation` as the\n * loading animation only if the `class` attribute of this element also matches `coveo-first-loading-animation`.\n * Default loading animation CSS, which you can customize as you see fit, applies to this HTML element.\n * ```html\n *
\n *
\n * \n *
\n * \n *
\n * ```\n *\n * In this second case, the SearchInterface uses the HTML element whose `id` attribute is `MyAnimation` as the\n * loading animation no matter what CSS class it matches. However, if the `class` attribute of the HTML element does\n * not match `coveo-first-loading-animation`, no default loading animation CSS applies to this HTML element.\n * Normally, you should only use `data-first-loading-animation-selector` if you want to completely override the\n * default loading animation CSS.\n * ```html\n *
\n *
\n * \n *
\n * \n *
\n * ```\n *\n * See [Branding Customization](https://developers.coveo.com/x/EoGfAQ).\n *\n * By default, the loading animation is a Coveo CSS animation (which you can customize with CSS).\n */\n firstLoadingAnimation: ComponentOptions.buildChildHtmlElementOption({\n childSelector: '.coveo-first-loading-animation',\n defaultFunction: () => DomUtils.getBasicLoadingAnimation()\n }),\n\n /**\n * Specifies whether to trigger the first query automatically when the page finishes loading.\n *\n *\n * **Note:**\n *\n * > If you set this option to `false` while the\n * > [hideUntilFirstQuery]{@link SearchInterface.options.hideUntilFirstQuery} option is `true`, the loading\n * > animation will still run until the first query successfully returns.\n *\n * Default value is `true`.\n */\n autoTriggerQuery: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n endpoint: ComponentOptions.buildCustomOption((endpoint) => endpoint != null && endpoint in SearchEndpoint.endpoints ? SearchEndpoint.endpoints[endpoint] : null, { defaultFunction: () => SearchEndpoint.endpoints['default'] }),\n\n /**\n * Specifies the timezone in which the search interface is loaded. This allows the index to recognize some special\n * query syntax.\n *\n * This option must have a valid IANA zone info key (AKA the Olson time zone database) as its value.\n *\n * **Example:** `America/New_York`.\n *\n * By default, the search interface allows a library to try to detect the timezone automatically.\n */\n timezone: ComponentOptions.buildStringOption({ defaultFunction: () => jstz.determine().name() }),\n /**\n * Specifies whether to enable the feature that allows the end user to ALT + double click any result to open a debug\n * page with detailed information about all properties and fields for that result.\n *\n * Enabling this feature causes no security concern; the entire debug information is always visible to the end user\n * through the browser developer console or by calling the Coveo API directly.\n *\n * Default value is `true`.\n */\n enableDebugInfo: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n /**\n * Specifies whether to enable the collaborative rating for the index and to include user ratings on each results\n * in addition to the normal index ranking.\n *\n * If you set this option to `true`, you can leverage it with the {@link ResultRating} component.\n *\n * Default value is `false`.\n */\n enableCollaborativeRating: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * Specifies whether to filter duplicates in the search results.\n *\n * Setting this option to `true` forces duplicates to not appear in search results. However, {@link Facet} counts\n * still include the duplicates, which can be confusing for the end user. This is a limitation of the index.\n *\n * **Example:**\n *\n * > The end user narrows a query down to a single document that has a duplicate. If the enableDuplicateFiltering\n * > option is `true`, then only one document appears in the search results while the Facet count is still 2.\n *\n * **Note:**\n *\n * > It also is possible to set this option separately for each {@link Tab} component\n * > (see {@link Tab.options.enableDuplicateFiltering}).\n *\n * Default value is `false`.\n */\n enableDuplicateFiltering: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n /**\n * Specifies the name of the query pipeline to use for the queries.\n *\n * You can specify a value for this option if your index is in a Coveo Cloud organization in which pipelines have\n * been created (see [Managing Query Pipelines](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=128)).\n *\n * **Note:**\n *\n * > It also is possible to set this option separately for each {@link Tab} component\n * > (see {@link Tab.options.pipeline}).\n *\n * Default value is `undefined`, which means that the search interface uses the default pipeline.\n */\n pipeline: ComponentOptions.buildStringOption(),\n\n /**\n * Specifies the maximum age (in milliseconds) that cached query results can have to still be usable as results\n * instead of performing a new query on the index. The cache is located in the Coveo Search API (which resides\n * between the index and the search interface).\n *\n * If cached results that are older than the age you specify in this option are available, the framework will not\n * use these results; it will rather perform a new query on the index.\n *\n * On high-volume public web sites, specifying a higher value for this option can greatly improve query response\n * time at the cost of result freshness.\n *\n * **Note:**\n *\n * > It also is possible to set this option separately for each {@link Tab} component\n * > (see {@link Tab.options.maximumAge}).\n *\n * Default value is `undefined`, which means that the search interface lets the Coveo Search API determine the\n * maximum cache age. This is typically equivalent to 30 minutes (see\n * [Query Parameters - maximumAge](https://developers.coveo.com/x/iwEv#QueryParameters-maximumAge)).\n */\n maximumAge: ComponentOptions.buildNumberOption(),\n\n /**\n * Specifies the search page you wish to navigate to when instantiating a standalone search box interface.\n *\n * Default value is `undefined`, which means that the search interface does not redirect.\n */\n searchPageUri: ComponentOptions.buildStringOption()\n };\n\n public static SMALL_INTERFACE_CLASS_NAME = 'coveo-small-search-interface';\n\n private attachedComponents: { [type: string]: BaseComponent[] };\n private isNewDesignAttribute = false;\n\n public root: HTMLElement;\n public queryStateModel: QueryStateModel;\n public componentStateModel: ComponentStateModel;\n public queryController: QueryController;\n public componentOptionsModel: ComponentOptionsModel;\n public usageAnalytics: IAnalyticsClient;\n /**\n * Allows to get and set the different breakpoints for mobile and tablet devices.\n *\n * This is useful, among other things, for {@link Facet}, {@link Tab} and {@link ResultList} components.\n */\n public responsiveComponents: ResponsiveComponents;\n\n /**\n * Creates a new SearchInterface. Initialize various singletons for the interface (e.g., usage analytics, query\n * controller, state model, etc.). Binds events related to the query. Hides and shows the loading animation, if\n * activated (see the [hideUntilFirstQuery]{@link SearchInterface.options.hideUntilFirstQuery} option).\n * @param element The HTMLElement on which to instantiate the component. This cannot be an `HTMLInputElement` for\n * technical reasons.\n * @param options The options for the SearchInterface.\n * @param analyticsOptions The options for the {@link Analytics} component. Since the Analytics component is normally\n * global, it needs to be passed at initialization of the whole interface.\n * @param _window The window object for the search interface. Used for unit tests, which can pass a mock. Default is\n * the global window object.\n */\n constructor(public element: HTMLElement, public options?: ISearchInterfaceOptions, public analyticsOptions?, _window = window) {\n super(element, SearchInterface.ID);\n\n if (DeviceUtils.isMobileDevice()) {\n $$(document.body).addClass('coveo-mobile-device');\n }\n\n // The definition file for fastclick does not match the way that fast click gets loaded (AMD)\n if ((fastclick).attach) {\n (fastclick).attach(element);\n }\n\n\n this.options = ComponentOptions.initComponentOptions(element, SearchInterface, options);\n Assert.exists(element);\n Assert.exists(this.options);\n\n if (this.options.hideUntilFirstQuery) {\n this.showAndHideFirstQueryAnimation();\n }\n\n this.root = element;\n this.queryStateModel = new QueryStateModel(element);\n this.componentStateModel = new ComponentStateModel(element);\n this.componentOptionsModel = new ComponentOptionsModel(element);\n this.usageAnalytics = this.initializeAnalytics();\n this.queryController = new QueryController(element, this.options, this.usageAnalytics, this);\n new SentryLogger(this.queryController);\n\n let eventName = this.queryStateModel.getEventName(Model.eventTypes.preprocess);\n $$(this.element).on(eventName, (e, args) => this.handlePreprocessQueryStateModel(args));\n $$(this.element).on(QueryEvents.buildingQuery, (e, args) => this.handleBuildingQuery(args));\n $$(this.element).on(QueryEvents.querySuccess, (e, args) => this.handleQuerySuccess(args));\n $$(this.element).on(QueryEvents.queryError, (e, args) => this.handleQueryError(args));\n\n if (this.options.enableHistory) {\n if (!this.options.useLocalStorageForHistory) {\n new HistoryController(element, _window, this.queryStateModel, this.queryController);\n } else {\n new LocalStorageHistoryController(element, _window, this.queryStateModel, this.queryController);\n }\n } else {\n $$(this.element).on(InitializationEvents.restoreHistoryState, () => this.queryStateModel.setMultiple(this.queryStateModel.defaultAttributes));\n }\n\n let eventNameQuickview = this.queryStateModel.getEventName(Model.eventTypes.changeOne + QueryStateModel.attributesEnum.quickview);\n $$(this.element).on(eventNameQuickview, (e, args) => this.handleQuickviewChanged(args));\n // shows the UI, since it's been hidden while loading\n this.element.style.display = element.style.display || 'block';\n this.setupDebugInfo();\n this.isNewDesignAttribute = this.root.getAttribute('data-design') == 'new';\n this.responsiveComponents = new ResponsiveComponents();\n }\n\n /**\n * Displays the first query animation (see the\n * [firstLoadingAnimation]{@link SearchInterface.options.firstLoadingAnimation} option).\n *\n * By default, this is the Coveo logo with a CSS animation (which can be customized with options or CSS).\n */\n public showWaitAnimation() {\n $$(this.options.firstLoadingAnimation).detach();\n $$(this.element).addClass('coveo-waiting-for-first-query');\n this.element.appendChild(this.options.firstLoadingAnimation);\n }\n\n /**\n * Hides the first query animation (see the\n * [firstLoadingAnimation]{@link SearchInterface.options.firstLoadingAnimation} option).\n *\n * By default, this is the Coveo logo with a CSS animation (which can be customized with options or CSS).\n */\n public hideWaitAnimation() {\n $$(this.options.firstLoadingAnimation).detach();\n $$(this.element).removeClass('coveo-waiting-for-first-query');\n }\n\n /**\n * Attaches a component to the search interface. This allows the search interface to easily list and iterate over its\n * components.\n * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n * @param component The component instance to attach.\n */\n public attachComponent(type: string, component: BaseComponent) {\n this.getComponents(type).push(component);\n }\n\n /**\n * Detaches a component from the search interface.\n * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n * @param component The component instance to detach.\n */\n public detachComponent(type: string, component: BaseComponent) {\n let components = this.getComponents(type);\n let index = _.indexOf(components, component);\n if (index > -1) {\n components.splice(index, 1);\n }\n }\n\n /**\n * Returns the bindings, or environment, for the current component.\n * @returns {IComponentBindings}\n */\n public getBindings() {\n return {\n root: this.root,\n queryStateModel: this.queryStateModel,\n queryController: this.queryController,\n searchInterface: this,\n componentStateModel: this.componentStateModel,\n componentOptionsModel: this.componentOptionsModel,\n usageAnalytics: this.usageAnalytics\n };\n }\n\n /**\n * Gets all the components of a given type.\n * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n */\n public getComponents(type: string): T[];\n\n /**\n * Gets all the components of a given type.\n * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n */\n public getComponents(type: string): BaseComponent[] {\n if (this.attachedComponents == null) {\n this.attachedComponents = {};\n }\n if (!(type in this.attachedComponents)) {\n this.attachedComponents[type] = [];\n }\n return this.attachedComponents[type];\n }\n\n /**\n * Indicates whether the search interface is using the new design.\n * This changes the rendering of multiple components.\n */\n public isNewDesign() {\n return this.isNewDesignAttribute;\n }\n\n protected initializeAnalytics(): IAnalyticsClient {\n let analyticsRef = BaseComponent.getComponentRef('Analytics');\n if (analyticsRef) {\n return analyticsRef.create(this.element, this.analyticsOptions);\n }\n return new NoopAnalyticsClient();\n }\n\n private setupDebugInfo() {\n if (this.options.enableDebugInfo) {\n setTimeout(() => new Debug(this.element, this.queryController));\n }\n }\n\n private showAndHideFirstQueryAnimation() {\n this.showWaitAnimation();\n // On first query success or error, wait for call stack to finish, then remove the animation\n $$(this.element).one(QueryEvents.querySuccess, () => {\n _.defer(() => this.hideWaitAnimation());\n });\n $$(this.element).one(QueryEvents.queryError, () => {\n _.defer(() => this.hideWaitAnimation());\n });\n }\n\n private handlePreprocessQueryStateModel(args: any) {\n let tgFromModel = this.queryStateModel.get(QueryStateModel.attributesEnum.tg);\n let tFromModel = this.queryStateModel.get(QueryStateModel.attributesEnum.t);\n\n let tg = tgFromModel;\n let t = tFromModel;\n\n // if you want to set the tab group\n if (args.tg !== undefined) {\n args.tg = this.getTabGroupId(args.tg);\n if (tg != args.tg) {\n args.t = args.t || QueryStateModel.defaultAttributes.t;\n args.sort = args.sort || QueryStateModel.defaultAttributes.sort;\n tg = args.tg;\n }\n }\n\n if (args.t !== undefined) {\n args.t = this.getTabId(tg, args.t);\n if (t != args.t) {\n args.sort = args.sort || QueryStateModel.defaultAttributes.sort;\n t = args.t;\n }\n }\n\n if (args.sort !== undefined) {\n args.sort = this.getSort(t, args.sort);\n }\n\n if (args.quickview !== undefined) {\n args.quickview = this.getQuickview(args.quickview);\n }\n }\n\n private getTabGroupId(tabGroupId: string) {\n let tabGroupRef = BaseComponent.getComponentRef('TabGroup');\n if (tabGroupRef) {\n let tabGroups = this.getComponents(tabGroupRef.ID);\n // check if the tabgroup is correct\n if (tabGroupId != QueryStateModel.defaultAttributes.tg && _.any(tabGroups, (tabGroup: any) => !tabGroup.disabled && tabGroupId == tabGroup.options.id)) {\n return tabGroupId;\n }\n // select the first tabGroup\n if (tabGroups.length > 0) {\n return tabGroups[0].options.id;\n }\n }\n return QueryStateModel.defaultAttributes.tg;\n }\n\n private getTabId(tabGroupId: string, tabId: string) {\n let tabRef = BaseComponent.getComponentRef('Tab');\n let tabGroupRef = BaseComponent.getComponentRef('TabGroup');\n if (tabRef) {\n let tabs = this.getComponents(tabRef.ID);\n if (tabGroupRef) {\n // if has a tabGroup\n if (tabGroupId != QueryStateModel.defaultAttributes.tg) {\n let tabGroups = this.getComponents(tabGroupRef.ID);\n let tabGroup = _.find(tabGroups, (tabGroup: any) => tabGroupId == tabGroup.options.id);\n // check if the tabgroup contain this tab\n if (tabId != QueryStateModel.defaultAttributes.t && _.any(tabs, (tab: any) => tabId == tab.options.id && tabGroup.isElementIncludedInTabGroup(tab.element))) {\n return tabId;\n }\n // select the first tab in the tabGroup\n let tab = _.find(tabs, (tab: any) => tabGroup.isElementIncludedInTabGroup(tab.element));\n if (tab != null) {\n return tab.options.id;\n }\n return QueryStateModel.defaultAttributes.t;\n }\n }\n // check if the tab is correct\n if (tabId != QueryStateModel.defaultAttributes.t && _.any(tabs, (tab: any) => tabId == tab.options.id)) {\n return tabId;\n }\n // select the first tab\n if (tabs.length > 0) {\n return tabs[0].options.id;\n }\n }\n return QueryStateModel.defaultAttributes.t;\n }\n\n private getSort(tabId: string, sortId: string) {\n let sortRef = BaseComponent.getComponentRef('Sort');\n if (sortRef) {\n let sorts = this.getComponents(sortRef.ID);\n // if has a selected tab\n let tabRef = BaseComponent.getComponentRef('Tab');\n if (tabRef) {\n if (tabId != QueryStateModel.defaultAttributes.t) {\n let tabs = this.getComponents(tabRef.ID);\n let tab = _.find(tabs, (tab: any) => tabId == tab.options.id);\n let sortCriteria = tab.options.sort;\n\n // check if the tab contain this sort\n if (sortId != QueryStateModel.defaultAttributes.sort && _.any(sorts, (sort: any) => tab.isElementIncludedInTab(sort.element) && sort.match(sortId))) {\n return sortId;\n } else if (sortCriteria != null) {\n // if not and tab.options.sort is set apply it\n return sortCriteria.toString();\n }\n // select the first sort in the tab\n let sort = _.find(sorts, (sort: any) => tab.isElementIncludedInTab(sort.element));\n if (sort != null) {\n return sort.options.sortCriteria[0].toString();\n }\n return QueryStateModel.defaultAttributes.sort;\n }\n }\n // check if the sort is correct\n if (sortId != QueryStateModel.defaultAttributes.sort && _.any(sorts, (sort: any) => sort.match(sortId))) {\n return sortId;\n }\n // select the first sort\n if (sorts.length > 0) {\n return sorts[0].options.sortCriteria[0].toString();\n }\n }\n return QueryStateModel.defaultAttributes.sort;\n }\n\n private getQuickview(quickviewId: string) {\n let quickviewRef = BaseComponent.getComponentRef('Quickview');\n if (quickviewRef) {\n let quickviews = this.getComponents(quickviewRef.ID);\n if (_.any(quickviews, (quickview: any) => quickview.getHashId() == quickviewId)) {\n return quickviewId;\n }\n }\n return QueryStateModel.defaultAttributes.quickview;\n }\n\n private handleQuickviewChanged(args: IAttributeChangedEventArg) {\n let quickviewRef = BaseComponent.getComponentRef('Quickview');\n if (quickviewRef) {\n let quickviews = this.getComponents(quickviewRef.ID);\n if (args.value != '') {\n let quickviewsPartition = _.partition(quickviews, (quickview) => quickview.getHashId() == args.value);\n if (quickviewsPartition[0].length != 0) {\n _.first(quickviewsPartition[0]).open();\n _.forEach(_.tail(quickviewsPartition[0]), (quickview) => quickview.close());\n }\n _.forEach(quickviewsPartition[1], (quickview) => quickview.close());\n } else {\n _.forEach(quickviews, (quickview) => {\n quickview.close();\n });\n }\n }\n }\n\n private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n if (this.options.enableDuplicateFiltering) {\n data.queryBuilder.enableDuplicateFiltering = true;\n }\n\n if (!Utils.isNullOrUndefined(this.options.pipeline)) {\n data.queryBuilder.pipeline = this.options.pipeline;\n }\n\n if (!Utils.isNullOrUndefined(this.options.maximumAge)) {\n data.queryBuilder.maximumAge = this.options.maximumAge;\n }\n\n if (!Utils.isNullOrUndefined(this.options.resultsPerPage)) {\n data.queryBuilder.numberOfResults = this.options.resultsPerPage;\n }\n\n if (!Utils.isNullOrUndefined(this.options.excerptLength)) {\n data.queryBuilder.excerptLength = this.options.excerptLength;\n }\n\n if (Utils.isNonEmptyString(this.options.expression)) {\n data.queryBuilder.constantExpression.add(this.options.expression);\n }\n\n if (Utils.isNonEmptyString(this.options.filterField)) {\n data.queryBuilder.filterField = this.options.filterField;\n }\n\n if (Utils.isNonEmptyString(this.options.timezone)) {\n data.queryBuilder.timezone = this.options.timezone;\n }\n\n data.queryBuilder.enableCollaborativeRating = this.options.enableCollaborativeRating;\n\n data.queryBuilder.enableDuplicateFiltering = this.options.enableDuplicateFiltering;\n }\n\n private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n let noResults = data.results.results.length == 0;\n this.toggleSectionState('coveo-no-results', noResults);\n let resultsHeader = $$(this.element).find('.coveo-results-header');\n if (resultsHeader) {\n $$(resultsHeader).removeClass('coveo-query-error');\n }\n }\n\n private handleQueryError(data: IQueryErrorEventArgs) {\n this.toggleSectionState('coveo-no-results');\n let resultsHeader = $$(this.element).find('.coveo-results-header');\n if (resultsHeader) {\n $$(resultsHeader).addClass('coveo-query-error');\n }\n }\n\n private toggleSectionState(cssClass: string, toggle = true) {\n let facetSection = $$(this.element).find('.coveo-facet-column');\n let resultsSection = $$(this.element).find('.coveo-results-column');\n let resultsHeader = $$(this.element).find('.coveo-results-header');\n let facetSearchs = $$(this.element).findAll('.coveo-facet-search-results');\n\n if (facetSection) {\n $$(facetSection).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n }\n if (resultsSection) {\n $$(resultsSection).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n }\n if (resultsHeader) {\n $$(resultsHeader).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n }\n if (facetSearchs && facetSearchs.length > 0) {\n _.each(facetSearchs, (facetSearch) => {\n $$(facetSearch).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n });\n }\n }\n}\n\n\nexport interface IStandaloneSearchInterfaceOptions extends ISearchInterfaceOptions {\n redirectIfEmpty?: boolean;\n}\n\nexport class StandaloneSearchInterface extends SearchInterface {\n static ID = 'StandaloneSearchInterface';\n\n public static options: IStandaloneSearchInterfaceOptions = {\n redirectIfEmpty: ComponentOptions.buildBooleanOption({ defaultValue: true })\n };\n\n constructor(public element: HTMLElement, public options?: IStandaloneSearchInterfaceOptions, public analyticsOptions?, public _window = window) {\n super(element, ComponentOptions.initComponentOptions(element, StandaloneSearchInterface, options), analyticsOptions, _window);\n $$(this.root).on(QueryEvents.newQuery, (e: Event, args: INewQueryEventArgs) => this.handleRedirect(e, args));\n }\n\n public handleRedirect(e: Event, data: INewQueryEventArgs) {\n\n let dataToSendOnBeforeRedirect: IBeforeRedirectEventArgs = {\n searchPageUri: this.options.searchPageUri,\n cancel: false\n };\n\n $$(this.root).trigger(StandaloneSearchInterfaceEvents.beforeRedirect, dataToSendOnBeforeRedirect);\n\n if (dataToSendOnBeforeRedirect.cancel) {\n return;\n }\n\n data.cancel = true;\n\n if (!this.searchboxIsEmpty() || this.options.redirectIfEmpty) {\n this.redirectToSearchPage(dataToSendOnBeforeRedirect.searchPageUri);\n }\n }\n\n public redirectToSearchPage(searchPage: string) {\n let stateValues = this.queryStateModel.getAttributes();\n let uaCausedBy = this.usageAnalytics.getCurrentEventCause();\n\n if (uaCausedBy != null) {\n // for legacy reason, searchbox submit were always logged a search from link in an external search box.\n // transform them if that's what we hit.\n if (uaCausedBy == analyticsActionCauseList.searchboxSubmit.name) {\n uaCausedBy = analyticsActionCauseList.searchFromLink.name;\n }\n stateValues['firstQueryCause'] = uaCausedBy;\n }\n let uaMeta = this.usageAnalytics.getCurrentEventMeta();\n if (uaMeta != null) {\n stateValues['firstQueryMeta'] = uaMeta;\n }\n\n let link = document.createElement('a');\n link.href = searchPage;\n link.href = link.href; // IE11 needs this to correctly fill the properties that are used below.\n\n let pathname = link.pathname.indexOf('/') == 0 ? link.pathname : '/' + link.pathname; // IE11 does not add a leading slash to this property.\n let hash = link.hash ? link.hash + '&' : '#';\n\n // By using a setTimeout, we allow other possible code related to the search box / magic box time to complete.\n // eg: onblur of the magic box.\n setTimeout(() => {\n this._window.location.href = `${link.protocol}//${link.host}${pathname}${link.search}${hash}${HashUtils.encodeValues(stateValues)}`;\n }, 0);\n }\n\n private searchboxIsEmpty(): boolean {\n return Utils.isEmptyString(this.queryStateModel.get(QueryStateModel.attributesEnum.q));\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/ui/SearchInterface/SearchInterface.ts\n **/","import { IFieldDescription } from '../../rest/FieldDescription';\nimport { Assert } from '../../misc/Assert';\nimport { Logger } from '../../misc/Logger';\nimport { Template } from '../Templates/Template';\nimport { $$ } from '../../utils/Dom';\nimport { TemplateCache } from '../Templates/TemplateCache';\nimport { TemplateList } from '../Templates/TemplateList';\nimport { UnderscoreTemplate } from '../Templates/UnderscoreTemplate';\nimport { HtmlTemplate } from '../Templates/HtmlTemplate';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport _ = require('underscore');\n\n/**\n * Declare a type for options that should contain a field to be used in a query.\n *\n * The only constraint this type has over a basic string is that it should start with \"@\".\n */\nexport interface IFieldOption extends String { };\n\nexport interface IComponentOptionsLoadOption {\n (element: HTMLElement, name: string, option: IComponentOptionsOption): T;\n}\n\n/**\n * Specify a postProcess function that allows an option to further modify itself once all other options have loaded.\n */\nexport interface IComponentOptionsPostProcessing {\n /**\n * Specify a postProcess function that allows an option to further modify itself once all other options have loaded.\n * @param value\n * @param options\n */\n (value: T, options: any): T;\n}\n\nexport interface IComponentOptionsOption extends IComponentOptions {\n type?: ComponentOptionsType;\n load?: IComponentOptionsLoadOption;\n}\n\n/**\n * This represent the possible parameters that can be used to configure an option\n */\nexport interface IComponentOptions {\n /**\n * Specify the default value that should be given to the option if it is not specified.\n */\n defaultValue?: T;\n /**\n * Specify a function which should return the default value that should be given to the option if it is not specified.\n *\n * @param element The HTMLElement on which the current option is being parsed.\n */\n defaultFunction?: (element: HTMLElement) => T;\n /**\n * Specify if the option is \"required\" so that the component can do it's job properly.\n *\n * For example, the {@link Facet.options.field} is required, as a facet with no field cannot function.\n */\n required?: boolean;\n /**\n * Specify a function which can be used to further modify the value for a given option after all other options have been loaded.\n *\n * For example, the {@link Facet.options.id} will use this to set the default ID with the same value as the {@link Facet.options.field}.\n */\n postProcessing?: IComponentOptionsPostProcessing;\n /**\n * Allow to specify a different markup name for an option than the default value.\n *\n * Using this is extremely rare, and should be used only for legacy reasons.\n */\n attrName?: string;\n /**\n * Allow to specify an alias for an option name.\n *\n * This can be useful to modify the name of an option without introducing a breaking change.\n */\n alias?: string;\n /**\n * Specify a section name inside which the option should appear in the interface editor.\n */\n section?: string;\n /**\n * Specify that an option depend on another option being enabled.\n *\n * Mostly useful for the interface editor.\n */\n depend?: string;\n priority?: number;\n /**\n * Specify that an option is deprecated.\n *\n * This string will be displayed in the console on initialization.\n *\n * The message should be as clear as possible as to why this option is deprecated, and how it can be replaced.\n *\n * This also mean that the option will not appear in the interface editor.\n */\n deprecated?: string;\n /**\n * Specify a function which can be used to verify the validity of the option.\n *\n * The function should return true if the option is valid, false otherwise.\n * @param value\n */\n validator?: (value: T) => boolean;\n}\n\nexport interface IComponentOptionsNumberOption extends IComponentOptionsOption, IComponentOptionsNumberOptionArgs {\n}\n\n/**\n * This represent the possible parameters that can be used to configure a number option.\n */\nexport interface IComponentOptionsNumberOptionArgs extends IComponentOptions {\n /**\n * The minimum value that can be set for this number.\n */\n min?: number;\n /**\n * The maximum value that can be set for this number.\n */\n max?: number;\n /**\n * Specify if the value is a floating point number.\n */\n float?: boolean;\n}\n\nexport interface IComponentOptionsListOption extends IComponentOptionsOption, IComponentOptionsListOptionArgs {\n}\n\n/**\n * The represent the possible parameters that can be used to configure a list option.\n */\nexport interface IComponentOptionsListOptionArgs extends IComponentOptions {\n /**\n * The separator that should be used for this list. By default, it will be `,`.\n */\n separator?: RegExp;\n /**\n * The possible list of values for this option.\n */\n values?: any;\n}\n\nexport interface IComponentOptionsCustomListOptionArgs extends IComponentOptions {\n separator?: RegExp;\n values?: any;\n}\n\nexport interface IComponentOptionsChildHtmlElementOption extends IComponentOptionsOption, IComponentOptionsChildHtmlElementOptionArgs {\n}\n\nexport interface IComponentOptionsChildHtmlElementOptionArgs extends IComponentOptions {\n selectorAttr?: string;\n childSelector?: string;\n}\n\nexport interface IComponentOptionsTemplateOption extends IComponentOptionsOption