{"version":3,"sources":["../webpack/universalModuleDefinition","../webpack/bootstrap","../webpack-src:/safe-json/index.ts","../webpack-src:/safe-json/src/index.ts","../../../../../../../../external/underscore","../../../../node_modules/.pnpm/@bingads-webui+kendo@2014.1.318-alpha.4/node_modules/@bingads-webui/kendo/kendo.core.js","../webpack-src:/reflection/index.ts","../webpack-src:/reflection/src/properties.ts","../../../../../../../../external/@bingads-webui/listener","../webpack-src:/oneds-listener/index.js","../webpack-src:/oneds-listener/src/oneds-listener.js","../../../../../../../../external/@microsoft/1ds-analytics-web-js","../webpack-src:/oneds-listener/src/default-config.js","../webpack-src:/oneds-listener/src/formatters/log-property-formatter.js","../webpack-src:/odata-bulk-upsert/index.js","../webpack-src:/odata-bulk-upsert/src/index.js","../webpack-src:/odata-bulk-upsert/src/bulkify.js","../webpack-src:/odata-bulk-upsert/src/bulk-upsert-util.js","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../../../../../../../../external/bluebird","../webpack-src:/page-ready/index.js","../webpack-src:/page-ready/src/index.es","../webpack-src:/page-ready/src/page-ready.es","../webpack-src:/i18n-model-setup/index.js","../webpack-src:/i18n-model-setup/src/index.js","../../../../../../../../external/@bingads-webui-universal/i18n-model","../../../../../../../../external/@bingads-webui-universal/i18n-cldr-data-modern/core.json","../../../../../../../../external/iana-tz-data/iana-tz-data.json","../webpack-src:/i18n-model-setup/src/helper.js","../../../../../../../../external/cldrjs","../webpack-src:/validation/index.js","../webpack-src:/validation/src/index.es","../webpack-src:/validation/src/validators/required.es","../webpack-src:/validation/src/validators/base.es","../webpack-src:/validation/src/validators/string.es","../webpack-src:/validation/src/validators/string-number.es","../webpack-src:/validation/src/validators/number.es","../webpack-src:/validation/src/validators/enum.es","../webpack-src:/validation/src/validators/array.es","../webpack-src:/validation/src/validators/passive.es","../webpack-src:/validation/src/validators/custom.es","../webpack-src:/multi-agency-utils/index.js","../webpack-src:/multi-agency-utils/src/constants.js","../webpack-src:/multi-agency-utils/src/utils.js","../webpack-src:/storage/index.js","../webpack-src:/storage/src/local-storage.js","../webpack-src:/storage/src/memory-storage.js","../webpack-src:/storage/src/session-storage.js","../../../../../../../../external/urijs","../webpack-src:/js-data-rest/index.js","../webpack-src:/js-data-rest/src/jsDataRestStore.es","../webpack-src:/js-data-rest/src/jsDataRestAdapter.es","../../../../../../../../external/js-data","../webpack-src:/registry/index.ts","../webpack-src:/registry/src/index.ts","../webpack-src:/performance-marker/index.js","../webpack-src:/performance-marker/src/index.es","../webpack-src:/performance-marker/src/activity.es","../webpack-src:/performance-marker/src/marker.es","../../../../../../../../external/@bingads-webui/page-ready","../webpack-src:/performance-marker/src/helpers.es","../webpack-src:/performance-marker/src/proptypes.es","../../../../../../../../external/prop-types","../webpack-src:/image-odata-service/index.js","../webpack-src:/image-odata-service/src/index.js","../../../../../../../../external/@bingads-webui/http-util","../../../../../../../../external/@bingads-webui/js-data-odata-base-adapter","../webpack-src:/preference-service/index.js","../webpack-src:/preference-service/src/preference-service.js","../../../../../../../../external/@bingads-webui/storage","../webpack-src:/preference-service/src/data-store.js","../../../../../../../../external/jquery","../webpack-src:/http-util/src/util/url.ts","../webpack-src:/http-util/src/channel/odata-core.ts","../webpack-src:/http-util/src/channel/odata-batch.ts","../webpack-src:/http-util/src/util/multipart.ts","../../../../../../../../external/@bingads-webui/safe-json","../../../../../../../../external/@bingads-webui/url-util","../webpack-src:/http-util/index.ts","../webpack-src:/http-util/src/channel/odata.ts","../webpack-src:/http-util/src/channel/core.ts","../webpack-src:/listener/index.js","../webpack-src:/listener/src/index.es","../webpack-src:/listener/src/formatter.es","../webpack-src:/listener/src/filter.es","../../../../../../../../external/@bingads-webui/odata-converter","../webpack-src:/js-data-odata-base-adapter/index.js","../webpack-src:/js-data-odata-base-adapter/src/index.es","../webpack-src:/instrumentation/index.js","../webpack-src:/instrumentation/src/instrumentation.js","../webpack-src:/instrumentation/src/default-config.js","../webpack-src:/instrumentation/src/loggers/trace-logger.es","../webpack-src:/instrumentation/src/constants.es","../webpack-src:/instrumentation/src/loggers/logger.es","../webpack-src:/instrumentation/src/loggers/perf-logger.es","../webpack-src:/instrumentation/src/loggers/error-logger.es","../webpack-src:/instrumentation/src/loggers/ajax-logger.es","../webpack-src:/instrumentation/src/processors/scenario-processor.es","../webpack-src:/instrumentation/src/loggers/substrate-logger.js","../webpack-src:/instrumentation/src/logging-service.js","../webpack-src:/instrumentation/src/scenario-factory.es","../webpack-src:/instrumentation/src/activity-factory.es","../webpack-src:/instrumentation/src/log-transmitter.es","../webpack-src:/state-store/index.ts","../webpack-src:/state-store/src/state-store.ts","../../../../../../../../external/@bingads-webui-universal/observable","../webpack-src:/in-memory-listener/index.js","../webpack-src:/in-memory-listener/src/in-memory-listener.es","../webpack-src:/in-memory-listener/src/in-memory-sink.es","../webpack-src:/in-memory-listener/src/session-storage-sink.es","../webpack-src:/local-storage-listener/index.js","../webpack-src:/local-storage-listener/src/local-storage-listener.es","../webpack-src:/keycode/index.js","../webpack-src:/keycode/src/keyCode.js","../webpack-src:/keycode/src/keyName.js","../webpack-src:/url-util/index.ts","../webpack-src:/url-util/src/index.ts","../webpack-src:/url-util/src/top-domain.ts","../webpack-src:/instrumentation-stubs/index.js","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-interceptor.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-interceptor.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/default-config.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-handler.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub-schema.es","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub.es","../../../../../../../../external/stacktrace-js","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub-schema.es","../webpack-src:/performance-timing-logger/index.js","../webpack-src:/performance-timing-logger/src/index.es","../webpack-src:/odata-converter/index.js","../webpack-src:/odata-converter/src/query.es","../webpack-src:/odata-converter/src/uri.es","../webpack-src:/odata-converter/src/cast.es","../webpack-src:/keep-alive/index.js","../webpack-src:/keep-alive/src/index.js"],"names":["factory","self","__WEBPACK_EXTERNAL_MODULE__7__","installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_index","keys","forEach","json","cb","undefined","JSON","parse","err","obj","stringify","stackObj","stackKey","step","innerObj","result","stackIndex","_underscore","default","indexOf","length","inner","tail","outer","head","str","concat","join","each","val","isObject","push","pop","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","$","Template","kendo","window","cultures","extend","isArray","proxy","noop","math","Math","support","percentRegExp","formatRegExp","boxShadowRegExp","numberRegExp","FUNCTION","STRING","NUMBER","OBJECT","NULL","BOOLEAN","UNDEFINED","getterCache","setterCache","slice","globalize","Globalize","Class","version","proto","member","fn","base","that","this","subclass","init","apply","arguments","constructor","_initOptions","options","deepExtend","isFunction","preventDefault","_defaultPrevented","isDefaultPrevented","Observable","_events","eventName","handlers","one","idx","original","handler","eventNames","handlersIsFunction","unbind","first","unshift","trigger","e","events","sender","splice","compilePart","part","stringPart","split","replace","charAt","rest","substring","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","zeros","pad","number","digits","end","getShadows","element","shadow","css","transitions","radius","match","blur","max","left","right","bottom","destination","deepExtendOne","source","propValue","propType","destProp","ObservableArray","data","DataSource","HierarchicalDataSource","Array","Date","getTime","clone","testRx","agent","rxs","dflt","rx","test","toCamelCase","strMatch","g1","toUpperCase","paramName","useWithBlock","render","template","html","compile","parts","settings","argumentName","functionBody","Function","_slotCount","floor","Error","format","gap","indent","rep","escapable","meta","\b","\t","\n","\f","\r","\"","\\","toString","quote","string","lastIndex","a","charCodeAt","toJSON","isFinite","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","String","Number","Boolean","replacer","space","holder","k","v","partial","type","mind","","dateFormatRegExp","standardFormatRegExp","literalRegExp","commaRegExp","EMPTY","POINT","COMMA","SHARP","ZERO","PLACEHOLDER","EN","objectToString","findCulture","culture","numberFormat","getCulture","current","pattern","decimals",",",".","groupSize","percent","symbol","currency","calendars","standard","days","names","namesAbbr","namesShort","months","AM","PM","patterns","D","F","g","G","M","T","u","y","Y","/",":","firstDay","twoDigitYearMax","cultureName","calendar","groupSizes","round","precision","toFixed","fmt","date","getDate","getDay","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","formatDate","isCurrency","isPercent","customPrecision","formatAndPrecision","integer","fraction","integerLength","ch","hasGroup","hasNegativeFormat","decimalIndex","sharpIndex","zeroIndex","hasZero","hasSharp","currencyIndex","startZeroIndex","groupSeparator","decimal","literals","negative","replacement","start","toLocaleString","exec","toLowerCase","toExponential","quoteChar","literal","abs","lastIndexOf","formatNumber","isPlainObject","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","document","activeElement","documentElement","_round","nonBreakingSpaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","signRegExp","formatsSequence","2","3","4","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","count","pmHour","UTC","ISO8601","matches","amDesignators","pmDesignators","hoursOffset","minutesOffset","lookAhead","getNumber","size","rg","RegExp","substr","valueIdx","getIndexByName","lower","nameLength","subValue","checkLiteral","year","month","day","hours","minutes","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","pow","isNaN","setHours","adjustDST","setFullYear","parseDate","formats","tzoffset","MS_PER_MINUTE","parseFloat","percentSymbol","scrollbar","div","createElement","style","cssText","innerHTML","body","appendChild","offsetWidth","scrollWidth","removeChild","isRtl","closest","table","tbodyInnerHtml","touch","msPointers","MSPointerEvent","pointers","PointerEvent","transforms","elementProto","HTMLElement","hasHW3D","WebKitCSSMatrix","prefix","hasTransitions","lowPrefix","event","devicePixelRatio","screenWidth","outerWidth","screen","availWidth","innerWidth","screenHeight","outerHeight","availHeight","innerHeight","detectOS","ua","minorVersion","os","notAndroidPhone","agentRxs","fire","android","iphone","ipad","meego","webos","blackberry","playbook","wp","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","chrome","webkit","ie","navigator","device","browser","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","mobileOS","userAgent","wpDevicePixelRatio","width","kineticScrollNeeded","hasNativeScrolling","mouseAndTouchPresent","detectBrowser","safari","opera","msie","mozilla","documentMode","zoomLevel","clientWidth","top","cssBorderSpacing","borderSpacing","cssClass","addClass","eventCapture","addEventListener","input","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","sorted","field","sort","b","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","nodeList","querySelectorAll","parentNode","pushState","history","hashChange","effects","prepareAnimationOptions","duration","reverse","complete","teardown","hide","completeCallback","animate","instance","queue","promise","enabled","Element","is","display","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","classes","toggleClass","kendoRemoveClass","kendoToggleClass","toggle","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","eventTarget","target","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","mousedown","mouseup","mousemove","mousecancel","click","resize","localUrlRe","ui","fx","mobile","dataviz","roles","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","attr","wrap","autosize","percentage","parent","hasClass","wrapper","wrapperStyle","show","height","boxSizing","mozBoxSizing","webkitBoxSizing","shadows","percentWidth","percentHeight","marginLeft","paddingLeft","paddingRight","paddingBottom","zoom","children","getComputedStyles","properties","computedStyle","styles","defaultView","getComputedStyle","getPropertyValue","currentStyle","toHyphens","getOffset","positioned","pageYOffset","scrollTop","pageXOffset","scrollLeft","parseEffects","add","directions","down","up","in","out","htmlEncode","isLocalUrl","url","expr","expression","safe","members","wrapExpression","setter","accessor","set","guid","random","id","roleSelector","role","triggeredByInput","tagName","logToConsole","message","console","log","Widget","jQuery","_hasBindingTarget","kendoBindingTarget","_tabindex","tabindex","removeAttr","setOptions","_setEvents","force","getSize","currentSize","_size","_resize","dimensions","setSize","destroy","removeData","domElement","offsetHeight","notify","templateRegExp","jsonRegExp","jsonFormatRegExp","dashRegExp","parseOption","option","getAttribute","parseOptions","containmentComparer","contains","resizableWidget","widget","inArray","initWidget","dataSource","nodeType","rolesFromNamespaces","namespaces","find","addBack","widgetInstance","widgets","filter","widgetsArray","makeArray","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","prependTo","remove","plugin","register","args","method","ContainerNullObject","nullObject","MobileWidget","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","focusable","isTabIndexNotNaN","nodeName","disabled","href","parents","filters","hidden","visible","appLevelNativeScrolling","application","touchScroller","elements","Scroller","kendoMobileScroller","suites","onResize","setTimeout","on","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","MOUSE_EVENTS","MouseEventNormalizer","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","eventMap","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","getEventMap","eventRegEx","applyEventMap","kendoJQuery","context","rootjQuery","search","touchstart","touchend","timezone","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","offset","grep","from","to","zoneAndRule","zones","zoneRules","until","findZone","info","convert","fromOffset","toOffset","fromLocalOffset","getTimezoneOffset","toLocalOffset","abbr","toLocalDate","MS_PER_DAY","setDayOfWeek","dir","setDate","firstDayOfMonth","addDays","setTime","ignoreDST","difference","today","dayOfWeek","isInDateRange","min","msValue","msMin","msMax","isInTimeRange","isToday","nextDay","previousDay","toUtcTime","MS_PER_HOUR","toInvariantTime","staticDate","lastDayOfMonth","last","timeOffset","stripWhitespace","iterator","createNodeIterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationQueue","queueAnimation","runNextAnimation","shift","parseQueryStringParams","params","paramParts","decodeURIComponent","OS","mobileChrome","elementUnderCursor","x","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","caret","rangeElement","isPosition","selectionStart","focus","setSelectionRange","selectionEnd","selection","createTextRange","collapse","moveStart","moveEnd","select","rangeDuplicated","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","text","_properties","getOwnPropertyDescriptor","defineConstProperty","writable","defineProducedProperty","configurable","defineProducedPropertyOnClass","defineComputedProperty","mixin","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__5__","__WEBPACK_EXTERNAL_MODULE__61__","_onedsListener","_dsAnalyticsWebJs","_listener","_defaultConfig","Listener","super","_","defaults","transmitProfile","defaultConfig","batchSize","formatters","logTableNames","defaultLogCategory","tenantToken","initialized","analytics","ApplicationInsights","config","instrumentationKey","channelConfiguration","autoFlushEventsLimit","webAnalyticsConfiguration","autoCapture","pageView","onLoad","onUnload","initialize","postChannel","getPostChannel","_setTransmitProfile","unload","write","logMessage","filterLogs","categoryName","getCategoryName","logCategory","formattedMsg","formatLogs","trackEvent","has","propertyFormatter","OneDSPropertyFormatter","Formatter","mapObject","__WEBPACK_EXTERNAL_MODULE__8__","_bulkify","_bulkUpsertUtil","schema","attrs","rows","getCSVRows","rootSchema","attributesList","clientIdPrefix","csvRows","traverses","clientIds","attributes","isString","isNumber","traverseResult","currentRow","nextRoots","nextRootSchemas","innerPropertySchema","getSchemaOfSubAttr","isRootEntity","getSchemaName","attrKeys","isObjectAForeignKey","getCsvHeaderName","getCsvValue","keyValues","pair","propsToIterate","pick","prop","enumIndex","enum","csvHeaderName","pairs","traverseFields","nextRootResults","rowResult","rowIndex","nextRoot","flatten","row","Type","Name","columns","uniq","union","getCsvColumns","line","column","isUndefined","generateCsvRows","csvData","isTextType","results","csvDataArray","csvDataRows","pos","csvDataRow","rowData","convertCsvDataInTextToCsvArray","headers","col","errors","item","error","EditorialCode","EditorialLocation","EditorialTerm","ErrorNumber","Property","Client Id","Id","Parent Id","getErrorRows","findEntityWithClientId","clientId","singleData","clientData","csvRow","setId","attrName","items","$$ODataExtension","isNull","bulkDeleteValueIfEmpty","isEmpty","func","getParent","cast","getCast","hasReadOnlyFields","parentId","_primitiveUtilities","buildDestroyObject","buildCreateObject","Status","parentFkObject","omit","some","isReadOnly","__WEBPACK_EXTERNAL_MODULE__17__","singleton","PageReady","_bluebird","GLOBAL_PAGE","p$pagesReady","resolvePageReadyCbs","pageIsReady","pageName","lazyInitializePromise","afterPageReady","Promise","res","__WEBPACK_EXTERNAL_MODULE__23__","__WEBPACK_EXTERNAL_MODULE__110__","__WEBPACK_EXTERNAL_MODULE__111__","__WEBPACK_EXTERNAL_MODULE__112__","_helper","locale","I18nModel","loadCLDRData","core","loadTimeZoneData","iana","setGlobalLocale","_i18nModel","_core","_interopRequireDefault","_ianaTzData","_cldr$attributes","Cldr","language","region","script","availableLocales","modern","_cldrjs","load","__WEBPACK_EXTERNAL_MODULE__16__","_required","_interopRequireWildcard","_enum","_passive","_custom","Validation","required","enumeration","passive","custom","run","validators","failed","isValid","allowSpace","i18n","Required","_base","Base","getString","isValidValue","putil","blockInput","nullable","isNil","validate","distinguishCJK","counts","countBy","hasCJK","cjk","ascii","Size","MinSize","XSS","patt","Pattern","maxlength","getLength","minlength","decimalLength","Range","_number","isValidDecimal","NumberSize","parseDecimal","NumberRange","segments","formatDecimal","minimumFractionDigits","maximumFractionDigits","enumerators","Enum","Item","additionalValidators","Items","Unique","valueSize","passAll","every","validator","sizeNotFits","invalidItems","Passive","setError","Custom","_constants","_utils","AccountCustomerLinkType","freeze","Unknown","DirectParent","AgencyCustomer","ParentInHierachy","AgencyInHierachy","AccountLinkPermissionType","Standard","AccountCampaignManagement","Billing","ReadOnly","MultiAgencyHeaderHide","[object Object]","import","myWebsite","mmc","assetLibrary","permissions","getAccountLinkPermissionType","settingsContext","_localStorage","_memoryStorage","_sessionStorage","instrumentation","logError","supportsStorage","localStorage","setItem","clear","innerErr","getItem","invalidate","removeItem","getOwnPropertyNames","dataset","deepCopy","cloneDeep","sessionStorage","__WEBPACK_EXTERNAL_MODULE__10__","__WEBPACK_EXTERNAL_MODULE__68__","_jsDataRestStore","_jsDataRestAdapter","_jsData","JSData","DS","restfulService","registerAdapter","JsDataRestAdapter","defineRestResource","resourceName","uriPath","primaryKey","definitions","defineResource","idAttribute","_urijs","generateUri","definition","query","queryParam","$orderby","direction","TypeError","MAX_VALUE","$top","$skip","URI","buildQuery","path","pathExtension","checkAndAddPrimaryKey","queryId","uniqueId","post","findAll","then","preProcess","addProperties","compose","total","cacheResponse","afterInject","identity","innerOptions","injected","update","patch","updateAll","delete","destroyAll","Namespace","resolve","reduce","seg","worker","Registry","rootNamespace","qualifiedNames","Map","namespace","resolveQualifiedName","realName","isObjectWithName","getNamespace","getShortName","getQualifiedName","__WEBPACK_EXTERNAL_MODULE__71__","_helpers","_proptypes","_activity","_marker","filesFetched","instr","markerOptions","autoEnd","isActiveChild","activity","createActivity","parentMarker","isFileFetched","PerfMarker","perfScenario","addScenario","perfMarker","getScenario","sendLog","scenario","setting","_pageReady","isPageReadyFulfilled","markTime","performance","now","activeTime","NaN","isMarkerValid","getUrl","pathname","hash","markers","InitUrl","hierarchy","isDone","activeChildren","doneCallback","createChild","childMarker","PerfMarkerFactory","createMarker","willFetchFile","timeFetchFile","markConsole","willFetchData","timeFetchData","willInit","timeInit","willRender","timeRender","onChildDone","reject","activeChild","done","additionalMessage","timeDone","send","markerPoint","timeStamp","parseMarkers","perf","marker","doneUrl","didUrlChange","Version","ParentName","Data","IsParentDone","IsPageReadyFulfilled","IsFileFetched","FileFetchStartTime","FileFetchActiveStartTime","DataFetchStartTime","DataFetchActiveStartTime","RenderStartTime","RenderActiveStartTime","InitStartTime","InitActiveStartTime","DoneStartTime","DoneActiveStartTime","DidUrlChange","DoneUrl","AdditionalMessage","asyncFunc","_propTypes","perfMarkerPropTypes","PropTypes","shape","isRequired","__WEBPACK_EXTERNAL_MODULE__41__","_httpUtil","cid","aid","host","token","controller","getImages","optionsWithDefault","skip","customQueries","odata","oDataToken","postImage","patchImage","deleteImage","getImage","__WEBPACK_EXTERNAL_MODULE__6__","__WEBPACK_EXTERNAL_MODULE__125__","__WEBPACK_EXTERNAL_MODULE__152__","_preferenceService","_storage","_dataStore","Level","isInitialized","localRepository","localAccountLevelRepository","localUserLevelRepository","p$preferences","keySessionStorage","localToRemoteIdMap","userLevelLocalToRemoteIdMap","latestLocalId","resolvedPromise","remoteSyncTasks","SessionStorage","getSessionStorage","currentUserInfo","currentCustomerInfo","currentAccountInfo","APIHost","APIPath","onRemoteSyncDone","getStoreOptions","isUserLevel","accountId","customerId","entitySet","odataURL","$withKey","afterUpdate","resource","concatLocalRepository","parseData","rawData","parsedData","mapPreferenceData","rawPreferenceData","initSync","initialUserPreferences","currentUser","currentCustomer","currentAccount","apiHost","apiPath","authToken","userLevelPreferenceFromPageContext","UserLevelPreferences","accountLevelPreferenceFromPageContext","AccountLevelPreferences","findByName","findWhere","findByNameAtUserLevel","findByNameAtAccountLevel","setRemoteId","keyMap","addTask","task","isFulfilled","catch","updateLocalCopy","localCopy","preference","createOrUpdate","level","currentPreference","isEqual","preferenceDS","processBulkSetResponse","response","Action","Response","delFromStore","deleteMappedId","repository","settle","limit","userLevel","resultUserPreferences","resultAccountPreferences","userName","getSessionStorageKey","findByPrefix","searchPattern","setAtUserLevel","setAtAccountLevel","bulkCreate","action","processResponse","overrideResponse","status","reqs","del","setToSession","sessionData","findByNameInSession","delFromSession","delAtUserLevel","onMultipleRemoteSyncDone","ids","all","_jsDataOdataBaseAdapter","dataStore","ODataBaseAdapter","__WEBPACK_EXTERNAL_MODULE__13__","__WEBPACK_EXTERNAL_MODULE__42__","__WEBPACK_EXTERNAL_MODULE__100__","fill","expand","customParamSerialize","urlParameters","$url","queryify","domain","port","expandOptions","composeBatchUrl","signature","uri","urlUtil","make","beforeSend","jqXHR","oDataTokenType","tokenType","setRequestHeader","loginType","requestId","generateGuid","applicationName","sessionId","SessionId","customHeader","i18nErrors","errs","Code","getStringOrDefault","contentType","ajax","boundary","batchURL","_odataCore","multipart","generate","dataType","textStatus","xhr","lines","req","multipartPath","needContentType","contentTransferEncoding","ignored","authorization","dataContentType","responses","tmp","scanStatus","responseString","statusLine","headerParts","headerLine","safeJSON","parseSync","statusMessage","parseHttpResponse","successCodeList","statusCounter","chain","success","failure","http","batchUtil","httpWithDelete","put","$delete","odataWithDelete","batch","upload","op","FormData","processData","append","file","_odataBatch","defaultOptions","_jquery","ajaxSettings","_url","getResponseHeaders","xhrObject","getAllResponseHeaders","arr","reg","header","originalArgs","arg","isArguments","toArray","second","third","customAjax","xhrFields","converters","bypassAjaxLogging","xhrOption","timeout","ajaxFunc","$op","withCredentials","responseType","errorThrown","details","responseText","extraInfo","defaultOps","_formatter","_filter","_classCallCheck","logs","any","check","formatter","Filter","__WEBPACK_EXTERNAL_MODULE__39__","__WEBPACK_EXTERNAL_MODULE__40__","__WEBPACK_EXTERNAL_MODULE__123__","_odataConverter","sendBatchRequest","param","odataUri","getCommonOptions","_ref","_ref$ajaxOptions","ajaxOptions","successCallback","state","queryParameters","odataQuery","extendOwn","odataCast","queryParams","convertQuery","isFinding","request","filterOptions","queryEntitySet","edmRootResourceIdentifier","identifyEntitySet","edm","ActionType","customParameterizationFunc","navigation","parameters","statusText","__WEBPACK_EXTERNAL_MODULE__29__","_instrumentation","_logger","_loggingService","_logTransmitter","setup","scenarioContext","initTransmissionService","initLoggingService","getDefaultConfig","loggers","processors","listeners","isDebugMode","beforeStop","logTransmitter","LogTransmitter","writeRawLog","rawLogs","transmit","logger","loggingService","LoggingService","scenarioSchema","parseSchema","createScenarioAndActivity","parentScenario","scenarioName","activityName","createScenario","ScenarioContext","traceLogger","TraceLogger","perfLogger","PerfLogger","errorLogger","ErrorLogger","ajaxLogger","AjaxLogger","substrateLogger","SubstrateLogger","scenarioProcessor","ScenarioProcessor","_traceLogger","_perfLogger","_errorLogger","_ajaxLogger","_scenarioProcessor","_substrateLogger","Logger","trace","api","httpMethod","logLevel","getUtcTime","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","entryType","ENTRYTYPE","MESSAGE","getLogMethods","IMPACTUSER","True","False","NA","DEBUG","VERBOSE","PERFORMANCE","ERROR","SUBSTRATE","SCENARIO","ACTIVITY","AJAX","AJAXRENDER","METHOD","transmitter","isMethodEnter","pass","monitor","originalFunc","t0","getTimestamp","timeTaken","monitorAsync","onPromiseDone","impactUser","entityCount","includeRendering","process","activityId","scenarioId","parentScenarioId","parentScenarioName","startSignal","startTime","stopSignal","trackDuration","endTime","signal","withSignalSync","actionReturn","withSignalAsync","promiseReturn","_scenarioFactory","registry","checkSchemaDuplication","scenarios","activities","Set","scenarioFactories","ScenarioFactory","_activityFactory","Scenario","ActivityFactory","Activity","activitySchema","simpleActivity","logMethods","logMethod","updateScenarioContext","stopped","processedLogs","processor","listener","__WEBPACK_EXTERNAL_MODULE__76__","_stateStore","_observable","defaultState","dstate","isDefaultStateSet","initialState","setState","stateChange","shallowDiff","subscriptions","subscription","observer","next","subscriber","observable","subscribe","ensureObserverType","ob","_value","_errValue","_inMemoryListener","_inMemorySink","_sessionStorageSink","sink","maxSize","SessionStorageSink","storageKey","keyCache","existingItemsStr","setItemsOnUnload","_localStorageListener","logCount","uniquePageId","storage","generateKey","_keyCode","_keyName","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","Digit0","KeyA","KeyB","KeyC","KeyD","KeyE","KeyF","KeyG","KeyH","KeyI","KeyJ","KeyK","KeyL","KeyM","KeyN","KeyO","KeyP","KeyQ","KeyR","KeyS","KeyT","KeyU","KeyV","KeyW","KeyX","KeyY","KeyZ","Comma","Period","Semicolon","Quote","BracketLeft","BracketRight","Backquote","Backslash","Minus","Equal","IntlRo","IntlYen","AltLeft","AltRight","CapsLock","ControlLeft","ControlRight","OSLeft","OSRight","ShiftLeft","ShiftRight","ContextMenu","Enter","Space","Tab","Delete","End","Home","Insert","PageDown","PageUp","ArrowDown","ArrowLeft","ArrowRight","ArrowUp","Escape","PrintScreen","ScrollLock","Pause","F1","F3","F4","F5","F6","F7","F8","F9","F11","F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24","NumLock","Numpad0","Numpad1","Numpad2","Numpad3","Numpad4","Numpad5","Numpad6","Numpad7","Numpad8","Numpad9","NumpadAdd","NumpadComma","NumpadDecimal","NumpadDivide","NumpadEnter","NumpadEqual","NumpadMultiply","NumpadSubtract","Numpad0-Insert","Numpad1-End","Numpad2-ArrowDown","Numpad3-PageDown","Numpad4-ArrowLeft","Numpad5-Clear","Numpad6-ArrowRight","Numpad7-Home","Numpad8-ArrowUp","Numpad9-PageUp","NumpadDecimal-Delete","keyName","invert","keyCode","unique","serializeParam","originalData","startOfRoute","route","pathAndQuery","recipient","subject","keepSqBrackets","setQueryStringParam","innerUrl","originalN","replaceOnly","regex","qs","position","pound","originalName","originalUrl","re","separator","queryIndex","domainsToCheck","isRelativeUrl","getDomain","toCheck","website","site","matchs","topLevelDomain","_topDomain","UrlRegex","frags","memo","frag","eSlash","sSlash","hasProtocol","hostname","startIndex","__WEBPACK_EXTERNAL_MODULE__45__","__WEBPACK_EXTERNAL_MODULE__48__","__WEBPACK_EXTERNAL_MODULE__52__","__WEBPACK_EXTERNAL_MODULE__53__","_ajaxStub","_ajaxEventHandler","_errorStub","_ajaxInterceptor","_ajaxStubSchema","stubOptions","eventHandler","setupScenario","interceptor","AjaxInterceptor","ajaxStubScenario","objectsToStub","objectToStub","intercept","_ajaxEventInterceptor","globalInterceptInstance","generateRid","originalAjax","shouldAddRequestId","setQuery","ajaxStubActivity","AjaxEventInterceptor","triggerEventInterceptors","urlInLowerCase","BEFORESEND","SUCCESS","COMPLETE","pageTrackingId","ajaxContext","requestResult","ajaxStartTime","ajaxRenderStartTime","getPageSize","beforeSendHandler","interceptBeforeSend","successHandler","interceptSuccess","errorHandler","interceptError","completeHandler","interceptComplete","originalEventHandler","originalRet","handleException","onBeforeSendDone","successRenderHandler","ex","stack","serverErrorCodes","detectError","respData","Errors","Message","getEntityCount","Records","RowCount","requestData","BiDateRange","AjaxEventHandler","errorMappers","shouldAddHeaders","constant","ajaxStubOptions","featureName","lcid","ajaxTimeTaken","getServerPerf","renderTimeTaken","responseXML","isUserError","errorMapper","getResponseHeader","perfTimings","odataPerf","responseJSON","keyUnfilteredCount","keyOdataCount","_stacktraceJs","_errorStubSchema","getStackStringFromStackFrames","stackFrames","frame","getFunctionName","getFileName","getLineNumber","getColumnNumber","asyncAjaxOverride","XMLHttpRequest","open","onerror","onreadystatechange","readyState","logUnhandledPromiseRejections","skipStackTraceResolutionForPromiseRejections","isExpectedUnhandledPromiseError","stackTraceOptions","errorMsg","lineNumber","errorObj","errorStubScenario","errorStubActivity","handleError","promiseRejection","handlePromiseRejection","errorMessage","StackTrace","fromError","finally","referrer","perviousRoute","previousRoute","promiseRejectionEvent","reason","updateInterval","getEntriesByType","isPageLoaded","pageNavLogged","logOnLoad","timer","setInterval","logOnTimer","logOnUnload","writeResourceTimingLogs","tryRecordInactiveTime","tryLogPageNavigation","clearLogBuffer","pageLoaded","inactiveTime","timing","loadEventEnd","writePageNavigationLogs","extensions","isPageNavigationLog","loadTimes","firstPaintTime","navTimingV2Logs","navTimingV2Log","colsToReplace","redirectCount","clearResourceTimings","webkitClearResourceTimings","where","orderBy","_where$","$search","$filter","$expand","DefaultTop","$count","$source","$select","_options$useAdvertise","useAdvertiserCustomerId","advertiserCustomerID","searchId","Accounts","resIds","idType","getUriLegacy","needCast","$cast","extra","@odata.type","jsdataResource","_src","checkFrequencyInMinutes","fullFillUrl","relativeUrl","KeepAlive","deps","httpUtil","requestOption","text json","reWriteUrl","timeoutInMinutes","unAuthCallBack","keepAliveTask","checkFrequency","keepAliveCounter","keepAliveMaxCount","issueKeepAliveRequest","issueKeepAliveRequestWithExceptionHandling","clearInterval","refresh","keepAliveInstance","__WEBPACK_EXTERNAL_MODULE__373__","__WEBPACK_EXTERNAL_MODULE__43__","__WEBPACK_EXTERNAL_MODULE__44__"],"mappings":"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UN,GACxB,IAAI9zC,EAAM8zC,EACV,IAAKx6D,EAAAC,QAAEk9B,SAASzW,IAAQ1mB,EAAAC,QAAE4hC,QAAQnb,EAAIiP,QACpC,MAAO,GAGTjP,EAAMA,EAAIiP,OACV,MAAMhrB,EAAI+H,SAASsE,cAAc,KACjC,IAAIknC,EAAS,GACbvzC,EAAE0hB,KAAOsvC,EAAYj1C,GAAOA,YAAiBA,IAE7C,IAAI,MACMk1C,EAAajxD,EAAbixD,SACFC,EAAan1C,EAAI9U,cAAc1R,QAAQ07D,GAE7C1d,GAA0B,IAAhB2d,EAAoB,GAAKn1C,EAAI9gB,UAAUi2D,EAAYD,EAASz7D,OAAS07D,GAC/E,MAAOt8D,GACP2+C,EAAS,GAGX,OAAOA,EAGH,SAAU2c,EAAcn0C,GAC5B,OAAO1mB,EAAAC,QAAEk9B,SAASzW,IAA8B,IAArBA,EAAIxmB,QAAQ,KAqClC,MAAMm7D,EAAW,+GACoB,wLCvL7B,CACb,MACA,OACA,SACA,MACA,SACA,SACA,MACA,OACA,UACA,WACA,KACA,UACA,YACA,aACA,cACA,MACA,QACA,KACA,OACA,MACA,QACA,KACA,MACA,OACA,QACA,KACA,MACA,SACA,KACA,UACA,SACA,KACA,MACA,SACA,WACA,SACA,OACA,KACA,YACA,UACA,SACA,YACA,WACA,OACA,SACA,SACA,KACA,SACA,kBACA,iBACA,OACA,QACA,QACA,YACA,YACA,UACA,SACA,MACA,KACA,MACA,aACA,MACA,QACA,KACA,YACA,KACA,OACA,SACA,QACA,OACA,OACA,MACA,OACA,KACA,OACA,OACA,aACA,KACA,UACA,WACA,KACA,UACA,OACA,UACA,QACA,UACA,SACA,OACA,QACA,UACA,KACA,MACA,KACA,MACA,KACA,QACA,KACA,OACA,QACA,UACA,iBACA,OACA,OACA,MACA,YACA,cACA,WACA,WACA,WACA,WACA,aACA,UACA,SACA,KACA,MACA,MACA,OACA,MACA,MACA,KACA,KACA,QACA,SACA,OACA,UACA,SACA,OACA,UACA,MACA,KACA,KACA,KACA,SACA,KACA,QACA,MACA,OACA,OACA,QACA,MACA,MACA,KACA,QACA,cACA,cACA,OACA,YACA,OACA,KACA,MACA,MACA,KACA,aACA,KACA,QACA,aACA,OACA,MACA,OACA,MACA,OACA,UACA,QACA,SACA,SACA,MACA,WACA,MACA,KACA,WACA,cACA,WACA,SACA,UACA,WACA,KACA,KACA,QACA,WACA,WACA,MACA,OACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,OACA,MACA,OACA,cACA,MACA,SACA,OACA,QACA,WACA,UACA,aACA,MACA,UACA,QACA,OACA,SACA,UACA,OACA,OACA,OACA,OACA,SACA,MACA,WACA,WACA,MACA,MACA,OACA,MACA,KACA,KACA,SACA,MACA,OACA,KACA,MACA,MACA,KACA,KACA,SACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,SACA,SACA,KACA,WACA,SACA,QACA,UACA,OACA,QACA,OACA,WACA,KACA,KACA,SACA,WACA,QACA,SACA,WACA,WACA,QACA,OACA,UACA,KACA,KACA,KACA,QACA,QACA,SACA,UACA,UACA,MACA,UACA,WACA,YACA,UACA,UACA,WACA,SACA,SACA,eACA,aACA,UACA,cACA,UACA,iBACA,OACA,OACA,UACA,UACA,SACA,UACA,UACA,MACA,KACA,SACA,aACA,cACA,UACA,QACA,MACA,SACA,UACA,KACA,aACA,KACA,KACA,KACA,KACA,QACA,OACA,KACA,QACA,MACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,MACA,KACA,OACA,SACA,QACA,SACA,WACA,OACA,WACA,QACA,WACA,SACA,UACA,OACA,SACA,MACA,MACA,WACA,OACA,UACA,SACA,YACA,WACA,WACA,OACA,MACA,KACA,KACA,KACA,MACA,KACA,OACA,SACA,MACA,UACA,MACA,WACA,QACA,MACA,QACA,SACA,SACA,SACA,OACA,MACA,KACA,QACA,MACA,KACA,MACA,QACA,MACA,YACA,KACA,KACA,QACA,SACA,SACA,WACA,cACA,cACA,QACA,YACA,KACA,WACA,OACA,KACA,MACA,SACA,KACA,WACA,KACA,aACA,MACA,SACA,WACA,SACA,UACA,UACA,aACA,OACA,OACA,YACA,QACA,SACA,MACA,OACA,OACA,UACA,UACA,OACA,QACA,WACA,UACA,UACA,KACA,OACA,WACA,OACA,OACA,QACA,UACA,YACA,OACA,YACA,WACA,OACA,UACA,MACA,UACA,KACA,KACA,SACA,UACA,OACA,UACA,UACA,MACA,KACA,KACA,MACA,OACA,cACA,WACA,OACA,QACA,UACA,QACA,aACA,MACA,KACA,OACA,YACA,MACA,UACA,YACA,WACA,MACA,UACA,MACA,OACA,YACA,SACA,MACA,KACA,MACA,UACA,QACA,SACA,OACA,QACA,MACA,SACA,MACA,KACA,OACA,KACA,MACA,KACA,MACA,OACA,UACA,SACA,KACA,KACA,OACA,KACA,KACA,OACA,QACA,QACA,SACA,KACA,QACA,MACA,SACA,QACA,KACA,QACA,OACA,MACA,MACA,KACA,UACA,OACA,YACA,OACA,MACA,WACA,OACA,SACA,MACA,MACA,MACA,KACA,KACA,KACA,WACA,WACA,SACA,QACA,QACA,UACA,QACA,KACA,KACA,KACA,WACA,QACA,OACA,QACA,UACA,OACA,KACA,KACA,OACA,UACA,UACA,OACA,MACA,OACA,WACA,SACA,aACA,OACA,WACA,OACA,SACA,OACA,SACA,YACA,UACA,MACA,KACA,MACA,KACA,KACA,SACA,WACA,UACA,YACA,YACA,QACA,YACA,QACA,QACA,WACA,OACA,UACA,MACA,UACA,SACA,UACA,QACA,MACA,KACA,OACA,KACA,KACA,SACA,QACA,UACA,MACA,OACA,MACA,MACA,KACA,KACA,OACA,MACA,QACA,KACA,KACA,SACA,OACA,OACA,aACA,KACA,MACA,aACA,WACA,OACA,MACA,MACA,YACA,YACA,SACA,MACA,gBACA,SACA,cACA,KACA,WACA,KACA,KACA,QACA,KACA,UACA,MACA,WACA,KACA,OACA,MACA,SACA,OACA,MACA,KACA,OACA,QACA,UACA,MACA,MACA,KACA,MACA,MACA,KACA,OACA,SACA,MACA,MACA,KACA,WACA,OACA,SACA,UACA,SACA,OACA,KACA,cACA,iBACA,kBACA,MACA,KACA,KACA,KACA,MACA,OACA,MACA,SACA,SACA,UACA,OACA,KACA,KACA,QACA,UACA,SACA,KACA,OACA,MACA,KACA,MACA,OACA,YACA,KACA,KACA,QACA,KACA,KACA,UACA,cACA,QACA,YACA,SACA,OACA,YACA,UACA,UACA,MACA,SACA,UACA,MACA,SACA,KACA,KACA,MACA,QACA,UACA,SACA,QACA,OACA,QACA,OACA,KACA,OACA,OACA,gBACA,YACA,WACA,OACA,QACA,UACA,OACA,UACA,QACA,OACA,QACA,OACA,SACA,KACA,MACA,MACA,OACA,QACA,SACA,QACA,OACA,MACA,SACA,QACA,QACA,OACA,MACA,eACA,KACA,KACA,KACA,MACA,OACA,KACA,WACA,OACA,SACA,KACA,KACA,KACA,QACA,SACA,OACA,SACA,SACA,MACA,aACA,QACA,MACA,SACA,YACA,UACA,WACA,YACA,WACA,SACA,MACA,KACA,WACA,KACA,KACA,MACA,QACA,OACA,YACA,OACA,WACA,MACA,OACA,WACA,KACA,KACA,QACA,YACA,MACA,OACA,OACA,MACA,aACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,OACA,SACA,OACA,MACA,MACA,MACA,SACA,QACA,UACA,SACA,WACA,SACA,OACA,cACA,MACA,QACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,SACA,QACA,SACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,SACA,OACA,SACA,OACA,MACA,KACA,KACA,MACA,MACA,UACA,UACA,UACA,UACA,MACA,OACA,OACA,aACA,QACA,KACA,MACA,KACA,MACA,MACA,KACA,OACA,OACA,QACA,QACA,SACA,SACA,KACA,KACA,QACA,qBACA,SACA,MACA,SACA,QACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,WACA,SACA,UACA,SACA,cACA,UACA,OACA,KACA,QACA,MACA,MACA,MACA,SACA,MACA,OACA,SACA,SACA,MACA,UACA,UACA,QACA,SACA,MACA,MACA,KACA,OACA,YACA,QACA,OACA,WACA,QACA,QACA,YACA,MACA,OACA,KACA,MACA,KACA,SACA,KACA,KACA,WACA,MACA,UACA,QACA,QACA,cACA,SACA,SACA,OACA,SACA,WACA,MACA,MACA,OACA,OACA,UACA,QACA,KACA,KACA,QACA,OACA,cACA,WACA,OACA,KACA,KACA,MACA,OACA,QACA,UACA,OACA,OACA,KACA,YACA,QACA,QACA,QACA,MACA,OACA,cACA,OACA,cACA,QACA,aACA,WACA,aACA,MACA,aACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,OACA,SACA,QACA,SACA,QACA,KACA,OACA,aACA,UACA,SACA,UACA,MACA,WACA,cACA,QACA,QACA,SACA,OACA,WACA,MACA,OACA,UACA,SACA,SACA,aACA,OACA,aACA,SACA,UACA,UACA,OACA,YACA,QACA,MACA,MACA,MACA,KACA,SACA,QACA,QACA,SACA,OACA,KACA,OACA,KACA,QACA,OACA,MACA,KACA,MACA,SACA,KACA,WACA,OACA,SACA,SACA,OACA,QACA,WACA,UACA,UACA,kBACA,SACA,MACA,OACA,MACA,OACA,OACA,KACA,MACA,MACA,KACA,MACA,MACA,aACA,UACA,eACA,SACA,SACA,UACA,UACA,OACA,KACA,KACA,SACA,OACA,SACA,WACA,OACA,SACA,QACA,WACA,MACA,QACA,MACA,MACA,OACA,MACA,KACA,KACA,YACA,QACA,OACA,QACA,OACA,UACA,QACA,OACA,WACA,SACA,OACA,WACA,KACA,OACA,OACA,UACA,OACA,KACA,KACA,MACA,OACA,MACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,OACA,KACA,SACA,SACA,WACA,WACA,OACA,QACA,YACA,OACA,OACA,MACA,MACA,QACA,QACA,OACA,KACA,MACA,KACA,KACA,QACA,UACA,OACA,YACA,YACA,MACA,WACA,YACA,UACA,QACA,SACA,SACA,QACA,QACA,KACA,QACA,WACA,SACA,UACA,OACA,UACA,SACA,KACA,SACA,QACA,KACA,KACA,SACA,UACA,KACA,MACA,SACA,OACA,SACA,SACA,aACA,QACA,SACA,MACA,OACA,KACA,MACA,KACA,MACA,OACA,OACA,aACA,MACA,UACA,SACA,OACA,KACA,KACA,KACA,MACA,UACA,UACA,OACA,UACA,SACA,UACA,OACA,QACA,QACA,KACA,SACA,MACA,KACA,SACA,KACA,KACA,QACA,KACA,KACA,QACA,QACA,QACA,MACA,QACA,UACA,QACA,QACA,OACA,SACA,OACA,KACA,QACA,UACA,WACA,SACA,gBACA,YACA,qBACA,QACA,MACA,KACA,OACA,MACA,QACA,QACA,KACA,MACA,KACA,KACA,KACA,QACA,MACA,KACA,KACA,SACA,aACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,YACA,OACA,WACA,KACA,KACA,QACA,WACA,WACA,eACA,MACA,KACA,KACA,SACA,QACA,MACA,SACA,SACA,MACA,MACA,SACA,OACA,SACA,OACA,OACA,aACA,KACA,QACA,aACA,QACA,OACA,SACA,OACA,SACA,KACA,SACA,QACA,UACA,SACA,OACA,UACA,QACA,UACA,UACA,iBACA,SACA,QACA,UACA,MACA,UACA,QACA,OACA,KACA,UACA,OACA,OACA,cACA,MACA,UACA,OACA,UACA,MACA,gBACA,WACA,OACA,QACA,QACA,MACA,KACA,MACA,MACA,OACA,QACA,UACA,SACA,MACA,cACA,cACA,cACA,cACA,aACA,cACA,cACA,eACA,cACA,aACA,cACA,eACA,cACA,aACA,eACA,aACA,iBACA,cACA,aACA,oBACA,aACA,cACA,iBACA,eACA,cACA,iBACA,eACA,aACA,eACA,aACA,WACA,YACA,aACA,aACA,cACA,iBACA,oBACA,YACA,aACA,cACA,gBACA,aACA,yBACA,cACA,aACA,aACA,cACA,YACA,YACA,gBACA,cACA,cACA,YACA,iBACA,aACA,aACA,aACA,cACA,cACA,gBACA,gBACA,mBACA,cACA,eACA,cACA,cACA,iBACA,cACA,gBACA,cACA,kBACA,cACA,aACA,YACA,YACA,cACA,iBACA,iBACA,cACA,kBACA,cACA,cACA,aACA,YACA,kBACA,eACA,iBACA,kBACA,mBACA,kBACA,iBACA,eACA,oBACA,oBACA,iBACA,cACA,iBACA,kBACA,iBACA,mBACA,oBACA,eACA,iBACA,eACA,eACA,cACA,iBACA,cACA,eACA,aACA,eACA,eACA,YACA,WACA,YACA,kBACA,cACA,aACA,eACA,cACA,YACA,WACA,cACA,aACA,aACA,cACA,eACA,YACA,WACA,cACA,cACA,iBACA,cACA,cACA,cACA,YACA,gBACA,aACA,0BACA,2BACA,YACA,cACA,uBACA,cACA,aACA,aACA,cACA,mBACA,oBACA,aACA,gBACA,gBACA,cACA,MACA,MACA,SACA,QACA,UACA,SACA,KACA,YACA,OACA,WACA,MACA,UACA,KACA,MACA,KACA,SACA,OACA,OACA,MACA,KACA,OACA,UACA,uBjHh9CFv+D,EAAAD,QAAAJ,MJEAK,EAAAD,QAAAN,EAA2BI,EAAQ,QAAeA,EAAQ,QAAUA,EAAQ,+BAF5E,IAAAJ,EASC,qBAAAC,WATDD,EASC,SAAA68B,EAAA4tB,EAAA8U,EAAAC,EAAAC,EAAAC,GACD,mBCTA,IAAAv/D,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAA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","file":"static/js/application.initial~cd6a8973.c925007c.chunk.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"underscore\"), require(\"@bingads-webui-universal/primitive-utilities\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"underscore\", \"@bingads-webui-universal/primitive-utilities\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"underscore\"), require(\"@bingads-webui-universal/primitive-utilities\")) : factory(root[\"underscore\"], root[\"@bingads-webui-universal/primitive-utilities\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__8__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 370);\n","export * from './src/index';\r\n","import _ from 'underscore';\r\n\r\nexport function parse(json: string, cb: (err: Error | undefined, data?: any) => void) {\r\n try {\r\n cb(undefined, JSON.parse(json));\r\n } catch (err: any) {\r\n cb(err);\r\n }\r\n}\r\n\r\nexport function parseSync(json: string) {\r\n try {\r\n return JSON.parse(json);\r\n } catch (err) {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function stringifySync(obj: any) {\r\n try {\r\n return JSON.stringify(obj);\r\n } catch (err) {\r\n return '';\r\n }\r\n}\r\n\r\ntype IndexArray = (string | number)[]\r\ntype Cycle = { inner: IndexArray, outer: IndexArray, str: string } | null\r\n\r\nexport function findCycle(obj?: any) {\r\n const stackObj = [obj];\r\n const stackKey: Array = ['[obj]'];\r\n\r\n function step(innerObj: any) {\r\n let result: Cycle = null;\r\n const stackIndex = _.indexOf(stackObj, innerObj);\r\n\r\n if (stackIndex !== -1 && stackIndex !== stackObj.length - 1) {\r\n const inner = _.tail(stackKey, 0);\r\n const outer = _.head(stackKey, stackIndex + 1);\r\n return {\r\n inner,\r\n outer,\r\n str: `${inner.join('.')} === ${outer.join('.')}`,\r\n };\r\n }\r\n\r\n _.each(innerObj, (val, key) => {\r\n if (!!result || !_.isObject(val)) {\r\n return;\r\n }\r\n stackObj.push(val);\r\n stackKey.push(key);\r\n\r\n result = result || step(val);\r\n\r\n stackObj.pop();\r\n stackKey.pop();\r\n });\r\n return result;\r\n }\r\n\r\n return step(obj);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","/*\r\n* Kendo UI Complete v2014.1.318 (http://kendoui.com)\r\n* Copyright 2014 Telerik AD. All rights reserved.\r\n*\r\n* Kendo UI Complete commercial licenses may be obtained at\r\n* http://www.telerik.com/purchase/license-agreement/kendo-ui-complete\r\n* If you do not own a commercial license, this file shall be governed by the trial license terms.\r\n*/\r\n(function(f, define){\r\n define([], f);\r\n})(function(){\r\n\r\n/*jshint eqnull: true, loopfunc: true, evil: true, boss: true, freeze: false*/\r\n(function($, undefined) {\r\n var kendo = window.kendo = window.kendo || { cultures: {} },\r\n extend = $.extend,\r\n each = $.each,\r\n isArray = $.isArray,\r\n proxy = $.proxy,\r\n noop = $.noop,\r\n math = Math,\r\n Template,\r\n JSON = window.JSON || {},\r\n support = {},\r\n percentRegExp = /%/,\r\n formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g,\r\n boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i,\r\n numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/,\r\n FUNCTION = \"function\",\r\n STRING = \"string\",\r\n NUMBER = \"number\",\r\n OBJECT = \"object\",\r\n NULL = \"null\",\r\n BOOLEAN = \"boolean\",\r\n UNDEFINED = \"undefined\",\r\n getterCache = {},\r\n setterCache = {},\r\n slice = [].slice,\r\n globalize = window.Globalize;\r\n\r\n kendo.version = \"2014.1.318\";\r\n\r\n function Class() {}\r\n\r\n Class.extend = function(proto) {\r\n var base = function() {},\r\n member,\r\n that = this,\r\n subclass = proto && proto.init ? proto.init : function () {\r\n that.apply(this, arguments);\r\n },\r\n fn;\r\n\r\n base.prototype = that.prototype;\r\n fn = subclass.fn = subclass.prototype = new base();\r\n\r\n for (member in proto) {\r\n if (proto[member] != null && proto[member].constructor === Object) {\r\n // Merge object members\r\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\r\n } else {\r\n fn[member] = proto[member];\r\n }\r\n }\r\n\r\n fn.constructor = subclass;\r\n subclass.extend = that.extend;\r\n\r\n return subclass;\r\n };\r\n\r\n Class.prototype._initOptions = function(options) {\r\n this.options = deepExtend({}, this.options, options);\r\n };\r\n\r\n var isFunction = kendo.isFunction = function(fn) {\r\n return typeof fn === \"function\";\r\n };\r\n\r\n var preventDefault = function() {\r\n this._defaultPrevented = true;\r\n };\r\n\r\n var isDefaultPrevented = function() {\r\n return this._defaultPrevented === true;\r\n };\r\n\r\n var Observable = Class.extend({\r\n init: function() {\r\n this._events = {};\r\n },\r\n\r\n bind: function(eventName, handlers, one) {\r\n var that = this,\r\n idx,\r\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\r\n length,\r\n original,\r\n handler,\r\n handlersIsFunction = typeof handlers === FUNCTION,\r\n events;\r\n\r\n if (handlers === undefined) {\r\n for (idx in eventName) {\r\n that.bind(idx, eventName[idx]);\r\n }\r\n return that;\r\n }\r\n\r\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\r\n eventName = eventNames[idx];\r\n\r\n handler = handlersIsFunction ? handlers : handlers[eventName];\r\n\r\n if (handler) {\r\n if (one) {\r\n original = handler;\r\n handler = function() {\r\n that.unbind(eventName, handler);\r\n original.apply(that, arguments);\r\n };\r\n }\r\n events = that._events[eventName] = that._events[eventName] || [];\r\n events.push(handler);\r\n }\r\n }\r\n\r\n return that;\r\n },\r\n\r\n one: function(eventNames, handlers) {\r\n return this.bind(eventNames, handlers, true);\r\n },\r\n\r\n first: function(eventName, handlers) {\r\n var that = this,\r\n idx,\r\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\r\n length,\r\n handler,\r\n handlersIsFunction = typeof handlers === FUNCTION,\r\n events;\r\n\r\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\r\n eventName = eventNames[idx];\r\n\r\n handler = handlersIsFunction ? handlers : handlers[eventName];\r\n\r\n if (handler) {\r\n events = that._events[eventName] = that._events[eventName] || [];\r\n events.unshift(handler);\r\n }\r\n }\r\n\r\n return that;\r\n },\r\n\r\n trigger: function(eventName, e) {\r\n var that = this,\r\n events = that._events[eventName],\r\n idx,\r\n length;\r\n\r\n if (events) {\r\n e = e || {};\r\n\r\n e.sender = that;\r\n\r\n e._defaultPrevented = false;\r\n\r\n e.preventDefault = preventDefault;\r\n\r\n e.isDefaultPrevented = isDefaultPrevented;\r\n\r\n events = events.slice();\r\n\r\n for (idx = 0, length = events.length; idx < length; idx++) {\r\n events[idx].call(that, e);\r\n }\r\n\r\n return e._defaultPrevented === true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n unbind: function(eventName, handler) {\r\n var that = this,\r\n events = that._events[eventName],\r\n idx;\r\n\r\n if (eventName === undefined) {\r\n that._events = {};\r\n } else if (events) {\r\n if (handler) {\r\n for (idx = events.length - 1; idx >= 0; idx--) {\r\n if (events[idx] === handler) {\r\n events.splice(idx, 1);\r\n }\r\n }\r\n } else {\r\n that._events[eventName] = [];\r\n }\r\n }\r\n\r\n return that;\r\n }\r\n });\r\n\r\n\r\n function compilePart(part, stringPart) {\r\n if (stringPart) {\r\n return \"'\" +\r\n part.split(\"'\").join(\"\\\\'\")\r\n .split('\\\\\"').join('\\\\\\\\\\\\\"')\r\n .replace(/\\n/g, \"\\\\n\")\r\n .replace(/\\r/g, \"\\\\r\")\r\n .replace(/\\t/g, \"\\\\t\") + \"'\";\r\n } else {\r\n var first = part.charAt(0),\r\n rest = part.substring(1);\r\n\r\n if (first === \"=\") {\r\n return \"+(\" + rest + \")+\";\r\n } else if (first === \":\") {\r\n return \"+e(\" + rest + \")+\";\r\n } else {\r\n return \";\" + part + \";o+=\";\r\n }\r\n }\r\n }\r\n\r\n var argumentNameRegExp = /^\\w+/,\r\n encodeRegExp = /\\$\\{([^}]*)\\}/g,\r\n escapedCurlyRegExp = /\\\\\\}/g,\r\n curlyRegExp = /__CURLY__/g,\r\n escapedSharpRegExp = /\\\\#/g,\r\n sharpRegExp = /__SHARP__/g,\r\n zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\r\n\r\n Template = {\r\n paramName: \"data\", // name of the parameter of the generated template\r\n useWithBlock: true, // whether to wrap the template in a with() block\r\n render: function(template, data) {\r\n var idx,\r\n length,\r\n html = \"\";\r\n\r\n for (idx = 0, length = data.length; idx < length; idx++) {\r\n html += template(data[idx]);\r\n }\r\n\r\n return html;\r\n },\r\n compile: function(template, options) {\r\n var settings = extend({}, this, options),\r\n paramName = settings.paramName,\r\n argumentName = paramName.match(argumentNameRegExp)[0],\r\n useWithBlock = settings.useWithBlock,\r\n functionBody = \"var o,e=kendo.htmlEncode;\",\r\n fn,\r\n parts,\r\n idx;\r\n\r\n if (isFunction(template)) {\r\n if (template.length === 2) {\r\n //looks like jQuery.template\r\n return function(d) {\r\n return template($, { data: d }).join(\"\");\r\n };\r\n }\r\n return template;\r\n }\r\n\r\n functionBody += useWithBlock ? \"with(\" + paramName + \"){\" : \"\";\r\n\r\n functionBody += \"o=\";\r\n\r\n parts = template\r\n .replace(escapedCurlyRegExp, \"__CURLY__\")\r\n .replace(encodeRegExp, \"#=e($1)#\")\r\n .replace(curlyRegExp, \"}\")\r\n .replace(escapedSharpRegExp, \"__SHARP__\")\r\n .split(\"#\");\r\n\r\n for (idx = 0; idx < parts.length; idx ++) {\r\n functionBody += compilePart(parts[idx], idx % 2 === 0);\r\n }\r\n\r\n functionBody += useWithBlock ? \";}\" : \";\";\r\n\r\n functionBody += \"return o;\";\r\n\r\n functionBody = functionBody.replace(sharpRegExp, \"#\");\r\n\r\n try {\r\n fn = new Function(argumentName, functionBody);\r\n fn._slotCount = Math.floor(parts.length / 2);\r\n return fn;\r\n } catch(e) {\r\n throw new Error(kendo.format(\"Invalid template:'{0}' Generated code:'{1}'\", template, functionBody));\r\n }\r\n }\r\n };\r\n\r\nfunction pad(number, digits, end) {\r\n number = number + \"\";\r\n digits = digits || 2;\r\n end = digits - number.length;\r\n\r\n if (end) {\r\n return zeros[digits].substring(0, end) + number;\r\n }\r\n\r\n return number;\r\n}\r\n\r\n //JSON stringify\r\n(function() {\r\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\r\n gap,\r\n indent,\r\n meta = {\r\n \"\\b\": \"\\\\b\",\r\n \"\\t\": \"\\\\t\",\r\n \"\\n\": \"\\\\n\",\r\n \"\\f\": \"\\\\f\",\r\n \"\\r\": \"\\\\r\",\r\n \"\\\"\" : '\\\\\"',\r\n \"\\\\\": \"\\\\\\\\\"\r\n },\r\n rep,\r\n toString = {}.toString;\r\n\r\n\r\n if (typeof Date.prototype.toJSON !== FUNCTION) {\r\n\r\n Date.prototype.toJSON = function () {\r\n var that = this;\r\n\r\n return isFinite(that.valueOf()) ?\r\n pad(that.getUTCFullYear(), 4) + \"-\" +\r\n pad(that.getUTCMonth() + 1) + \"-\" +\r\n pad(that.getUTCDate()) + \"T\" +\r\n pad(that.getUTCHours()) + \":\" +\r\n pad(that.getUTCMinutes()) + \":\" +\r\n pad(that.getUTCSeconds()) + \"Z\" : null;\r\n };\r\n\r\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {\r\n return this.valueOf();\r\n };\r\n }\r\n\r\n function quote(string) {\r\n escapable.lastIndex = 0;\r\n return escapable.test(string) ? \"\\\"\" + string.replace(escapable, function (a) {\r\n var c = meta[a];\r\n return typeof c === STRING ? c :\r\n \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\r\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\r\n }\r\n\r\n function str(key, holder) {\r\n var i,\r\n k,\r\n v,\r\n length,\r\n mind = gap,\r\n partial,\r\n value = holder[key],\r\n type;\r\n\r\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\r\n value = value.toJSON(key);\r\n }\r\n\r\n if (typeof rep === FUNCTION) {\r\n value = rep.call(holder, key, value);\r\n }\r\n\r\n type = typeof value;\r\n if (type === STRING) {\r\n return quote(value);\r\n } else if (type === NUMBER) {\r\n return isFinite(value) ? String(value) : NULL;\r\n } else if (type === BOOLEAN || type === NULL) {\r\n return String(value);\r\n } else if (type === OBJECT) {\r\n if (!value) {\r\n return NULL;\r\n }\r\n gap += indent;\r\n partial = [];\r\n if (toString.apply(value) === \"[object Array]\") {\r\n length = value.length;\r\n for (i = 0; i < length; i++) {\r\n partial[i] = str(i, value) || NULL;\r\n }\r\n v = partial.length === 0 ? \"[]\" : gap ?\r\n \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" :\r\n \"[\" + partial.join(\",\") + \"]\";\r\n gap = mind;\r\n return v;\r\n }\r\n if (rep && typeof rep === OBJECT) {\r\n length = rep.length;\r\n for (i = 0; i < length; i++) {\r\n if (typeof rep[i] === STRING) {\r\n k = rep[i];\r\n v = str(k, value);\r\n if (v) {\r\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\r\n }\r\n }\r\n }\r\n } else {\r\n for (k in value) {\r\n if (Object.hasOwnProperty.call(value, k)) {\r\n v = str(k, value);\r\n if (v) {\r\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\r\n }\r\n }\r\n }\r\n }\r\n\r\n v = partial.length === 0 ? \"{}\" : gap ?\r\n \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" :\r\n \"{\" + partial.join(\",\") + \"}\";\r\n gap = mind;\r\n return v;\r\n }\r\n }\r\n\r\n if (typeof JSON.stringify !== FUNCTION) {\r\n JSON.stringify = function (value, replacer, space) {\r\n var i;\r\n gap = \"\";\r\n indent = \"\";\r\n\r\n if (typeof space === NUMBER) {\r\n for (i = 0; i < space; i += 1) {\r\n indent += \" \";\r\n }\r\n\r\n } else if (typeof space === STRING) {\r\n indent = space;\r\n }\r\n\r\n rep = replacer;\r\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\r\n throw new Error(\"JSON.stringify\");\r\n }\r\n\r\n return str(\"\", {\"\": value});\r\n };\r\n }\r\n})();\r\n\r\n// Date and Number formatting\r\n(function() {\r\n var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|\"[^\"]*\"|'[^']*'/g,\r\n standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i,\r\n literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g,\r\n commaRegExp = /\\,/g,\r\n EMPTY = \"\",\r\n POINT = \".\",\r\n COMMA = \",\",\r\n SHARP = \"#\",\r\n ZERO = \"0\",\r\n PLACEHOLDER = \"??\",\r\n EN = \"en-US\",\r\n objectToString = {}.toString;\r\n\r\n //cultures\r\n kendo.cultures[\"en-US\"] = {\r\n name: EN,\r\n numberFormat: {\r\n pattern: [\"-n\"],\r\n decimals: 2,\r\n \",\": \",\",\r\n \".\": \".\",\r\n groupSize: [3],\r\n percent: {\r\n pattern: [\"-n %\", \"n %\"],\r\n decimals: 2,\r\n \",\": \",\",\r\n \".\": \".\",\r\n groupSize: [3],\r\n symbol: \"%\"\r\n },\r\n currency: {\r\n pattern: [\"($n)\", \"$n\"],\r\n decimals: 2,\r\n \",\": \",\",\r\n \".\": \".\",\r\n groupSize: [3],\r\n symbol: \"$\"\r\n }\r\n },\r\n calendars: {\r\n standard: {\r\n days: {\r\n names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n namesAbbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\r\n namesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\r\n },\r\n months: {\r\n names: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n namesAbbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\r\n },\r\n AM: [ \"AM\", \"am\", \"AM\" ],\r\n PM: [ \"PM\", \"pm\", \"PM\" ],\r\n patterns: {\r\n d: \"M/d/yyyy\",\r\n D: \"dddd, MMMM dd, yyyy\",\r\n F: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\r\n g: \"M/d/yyyy h:mm tt\",\r\n G: \"M/d/yyyy h:mm:ss tt\",\r\n m: \"MMMM dd\",\r\n M: \"MMMM dd\",\r\n s: \"yyyy'-'MM'-'ddTHH':'mm':'ss\",\r\n t: \"h:mm tt\",\r\n T: \"h:mm:ss tt\",\r\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\",\r\n y: \"MMMM, yyyy\",\r\n Y: \"MMMM, yyyy\"\r\n },\r\n \"/\": \"/\",\r\n \":\": \":\",\r\n firstDay: 0,\r\n twoDigitYearMax: 2029\r\n }\r\n }\r\n };\r\n\r\n\r\n function findCulture(culture) {\r\n if (culture) {\r\n if (culture.numberFormat) {\r\n return culture;\r\n }\r\n\r\n if (typeof culture === STRING) {\r\n var cultures = kendo.cultures;\r\n return cultures[culture] || cultures[culture.split(\"-\")[0]] || null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function getCulture(culture) {\r\n if (culture) {\r\n culture = findCulture(culture);\r\n }\r\n\r\n return culture || kendo.cultures.current;\r\n }\r\n\r\n function expandNumberFormat(numberFormat) {\r\n numberFormat.groupSizes = numberFormat.groupSize;\r\n numberFormat.percent.groupSizes = numberFormat.percent.groupSize;\r\n numberFormat.currency.groupSizes = numberFormat.currency.groupSize;\r\n }\r\n\r\n kendo.culture = function(cultureName) {\r\n var cultures = kendo.cultures, culture;\r\n\r\n if (cultureName !== undefined) {\r\n culture = findCulture(cultureName) || cultures[EN];\r\n culture.calendar = culture.calendars.standard;\r\n cultures.current = culture;\r\n\r\n if (globalize) {\r\n expandNumberFormat(culture.numberFormat);\r\n }\r\n\r\n } else {\r\n return cultures.current;\r\n }\r\n };\r\n\r\n kendo.findCulture = findCulture;\r\n kendo.getCulture = getCulture;\r\n\r\n //set current culture to en-US.\r\n kendo.culture(EN);\r\n\r\n function formatDate(date, format, culture) {\r\n culture = getCulture(culture);\r\n\r\n var calendar = culture.calendars.standard,\r\n days = calendar.days,\r\n months = calendar.months;\r\n\r\n format = calendar.patterns[format] || format;\r\n\r\n return format.replace(dateFormatRegExp, function (match) {\r\n var result;\r\n\r\n if (match === \"d\") {\r\n result = date.getDate();\r\n } else if (match === \"dd\") {\r\n result = pad(date.getDate());\r\n } else if (match === \"ddd\") {\r\n result = days.namesAbbr[date.getDay()];\r\n } else if (match === \"dddd\") {\r\n result = days.names[date.getDay()];\r\n } else if (match === \"M\") {\r\n result = date.getMonth() + 1;\r\n } else if (match === \"MM\") {\r\n result = pad(date.getMonth() + 1);\r\n } else if (match === \"MMM\") {\r\n result = months.namesAbbr[date.getMonth()];\r\n } else if (match === \"MMMM\") {\r\n result = months.names[date.getMonth()];\r\n } else if (match === \"yy\") {\r\n result = pad(date.getFullYear() % 100);\r\n } else if (match === \"yyyy\") {\r\n result = pad(date.getFullYear(), 4);\r\n } else if (match === \"h\" ) {\r\n result = date.getHours() % 12 || 12;\r\n } else if (match === \"hh\") {\r\n result = pad(date.getHours() % 12 || 12);\r\n } else if (match === \"H\") {\r\n result = date.getHours();\r\n } else if (match === \"HH\") {\r\n result = pad(date.getHours());\r\n } else if (match === \"m\") {\r\n result = date.getMinutes();\r\n } else if (match === \"mm\") {\r\n result = pad(date.getMinutes());\r\n } else if (match === \"s\") {\r\n result = date.getSeconds();\r\n } else if (match === \"ss\") {\r\n result = pad(date.getSeconds());\r\n } else if (match === \"f\") {\r\n result = math.floor(date.getMilliseconds() / 100);\r\n } else if (match === \"ff\") {\r\n result = math.floor(date.getMilliseconds() / 10);\r\n } else if (match === \"fff\") {\r\n result = date.getMilliseconds();\r\n } else if (match === \"tt\") {\r\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\r\n }\r\n\r\n return result !== undefined ? result : match.slice(1, match.length - 1);\r\n });\r\n }\r\n\r\n //number formatting\r\n function formatNumber(number, format, culture) {\r\n culture = getCulture(culture);\r\n\r\n var numberFormat = culture.numberFormat,\r\n groupSize = numberFormat.groupSize[0],\r\n groupSeparator = numberFormat[COMMA],\r\n decimal = numberFormat[POINT],\r\n precision = numberFormat.decimals,\r\n pattern = numberFormat.pattern[0],\r\n literals = [],\r\n symbol,\r\n isCurrency, isPercent,\r\n customPrecision,\r\n formatAndPrecision,\r\n negative = number < 0,\r\n integer,\r\n fraction,\r\n integerLength,\r\n fractionLength,\r\n replacement = EMPTY,\r\n value = EMPTY,\r\n idx,\r\n length,\r\n ch,\r\n hasGroup,\r\n hasNegativeFormat,\r\n decimalIndex,\r\n sharpIndex,\r\n zeroIndex,\r\n hasZero, hasSharp,\r\n percentIndex,\r\n currencyIndex,\r\n startZeroIndex,\r\n start = -1,\r\n end;\r\n\r\n //return empty string if no number\r\n if (number === undefined) {\r\n return EMPTY;\r\n }\r\n\r\n if (!isFinite(number)) {\r\n return number;\r\n }\r\n\r\n //if no format then return number.toString() or number.toLocaleString() if culture.name is not defined\r\n if (!format) {\r\n return culture.name.length ? number.toLocaleString() : number.toString();\r\n }\r\n\r\n formatAndPrecision = standardFormatRegExp.exec(format);\r\n\r\n // standard formatting\r\n if (formatAndPrecision) {\r\n format = formatAndPrecision[1].toLowerCase();\r\n\r\n isCurrency = format === \"c\";\r\n isPercent = format === \"p\";\r\n\r\n if (isCurrency || isPercent) {\r\n //get specific number format information if format is currency or percent\r\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\r\n groupSize = numberFormat.groupSize[0];\r\n groupSeparator = numberFormat[COMMA];\r\n decimal = numberFormat[POINT];\r\n precision = numberFormat.decimals;\r\n symbol = numberFormat.symbol;\r\n pattern = numberFormat.pattern[negative ? 0 : 1];\r\n }\r\n\r\n customPrecision = formatAndPrecision[2];\r\n\r\n if (customPrecision) {\r\n precision = +customPrecision;\r\n }\r\n\r\n //return number in exponential format\r\n if (format === \"e\") {\r\n return customPrecision ? number.toExponential(precision) : number.toExponential(); // toExponential() and toExponential(undefined) differ in FF #653438.\r\n }\r\n\r\n // multiply if format is percent\r\n if (isPercent) {\r\n number *= 100;\r\n }\r\n\r\n number = round(number, precision);\r\n negative = number < 0;\r\n number = number.split(POINT);\r\n\r\n integer = number[0];\r\n fraction = number[1];\r\n\r\n //exclude \"-\" if number is negative.\r\n if (negative) {\r\n integer = integer.substring(1);\r\n }\r\n\r\n value = integer;\r\n integerLength = integer.length;\r\n\r\n //add group separator to the number if it is longer enough\r\n if (integerLength >= groupSize) {\r\n value = EMPTY;\r\n for (idx = 0; idx < integerLength; idx++) {\r\n if (idx > 0 && (integerLength - idx) % groupSize === 0) {\r\n value += groupSeparator;\r\n }\r\n value += integer.charAt(idx);\r\n }\r\n }\r\n\r\n if (fraction) {\r\n value += decimal + fraction;\r\n }\r\n\r\n if (format === \"n\" && !negative) {\r\n return value;\r\n }\r\n\r\n number = EMPTY;\r\n\r\n for (idx = 0, length = pattern.length; idx < length; idx++) {\r\n ch = pattern.charAt(idx);\r\n\r\n if (ch === \"n\") {\r\n number += value;\r\n } else if (ch === \"$\" || ch === \"%\") {\r\n number += symbol;\r\n } else {\r\n number += ch;\r\n }\r\n }\r\n\r\n return number;\r\n }\r\n\r\n //custom formatting\r\n //\r\n //separate format by sections.\r\n\r\n //make number positive\r\n if (negative) {\r\n number = -number;\r\n }\r\n\r\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\r\n format = format.replace(literalRegExp, function (match) {\r\n var quoteChar = match.charAt(0).replace(\"\\\\\", \"\"),\r\n literal = match.slice(1).replace(quoteChar, \"\");\r\n\r\n literals.push(literal);\r\n\r\n return PLACEHOLDER;\r\n });\r\n }\r\n\r\n format = format.split(\";\");\r\n if (negative && format[1]) {\r\n //get negative format\r\n format = format[1];\r\n hasNegativeFormat = true;\r\n } else if (number === 0) {\r\n //format for zeros\r\n format = format[2] || format[0];\r\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\r\n //return format if it is string constant.\r\n return format;\r\n }\r\n } else {\r\n format = format[0];\r\n }\r\n\r\n percentIndex = format.indexOf(\"%\");\r\n currencyIndex = format.indexOf(\"$\");\r\n\r\n isPercent = percentIndex != -1;\r\n isCurrency = currencyIndex != -1;\r\n\r\n //multiply number if the format has percent\r\n if (isPercent) {\r\n number *= 100;\r\n }\r\n\r\n if (isCurrency && format[currencyIndex - 1] === \"\\\\\") {\r\n format = format.split(\"\\\\\").join(\"\");\r\n isCurrency = false;\r\n }\r\n\r\n if (isCurrency || isPercent) {\r\n //get specific number format information if format is currency or percent\r\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\r\n groupSize = numberFormat.groupSize[0];\r\n groupSeparator = numberFormat[COMMA];\r\n decimal = numberFormat[POINT];\r\n precision = numberFormat.decimals;\r\n symbol = numberFormat.symbol;\r\n }\r\n\r\n hasGroup = format.indexOf(COMMA) > -1;\r\n if (hasGroup) {\r\n format = format.replace(commaRegExp, EMPTY);\r\n }\r\n\r\n decimalIndex = format.indexOf(POINT);\r\n length = format.length;\r\n\r\n if (decimalIndex != -1) {\r\n fraction = number.toString().split(\"e\");\r\n if (fraction[1]) {\r\n fraction = round(number, Math.abs(fraction[1]));\r\n } else {\r\n fraction = fraction[0];\r\n }\r\n fraction = fraction.split(POINT)[1] || EMPTY;\r\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\r\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\r\n hasZero = zeroIndex > -1;\r\n hasSharp = sharpIndex > -1;\r\n idx = fraction.length;\r\n\r\n if (!hasZero && !hasSharp) {\r\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\r\n length = format.length;\r\n decimalIndex = -1;\r\n idx = 0;\r\n } if (hasZero && zeroIndex > sharpIndex) {\r\n idx = zeroIndex;\r\n } else if (sharpIndex > zeroIndex) {\r\n if (hasSharp && idx > sharpIndex) {\r\n idx = sharpIndex;\r\n } else if (hasZero && idx < zeroIndex) {\r\n idx = zeroIndex;\r\n }\r\n }\r\n\r\n if (idx > -1) {\r\n number = round(number, idx);\r\n }\r\n } else {\r\n number = round(number);\r\n }\r\n\r\n sharpIndex = format.indexOf(SHARP);\r\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\r\n\r\n //define the index of the first digit placeholder\r\n if (sharpIndex == -1 && zeroIndex != -1) {\r\n start = zeroIndex;\r\n } else if (sharpIndex != -1 && zeroIndex == -1) {\r\n start = sharpIndex;\r\n } else {\r\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\r\n }\r\n\r\n sharpIndex = format.lastIndexOf(SHARP);\r\n zeroIndex = format.lastIndexOf(ZERO);\r\n\r\n //define the index of the last digit placeholder\r\n if (sharpIndex == -1 && zeroIndex != -1) {\r\n end = zeroIndex;\r\n } else if (sharpIndex != -1 && zeroIndex == -1) {\r\n end = sharpIndex;\r\n } else {\r\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\r\n }\r\n\r\n if (start == length) {\r\n end = start;\r\n }\r\n\r\n if (start != -1) {\r\n value = number.toString().split(POINT);\r\n integer = value[0];\r\n fraction = value[1] || EMPTY;\r\n\r\n integerLength = integer.length;\r\n fractionLength = fraction.length;\r\n\r\n if (negative && (number * -1) >= 0) {\r\n negative = false;\r\n }\r\n\r\n //add group separator to the number if it is longer enough\r\n if (hasGroup) {\r\n if (integerLength === groupSize && integerLength < decimalIndex - startZeroIndex) {\r\n integer = groupSeparator + integer;\r\n } else if (integerLength > groupSize) {\r\n value = EMPTY;\r\n for (idx = 0; idx < integerLength; idx++) {\r\n if (idx > 0 && (integerLength - idx) % groupSize === 0) {\r\n value += groupSeparator;\r\n }\r\n value += integer.charAt(idx);\r\n }\r\n\r\n integer = value;\r\n }\r\n }\r\n\r\n number = format.substring(0, start);\r\n\r\n if (negative && !hasNegativeFormat) {\r\n number += \"-\";\r\n }\r\n\r\n for (idx = start; idx < length; idx++) {\r\n ch = format.charAt(idx);\r\n\r\n if (decimalIndex == -1) {\r\n if (end - idx < integerLength) {\r\n number += integer;\r\n break;\r\n }\r\n } else {\r\n if (zeroIndex != -1 && zeroIndex < idx) {\r\n replacement = EMPTY;\r\n }\r\n\r\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\r\n number += integer;\r\n idx = decimalIndex;\r\n }\r\n\r\n if (decimalIndex === idx) {\r\n number += (fraction ? decimal : EMPTY) + fraction;\r\n idx += end - decimalIndex + 1;\r\n continue;\r\n }\r\n }\r\n\r\n if (ch === ZERO) {\r\n number += ch;\r\n replacement = ch;\r\n } else if (ch === SHARP) {\r\n number += replacement;\r\n }\r\n }\r\n\r\n if (end >= start) {\r\n number += format.substring(end + 1);\r\n }\r\n\r\n //replace symbol placeholders\r\n if (isCurrency || isPercent) {\r\n value = EMPTY;\r\n for (idx = 0, length = number.length; idx < length; idx++) {\r\n ch = number.charAt(idx);\r\n value += (ch === \"$\" || ch === \"%\") ? symbol : ch;\r\n }\r\n number = value;\r\n }\r\n\r\n length = literals.length;\r\n\r\n if (length) {\r\n for (idx = 0; idx < length; idx++) {\r\n number = number.replace(PLACEHOLDER, literals[idx]);\r\n }\r\n }\r\n }\r\n\r\n return number;\r\n }\r\n\r\n var round = function(value, precision) {\r\n precision = precision || 0;\r\n\r\n value = value.toString().split('e');\r\n value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + precision) : precision)));\r\n\r\n value = value.toString().split('e');\r\n value = +(value[0] + 'e' + (value[1] ? (+value[1] - precision) : -precision));\r\n\r\n return value.toFixed(precision);\r\n };\r\n\r\n var toString = function(value, fmt, culture) {\r\n if (fmt) {\r\n if (objectToString.call(value) === \"[object Date]\") {\r\n return formatDate(value, fmt, culture);\r\n } else if (typeof value === NUMBER) {\r\n return formatNumber(value, fmt, culture);\r\n }\r\n }\r\n\r\n return value !== undefined ? value : \"\";\r\n };\r\n\r\n if (globalize) {\r\n toString = function(value, format, culture) {\r\n if ($.isPlainObject(culture)) {\r\n culture = culture.name;\r\n }\r\n\r\n return globalize.format(value, format, culture);\r\n };\r\n }\r\n\r\n kendo.format = function(fmt) {\r\n var values = arguments;\r\n\r\n return fmt.replace(formatRegExp, function(match, index, placeholderFormat) {\r\n var value = values[parseInt(index, 10) + 1];\r\n\r\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\");\r\n });\r\n };\r\n\r\n kendo._extractFormat = function (format) {\r\n if (format.slice(0,3) === \"{0:\") {\r\n format = format.slice(3, format.length - 1);\r\n }\r\n\r\n return format;\r\n };\r\n\r\n kendo._activeElement = function() {\r\n try {\r\n return document.activeElement;\r\n } catch(e) {\r\n return document.documentElement.activeElement;\r\n }\r\n };\r\n\r\n kendo._round = round;\r\n kendo.toString = toString;\r\n})();\r\n\r\n\r\n(function() {\r\n var nonBreakingSpaceRegExp = /\\u00A0/g,\r\n exponentRegExp = /[eE][\\-+]?[0-9]+/,\r\n shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/,\r\n longTimeZoneRegExp = /[+|\\-]\\d{1,2}:\\d{2}/,\r\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\r\n signRegExp = /[+-]/,\r\n formatsSequence = [\"G\", \"g\", \"d\", \"F\", \"D\", \"y\", \"m\", \"T\", \"t\"],\r\n numberRegExp = {\r\n 2: /^\\d{1,2}/,\r\n 3: /^\\d{1,3}/,\r\n 4: /^\\d{4}/\r\n },\r\n objectToString = {}.toString;\r\n\r\n function outOfRange(value, start, end) {\r\n return !(value >= start && value <= end);\r\n }\r\n\r\n function designatorPredicate(designator) {\r\n return designator.charAt(0);\r\n }\r\n\r\n function mapDesignators(designators) {\r\n return $.map(designators, designatorPredicate);\r\n }\r\n\r\n //if date's day is different than the typed one - adjust\r\n function adjustDST(date, hours) {\r\n if (!hours && date.getHours() === 23) {\r\n date.setHours(date.getHours() + 2);\r\n }\r\n }\r\n\r\n function lowerArray(data) {\r\n var idx = 0,\r\n length = data.length,\r\n array = [];\r\n\r\n for (; idx < length; idx++) {\r\n array[idx] = (data[idx] + \"\").toLowerCase();\r\n }\r\n\r\n return array;\r\n }\r\n\r\n function lowerLocalInfo(localInfo) {\r\n var newLocalInfo = {}, property;\r\n\r\n for (property in localInfo) {\r\n newLocalInfo[property] = lowerArray(localInfo[property]);\r\n }\r\n\r\n return newLocalInfo;\r\n }\r\n\r\n function parseExact(value, format, culture) {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n var lookAhead = function (match) {\r\n var i = 0;\r\n while (format[idx] === match) {\r\n i++;\r\n idx++;\r\n }\r\n if (i > 0) {\r\n idx -= 1;\r\n }\r\n return i;\r\n },\r\n getNumber = function(size) {\r\n var rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}'),\r\n match = value.substr(valueIdx, size).match(rg);\r\n\r\n if (match) {\r\n match = match[0];\r\n valueIdx += match.length;\r\n return parseInt(match, 10);\r\n }\r\n return null;\r\n },\r\n getIndexByName = function (names, lower) {\r\n var i = 0,\r\n length = names.length,\r\n name, nameLength,\r\n subValue;\r\n\r\n for (; i < length; i++) {\r\n name = names[i];\r\n nameLength = name.length;\r\n subValue = value.substr(valueIdx, nameLength);\r\n\r\n if (lower) {\r\n subValue = subValue.toLowerCase();\r\n }\r\n\r\n if (subValue == name) {\r\n valueIdx += nameLength;\r\n return i + 1;\r\n }\r\n }\r\n return null;\r\n },\r\n checkLiteral = function() {\r\n var result = false;\r\n if (value.charAt(valueIdx) === format[idx]) {\r\n valueIdx++;\r\n result = true;\r\n }\r\n return result;\r\n },\r\n calendar = culture.calendars.standard,\r\n year = null,\r\n month = null,\r\n day = null,\r\n hours = null,\r\n minutes = null,\r\n seconds = null,\r\n milliseconds = null,\r\n idx = 0,\r\n valueIdx = 0,\r\n literal = false,\r\n date = new Date(),\r\n twoDigitYearMax = calendar.twoDigitYearMax || 2029,\r\n defaultYear = date.getFullYear(),\r\n ch, count, length, pattern,\r\n pmHour, UTC, ISO8601, matches,\r\n amDesignators, pmDesignators,\r\n hoursOffset, minutesOffset,\r\n hasTime, match;\r\n\r\n if (!format) {\r\n format = \"d\"; //shord date format\r\n }\r\n\r\n //if format is part of the patterns get real format\r\n pattern = calendar.patterns[format];\r\n if (pattern) {\r\n format = pattern;\r\n }\r\n\r\n format = format.split(\"\");\r\n length = format.length;\r\n\r\n for (; idx < length; idx++) {\r\n ch = format[idx];\r\n\r\n if (literal) {\r\n if (ch === \"'\") {\r\n literal = false;\r\n } else {\r\n checkLiteral();\r\n }\r\n } else {\r\n if (ch === \"d\") {\r\n count = lookAhead(\"d\");\r\n if (!calendar._lowerDays) {\r\n calendar._lowerDays = lowerLocalInfo(calendar.days);\r\n }\r\n\r\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? \"namesAbbr\" : \"names\"], true);\r\n\r\n if (day === null || outOfRange(day, 1, 31)) {\r\n return null;\r\n }\r\n } else if (ch === \"M\") {\r\n count = lookAhead(\"M\");\r\n if (!calendar._lowerMonths) {\r\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\r\n }\r\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\r\n\r\n if (month === null || outOfRange(month, 1, 12)) {\r\n return null;\r\n }\r\n month -= 1; //because month is zero based\r\n } else if (ch === \"y\") {\r\n count = lookAhead(\"y\");\r\n year = getNumber(count);\r\n\r\n if (year === null) {\r\n return null;\r\n }\r\n\r\n if (count == 2) {\r\n if (typeof twoDigitYearMax === \"string\") {\r\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\r\n }\r\n\r\n year = (defaultYear - defaultYear % 100) + year;\r\n if (year > twoDigitYearMax) {\r\n year -= 100;\r\n }\r\n }\r\n } else if (ch === \"h\" ) {\r\n lookAhead(\"h\");\r\n hours = getNumber(2);\r\n if (hours == 12) {\r\n hours = 0;\r\n }\r\n if (hours === null || outOfRange(hours, 0, 11)) {\r\n return null;\r\n }\r\n } else if (ch === \"H\") {\r\n lookAhead(\"H\");\r\n hours = getNumber(2);\r\n if (hours === null || outOfRange(hours, 0, 23)) {\r\n return null;\r\n }\r\n } else if (ch === \"m\") {\r\n lookAhead(\"m\");\r\n minutes = getNumber(2);\r\n if (minutes === null || outOfRange(minutes, 0, 59)) {\r\n return null;\r\n }\r\n } else if (ch === \"s\") {\r\n lookAhead(\"s\");\r\n seconds = getNumber(2);\r\n if (seconds === null || outOfRange(seconds, 0, 59)) {\r\n return null;\r\n }\r\n } else if (ch === \"f\") {\r\n count = lookAhead(\"f\");\r\n\r\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\r\n milliseconds = getNumber(count);\r\n\r\n if (milliseconds !== null) {\r\n match = match[0].length;\r\n\r\n if (match < 3) {\r\n milliseconds *= Math.pow(10, (3 - match));\r\n }\r\n\r\n if (count > 3) {\r\n milliseconds = parseInt(milliseconds.toString().substring(0, 3), 10);\r\n }\r\n }\r\n\r\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\r\n return null;\r\n }\r\n\r\n } else if (ch === \"t\") {\r\n count = lookAhead(\"t\");\r\n amDesignators = calendar.AM;\r\n pmDesignators = calendar.PM;\r\n\r\n if (count === 1) {\r\n amDesignators = mapDesignators(amDesignators);\r\n pmDesignators = mapDesignators(pmDesignators);\r\n }\r\n\r\n pmHour = getIndexByName(pmDesignators);\r\n if (!pmHour && !getIndexByName(amDesignators)) {\r\n return null;\r\n }\r\n }\r\n else if (ch === \"z\") {\r\n UTC = true;\r\n count = lookAhead(\"z\");\r\n\r\n if (value.substr(valueIdx, 1) === \"Z\") {\r\n if (!ISO8601) {\r\n return null;\r\n }\r\n\r\n checkLiteral();\r\n continue;\r\n }\r\n\r\n matches = value.substr(valueIdx, 6)\r\n .match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\r\n\r\n if (!matches) {\r\n return null;\r\n }\r\n\r\n matches = matches[0];\r\n valueIdx = matches.length;\r\n matches = matches.split(\":\");\r\n\r\n hoursOffset = parseInt(matches[0], 10);\r\n if (outOfRange(hoursOffset, -12, 13)) {\r\n return null;\r\n }\r\n\r\n if (count > 2) {\r\n minutesOffset = parseInt(matches[1], 10);\r\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, 0, 59)) {\r\n return null;\r\n }\r\n }\r\n } else if (ch === \"T\") {\r\n ISO8601 = checkLiteral();\r\n } else if (ch === \"'\") {\r\n literal = true;\r\n checkLiteral();\r\n } else if (!checkLiteral()) {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n hasTime = hours !== null || minutes !== null || seconds || null;\r\n\r\n if (year === null && month === null && day === null && hasTime) {\r\n year = defaultYear;\r\n month = date.getMonth();\r\n day = date.getDate();\r\n } else {\r\n if (year === null) {\r\n year = defaultYear;\r\n }\r\n\r\n if (day === null) {\r\n day = 1;\r\n }\r\n }\r\n\r\n if (pmHour && hours < 12) {\r\n hours += 12;\r\n }\r\n\r\n if (UTC) {\r\n if (hoursOffset) {\r\n hours += -hoursOffset;\r\n }\r\n\r\n if (minutesOffset) {\r\n minutes += -minutesOffset;\r\n }\r\n\r\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\r\n } else {\r\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\r\n adjustDST(value, hours);\r\n }\r\n\r\n if (year < 100) {\r\n value.setFullYear(year);\r\n }\r\n\r\n if (value.getDate() !== day && UTC === undefined) {\r\n return null;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n kendo.parseDate = function(value, formats, culture) {\r\n if (objectToString.call(value) === \"[object Date]\") {\r\n return value;\r\n }\r\n\r\n var idx = 0;\r\n var date = null;\r\n var length, patterns;\r\n var tzoffset;\r\n\r\n if (value && value.indexOf(\"/D\") === 0) {\r\n date = dateRegExp.exec(value);\r\n if (date) {\r\n tzoffset = date = date[1];\r\n\r\n date = parseInt(date, 10);\r\n\r\n tzoffset = tzoffset.substring(1).split(signRegExp)[1];\r\n\r\n if (tzoffset) {\r\n date -= (parseInt(tzoffset, 10) * kendo.date.MS_PER_MINUTE);\r\n }\r\n\r\n return new Date(date);\r\n }\r\n }\r\n\r\n culture = kendo.getCulture(culture);\r\n\r\n if (!formats) {\r\n formats = [];\r\n patterns = culture.calendar.patterns;\r\n length = formatsSequence.length;\r\n\r\n for (; idx < length; idx++) {\r\n formats[idx] = patterns[formatsSequence[idx]];\r\n }\r\n\r\n idx = 0;\r\n\r\n formats = [\r\n \"yyyy/MM/dd HH:mm:ss\",\r\n \"yyyy/MM/dd HH:mm\",\r\n \"yyyy/MM/dd\",\r\n \"ddd MMM dd yyyy HH:mm:ss\",\r\n \"yyyy-MM-ddTHH:mm:ss.fffffffzzz\",\r\n \"yyyy-MM-ddTHH:mm:ss.fffzzz\",\r\n \"yyyy-MM-ddTHH:mm:sszzz\",\r\n \"yyyy-MM-ddTHH:mmzzz\",\r\n \"yyyy-MM-ddTHH:mmzz\",\r\n \"yyyy-MM-ddTHH:mm:ss\",\r\n \"yyyy-MM-ddTHH:mm\",\r\n \"yyyy-MM-dd HH:mm:ss\",\r\n \"yyyy-MM-dd HH:mm\",\r\n \"yyyy-MM-dd\",\r\n \"HH:mm:ss\",\r\n \"HH:mm\"\r\n ].concat(formats);\r\n }\r\n\r\n formats = isArray(formats) ? formats: [formats];\r\n length = formats.length;\r\n\r\n for (; idx < length; idx++) {\r\n date = parseExact(value, formats[idx], culture);\r\n if (date) {\r\n return date;\r\n }\r\n }\r\n\r\n return date;\r\n };\r\n\r\n kendo.parseInt = function(value, culture) {\r\n var result = kendo.parseFloat(value, culture);\r\n if (result) {\r\n result = result | 0;\r\n }\r\n return result;\r\n };\r\n\r\n kendo.parseFloat = function(value, culture, format) {\r\n if (!value && value !== 0) {\r\n return null;\r\n }\r\n\r\n if (typeof value === NUMBER) {\r\n return value;\r\n }\r\n\r\n value = value.toString();\r\n culture = kendo.getCulture(culture);\r\n\r\n var number = culture.numberFormat,\r\n percent = number.percent,\r\n currency = number.currency,\r\n symbol = currency.symbol,\r\n percentSymbol = percent.symbol,\r\n negative = value.indexOf(\"-\"),\r\n parts, isPercent;\r\n\r\n //handle exponential number\r\n if (exponentRegExp.test(value)) {\r\n value = parseFloat(value.replace(number[\".\"], \".\"));\r\n if (isNaN(value)) {\r\n value = null;\r\n }\r\n return value;\r\n }\r\n\r\n if (negative > 0) {\r\n return null;\r\n } else {\r\n negative = negative > -1;\r\n }\r\n\r\n if (value.indexOf(symbol) > -1 || (format && format.toLowerCase().indexOf(\"c\") > -1)) {\r\n number = currency;\r\n parts = number.pattern[0].replace(\"$\", symbol).split(\"n\");\r\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\r\n value = value.replace(parts[0], \"\").replace(parts[1], \"\");\r\n negative = true;\r\n }\r\n } else if (value.indexOf(percentSymbol) > -1) {\r\n isPercent = true;\r\n number = percent;\r\n symbol = percentSymbol;\r\n }\r\n\r\n value = value.replace(\"-\", \"\")\r\n .replace(symbol, \"\")\r\n .replace(nonBreakingSpaceRegExp, \" \")\r\n .split(number[\",\"].replace(nonBreakingSpaceRegExp, \" \")).join(\"\")\r\n .replace(number[\".\"], \".\");\r\n\r\n value = parseFloat(value);\r\n\r\n if (isNaN(value)) {\r\n value = null;\r\n } else if (negative) {\r\n value *= -1;\r\n }\r\n\r\n if (value && isPercent) {\r\n value /= 100;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n if (globalize) {\r\n kendo.parseDate = function (value, format, culture) {\r\n if (objectToString.call(value) === \"[object Date]\") {\r\n return value;\r\n }\r\n\r\n return globalize.parseDate(value, format, culture);\r\n };\r\n\r\n kendo.parseFloat = function (value, culture) {\r\n if (typeof value === NUMBER) {\r\n return value;\r\n }\r\n\r\n if (value === undefined || value === null) {\r\n return null;\r\n }\r\n\r\n if ($.isPlainObject(culture)) {\r\n culture = culture.name;\r\n }\r\n\r\n value = globalize.parseFloat(value, culture);\r\n\r\n return isNaN(value) ? null : value;\r\n };\r\n }\r\n})();\r\n\r\n function getShadows(element) {\r\n var shadow = element.css(kendo.support.transitions.css + \"box-shadow\") || element.css(\"box-shadow\"),\r\n radius = shadow ? shadow.match(boxShadowRegExp) || [ 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0 ],\r\n blur = math.max((+radius[3]), +(radius[4] || 0));\r\n\r\n return {\r\n left: (-radius[1]) + blur,\r\n right: (+radius[1]) + blur,\r\n bottom: (+radius[2]) + blur\r\n };\r\n }\r\n\r\n function wrap(element, autosize) {\r\n var browser = support.browser,\r\n percentage,\r\n isRtl = element.css(\"direction\") == \"rtl\";\r\n\r\n if (!element.parent().hasClass(\"k-animation-container\")) {\r\n var shadows = getShadows(element),\r\n width = element[0].style.width,\r\n height = element[0].style.height,\r\n percentWidth = percentRegExp.test(width),\r\n percentHeight = percentRegExp.test(height);\r\n\r\n if (browser.opera) { // Box shadow can't be retrieved in Opera\r\n shadows.left = shadows.right = shadows.bottom = 5;\r\n }\r\n\r\n percentage = percentWidth || percentHeight;\r\n\r\n if (!percentWidth && (!autosize || (autosize && width))) { width = element.outerWidth(); }\r\n if (!percentHeight && (!autosize || (autosize && height))) { height = element.outerHeight(); }\r\n\r\n element.wrap(\r\n $(\"
\")\r\n .addClass(\"k-animation-container\")\r\n .css({\r\n width: width,\r\n height: height,\r\n marginLeft: shadows.left * (isRtl ? 1 : -1),\r\n paddingLeft: shadows.left,\r\n paddingRight: shadows.right,\r\n paddingBottom: shadows.bottom\r\n }));\r\n\r\n if (percentage) {\r\n element.css({\r\n width: \"100%\",\r\n height: \"100%\",\r\n boxSizing: \"border-box\",\r\n mozBoxSizing: \"border-box\",\r\n webkitBoxSizing: \"border-box\"\r\n });\r\n }\r\n } else {\r\n var wrapper = element.parent(\".k-animation-container\"),\r\n wrapperStyle = wrapper[0].style;\r\n\r\n if (wrapper.is(\":hidden\")) {\r\n wrapper.show();\r\n }\r\n\r\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\r\n\r\n if (!percentage) {\r\n wrapper.css({\r\n width: element.outerWidth(),\r\n height: element.outerHeight(),\r\n boxSizing: \"content-box\",\r\n mozBoxSizing: \"content-box\",\r\n webkitBoxSizing: \"content-box\"\r\n });\r\n }\r\n }\r\n\r\n if (browser.msie && math.floor(browser.version) <= 7) {\r\n element.css({ zoom: 1 });\r\n element.children(\".k-menu\").width(element.width());\r\n }\r\n\r\n return element.parent();\r\n }\r\n\r\n function deepExtend(destination) {\r\n var i = 1,\r\n length = arguments.length;\r\n\r\n for (i = 1; i < length; i++) {\r\n deepExtendOne(destination, arguments[i]);\r\n }\r\n\r\n return destination;\r\n }\r\n\r\n function deepExtendOne(destination, source) {\r\n var ObservableArray = kendo.data.ObservableArray,\r\n DataSource = kendo.data.DataSource,\r\n HierarchicalDataSource = kendo.data.HierarchicalDataSource,\r\n property,\r\n propValue,\r\n propType,\r\n destProp;\r\n\r\n for (property in source) {\r\n propValue = source[property];\r\n propType = typeof propValue;\r\n if (propType === OBJECT && propValue !== null &&\r\n propValue.constructor !== Array && propValue.constructor !== ObservableArray &&\r\n propValue.constructor !== DataSource && propValue.constructor !== HierarchicalDataSource) {\r\n if (propValue instanceof Date) {\r\n destination[property] = new Date(propValue.getTime());\r\n } else if (isFunction(propValue.clone)) {\r\n destination[property] = propValue.clone();\r\n } else {\r\n destProp = destination[property];\r\n if (typeof (destProp) === OBJECT) {\r\n destination[property] = destProp || {};\r\n } else {\r\n destination[property] = {};\r\n }\r\n deepExtendOne(destination[property], propValue);\r\n }\r\n } else if (propType !== UNDEFINED) {\r\n destination[property] = propValue;\r\n }\r\n }\r\n\r\n return destination;\r\n }\r\n\r\n function testRx(agent, rxs, dflt) {\r\n for (var rx in rxs) {\r\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\r\n return rx;\r\n }\r\n }\r\n return dflt !== undefined ? dflt : agent;\r\n }\r\n\r\n function toHyphens(str) {\r\n return str.replace(/([a-z][A-Z])/g, function (g) {\r\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\r\n });\r\n }\r\n\r\n function toCamelCase(str) {\r\n return str.replace(/\\-(\\w)/g, function (strMatch, g1) {\r\n return g1.toUpperCase();\r\n });\r\n }\r\n\r\n function getComputedStyles(element, properties) {\r\n var styles = {}, computedStyle;\r\n\r\n if (document.defaultView && document.defaultView.getComputedStyle) {\r\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\r\n\r\n if (properties) {\r\n $.each(properties, function(idx, value) {\r\n styles[value] = computedStyle.getPropertyValue(value);\r\n });\r\n }\r\n } else {\r\n computedStyle = element.currentStyle;\r\n\r\n if (properties) {\r\n $.each(properties, function(idx, value) {\r\n styles[value] = computedStyle[toCamelCase(value)];\r\n });\r\n }\r\n }\r\n\r\n if (!kendo.size(styles)) {\r\n styles = computedStyle;\r\n }\r\n\r\n return styles;\r\n }\r\n\r\n (function() {\r\n support.scrollbar = function() {\r\n var div = document.createElement(\"div\"),\r\n result;\r\n\r\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both\";\r\n div.innerHTML = \" \";\r\n document.body.appendChild(div);\r\n\r\n result = div.offsetWidth - div.scrollWidth;\r\n\r\n document.body.removeChild(div);\r\n return result;\r\n };\r\n\r\n support.isRtl = function(element) {\r\n return $(element).closest(\".k-rtl\").length > 0;\r\n };\r\n\r\n var table = document.createElement(\"table\");\r\n\r\n // Internet Explorer does not support setting the innerHTML of TBODY and TABLE elements\r\n try {\r\n table.innerHTML = \"\";\r\n\r\n support.tbodyInnerHtml = true;\r\n } catch (e) {\r\n support.tbodyInnerHtml = false;\r\n }\r\n\r\n support.touch = \"ontouchstart\" in window;\r\n support.msPointers = window.MSPointerEvent;\r\n support.pointers = window.PointerEvent;\r\n\r\n var transitions = support.transitions = false,\r\n transforms = support.transforms = false,\r\n elementProto = \"HTMLElement\" in window ? HTMLElement.prototype : [];\r\n\r\n support.hasHW3D = (\"WebKitCSSMatrix\" in window && \"m11\" in new window.WebKitCSSMatrix()) || \"MozPerspective\" in document.documentElement.style || \"msPerspective\" in document.documentElement.style;\r\n\r\n each([ \"Moz\", \"webkit\", \"O\", \"ms\" ], function () {\r\n var prefix = this.toString(),\r\n hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\r\n\r\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\r\n var lowPrefix = prefix.toLowerCase();\r\n\r\n transforms = {\r\n css: (lowPrefix != \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\r\n prefix: prefix,\r\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\r\n };\r\n\r\n if (hasTransitions) {\r\n transitions = transforms;\r\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n\r\n table = null;\r\n\r\n support.transforms = transforms;\r\n support.transitions = transitions;\r\n\r\n support.devicePixelRatio = window.devicePixelRatio === undefined ? 1 : window.devicePixelRatio;\r\n\r\n try {\r\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\r\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\r\n } catch(e) {\r\n //window.outerWidth throws error when in IE showModalDialog.\r\n support.screenWidth = window.screen.availWidth;\r\n support.screenHeight = window.screen.availHeight;\r\n }\r\n\r\n support.detectOS = function (ua) {\r\n var os = false, minorVersion, match = [],\r\n notAndroidPhone = !/mobile safari/i.test(ua),\r\n agentRxs = {\r\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\r\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\r\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\r\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\r\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\r\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\r\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\r\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\r\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\r\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\r\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\r\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\r\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\r\n },\r\n osRxs = {\r\n ios: /^i(phone|pad|pod)$/i,\r\n android: /^android|fire$/i,\r\n blackberry: /^blackberry|playbook/i,\r\n windows: /windows/,\r\n wp: /wp/,\r\n flat: /sailfish|ffos|tizen/i,\r\n meego: /meego/\r\n },\r\n formFactorRxs = {\r\n tablet: /playbook|ipad|fire/i\r\n },\r\n browserRxs = {\r\n omini: /Opera\\sMini/i,\r\n omobile: /Opera\\sMobi/i,\r\n firefox: /Firefox|Fennec/i,\r\n mobilesafari: /version\\/.*safari/i,\r\n chrome: /chrome|crios/i,\r\n webkit: /webkit/i,\r\n ie: /MSIE|Windows\\sPhone/i\r\n };\r\n\r\n for (var agent in agentRxs) {\r\n if (agentRxs.hasOwnProperty(agent)) {\r\n match = ua.match(agentRxs[agent]);\r\n if (match) {\r\n if (agent == \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\r\n\r\n os = {};\r\n os.device = agent;\r\n os.tablet = testRx(agent, formFactorRxs, false);\r\n os.browser = testRx(ua, browserRxs, \"default\");\r\n os.name = testRx(agent, osRxs);\r\n os[os.name] = true;\r\n os.majorVersion = match[2];\r\n os.minorVersion = match[3].replace(\"_\", \".\");\r\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\r\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\r\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; // Use file protocol to detect appModes.\r\n os.appMode = window.navigator.standalone || (/file|local|wmapp/).test(window.location.protocol) || os.cordova; // Use file protocol to detect appModes.\r\n\r\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\r\n os.tablet = agent;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n return os;\r\n };\r\n\r\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\r\n\r\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\r\n support.kineticScrollNeeded = mobileOS && (support.touch || support.msPointers || support.pointers);\r\n\r\n support.hasNativeScrolling = false;\r\n\r\n if (mobileOS.ios || (mobileOS.android && mobileOS.majorVersion > 2) || mobileOS.wp) {\r\n support.hasNativeScrolling = mobileOS;\r\n }\r\n\r\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\r\n\r\n support.detectBrowser = function(ua) {\r\n var browser = false, match = [],\r\n browserRxs = {\r\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\r\n safari: /(webkit)[ \\/]([\\w.]+)/i,\r\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\r\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\r\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\r\n };\r\n\r\n for (var agent in browserRxs) {\r\n if (browserRxs.hasOwnProperty(agent)) {\r\n match = ua.match(browserRxs[agent]);\r\n if (match) {\r\n browser = {};\r\n browser[agent] = true;\r\n browser[match[1].toLowerCase()] = true;\r\n browser.version = parseInt(document.documentMode || match[2], 10);\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return browser;\r\n };\r\n\r\n support.browser = support.detectBrowser(navigator.userAgent);\r\n\r\n support.zoomLevel = function() {\r\n try {\r\n return support.touch ? (document.documentElement.clientWidth / window.innerWidth) :\r\n support.browser.msie && support.browser.version >= 10 ? ((top || window).document.documentElement.offsetWidth / (top || window).innerWidth) : 1;\r\n } catch(e) {\r\n return 1;\r\n }\r\n };\r\n\r\n support.cssBorderSpacing = typeof document.documentElement.style.borderSpacing != \"undefined\" && !(support.browser.msie && support.browser.version < 8);\r\n\r\n (function(browser) {\r\n // add browser-specific CSS class\r\n var cssClass,\r\n majorVersion = parseInt(browser.version, 10);\r\n\r\n if (browser.msie) {\r\n cssClass = \"ie\";\r\n } else if (browser.mozilla) {\r\n cssClass = \"ff\";\r\n } else if (browser.safari) {\r\n cssClass = \"safari\";\r\n } else if (browser.webkit) {\r\n cssClass = \"webkit\";\r\n } else if (browser.opera) {\r\n cssClass = \"opera\";\r\n }\r\n\r\n if (cssClass) {\r\n $(document.documentElement).addClass(\"k-\" + cssClass + \" k-\" + cssClass + majorVersion);\r\n }\r\n })(support.browser);\r\n\r\n support.eventCapture = document.documentElement.addEventListener;\r\n\r\n var input = document.createElement(\"input\");\r\n\r\n support.placeholder = \"placeholder\" in input;\r\n support.propertyChangeEvent = \"onpropertychange\" in input;\r\n\r\n support.input = (function() {\r\n var types = [\"number\", \"date\", \"time\", \"month\", \"week\", \"datetime\", \"datetime-local\"];\r\n var length = types.length;\r\n var value = \"test\";\r\n var result = {};\r\n var idx = 0;\r\n var type;\r\n\r\n for (;idx < length; idx++) {\r\n type = types[idx];\r\n input.setAttribute(\"type\", type);\r\n input.value = value;\r\n\r\n result[type.replace(\"-\", \"\")] = input.type !== \"text\" && input.value !== value;\r\n }\r\n\r\n return result;\r\n })();\r\n\r\n input.style.cssText = \"float:left;\";\r\n\r\n support.cssFloat = !!input.style.cssFloat;\r\n\r\n input = null;\r\n\r\n support.stableSort = (function() {\r\n // Chrome sort is not stable for more than *10* items\r\n // IE9+ sort is not stable for than *512* items\r\n var threshold = 513;\r\n\r\n var sorted = [{\r\n index: 0,\r\n field: \"b\"\r\n }];\r\n\r\n for (var i = 1; i < threshold; i++) {\r\n sorted.push({\r\n index: i,\r\n field: \"a\"\r\n });\r\n }\r\n\r\n sorted.sort(function(a, b) {\r\n return a.field > b.field ? 1 : (a.field < b.field ? -1 : 0);\r\n });\r\n\r\n return sorted[0].index === 1;\r\n })();\r\n\r\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector ||\r\n elementProto.msMatchesSelector || elementProto.oMatchesSelector || elementProto.matchesSelector ||\r\n function( selector ) {\r\n var nodeList = document.querySelectorAll ? ( this.parentNode || document ).querySelectorAll( selector ) || [] : $(selector),\r\n i = nodeList.length;\r\n\r\n while (i--) {\r\n if (nodeList[i] == this) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n support.pushState = window.history && window.history.pushState;\r\n\r\n var documentMode = document.documentMode;\r\n\r\n support.hashChange = (\"onhashchange\" in window) && !(support.browser.msie && (!documentMode || documentMode <= 8)); // old IE detection\r\n })();\r\n\r\n\r\n function size(obj) {\r\n var result = 0, key;\r\n for (key in obj) {\r\n if (obj.hasOwnProperty(key) && key != \"toJSON\") { // Ignore fake IE7 toJSON.\r\n result++;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getOffset(element, type, positioned) {\r\n if (!type) {\r\n type = \"offset\";\r\n }\r\n\r\n var result = element[type](),\r\n mobileOS = support.mobileOS;\r\n\r\n // IE10 touch zoom is living in a separate viewport\r\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\r\n result.top -= (window.pageYOffset - document.documentElement.scrollTop);\r\n result.left -= (window.pageXOffset - document.documentElement.scrollLeft);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n var directions = {\r\n left: { reverse: \"right\" },\r\n right: { reverse: \"left\" },\r\n down: { reverse: \"up\" },\r\n up: { reverse: \"down\" },\r\n top: { reverse: \"bottom\" },\r\n bottom: { reverse: \"top\" },\r\n \"in\": { reverse: \"out\" },\r\n out: { reverse: \"in\" }\r\n };\r\n\r\n function parseEffects(input) {\r\n var effects = {};\r\n\r\n each((typeof input === \"string\" ? input.split(\" \") : input), function(idx) {\r\n effects[idx] = this;\r\n });\r\n\r\n return effects;\r\n }\r\n\r\n function fx(element) {\r\n return new kendo.effects.Element(element);\r\n }\r\n\r\n var effects = {};\r\n\r\n $.extend(effects, {\r\n enabled: true,\r\n Element: function(element) {\r\n this.element = $(element);\r\n },\r\n\r\n promise: function(element, options) {\r\n if (!element.is(\":visible\")) {\r\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\r\n }\r\n\r\n if (options.hide) {\r\n element.data(\"olddisplay\", element.css(\"display\")).hide();\r\n }\r\n\r\n if (options.init) {\r\n options.init();\r\n }\r\n\r\n if (options.completeCallback) {\r\n options.completeCallback(element); // call the external complete callback with the element\r\n }\r\n\r\n element.dequeue();\r\n },\r\n\r\n disable: function() {\r\n this.enabled = false;\r\n this.promise = this.promiseShim;\r\n },\r\n\r\n enable: function() {\r\n this.enabled = true;\r\n this.promise = this.animatedPromise;\r\n }\r\n });\r\n\r\n effects.promiseShim = effects.promise;\r\n\r\n function prepareAnimationOptions(options, duration, reverse, complete) {\r\n if (typeof options === STRING) {\r\n // options is the list of effect names separated by space e.g. animate(element, \"fadeIn slideDown\")\r\n\r\n // only callback is provided e.g. animate(element, options, function() {});\r\n if (isFunction(duration)) {\r\n complete = duration;\r\n duration = 400;\r\n reverse = false;\r\n }\r\n\r\n if (isFunction(reverse)) {\r\n complete = reverse;\r\n reverse = false;\r\n }\r\n\r\n if (typeof duration === BOOLEAN){\r\n reverse = duration;\r\n duration = 400;\r\n }\r\n\r\n options = {\r\n effects: options,\r\n duration: duration,\r\n reverse: reverse,\r\n complete: complete\r\n };\r\n }\r\n\r\n return extend({\r\n //default options\r\n effects: {},\r\n duration: 400, //jQuery default duration\r\n reverse: false,\r\n init: noop,\r\n teardown: noop,\r\n hide: false\r\n }, options, { completeCallback: options.complete, complete: noop }); // Move external complete callback, so deferred.resolve can be always executed.\r\n\r\n }\r\n\r\n function animate(element, options, duration, reverse, complete) {\r\n var idx = 0,\r\n length = element.length,\r\n instance;\r\n\r\n for (; idx < length; idx ++) {\r\n instance = $(element[idx]);\r\n instance.queue(function() {\r\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\r\n });\r\n }\r\n\r\n return element;\r\n }\r\n\r\n function toggleClass(element, classes, options, add) {\r\n if (classes) {\r\n classes = classes.split(\" \");\r\n\r\n each(classes, function(idx, value) {\r\n element.toggleClass(value, add);\r\n });\r\n }\r\n\r\n return element;\r\n }\r\n\r\n if (!(\"kendoAnimate\" in $.fn)) {\r\n extend($.fn, {\r\n kendoStop: function(clearQueue, gotoEnd) {\r\n return this.stop(clearQueue, gotoEnd);\r\n },\r\n\r\n kendoAnimate: function(options, duration, reverse, complete) {\r\n return animate(this, options, duration, reverse, complete);\r\n },\r\n\r\n kendoAddClass: function(classes, options){\r\n return kendo.toggleClass(this, classes, options, true);\r\n },\r\n\r\n kendoRemoveClass: function(classes, options){\r\n return kendo.toggleClass(this, classes, options, false);\r\n },\r\n kendoToggleClass: function(classes, options, toggle){\r\n return kendo.toggleClass(this, classes, options, toggle);\r\n }\r\n });\r\n }\r\n\r\n var ampRegExp = /&/g,\r\n ltRegExp = //g;\r\n function htmlEncode(value) {\r\n return (\"\" + value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\r\n }\r\n\r\n var eventTarget = function (e) {\r\n return e.target;\r\n };\r\n\r\n if (support.touch) {\r\n\r\n eventTarget = function(e) {\r\n var touches = \"originalEvent\" in e ? e.originalEvent.changedTouches : \"changedTouches\" in e ? e.changedTouches : null;\r\n\r\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\r\n };\r\n\r\n each([\"swipe\", \"swipeLeft\", \"swipeRight\", \"swipeUp\", \"swipeDown\", \"doubleTap\", \"tap\"], function(m, value) {\r\n $.fn[value] = function(callback) {\r\n return this.bind(value, callback);\r\n };\r\n });\r\n }\r\n\r\n if (support.touch) {\r\n if (!support.mobileOS) {\r\n support.mousedown = \"mousedown touchstart\";\r\n support.mouseup = \"mouseup touchend\";\r\n support.mousemove = \"mousemove touchmove\";\r\n support.mousecancel = \"mouseleave touchcancel\";\r\n support.click = \"click\";\r\n support.resize = \"resize\";\r\n } else {\r\n support.mousedown = \"touchstart\";\r\n support.mouseup = \"touchend\";\r\n support.mousemove = \"touchmove\";\r\n support.mousecancel = \"touchcancel\";\r\n support.click = \"touchend\";\r\n support.resize = \"orientationchange\";\r\n }\r\n } else if (support.pointers) {\r\n support.mousemove = \"pointermove\";\r\n support.mousedown = \"pointerdown\";\r\n support.mouseup = \"pointerup\";\r\n support.mousecancel = \"pointercancel\";\r\n support.click = \"pointerup\";\r\n support.resize = \"orientationchange resize\";\r\n } else if (support.msPointers) {\r\n support.mousemove = \"MSPointerMove\";\r\n support.mousedown = \"MSPointerDown\";\r\n support.mouseup = \"MSPointerUp\";\r\n support.mousecancel = \"MSPointerCancel\";\r\n support.click = \"MSPointerUp\";\r\n support.resize = \"orientationchange resize\";\r\n } else {\r\n support.mousemove = \"mousemove\";\r\n support.mousedown = \"mousedown\";\r\n support.mouseup = \"mouseup\";\r\n support.mousecancel = \"mouseleave\";\r\n support.click = \"click\";\r\n support.resize = \"resize\";\r\n }\r\n\r\n var wrapExpression = function(members, paramName) {\r\n var result = paramName || \"d\",\r\n index,\r\n idx,\r\n length,\r\n member,\r\n count = 1;\r\n\r\n for (idx = 0, length = members.length; idx < length; idx++) {\r\n member = members[idx];\r\n if (member !== \"\") {\r\n index = member.indexOf(\"[\");\r\n\r\n if (index !== 0) {\r\n if (index == -1) {\r\n member = \".\" + member;\r\n } else {\r\n count++;\r\n member = \".\" + member.substring(0, index) + \" || {})\" + member.substring(index);\r\n }\r\n }\r\n\r\n count++;\r\n result += member + ((idx < length - 1) ? \" || {})\" : \")\");\r\n }\r\n }\r\n return new Array(count).join(\"(\") + result;\r\n },\r\n localUrlRe = /^([a-z]+:)?\\/\\//i;\r\n\r\n extend(kendo, {\r\n ui: kendo.ui || {},\r\n fx: kendo.fx || fx,\r\n effects: kendo.effects || effects,\r\n mobile: kendo.mobile || { },\r\n data: kendo.data || {},\r\n dataviz: kendo.dataviz || {ui: { roles: {}}},\r\n keys: {\r\n INSERT: 45,\r\n DELETE: 46,\r\n BACKSPACE: 8,\r\n TAB: 9,\r\n ENTER: 13,\r\n ESC: 27,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n END: 35,\r\n HOME: 36,\r\n SPACEBAR: 32,\r\n PAGEUP: 33,\r\n PAGEDOWN: 34,\r\n F2: 113,\r\n F10: 121,\r\n F12: 123,\r\n NUMPAD_PLUS: 107,\r\n NUMPAD_MINUS: 109,\r\n NUMPAD_DOT: 110\r\n },\r\n support: kendo.support || support,\r\n animate: kendo.animate || animate,\r\n ns: \"\",\r\n attr: function(value) {\r\n return \"data-\" + kendo.ns + value;\r\n },\r\n getShadows: getShadows,\r\n wrap: wrap,\r\n deepExtend: deepExtend,\r\n getComputedStyles: getComputedStyles,\r\n size: size,\r\n toCamelCase: toCamelCase,\r\n toHyphens: toHyphens,\r\n getOffset: kendo.getOffset || getOffset,\r\n parseEffects: kendo.parseEffects || parseEffects,\r\n toggleClass: kendo.toggleClass || toggleClass,\r\n directions: kendo.directions || directions,\r\n Observable: Observable,\r\n Class: Class,\r\n Template: Template,\r\n template: proxy(Template.compile, Template),\r\n render: proxy(Template.render, Template),\r\n stringify: proxy(JSON.stringify, JSON),\r\n eventTarget: eventTarget,\r\n htmlEncode: htmlEncode,\r\n isLocalUrl: function(url) {\r\n return url && !localUrlRe.test(url);\r\n },\r\n\r\n expr: function(expression, safe, paramName) {\r\n expression = expression || \"\";\r\n\r\n if (typeof safe == STRING) {\r\n paramName = safe;\r\n safe = false;\r\n }\r\n\r\n paramName = paramName || \"d\";\r\n\r\n if (expression && expression.charAt(0) !== \"[\") {\r\n expression = \".\" + expression;\r\n }\r\n\r\n if (safe) {\r\n expression = wrapExpression(expression.split(\".\"), paramName);\r\n } else {\r\n expression = paramName + expression;\r\n }\r\n\r\n return expression;\r\n },\r\n\r\n getter: function(expression, safe) {\r\n return getterCache[expression] = getterCache[expression] || new Function(\"d\", \"return \" + kendo.expr(expression, safe));\r\n },\r\n\r\n setter: function(expression) {\r\n return setterCache[expression] = setterCache[expression] || new Function(\"d,value\", kendo.expr(expression) + \"=value\");\r\n },\r\n\r\n accessor: function(expression) {\r\n return {\r\n get: kendo.getter(expression),\r\n set: kendo.setter(expression)\r\n };\r\n },\r\n\r\n guid: function() {\r\n var id = \"\", i, random;\r\n\r\n for (i = 0; i < 32; i++) {\r\n random = math.random() * 16 | 0;\r\n\r\n if (i == 8 || i == 12 || i == 16 || i == 20) {\r\n id += \"-\";\r\n }\r\n id += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);\r\n }\r\n\r\n return id;\r\n },\r\n\r\n roleSelector: function(role) {\r\n return role.replace(/(\\S+)/g, \"[\" + kendo.attr(\"role\") + \"=$1],\").slice(0, -1);\r\n },\r\n\r\n triggeredByInput: function(e) {\r\n return (/^(label|input|textarea|select)$/i).test(e.target.tagName);\r\n },\r\n\r\n logToConsole: function(message) {\r\n var console = window.console;\r\n\r\n if (typeof(console) != \"undefined\" && console.log) {\r\n console.log(message);\r\n }\r\n }\r\n });\r\n\r\n var Widget = Observable.extend( {\r\n init: function(element, options) {\r\n var that = this;\r\n\r\n that.element = kendo.jQuery(element).handler(that);\r\n\r\n Observable.fn.init.call(that);\r\n\r\n options = that.options = extend(true, {}, that.options, options);\r\n\r\n if (!that.element.attr(kendo.attr(\"role\"))) {\r\n that.element.attr(kendo.attr(\"role\"), (options.name || \"\").toLowerCase());\r\n }\r\n\r\n that.element.data(\"kendo\" + options.prefix + options.name, that);\r\n\r\n that.bind(that.events, options);\r\n },\r\n\r\n events: [],\r\n\r\n options: {\r\n prefix: \"\"\r\n },\r\n\r\n _hasBindingTarget: function() {\r\n return !!this.element[0].kendoBindingTarget;\r\n },\r\n\r\n _tabindex: function(target) {\r\n target = target || this.wrapper;\r\n\r\n var element = this.element,\r\n TABINDEX = \"tabindex\",\r\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\r\n\r\n element.removeAttr(TABINDEX);\r\n\r\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\r\n },\r\n\r\n setOptions: function(options) {\r\n this._setEvents(options);\r\n $.extend(this.options, options);\r\n },\r\n\r\n _setEvents: function(options) {\r\n var that = this,\r\n idx = 0,\r\n length = that.events.length,\r\n e;\r\n\r\n for (; idx < length; idx ++) {\r\n e = that.events[idx];\r\n if (that.options[e] && options[e]) {\r\n that.unbind(e, that.options[e]);\r\n }\r\n }\r\n\r\n that.bind(that.events, options);\r\n },\r\n\r\n resize: function(force) {\r\n var size = this.getSize(),\r\n currentSize = this._size;\r\n\r\n if (force || !currentSize || size.width !== currentSize.width || size.height !== currentSize.height) {\r\n this._resize(size);\r\n this.trigger(\"resize\", size);\r\n this._size = size;\r\n }\r\n },\r\n\r\n getSize: function() {\r\n return kendo.dimensions(this.element);\r\n },\r\n\r\n size: function(size) {\r\n if (!size) {\r\n return this.getSize();\r\n } else {\r\n this.setSize(size);\r\n }\r\n },\r\n\r\n setSize: $.noop,\r\n _resize: $.noop,\r\n\r\n destroy: function() {\r\n var that = this;\r\n\r\n that.element.removeData(\"kendo\" + that.options.prefix + that.options.name);\r\n that.element.removeData(\"handler\");\r\n that.unbind();\r\n }\r\n });\r\n\r\n kendo.dimensions = function(element, dimensions) {\r\n var domElement = element[0];\r\n\r\n if (dimensions) {\r\n element.css(dimensions);\r\n }\r\n\r\n return { width: domElement.offsetWidth, height: domElement.offsetHeight };\r\n };\r\n\r\n kendo.notify = noop;\r\n\r\n var templateRegExp = /template$/i,\r\n jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/,\r\n jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]*\\]$/,\r\n dashRegExp = /([A-Z])/g;\r\n\r\n function parseOption(element, option) {\r\n var value;\r\n\r\n if (option.indexOf(\"data\") === 0) {\r\n option = option.substring(4);\r\n option = option.charAt(0).toLowerCase() + option.substring(1);\r\n }\r\n\r\n option = option.replace(dashRegExp, \"-$1\");\r\n value = element.getAttribute(\"data-\" + kendo.ns + option);\r\n\r\n if (value === null) {\r\n value = undefined;\r\n } else if (value === \"null\") {\r\n value = null;\r\n } else if (value === \"true\") {\r\n value = true;\r\n } else if (value === \"false\") {\r\n value = false;\r\n } else if (numberRegExp.test(value)) {\r\n value = parseFloat(value);\r\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\r\n value = new Function(\"return (\" + value + \")\")();\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function parseOptions(element, options) {\r\n var result = {},\r\n option,\r\n value;\r\n\r\n for (option in options) {\r\n value = parseOption(element, option);\r\n\r\n if (value !== undefined) {\r\n\r\n if (templateRegExp.test(option)) {\r\n value = kendo.template($(\"#\" + value).html());\r\n }\r\n\r\n result[option] = value;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n kendo.initWidget = function(element, options, roles) {\r\n var result,\r\n option,\r\n widget,\r\n idx,\r\n length,\r\n role,\r\n value,\r\n dataSource;\r\n\r\n // Preserve backwards compatibility with (element, options, namespace) signature, where namespace was kendo.ui\r\n if (!roles) {\r\n roles = kendo.ui.roles;\r\n } else if (roles.roles) {\r\n roles = roles.roles;\r\n }\r\n\r\n element = element.nodeType ? element : element[0];\r\n\r\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\r\n\r\n if (!role) {\r\n return;\r\n }\r\n\r\n if (role.indexOf(\".\") === -1) {\r\n widget = roles[role];\r\n } else { // full namespace path - like kendo.ui.Widget\r\n widget = kendo.getter(role)(window);\r\n }\r\n\r\n if (!widget) {\r\n return;\r\n }\r\n\r\n dataSource = parseOption(element, \"dataSource\");\r\n\r\n options = $.extend({}, parseOptions(element, widget.fn.options), options);\r\n\r\n if (dataSource) {\r\n if (typeof dataSource === STRING) {\r\n options.dataSource = kendo.getter(dataSource)(window);\r\n } else {\r\n options.dataSource = dataSource;\r\n }\r\n }\r\n\r\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\r\n option = widget.fn.events[idx];\r\n\r\n value = parseOption(element, option);\r\n\r\n if (value !== undefined) {\r\n options[option] = kendo.getter(value)(window);\r\n }\r\n }\r\n\r\n result = $(element).data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\r\n\r\n if (!result) {\r\n result = new widget(element, options);\r\n } else {\r\n result.setOptions(options);\r\n }\r\n\r\n return result;\r\n };\r\n\r\n kendo.rolesFromNamespaces = function(namespaces) {\r\n var roles = [],\r\n idx,\r\n length;\r\n\r\n if (!namespaces[0]) {\r\n namespaces = [kendo.ui, kendo.dataviz.ui];\r\n }\r\n\r\n for (idx = 0, length = namespaces.length; idx < length; idx ++) {\r\n roles[idx] = namespaces[idx].roles;\r\n }\r\n\r\n return extend.apply(null, [{}].concat(roles.reverse()));\r\n };\r\n\r\n kendo.init = function(element) {\r\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\r\n\r\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function(){\r\n kendo.initWidget(this, {}, roles);\r\n });\r\n };\r\n\r\n kendo.destroy = function(element) {\r\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function(){\r\n var widget = kendo.widgetInstance($(this));\r\n\r\n if (widget) {\r\n widget.destroy();\r\n }\r\n });\r\n };\r\n\r\n function containmentComparer(a, b) {\r\n return $.contains(a, b) ? -1 : 1;\r\n }\r\n\r\n function resizableWidget() {\r\n var widget = $(this);\r\n return ($.inArray(widget.attr(\"data-role\"), [\"slider\", \"rangeslider\"]) > 0) || widget.is(\":visible\");\r\n }\r\n\r\n kendo.resize = function(element) {\r\n var widgets = $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().filter(resizableWidget);\r\n\r\n if (!widgets.length) {\r\n return;\r\n }\r\n\r\n // sort widgets based on their parent-child relation\r\n var widgetsArray = $.makeArray(widgets);\r\n widgetsArray.sort(containmentComparer);\r\n\r\n // resize widgets\r\n $.each(widgetsArray, function () {\r\n var widget = kendo.widgetInstance($(this));\r\n if (widget) {\r\n widget.resize();\r\n }\r\n });\r\n };\r\n\r\n kendo.parseOptions = parseOptions;\r\n\r\n extend(kendo.ui, {\r\n Widget: Widget,\r\n roles: {},\r\n progress: function(container, toggle) {\r\n var mask = container.find(\".k-loading-mask\"),\r\n support = kendo.support,\r\n browser = support.browser,\r\n isRtl, leftRight, webkitCorrection, containerScrollLeft;\r\n\r\n if (toggle) {\r\n if (!mask.length) {\r\n isRtl = support.isRtl(container);\r\n leftRight = isRtl ? \"right\" : \"left\";\r\n containerScrollLeft = container.scrollLeft();\r\n webkitCorrection = browser.webkit ? (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft) : 0;\r\n\r\n mask = $(\"
Loading...
\")\r\n .width(\"100%\").height(\"100%\")\r\n .css(\"top\", container.scrollTop())\r\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\r\n .prependTo(container);\r\n }\r\n } else if (mask) {\r\n mask.remove();\r\n }\r\n },\r\n plugin: function(widget, register, prefix) {\r\n var name = widget.fn.options.name,\r\n getter;\r\n\r\n register = register || kendo.ui;\r\n prefix = prefix || \"\";\r\n\r\n register[name] = widget;\r\n\r\n register.roles[name.toLowerCase()] = widget;\r\n\r\n getter = \"getKendo\" + prefix + name;\r\n name = \"kendo\" + prefix + name;\r\n\r\n $.fn[name] = function(options) {\r\n var value = this,\r\n args;\r\n\r\n if (typeof options === STRING) {\r\n args = slice.call(arguments, 1);\r\n\r\n this.each(function(){\r\n var widget = $.data(this, name),\r\n method,\r\n result;\r\n\r\n if (!widget) {\r\n throw new Error(kendo.format(\"Cannot call method '{0}' of {1} before it is initialized\", options, name));\r\n }\r\n\r\n method = widget[options];\r\n\r\n if (typeof method !== FUNCTION) {\r\n throw new Error(kendo.format(\"Cannot find method '{0}' of {1}\", options, name));\r\n }\r\n\r\n result = method.apply(widget, args);\r\n\r\n if (result !== undefined) {\r\n value = result;\r\n return false;\r\n }\r\n });\r\n } else {\r\n this.each(function() {\r\n new widget(this, options);\r\n });\r\n }\r\n\r\n return value;\r\n };\r\n\r\n $.fn[getter] = function() {\r\n return this.data(name);\r\n };\r\n }\r\n });\r\n\r\n var ContainerNullObject = { bind: function () { return this; }, nullObject: true };\r\n\r\n var MobileWidget = Widget.extend({\r\n init: function(element, options) {\r\n Widget.fn.init.call(this, element, options);\r\n this.element.autoApplyNS();\r\n this.wrapper = this.element;\r\n this.element.addClass(\"km-widget\");\r\n },\r\n\r\n destroy: function() {\r\n Widget.fn.destroy.call(this);\r\n this.element.kendoDestroy();\r\n },\r\n\r\n options: {\r\n prefix: \"Mobile\"\r\n },\r\n\r\n events: [],\r\n\r\n view: function() {\r\n var viewElement = this.element.closest(kendo.roleSelector(\"view splitview modalview drawer\"));\r\n return kendo.widgetInstance(viewElement, kendo.mobile.ui);\r\n },\r\n\r\n viewHasNativeScrolling: function() {\r\n var view = this.view();\r\n return view && view.options.useNativeScrolling;\r\n },\r\n\r\n container: function() {\r\n var element = this.element.closest(kendo.roleSelector(\"view layout modalview drawer\"));\r\n return kendo.widgetInstance(element, kendo.mobile.ui) || ContainerNullObject;\r\n }\r\n });\r\n\r\n extend(kendo.mobile, {\r\n init: function(element) {\r\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\r\n },\r\n\r\n appLevelNativeScrolling: function() {\r\n return kendo.mobile.application && kendo.mobile.application.options && kendo.mobile.application.options.useNativeScrolling;\r\n },\r\n\r\n ui: {\r\n Widget: MobileWidget,\r\n roles: {},\r\n plugin: function(widget) {\r\n kendo.ui.plugin(widget, kendo.mobile.ui, \"Mobile\");\r\n }\r\n }\r\n });\r\n\r\n kendo.touchScroller = function(elements, options) {\r\n // return the first touch scroller\r\n return $(elements).map(function(idx, element) {\r\n element = $(element);\r\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data(\"kendoMobileScroller\")) {\r\n element.kendoMobileScroller(options);\r\n return element.data(\"kendoMobileScroller\");\r\n } else {\r\n return false;\r\n }\r\n })[0];\r\n };\r\n\r\n kendo.preventDefault = function(e) {\r\n e.preventDefault();\r\n };\r\n\r\n kendo.widgetInstance = function(element, suites) {\r\n var role = element.data(kendo.ns + \"role\"),\r\n widgets = [], i, length;\r\n\r\n if (role) {\r\n // HACK!!! mobile view scroller widgets are instantiated on data-role=\"content\" elements. We need to discover them when resizing.\r\n if (role === \"content\") {\r\n role = \"scroller\";\r\n }\r\n\r\n if (suites) {\r\n if (suites[0]) {\r\n for (i = 0, length = suites.length; i < length; i ++) {\r\n widgets.push(suites[i].roles[role]);\r\n }\r\n } else {\r\n widgets.push(suites.roles[role]);\r\n }\r\n }\r\n else {\r\n widgets = [ kendo.ui.roles[role], kendo.dataviz.ui.roles[role], kendo.mobile.ui.roles[role] ];\r\n }\r\n\r\n if (role.indexOf(\".\") >= 0) {\r\n widgets = [ kendo.getter(role)(window) ];\r\n }\r\n\r\n for (i = 0, length = widgets.length; i < length; i ++) {\r\n var widget = widgets[i];\r\n if (widget) {\r\n var instance = element.data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\r\n if (instance) {\r\n return instance;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n kendo.onResize = function(callback) {\r\n var handler = callback;\r\n if (support.mobileOS.android) {\r\n handler = function() { setTimeout(callback, 600); };\r\n }\r\n\r\n $(window).on(support.resize, handler);\r\n return handler;\r\n };\r\n\r\n kendo.unbindResize = function(callback) {\r\n $(window).off(support.resize, callback);\r\n };\r\n\r\n kendo.attrValue = function(element, key) {\r\n return element.data(kendo.ns + key);\r\n };\r\n\r\n kendo.days = {\r\n Sunday: 0,\r\n Monday: 1,\r\n Tuesday: 2,\r\n Wednesday: 3,\r\n Thursday: 4,\r\n Friday: 5,\r\n Saturday: 6\r\n };\r\n\r\n function focusable(element, isTabIndexNotNaN) {\r\n var nodeName = element.nodeName.toLowerCase();\r\n\r\n return (/input|select|textarea|button|object/.test(nodeName) ?\r\n !element.disabled :\r\n \"a\" === nodeName ?\r\n element.href || isTabIndexNotNaN :\r\n isTabIndexNotNaN\r\n ) &&\r\n visible(element);\r\n }\r\n\r\n function visible(element) {\r\n return !$(element).parents().addBack().filter(function() {\r\n return $.css(this,\"visibility\") === \"hidden\" || $.expr.filters.hidden(this);\r\n }).length;\r\n }\r\n\r\n $.extend($.expr[ \":\" ], {\r\n kendoFocusable: function(element) {\r\n var idx = $.attr(element, \"tabindex\");\r\n return focusable(element, !isNaN(idx) && idx > -1);\r\n }\r\n });\r\n\r\n var MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseenter\", \"mouseleave\", \"mouseover\", \"mouseout\", \"mouseup\", \"click\"];\r\n var EXCLUDE_BUST_CLICK_SELECTOR = \"label, input, [data-rel=external]\";\r\n\r\n var MouseEventNormalizer = {\r\n setupMouseMute: function() {\r\n var idx = 0,\r\n length = MOUSE_EVENTS.length,\r\n element = document.documentElement;\r\n\r\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\r\n return;\r\n }\r\n\r\n MouseEventNormalizer.mouseTrap = true;\r\n\r\n MouseEventNormalizer.bustClick = false;\r\n MouseEventNormalizer.captureMouse = false;\r\n\r\n var handler = function(e) {\r\n if (MouseEventNormalizer.captureMouse) {\r\n if (e.type === \"click\") {\r\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n } else {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n\r\n for (; idx < length; idx++) {\r\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\r\n }\r\n },\r\n\r\n muteMouse: function(e) {\r\n MouseEventNormalizer.captureMouse = true;\r\n if (e.data.bustClick) {\r\n MouseEventNormalizer.bustClick = true;\r\n }\r\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\r\n },\r\n\r\n unMuteMouse: function() {\r\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\r\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function() {\r\n MouseEventNormalizer.captureMouse = false;\r\n MouseEventNormalizer.bustClick = false;\r\n }, 400);\r\n }\r\n };\r\n\r\n var eventMap = {\r\n down: \"touchstart mousedown\",\r\n move: \"mousemove touchmove\",\r\n up: \"mouseup touchend touchcancel\",\r\n cancel: \"mouseleave touchcancel\"\r\n };\r\n\r\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\r\n eventMap = {\r\n down: \"touchstart\",\r\n move: \"touchmove\",\r\n up: \"touchend touchcancel\",\r\n cancel: \"touchcancel\"\r\n };\r\n } else if (support.pointers) {\r\n eventMap = {\r\n down: \"pointerdown\",\r\n move: \"pointermove\",\r\n up: \"pointerup\",\r\n cancel: \"pointercancel pointerleave\"\r\n };\r\n } else if (support.msPointers) {\r\n eventMap = {\r\n down: \"MSPointerDown\",\r\n move: \"MSPointerMove\",\r\n up: \"MSPointerUp\",\r\n cancel: \"MSPointerCancel MSPointerLeave\"\r\n };\r\n }\r\n\r\n if (support.msPointers && !(\"onmspointerenter\" in window)) { // IE10\r\n // Create MSPointerEnter/MSPointerLeave events using mouseover/out and event-time checks\r\n $.each({\r\n MSPointerEnter: \"MSPointerOver\",\r\n MSPointerLeave: \"MSPointerOut\"\r\n }, function( orig, fix ) {\r\n $.event.special[ orig ] = {\r\n delegateType: fix,\r\n bindType: fix,\r\n\r\n handle: function( event ) {\r\n var ret,\r\n target = this,\r\n related = event.relatedTarget,\r\n handleObj = event.handleObj;\r\n\r\n // For mousenter/leave call the handler if related is outside the target.\r\n // NB: No relatedTarget if the mouse left/entered the browser window\r\n if ( !related || (related !== target && !$.contains( target, related )) ) {\r\n event.type = handleObj.origType;\r\n ret = handleObj.handler.apply( this, arguments );\r\n event.type = fix;\r\n }\r\n return ret;\r\n }\r\n };\r\n });\r\n }\r\n\r\n\r\n var getEventMap = function(e) { return (eventMap[e] || e); },\r\n eventRegEx = /([^ ]+)/g;\r\n\r\n kendo.applyEventMap = function(events, ns) {\r\n events = events.replace(eventRegEx, getEventMap);\r\n\r\n if (ns) {\r\n events = events.replace(eventRegEx, \"$1.\" + ns);\r\n }\r\n\r\n return events;\r\n };\r\n\r\n var on = $.fn.on;\r\n\r\n function kendoJQuery(selector, context) {\r\n return new kendoJQuery.fn.init(selector, context);\r\n }\r\n\r\n extend(true, kendoJQuery, $);\r\n\r\n kendoJQuery.fn = kendoJQuery.prototype = new $();\r\n\r\n kendoJQuery.fn.constructor = kendoJQuery;\r\n\r\n kendoJQuery.fn.init = function(selector, context) {\r\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\r\n context = kendoJQuery(context);\r\n }\r\n\r\n return $.fn.init.call(this, selector, context, rootjQuery);\r\n };\r\n\r\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\r\n\r\n var rootjQuery = kendoJQuery(document);\r\n\r\n extend(kendoJQuery.fn, {\r\n handler: function(handler) {\r\n this.data(\"handler\", handler);\r\n return this;\r\n },\r\n\r\n autoApplyNS: function(ns) {\r\n this.data(\"kendoNS\", ns || kendo.guid());\r\n return this;\r\n },\r\n\r\n on: function() {\r\n var that = this,\r\n ns = that.data(\"kendoNS\");\r\n\r\n // support for event map signature\r\n if (arguments.length === 1) {\r\n return on.call(that, arguments[0]);\r\n }\r\n\r\n var context = that,\r\n args = slice.call(arguments);\r\n\r\n if (typeof args[args.length -1] === UNDEFINED) {\r\n args.pop();\r\n }\r\n\r\n var callback = args[args.length - 1],\r\n events = kendo.applyEventMap(args[0], ns);\r\n\r\n // setup mouse trap\r\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\r\n MouseEventNormalizer.setupMouseMute();\r\n\r\n var selector = args.length === 2 ? null : args[1],\r\n bustClick = events.indexOf(\"click\") > -1 && events.indexOf(\"touchend\") > -1;\r\n\r\n on.call(this,\r\n {\r\n touchstart: MouseEventNormalizer.muteMouse,\r\n touchend: MouseEventNormalizer.unMuteMouse\r\n },\r\n selector,\r\n {\r\n bustClick: bustClick\r\n });\r\n }\r\n\r\n if (typeof callback === STRING) {\r\n context = that.data(\"handler\");\r\n callback = context[callback];\r\n\r\n args[args.length - 1] = function(e) {\r\n callback.call(context, e);\r\n };\r\n }\r\n\r\n args[0] = events;\r\n\r\n on.apply(that, args);\r\n\r\n return that;\r\n },\r\n\r\n kendoDestroy: function(ns) {\r\n ns = ns || this.data(\"kendoNS\");\r\n\r\n if (ns) {\r\n this.off(\".\" + ns);\r\n }\r\n\r\n return this;\r\n }\r\n });\r\n\r\n kendo.jQuery = kendoJQuery;\r\n kendo.eventMap = eventMap;\r\n\r\n kendo.timezone = (function(){\r\n var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\r\n var days = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\r\n\r\n function ruleToDate(year, rule) {\r\n var date;\r\n var targetDay;\r\n var ourDay;\r\n var month = rule[3];\r\n var on = rule[4];\r\n var time = rule[5];\r\n var cache = rule[8];\r\n\r\n if (!cache) {\r\n rule[8] = cache = {};\r\n }\r\n\r\n if (cache[year]) {\r\n return cache[year];\r\n }\r\n\r\n if (!isNaN(on)) {\r\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\r\n } else if (on.indexOf(\"last\") === 0) {\r\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\r\n\r\n targetDay = days[on.substr(4, 3)];\r\n ourDay = date.getUTCDay();\r\n\r\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\r\n } else if (on.indexOf(\">=\") >= 0) {\r\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\r\n\r\n targetDay = days[on.substr(0, 3)];\r\n ourDay = date.getUTCDay();\r\n\r\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\r\n }\r\n\r\n return cache[year] = date;\r\n }\r\n\r\n function findRule(utcTime, rules, zone) {\r\n rules = rules[zone];\r\n\r\n if (!rules) {\r\n var time = zone.split(\":\");\r\n var offset = 0;\r\n\r\n if (time.length > 1) {\r\n offset = time[0] * 60 + Number(time[1]);\r\n }\r\n\r\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\r\n }\r\n\r\n var year = new Date(utcTime).getUTCFullYear();\r\n\r\n rules = jQuery.grep(rules, function(rule) {\r\n var from = rule[0];\r\n var to = rule[1];\r\n\r\n return from <= year && (to >= year || (from == year && to == \"only\") || to == \"max\");\r\n });\r\n\r\n rules.push(utcTime);\r\n\r\n rules.sort(function(a, b) {\r\n if (typeof a != \"number\") {\r\n a = Number(ruleToDate(year, a));\r\n }\r\n\r\n if (typeof b != \"number\") {\r\n b = Number(ruleToDate(year, b));\r\n }\r\n\r\n return a - b;\r\n });\r\n\r\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\r\n\r\n return isNaN(rule) ? rule : null;\r\n }\r\n\r\n function findZone(utcTime, zones, timezone) {\r\n var zoneRules = zones[timezone];\r\n\r\n if (typeof zoneRules === \"string\") {\r\n zoneRules = zones[zoneRules];\r\n }\r\n\r\n if (!zoneRules) {\r\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\r\n }\r\n\r\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\r\n var until = zoneRules[idx][3];\r\n\r\n if (until && utcTime > until) {\r\n break;\r\n }\r\n }\r\n\r\n var zone = zoneRules[idx + 1];\r\n\r\n if (!zone) {\r\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + \".\");\r\n }\r\n\r\n return zone;\r\n }\r\n\r\n function zoneAndRule(utcTime, zones, rules, timezone) {\r\n if (typeof utcTime != NUMBER) {\r\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(),\r\n utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(),\r\n utcTime.getSeconds(), utcTime.getMilliseconds());\r\n }\r\n\r\n var zone = findZone(utcTime, zones, timezone);\r\n\r\n return {\r\n zone: zone,\r\n rule: findRule(utcTime, rules, zone[1])\r\n };\r\n }\r\n\r\n function offset(utcTime, timezone) {\r\n if (timezone == \"Etc/UTC\" || timezone == \"Etc/GMT\") {\r\n return 0;\r\n }\r\n\r\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\r\n var zone = info.zone;\r\n var rule = info.rule;\r\n\r\n return rule? zone[0] - rule[6] : zone[0];\r\n }\r\n\r\n function abbr(utcTime, timezone) {\r\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\r\n var zone = info.zone;\r\n var rule = info.rule;\r\n\r\n var base = zone[2];\r\n\r\n if (base.indexOf(\"/\") >= 0) {\r\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\r\n } else if (base.indexOf(\"%s\") >= 0) {\r\n return base.replace(\"%s\", (!rule || rule[7] == \"-\") ? '' : rule[7]);\r\n }\r\n\r\n return base;\r\n }\r\n\r\n function convert(date, fromOffset, toOffset) {\r\n if (typeof fromOffset == STRING) {\r\n fromOffset = this.offset(date, fromOffset);\r\n }\r\n\r\n if (typeof toOffset == STRING) {\r\n toOffset = this.offset(date, toOffset);\r\n }\r\n\r\n var fromLocalOffset = date.getTimezoneOffset();\r\n\r\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\r\n\r\n var toLocalOffset = date.getTimezoneOffset();\r\n\r\n return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\r\n }\r\n\r\n function apply(date, timezone) {\r\n return this.convert(date, date.getTimezoneOffset(), timezone);\r\n }\r\n\r\n function remove(date, timezone) {\r\n return this.convert(date, timezone, date.getTimezoneOffset());\r\n }\r\n\r\n function toLocalDate(time) {\r\n return this.apply(new Date(time), \"Etc/UTC\");\r\n }\r\n\r\n return {\r\n zones: {},\r\n rules: {},\r\n offset: offset,\r\n convert: convert,\r\n apply: apply,\r\n remove: remove,\r\n abbr: abbr,\r\n toLocalDate: toLocalDate\r\n };\r\n })();\r\n\r\n kendo.date = (function(){\r\n var MS_PER_MINUTE = 60000,\r\n MS_PER_DAY = 86400000;\r\n\r\n function adjustDST(date, hours) {\r\n if (hours === 0 && date.getHours() === 23) {\r\n date.setHours(date.getHours() + 2);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function setDayOfWeek(date, day, dir) {\r\n var hours = date.getHours();\r\n\r\n dir = dir || 1;\r\n day = ((day - date.getDay()) + (7 * dir)) % 7;\r\n\r\n date.setDate(date.getDate() + day);\r\n adjustDST(date, hours);\r\n }\r\n\r\n function dayOfWeek(date, day, dir) {\r\n date = new Date(date);\r\n setDayOfWeek(date, day, dir);\r\n return date;\r\n }\r\n\r\n function firstDayOfMonth(date) {\r\n return new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n 1\r\n );\r\n }\r\n\r\n function lastDayOfMonth(date) {\r\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0),\r\n first = firstDayOfMonth(date),\r\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\r\n\r\n if (timeOffset) {\r\n last.setHours(first.getHours() + (timeOffset / 60));\r\n }\r\n\r\n return last;\r\n }\r\n\r\n function getDate(date) {\r\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\r\n adjustDST(date, 0);\r\n return date;\r\n }\r\n\r\n function toUtcTime(date) {\r\n return Date.UTC(date.getFullYear(), date.getMonth(),\r\n date.getDate(), date.getHours(), date.getMinutes(),\r\n date.getSeconds(), date.getMilliseconds());\r\n }\r\n\r\n function getMilliseconds(date) {\r\n return date.getTime() - getDate(date);\r\n }\r\n\r\n function isInTimeRange(value, min, max) {\r\n var msMin = getMilliseconds(min),\r\n msMax = getMilliseconds(max),\r\n msValue;\r\n\r\n if (!value || msMin == msMax) {\r\n return true;\r\n }\r\n\r\n if (min >= max) {\r\n max += MS_PER_DAY;\r\n }\r\n\r\n msValue = getMilliseconds(value);\r\n\r\n if (msMin > msValue) {\r\n msValue += MS_PER_DAY;\r\n }\r\n\r\n if (msMax < msMin) {\r\n msMax += MS_PER_DAY;\r\n }\r\n\r\n return msValue >= msMin && msValue <= msMax;\r\n }\r\n\r\n function isInDateRange(value, min, max) {\r\n var msMin = min.getTime(),\r\n msMax = max.getTime(),\r\n msValue;\r\n\r\n if (msMin >= msMax) {\r\n msMax += MS_PER_DAY;\r\n }\r\n\r\n msValue = value.getTime();\r\n\r\n return msValue >= msMin && msValue <= msMax;\r\n }\r\n\r\n function addDays(date, offset) {\r\n var hours = date.getHours();\r\n date = new Date(date);\r\n\r\n setTime(date, offset * MS_PER_DAY);\r\n adjustDST(date, hours);\r\n return date;\r\n }\r\n\r\n function setTime(date, milliseconds, ignoreDST) {\r\n var offset = date.getTimezoneOffset();\r\n var difference;\r\n\r\n date.setTime(date.getTime() + milliseconds);\r\n\r\n if (!ignoreDST) {\r\n difference = date.getTimezoneOffset() - offset;\r\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\r\n }\r\n }\r\n\r\n function today() {\r\n return getDate(new Date());\r\n }\r\n\r\n function isToday(date) {\r\n return getDate(date).getTime() == today().getTime();\r\n }\r\n\r\n function toInvariantTime(date) {\r\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\r\n\r\n if (date) {\r\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n }\r\n\r\n return staticDate;\r\n }\r\n\r\n return {\r\n adjustDST: adjustDST,\r\n dayOfWeek: dayOfWeek,\r\n setDayOfWeek: setDayOfWeek,\r\n getDate: getDate,\r\n isInDateRange: isInDateRange,\r\n isInTimeRange: isInTimeRange,\r\n isToday: isToday,\r\n nextDay: function(date) {\r\n return addDays(date, 1);\r\n },\r\n previousDay: function(date) {\r\n return addDays(date, -1);\r\n },\r\n toUtcTime: toUtcTime,\r\n MS_PER_DAY: MS_PER_DAY,\r\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\r\n MS_PER_MINUTE: MS_PER_MINUTE,\r\n setTime: setTime,\r\n addDays: addDays,\r\n today: today,\r\n toInvariantTime: toInvariantTime,\r\n firstDayOfMonth: firstDayOfMonth,\r\n lastDayOfMonth: lastDayOfMonth,\r\n getMilliseconds: getMilliseconds\r\n //TODO methods: combine date portion and time portion from arguments - date1, date 2\r\n };\r\n })();\r\n\r\n\r\n kendo.stripWhitespace = function(element) {\r\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function(node) {\r\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\r\n }, false);\r\n\r\n while (iterator.nextNode()) {\r\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\r\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\r\n }\r\n }\r\n };\r\n\r\n var animationFrame = window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function(callback){ setTimeout(callback, 1000 / 60); };\r\n\r\n kendo.animationFrame = function(callback) {\r\n animationFrame.call(window, callback);\r\n };\r\n\r\n var animationQueue = [];\r\n\r\n kendo.queueAnimation = function(callback) {\r\n animationQueue[animationQueue.length] = callback;\r\n if (animationQueue.length === 1) {\r\n kendo.runNextAnimation();\r\n }\r\n };\r\n\r\n kendo.runNextAnimation = function() {\r\n kendo.animationFrame(function() {\r\n if (animationQueue[0]) {\r\n animationQueue.shift()();\r\n if (animationQueue[0]) {\r\n kendo.runNextAnimation();\r\n }\r\n }\r\n });\r\n };\r\n\r\n kendo.parseQueryStringParams = function(url) {\r\n var queryString = url.split('?')[1] || \"\",\r\n params = {},\r\n paramParts = queryString.split(/&|=/),\r\n length = paramParts.length,\r\n idx = 0;\r\n\r\n for (; idx < length; idx += 2) {\r\n if(paramParts[idx] !== \"\") {\r\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\r\n }\r\n }\r\n\r\n return params;\r\n };\r\n\r\n var OS = kendo.support.mobileOS,\r\n invalidZeroEvents = OS && OS.android,\r\n mobileChrome = (invalidZeroEvents && OS.browser == \"chrome\");\r\n\r\n kendo.elementUnderCursor = function(e) {\r\n if (mobileChrome) {\r\n return document.elementFromPoint(e.x.screen, e.y.screen);\r\n } else {\r\n return document.elementFromPoint(e.x.client, e.y.client);\r\n }\r\n };\r\n\r\n kendo.wheelDeltaY = function(jQueryEvent) {\r\n var e = jQueryEvent.originalEvent,\r\n deltaY = e.wheelDeltaY,\r\n delta;\r\n\r\n if (e.wheelDelta) { // Webkit and IE\r\n if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\r\n delta = e.wheelDelta;\r\n }\r\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\r\n delta = (-e.detail) * 10;\r\n }\r\n\r\n return delta;\r\n };\r\n\r\n kendo.caret = function (element, start, end) {\r\n var rangeElement;\r\n var isPosition = start !== undefined;\r\n\r\n if (end === undefined) {\r\n end = start;\r\n }\r\n\r\n if (element[0]) {\r\n element = element[0];\r\n }\r\n\r\n if (isPosition && element.disabled) {\r\n return;\r\n }\r\n\r\n try {\r\n if (element.selectionStart !== undefined) {\r\n if (isPosition) {\r\n element.focus();\r\n element.setSelectionRange(start, end);\r\n } else {\r\n start = [element.selectionStart, element.selectionEnd];\r\n }\r\n } else if (document.selection) {\r\n if ($(element).is(\":visible\")) {\r\n element.focus();\r\n }\r\n\r\n rangeElement = element.createTextRange();\r\n\r\n if (isPosition) {\r\n rangeElement.collapse(true);\r\n rangeElement.moveStart(\"character\", start);\r\n rangeElement.moveEnd(\"character\", end - start);\r\n rangeElement.select();\r\n } else {\r\n var rangeDuplicated = rangeElement.duplicate(),\r\n selectionStart, selectionEnd;\r\n\r\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\r\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\r\n selectionStart = rangeDuplicated.text.length;\r\n selectionEnd = selectionStart + rangeElement.text.length;\r\n\r\n start = [selectionStart, selectionEnd];\r\n }\r\n }\r\n } catch(e) {\r\n /* element is not focused or it is not in the DOM */\r\n start = [];\r\n }\r\n\r\n return start;\r\n };\r\n\r\n})(jQuery);\r\n\r\nreturn window.kendo;\r\n\r\n}, typeof define == 'function' && define.amd ? define : function(_, f){ f(); });","export {\r\n defineConstProperty,\r\n defineProducedProperty,\r\n defineProducedPropertyOnClass,\r\n defineComputedProperty,\r\n hasOwnProperty\r\n} from './src/properties';\r\n\r\n","/**\r\n * the reflection module for property defintions\r\n */\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * Define a const property\r\n * @param {Object} obj - the host object of the proprty\r\n * @param {String} name - the name of the property\r\n * @param {Object} value - the value of the property\r\n * @return {Object} the host object\r\n */\r\nexport function defineConstProperty(obj: T, name: string, value: any): T {\r\n return Object.defineProperty(obj, name, {\r\n value,\r\n enumerable: true,\r\n writable: false,\r\n });\r\n}\r\n\r\n/**\r\n * Define a produced property with a factory\r\n * @param {Object} obj - the host object of the proprty\r\n * @param {String} name - the name of the property\r\n * @param {Function} factory - the factory to produce the property value\r\n * @return {Object} the host object\r\n */\r\nexport function defineProducedProperty(obj: T, name: string, factory: (this: T) => any): T {\r\n return Object.defineProperty(obj, name, {\r\n get() {\r\n const value = factory.apply(obj);\r\n\r\n defineConstProperty(obj, name, value);\r\n return value;\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n}\r\n\r\n/**\r\n * Define a produced property on a class\r\n * @param {Class} Class - the host class of the proprty\r\n * @param {String} name - the name of the property\r\n * @param {Function} factory - the factory to produce the property value\r\n * @return {Class} the host class\r\n */\r\nexport function defineProducedPropertyOnClass(Class: TClass, name: string, factory: (this: T) => any): TClass {\r\n // TODO: wewei, use ES6 Symbol to implement this when babel-polyfill is ready\r\n const RAND_MAX = 65535;\r\n const className = Class.name || `Anony${_.random(0, RAND_MAX)}`;\r\n const symbol = `__${className}_${name}`;\r\n\r\n Object.defineProperty(Class.prototype, name, {\r\n get() {\r\n if (!Object.prototype.hasOwnProperty.call(this, symbol)) {\r\n defineConstProperty(this, symbol, factory.apply(this));\r\n }\r\n return this[symbol];\r\n },\r\n enumerable: true,\r\n });\r\n\r\n return Class;\r\n}\r\n\r\n/**\r\n * Define a computed property whose value is computed each time the getter being called\r\n * @param {Object} obj - the host object of the proprty\r\n * @param {String} name - the name of the property\r\n * @param {Function} getter - the getter to compute the property value\r\n * @return {Object} the host object\r\n */\r\nexport function defineComputedProperty(obj: T, name: string, getter: () => any): T {\r\n return Object.defineProperty(obj, name, {\r\n get: getter,\r\n enumerable: true,\r\n });\r\n}\r\n\r\n// Make the functions chainable with underscorejs\r\n_.mixin({\r\n defineConstProperty,\r\n defineProducedProperty,\r\n defineProducedPropertyOnClass,\r\n defineComputedProperty,\r\n});\r\n\r\n/**\r\n * Detect whether or not a object has certain property without evaluation\r\n * @param {Object} obj - the host class of the proprty\r\n * @param {String} name - the name of the property\r\n * @return {Boolean} whether the property is defined\r\n */\r\nexport function hasOwnProperty(obj: {}, name: string): boolean {\r\n return !!Object.getOwnPropertyDescriptor(obj, name);\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","export { OneDSListener } from './src/oneds-listener';\r\n","import _ from 'underscore';\r\nimport { ApplicationInsights } from '@microsoft/1ds-analytics-web-js';\r\nimport { Listener } from '@bingads-webui/listener';\r\nimport { defaultConfig } from './default-config';\r\n\r\n/**\r\n * Class of OneDS listener\r\n */\r\nexport class OneDSListener extends Listener {\r\n constructor(options = {}) {\r\n super(options);\r\n this.options = _.defaults(options, {\r\n transmitProfile: defaultConfig.transmitProfile,\r\n batchSize: defaultConfig.batchSize,\r\n });\r\n this.formatters = _.defaults(this.options.formatters || {}, defaultConfig.formatters);\r\n this.filters = this.options.filters || [];\r\n this.logTableNames = this.options.logTableNames;\r\n this.defaultLogCategory = this.options.defaultLogCategory;\r\n }\r\n\r\n /**\r\n * init\r\n * @returns {undefined} - no returns\r\n */\r\n init() {\r\n if (!this.options.tenantToken || this.initialized) {\r\n return;\r\n }\r\n\r\n // Setup Telemetry\r\n const analytics = new ApplicationInsights();\r\n const config = {\r\n instrumentationKey: this.options.tenantToken,\r\n channelConfiguration: {\r\n autoFlushEventsLimit: this.options.batchSize,\r\n },\r\n webAnalyticsConfiguration: {\r\n autoCapture: {\r\n pageView: true,\r\n onLoad: true,\r\n onUnload: true,\r\n },\r\n },\r\n };\r\n // Initialize SDK\r\n analytics.initialize(config, []);\r\n\r\n this.postChannel = analytics.getPostChannel();\r\n // eslint-disable-next-line no-underscore-dangle\r\n this.postChannel._setTransmitProfile(this.options.transmitProfile);\r\n\r\n this.analytics = analytics;\r\n\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * flushes logs to Aria and tears down the logger\r\n * @returns {undefined} - no returns\r\n */\r\n teardown() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.initialized = false;\r\n\r\n this.analytics.unload();\r\n }\r\n\r\n /**\r\n * writes logs to the listener\r\n * @param {object} logMessage - logs to be written\r\n * @returns {undefined} - no returns\r\n */\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const categoryName = this.getCategoryName(logMessage.logCategory);\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n this.analytics.trackEvent({\r\n name: this.logTableNames[categoryName].name,\r\n data: formattedMsg,\r\n });\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {object} logCategory - logs to be written\r\n * @returns {undefined} - no returns\r\n */\r\n getCategoryName(logCategory) {\r\n const isValidLogCategory = _.has(this.logTableNames, logCategory);\r\n return isValidLogCategory ? logCategory : this.defaultLogCategory;\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__61__;","import { OneDSPropertyFormatter } from './formatters/log-property-formatter';\r\n\r\nconst propertyFormatter = new OneDSPropertyFormatter();\r\n\r\nexport const defaultConfig = {\r\n formatters: { propertyFormatter },\r\n transmitProfile: 'REAL_TIME',\r\n batchSize: 50,\r\n};\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class OneDSPropertyFormatter extends Formatter {\r\n format(logMessage) {\r\n return _.mapObject(logMessage, val => ({\r\n value: val,\r\n }));\r\n }\r\n}\r\n","export * from './src/index';\r\n","export * from './bulkify';\r\nexport * from './bulk-upsert-util';\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\n\r\n// this is for backward compatibility. legacy code put schema to property named schema\r\nfunction getSchemaOfSubAttr(schema, attrName) {\r\n if (schema.properties[attrName].type === 'array') {\r\n return schema.properties[attrName].items.schema || schema.properties[attrName].items;\r\n }\r\n\r\n return schema.properties[attrName].schema || schema.properties[attrName];\r\n}\r\n\r\n// this is for backward compatibility. new schema put name in $$ODataExtension\r\nfunction getSchemaName(schema) {\r\n return schema.name || schema.$$ODataExtension.Name;\r\n}\r\n\r\nexport function serialize(schema, attrs) {\r\n var rows = getCSVRows(schema, attrs);\r\n\r\n var formatRow = {\r\n Type: 'Format Version',\r\n Name: '6'\r\n };\r\n\r\n rows.splice(0, 0, formatRow);\r\n\r\n return generateCsvRows(rows);\r\n}\r\n\r\nfunction getCSVRows(rootSchema, attributesList, clientIdPrefix) {\r\n\r\n var csvRows = [];\r\n\r\n //ensuring that the input list is an array (first level entity is always a solo object)\r\n if (!_.isArray(attributesList)) {\r\n attributesList = [attributesList];\r\n }\r\n\r\n var traverses = [];\r\n var clientIds = [];\r\n _.each(attributesList, function(attributes, index) {\r\n if((!_.isString(attributes['Client Id']) && !_.isNumber(attributes['Client Id'])) || _.contains(clientIds, attributes['Client Id'])) {\r\n attributes['Client Id'] = (clientIdPrefix ? (clientIdPrefix + '-'): '') + index.toString();\r\n }\r\n\r\n var traverseResult = traverseFields(attributes, rootSchema);\r\n traverses.push(traverseResult);\r\n clientIds.push(attributes['Client Id']);\r\n });\r\n\r\n var nextRootResults = [];\r\n _.each(traverses, function(rowResult, rowIndex) {\r\n var attributes = rowResult.attributes,\r\n currentRow = rowResult.currentRow,\r\n nextRoots = rowResult.nextRoots,\r\n nextRootSchemas = rowResult.nextRootSchemas;\r\n if (rootSchema.properties['bulk-upload-type']) {\r\n currentRow['Type'] = rootSchema.properties['bulk-upload-type'].value;\r\n }\r\n csvRows.push(currentRow);\r\n\r\n _.each(nextRoots, function(nextRoot, index) {\r\n var csvRows = getCSVRows(nextRootSchemas[index], attributes[nextRoot], clientIds[rowIndex] + '-' + index.toString());\r\n nextRootResults.push(csvRows);\r\n });\r\n });\r\n\r\n\r\n _.each(_.flatten(nextRootResults, true), function(row) {\r\n csvRows.push(row);\r\n });\r\n\r\n return csvRows;\r\n}\r\n\r\nfunction getCsvHeaderName(attr, schema) {\r\n return !_.isUndefined(schema.properties[attr]['bulk-upload-header']) ? schema.properties[attr]['bulk-upload-header'] : attr;\r\n}\r\n\r\nfunction getCsvValue(attr, schema, value) {\r\n if (_.isNull(value) ||\r\n (schema.properties[attr].bulkDeleteValueIfEmpty && ((_.isString(value) && _.isEmpty(value.trim())) || _.isEmpty(value)))) {\r\n return 'delete_value';\r\n }\r\n\r\n var func = schema.properties[attr]['bulk-upload-mapper'];\r\n value = !_.isFunction(func) ? value : func(value);\r\n\r\n if (_.contains(value, '\"')) {\r\n value = value.replace(/\"/g, '\"\"');\r\n }\r\n\r\n if (_.contains(value, ',') || _.contains(value, '\"') || _.contains(value, '\\n')) {\r\n value = '\"' + value + '\"';\r\n }\r\n\r\n return value;\r\n}\r\n\r\n//traversing fields for each set of attributes in the list, returning:\r\n//- currentRow: data to send to MT for the given object(csv header names and values)\r\n//- nextRoots: inner objects that need to be traversed again for new data (like when Campaign includes AdGroups)\r\n//- nextRootSchemas: Schemas to be used for the next inner objects (based on their type).\r\n//- attributes: attributes that are passed to the function with the client Ids added to them.\r\nfunction traverseFields(attrs, schema) {\r\n var currentRow = {},\r\n nextRoots = [],\r\n nextRootSchemas = [];\r\n\r\n _.each(attrs, function(value, attr) {\r\n if (attr === 'Client Id') {\r\n currentRow[attr] = value;\r\n return;\r\n }\r\n\r\n //reject the function if there is any attribute not found in the schema\r\n if (!_.has(schema.properties, attr)) {\r\n throw new Error('invalid property ' + attr + ' is passed!');\r\n }\r\n\r\n var innerPropertySchema = null;\r\n //deciding if the current attr has schema\r\n if (schema.properties[attr].type === 'object'\r\n || schema.properties[attr].type === 'array') {\r\n innerPropertySchema = getSchemaOfSubAttr(schema, attr);\r\n };\r\n\r\n\r\n if (innerPropertySchema) {\r\n //skipping the budget schema as it has the Id but it shouldn't be considered as a root entity\r\n //todo [imang]: this should be a temporary fix. We have to think this through and find the optimal solution to find root entities\r\n // todo: SharedEntityAssociation is root, however it has EntityId and SharedEntityId, but not Id\r\n var isRootEntity = (getSchemaName(innerPropertySchema) === 'SharedEntityAssociation')\r\n || (getSchemaName(innerPropertySchema) !== 'Budget'\r\n && getSchemaName(innerPropertySchema) !== 'AssetLink'\r\n && _.has(innerPropertySchema.properties, 'Id'));\r\n\r\n //deciding if the attr is a foreign key link or a complete object needs to be further traversed\r\n var attrKeys = _.keys(value);\r\n var isObjectAForeignKey = schema.properties[attr].type === 'object' && _.size(attrKeys) === 1 && attrKeys[0] === 'Id';\r\n if (isRootEntity) {\r\n if (isObjectAForeignKey) {\r\n //todo [imang]: currently the only relationship defined and handled in the adapter is the Parent Relationship. Should make this more generic in the future.\r\n currentRow['Parent ID'] = value['Id'];\r\n } else {\r\n nextRoots.push(attr);\r\n nextRootSchemas.push(innerPropertySchema);\r\n }\r\n } else if (schema.properties[attr]['bulk-upload-mapper']) {\r\n // check if it needs custom mapping\r\n currentRow[getCsvHeaderName(attr, schema)] = getCsvValue(attr, schema, value);\r\n } else if (getSchemaOfSubAttr(schema, attr)['bulk-upload-full-mapper']) {\r\n if (_.isFunction(getSchemaOfSubAttr(schema, attr)['bulk-upload-full-mapper'])) {\r\n var keyValues = getSchemaOfSubAttr(schema, attr)['bulk-upload-full-mapper'](value);\r\n _.each(keyValues, function(pair) {\r\n currentRow[pair.key] = pair.value;\r\n });\r\n }\r\n } else {\r\n //if the loaded schema is not representing a root entity\r\n //extract the values from inside and populate to the current row object (e.g. Budget)\r\n //TODO [imang]: currently only supports one level traversal\r\n // TODO [imang]: handling special case for the Budget entity that has other properties that should be skipped.\r\n var propsToIterate = getSchemaName(innerPropertySchema) === 'Budget' ? _.pick(innerPropertySchema.properties, 'Amount', 'Type') : innerPropertySchema.properties;\r\n for (var prop in propsToIterate) {\r\n currentRow[getCsvHeaderName(prop, innerPropertySchema)] = getCsvValue(prop, innerPropertySchema, value[prop]);\r\n }\r\n }\r\n } else {\r\n if (schema.properties[attr]['bulk-upload-flattened']) {\r\n if (schema.properties[attr]['bulk-upload-enum']) {\r\n var enumIndex = schema.properties[attr].enum.indexOf(value);\r\n var csvHeaderName = schema.properties[attr]['bulk-upload-enum'][enumIndex];\r\n currentRow[csvHeaderName] = 'ON';\r\n }\r\n } else if (_.isFunction(schema.properties[attr]['bulk-upload-full-mapper'])) {\r\n var pairs = schema.properties[attr]['bulk-upload-full-mapper'](value);\r\n _.each(pairs, function(pair) {\r\n currentRow[pair.key] = pair.value;\r\n });\r\n } else {\r\n currentRow[getCsvHeaderName(attr, schema)] = getCsvValue(attr, schema, value);\r\n }\r\n }\r\n });\r\n\r\n return {\r\n attributes : attrs,\r\n currentRow : currentRow,\r\n nextRoots : nextRoots,\r\n nextRootSchemas : nextRootSchemas\r\n };\r\n}\r\n\r\nfunction getCsvColumns(rows) {\r\n return _.uniq(_.union(_.flatten(_.map(rows, function(row) {return _.keys(row);})), ['Id', 'Parent ID']));\r\n}\r\n\r\nfunction generateCsvRows(rows) {\r\n var columns = getCsvColumns(rows),\r\n result = [];\r\n //first line is the list of columns\r\n var line = columns.join();\r\n result.push(line);\r\n\r\n _.each(rows, function(row) {\r\n line = '';\r\n _.each(columns, function(column) {\r\n line += ((_.has(row, column) && !_.isUndefined(row[column])) ? row[column] : '') + ',';\r\n });\r\n line = line.slice(0, -1);\r\n result.push(line);\r\n });\r\n return result;\r\n}\r\n\r\nfunction convertCsvDataInTextToCsvArray(csvData) {\r\n var csvDataArray = [];\r\n var csvDataRows = [];\r\n var pos = 0;\r\n\r\n while (pos < csvData.length - 1) {\r\n csvDataArray.push(csvData.slice(pos, csvData.indexOf('\\n', pos) - 1));\r\n pos = csvData.indexOf('\\n', pos) + 1;\r\n }\r\n\r\n _.each(csvDataArray, function(csvDataRow) {\r\n var rowData = csvDataRow.split(',');\r\n csvDataRows.push(rowData);\r\n });\r\n\r\n return csvDataRows;\r\n}\r\n\r\nexport function parse(csvData, isTextType) {\r\n var results = [];\r\n\r\n if (!_.isUndefined(isTextType)) {\r\n csvData = convertCsvDataInTextToCsvArray(csvData);\r\n }\r\n\r\n var headers = csvData[0];\r\n //first line is header, second line is format version. needs to be skipped.\r\n var data = csvData.slice(2);\r\n _.each(data, function(row) {\r\n var obj = {};\r\n for (var col = 0; col < row.length; col++) {\r\n obj[headers[col]] = row[col];\r\n }\r\n results.push(obj);\r\n });\r\n\r\n var errors = getErrorRows(results);\r\n return {\r\n results: results,\r\n errors: errors\r\n };\r\n}\r\n\r\nexport function findEntityWithClientId(data, clientId) {\r\n if (!_.isArray(data)) {\r\n if (data['Client Id'] === clientId) {\r\n return data;\r\n } else {\r\n for (var attr in data) {\r\n if (_.isArray(data[attr])) {\r\n return findEntityWithClientId(data[attr], clientId);\r\n }\r\n }\r\n }\r\n } else {\r\n _.each(data, function(singleData) {\r\n var ret = findEntityWithClientId(singleData, clientId);\r\n if (ret) {\r\n return ret;\r\n }\r\n });\r\n }\r\n return null;\r\n}\r\n\r\nfunction setId(data, clientId, id) {\r\n if (!_.isArray(data)) {\r\n if (data['Client Id'] === clientId) {\r\n data['Id'] = id;\r\n //delete data['Client Id'];\r\n return;\r\n } else {\r\n for (var attr in data) {\r\n if (_.isArray(data[attr])) {\r\n setId(data[attr], clientId, id);\r\n }\r\n }\r\n }\r\n } else {\r\n _.each(data, function(singleData) {setId(singleData, clientId, id);});\r\n }\r\n}\r\n\r\nexport function populateIds(csvData, clientData) {\r\n var ret = clientData;\r\n _.each(csvData, function(csvRow) {\r\n if (csvRow['Id']) {\r\n setId(ret, csvRow['Client Id'], csvRow['Id']);\r\n }\r\n });\r\n return ret;\r\n}\r\n\r\nfunction getErrorRows(csvData) {\r\n var errors = _.filter(csvData, function(item) {\r\n return item.Type.indexOf(' Error') > -1;\r\n });\r\n\r\n //Parsing error process-> Property-> EditorialCode->ErrorNumber->Error\r\n return _.map(errors || [], function (error) {\r\n return {\r\n 'EditorialCode' : error['Editorial Reason Code'] || '',\r\n 'EditorialLocation' : error['Editorial Location'] || '',\r\n 'EditorialTerm' : error['Editorial Term'] || '',\r\n 'ErrorNumber' : error['Error Number'] || '',\r\n 'Property' : error['Field Path'] || '',\r\n 'Error' : error.Error || '',\r\n 'Client Id' : error['Client Id'] || '',\r\n 'Type' : error.Type || '',\r\n 'Id' : error.Id || '',\r\n 'Parent Id' : error['Parent Id'] || ''\r\n };\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n// TODOs [imang]:\r\n// 1. functions to build odata Uri should be generalized\r\n// in odata-core and be removed from this file.\r\n// 2. error handling: errors should be propagated all the way\r\n// to their place inside the object hierarchy.\r\n// for now, they are aggregated in the errors field in the top level of\r\n// each returned instance to the caller.\r\n// 3. referencing should only be implicitly done by the caller.\r\n// for now, all sub-entities inside Campaigns/AdGroups\r\n// should explicitly specify either the Campaign/AdGroupId\r\n// or Campaign/AdGroupName fields in order to define the relationship.\r\n// this should be changed in a way that adapter finds\r\n// the related ids based on the hierarchy definition.\r\n\r\nfunction getCast(options) {\r\n return (options && !_.isEmpty(options.cast)) ? (`/${options.cast}`) : '';\r\n}\r\n\r\nfunction getParent(options) {\r\n return (options && !_.isEmpty(options.parent)) ? (`${options.parent}/`) : '';\r\n}\r\n\r\nexport function getUri(options) {\r\n return `/Customers(:advertisercustomer_id)/Accounts(:account_id)/${getParent(options)}Default.BulkUpsert${getCast(options)}`;\r\n}\r\n\r\nexport function extractEntityErrors(errors, index) {\r\n return _.filter(errors, error => parseInt(error['Client Id'][0], 10) === index);\r\n}\r\n\r\nexport function buildDestroyObject(parent, id, parentId) {\r\n const obj = {\r\n Id: id,\r\n Status: 'Deleted',\r\n };\r\n\r\n const parentFkObject = {\r\n Id: _.isUndefined(parentId) ? '' : parentId,\r\n };\r\n\r\n if (parent) {\r\n obj[parent] = parentFkObject;\r\n }\r\n\r\n return obj;\r\n}\r\n\r\nfunction buildCreateObject(attrs) {\r\n return _.omit(attrs, 'Id');\r\n}\r\n\r\nexport function hasReadOnlyFields(attrs, properties) {\r\n return _.some(attrs, (v, k) => properties[k] && properties[k].isReadOnly);\r\n}\r\n\r\nexport function getAttrsToSerialize(id, attrs, schema) {\r\n if (hasReadOnlyFields(attrs, schema.properties)) {\r\n const parentId = get(\r\n get(attrs, schema.parent, {}),\r\n 'Id',\r\n undefined\r\n );\r\n\r\n return [\r\n buildDestroyObject(schema.parent, id, parentId),\r\n buildCreateObject(attrs),\r\n ];\r\n }\r\n\r\n return _.defaults(attrs, {\r\n Id: id,\r\n });\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","module.exports = __WEBPACK_EXTERNAL_MODULE__53__;","\r\n\r\nexport { singleton as PageReady } from './src/index';\r\n","import PageReady from './page-ready';\r\n\r\nexport const singleton = new PageReady();\r\n","import Promise from 'bluebird';\r\n\r\nconst GLOBAL_PAGE = '';\r\n\r\nexport default class PageReady {\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n this.p$pagesReady = {};\r\n this.resolvePageReadyCbs = {};\r\n }\r\n\r\n /**\r\n * Mark the page as ready. This will resolve the promise\r\n * and initialize all the delayed components.\r\n * @param {String} pageName page name, default is global/any page\r\n * @returns {void}\r\n */\r\n pageIsReady(pageName = GLOBAL_PAGE) {\r\n this.lazyInitializePromise(pageName);\r\n this.resolvePageReadyCbs[pageName]();\r\n\r\n // Also mark the global page as ready if any page is ready\r\n if (pageName !== GLOBAL_PAGE && this.resolvePageReadyCbs[GLOBAL_PAGE]) {\r\n this.resolvePageReadyCbs[GLOBAL_PAGE]();\r\n }\r\n }\r\n\r\n /**\r\n * Returns a promise that will resolve when the page is ready.\r\n * Listeners can use this function to delay execution until the page is ready.\r\n * @param {String} pageName page name, default is global/any page\r\n * @returns {Promise} - Promise that is resolved when the page is marked as ready.\r\n */\r\n afterPageReady(pageName = GLOBAL_PAGE) {\r\n this.lazyInitializePromise(pageName);\r\n return this.p$pagesReady[pageName];\r\n }\r\n\r\n /**\r\n * Lazily create the promise if it doesn't already exist\r\n * @private\r\n * @param {String} pageName page name, default is global/any page\r\n * @returns {void}\r\n */\r\n lazyInitializePromise(pageName = GLOBAL_PAGE) {\r\n if (this.p$pagesReady[pageName]) {\r\n return;\r\n }\r\n this.p$pagesReady[pageName] = new Promise((res) => {\r\n this.resolvePageReadyCbs[pageName] = res;\r\n });\r\n\r\n // Also initialize the global promise since it's tied to any page\r\n if (pageName !== GLOBAL_PAGE && !this.p$pagesReady[GLOBAL_PAGE]) {\r\n this.p$pagesReady[GLOBAL_PAGE] = new Promise((res) => {\r\n this.resolvePageReadyCbs[GLOBAL_PAGE] = res;\r\n });\r\n }\r\n }\r\n}\r\n","export { setupI18nModel } from './src/index';\r\nexport { getCldrLocale } from './src/helper';\r\n","import { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\nimport iana from 'iana-tz-data/iana-tz-data.json';\r\n\r\nexport function setupI18nModel(locale) {\r\n I18nModel.loadCLDRData(core);\r\n I18nModel.loadTimeZoneData(iana);\r\n I18nModel.setGlobalLocale(locale);\r\n\r\n // callback for webpack dynamic import\r\n return ({ default: data }) => {\r\n I18nModel.loadCLDRData(data);\r\n\r\n return null;\r\n };\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__110__;","module.exports = __WEBPACK_EXTERNAL_MODULE__111__;","module.exports = __WEBPACK_EXTERNAL_MODULE__112__;","import _ from 'underscore';\r\nimport Cldr from 'cldrjs';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\n\r\nCldr.load(core);\r\n\r\nexport function getCldrLocale(locale) {\r\n const cldr = new Cldr(locale);\r\n const {\r\n language,\r\n region,\r\n script,\r\n } = cldr.attributes;\r\n\r\n const output = _.find([\r\n `${language}-${script}-${region}`,\r\n `${language}-${region}`,\r\n `${language}-${script}`,\r\n language,\r\n ], l => _.contains(core.availableLocales.modern, l));\r\n\r\n return output;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__23__;","\r\n\r\nexport { Validation } from './src/index';\r\n","import _ from 'underscore';\r\nimport { required } from './validators/required';\r\nimport * as string from './validators/string';\r\nimport * as number from './validators/number';\r\nimport { enumeration } from './validators/enum';\r\nimport * as array from './validators/array';\r\nimport { passive } from './validators/passive';\r\nimport { custom } from './validators/custom';\r\n\r\nfunction run(value, validators) {\r\n const failed = _.find(validators, v => !v.isValid(value));\r\n return failed ? failed.message : undefined;\r\n}\r\n\r\nexport const Validation = {\r\n // validators\r\n required,\r\n string,\r\n number,\r\n enum: enumeration,\r\n array,\r\n passive,\r\n custom,\r\n // end of validators\r\n run, // run validation manually, for using without knockout\r\n};\r\n","import _ from 'underscore';\r\nimport { Base } from './base';\r\n\r\n/**\r\n * Define validator which check whether is empty when field is Required\r\n * @param {boolean} allowSpace - whether allow space in value endpoint\r\n * @param {I18n} i18n - provide getString callback, will be called\r\n * with args 'Validation_NotEmpty_Required_Field\r\n */\r\nclass Required extends Base {\r\n constructor(allowSpace, i18n) {\r\n super(i18n);\r\n\r\n this.allowSpace = !!allowSpace;\r\n this.message = i18n.getString('Validation_NotEmpty_Required_Field');\r\n }\r\n\r\n isValidValue(value) {\r\n return _.isFinite(value) ||\r\n !_.isEmpty(!this.allowSpace && _.isString(value) ? value.trim() : value);\r\n }\r\n}\r\n\r\n/**\r\n * Create a required validator instance\r\n * @param {boolean} allowSpace - whether allow space in value endpoint\r\n * @param {I18n} i18n - provide getString callback\r\n * @returns {Validator} - required validator instance\r\n */\r\nexport function required(allowSpace, i18n) {\r\n return new Required(allowSpace, i18n);\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\n/**\r\n * Base validator class, provide public interface\r\n * @param {I18n} i18n - provide callback getString to get error message, will be called\r\n * with args 'Validation_Base_Field_Not_Valid'\r\n */\r\nexport class Base {\r\n constructor(i18n) {\r\n this.blockInput = false;\r\n this.nullable = false;\r\n this.i18n = i18n;\r\n this.message = i18n.getString('Validation_Base_Field_Not_Valid');\r\n }\r\n\r\n set(options = {}) {\r\n if (!_.isUndefined(options.blockInput)) {\r\n this.blockInput = options.blockInput;\r\n }\r\n\r\n if (!_.isUndefined(options.message)) {\r\n this.message = options.message;\r\n }\r\n\r\n if (!_.isUndefined(options.nullable)) {\r\n this.nullable = options.nullable;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Base method to validate value\r\n * @param {any} value - value to check\r\n * @returns {boolean} - whether value is valid\r\n */\r\n isValid(value) {\r\n return (this.nullable && putil.isNil(value)) || this.isValidValue(value);\r\n }\r\n\r\n /**\r\n * Base method to validate value, if valid, return undefined, otherwise, return error message\r\n * @param {any} value - value to validate\r\n * @returns {undefined|string} - return undefined if valid, otherwise return error message\r\n */\r\n validate(value) {\r\n return this.isValid(value) ? undefined : this.message;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { Base } from './base';\r\nimport * as number from './string-number';\r\n\r\nexport { number };\r\n/**\r\n * Get length of a string, if disgintuish CJK in string, each CJK character counts as 2 charts\r\n * otherwise, count as 1 charts\r\n * @param {string} str - string to compute length\r\n * @param {boolean} distinguishCJK - whether disgintuish CJK in string,\r\n * if not, the function equal to _.size, default value is false\r\n * @returns {int} - the length of string\r\n */\r\nexport function getLength(str, distinguishCJK = false) {\r\n if (!distinguishCJK) {\r\n return _.size(str);\r\n }\r\n\r\n let counts = _.countBy(str, c => (putil.hasCJK(c) ? 'cjk' : 'ascii'));\r\n\r\n counts = _.defaults(counts, {\r\n cjk: 0,\r\n ascii: 0,\r\n });\r\n\r\n return (counts.cjk * 2) + counts.ascii;\r\n}\r\n\r\n/**\r\n * Define a validator check type of value is string\r\n * @param {I18n} i18n - will be called in Base class\r\n */\r\nclass Type extends Base {\r\n isValidValue(value) {\r\n return _.isString(value);\r\n }\r\n}\r\n\r\n/**\r\n * Define a validator check size of string\r\n * @param {int} length - the max length of string\r\n * @param {I18n} i18n - will be called with args 'Validation_String_Max_Length'\r\n * @param {boolean} distinguishCJK - whether distinguish CJK in size check,\r\n * if true, one CJK character count 2\r\n */\r\nclass Size extends Base {\r\n constructor(length, i18n, distinguishCJK = true) {\r\n super(i18n);\r\n\r\n this.blockInput = false;\r\n this.length = length || 0;\r\n this.distinguishCJK = distinguishCJK;\r\n this.message = i18n.getString('Validation_String_Max_Length', { maxlength: this.length });\r\n }\r\n\r\n isValidValue(value) {\r\n return _.isString(value) && putil.getLength(value, this.distinguishCJK) <= this.length;\r\n }\r\n}\r\n\r\n/**\r\n * Define a validator check size of string\r\n * @param {int} length - the min length of string\r\n * @param {I18n} i18n - will be called with args 'Validation_String_Min_Length'\r\n * @param {boolean} distinguishCJK - whether distinguish CJK in size check,\r\n * if true, one CJK character count 2\r\n */\r\nclass MinSize extends Base {\r\n constructor(length, i18n, distinguishCJK = true) {\r\n super(i18n);\r\n\r\n this.blockInput = false;\r\n this.length = length || 0;\r\n this.distinguishCJK = distinguishCJK;\r\n this.message = i18n.getString('Validation_String_Min_Length', { minlength: this.length });\r\n }\r\n\r\n isValidValue(value) {\r\n return _.isString(value) && putil.getLength(value, this.distinguishCJK) >= this.length;\r\n }\r\n}\r\n\r\n/**\r\n * Define a validator check whether value is XSS code\r\n * @param {I18n} i18n - will be called with args 'Validation_String_Invalid_Characters'\r\n */\r\nclass XSS extends Base {\r\n constructor(i18n) {\r\n super(i18n);\r\n\r\n this.message = i18n.getString('Validation_String_Invalid_Characters');\r\n }\r\n\r\n isValidValue(value) {\r\n return _.isString(value) && !(/<[^>]*>/).exec(value);\r\n }\r\n}\r\n\r\n/**\r\n * Define a validator check whether value match pattern\r\n * @param {string|RegExp} pattern - a pattern to test value\r\n * @param {I18n} i18n - will be called with args 'Validation_String_Invalid_Characters'\r\n */\r\nclass Pattern extends Base {\r\n constructor(patt, i18n) {\r\n super(i18n);\r\n\r\n this.pattern = _.isString(patt) ? new RegExp(patt) : patt;\r\n this.message = i18n.getString('Validation_String_Invalid_Characters');\r\n }\r\n\r\n isValidValue(value) {\r\n return this.pattern.test(value);\r\n }\r\n}\r\n\r\n/**\r\n * Create string type validate instance\r\n * @param {I18n} i18n - provide callback getString to get error message\r\n * @return {Validator} - string type validator\r\n */\r\nexport function type(i18n) {\r\n return new Type(i18n);\r\n}\r\n\r\n/**\r\n * Create string size validate instance\r\n * @param {int} length - the max length of string\r\n * @param {boolean} distinguishCJK - whether distinguish CJK in size check\r\n * @param {I18n} i18n - provide getString to get error message\r\n * @returns {Validator} - string size validator\r\n */\r\nexport function size(length, distinguishCJK, i18n) {\r\n return new Size(length, i18n, distinguishCJK);\r\n}\r\n\r\n/**\r\n * Create string size validate instance\r\n * @param {int} length - the min length of string\r\n * @param {boolean} distinguishCJK - whether distinguish CJK in size check\r\n * @param {I18n} i18n - provide getString to get error message\r\n * @returns {Validator} - string size validator\r\n */\r\nexport function minSize(length, distinguishCJK, i18n) {\r\n return new MinSize(length, i18n, distinguishCJK);\r\n}\r\n\r\n/**\r\n * Create a validator check whether value is XSS code\r\n * @param {I18n} i18n - will be called with args 'Validation_String_Invalid_Characters'\r\n * @returns {Validator} - string xss validator\r\n */\r\nexport function xss(i18n) {\r\n return new XSS(i18n);\r\n}\r\n\r\n/**\r\n * Create a validator check whether value match pattern\r\n * @param {string|RegExp} patt - a pattern to test value\r\n * @param {I18n} i18n - will be called with args 'Validation_String_Invalid_Characters'\r\n * @returns {Validator} - string pattern validator\r\n */\r\nexport function pattern(patt, i18n) {\r\n return new Pattern(patt, i18n);\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { Base } from './base';\r\nimport { Size as NumberSize, Range as NumberRange } from './number';\r\n\r\n/**\r\n * Define a validator check type of input, whether the string can convert to a validate number\r\n * @param {I18n} i18n - provide a callback getString, will be called\r\n * with args 'Validation_Number_Require_Numeric'\r\n */\r\nclass Type extends Base {\r\n constructor(i18n) {\r\n super(i18n);\r\n\r\n this.message = i18n.getString('Validation_Number_Require_Numeric');\r\n }\r\n\r\n isValidValue(value) {\r\n return (_.isString(value) && _.isEmpty(value)) || this.i18n.isValidDecimal(value, true);\r\n }\r\n}\r\n\r\n/**\r\n * Define a validator check size of string for string number\r\n * @param {int} integerLength - the length of int\r\n * @param {int} decimalLength - the length of decimal\r\n * @param {I18n} i18n - i18n will be called in class number/Size\r\n */\r\nclass Size extends NumberSize {\r\n isValidValue(value) {\r\n if (_.isString(value) && _.isEmpty(value)) {\r\n return true;\r\n }\r\n\r\n if (!this.i18n.isValidDecimal(value, true)) {\r\n return false;\r\n }\r\n\r\n const number = this.i18n.parseDecimal(value);\r\n\r\n if (putil.isNil(number)) {\r\n return false;\r\n }\r\n\r\n return super.isValidValue(number);\r\n }\r\n}\r\n\r\n/**\r\n * Define a validator check string number Range\r\n * @param {int|float} min - min value of input\r\n * @param {int|float} max - max value of input\r\n * @param {I18n} i18n - will be called in class number/Range\r\n */\r\nclass Range extends NumberRange {\r\n isValidValue(value) {\r\n if (_.isString(value) && _.isEmpty(value)) {\r\n return true;\r\n }\r\n\r\n if (!this.i18n.isValidDecimal(value, true)) {\r\n return false;\r\n }\r\n\r\n return super.isValidValue(this.i18n.parseDecimal(value));\r\n }\r\n}\r\n\r\n/**\r\n * Create string number type validate instance\r\n * @param {I18n} i18n - provide callback getString to get error message\r\n * @returns {Validator} - string number type validator\r\n */\r\nexport function type(i18n) {\r\n return new Type(i18n);\r\n}\r\n\r\n/**\r\n * Create a string number size validator instance\r\n * @param {int} integerLength - the length of int\r\n * @param {int} decimalLength - the length of decimal\r\n * @param {I18n} i18n - will be called in class number/Range\r\n * @returns {Validator} - string number size validator\r\n */\r\nexport function size(integerLength, decimalLength, i18n) {\r\n return new Size(integerLength, decimalLength, i18n);\r\n}\r\n\r\n/**\r\n * Create string number range validator instance\r\n * @param {int|float} min - min value of input\r\n * @param {int|float} max - max value of input\r\n * @param {I18n} i18n - will be called in class number/Range\r\n * @returns {Validator} - string number range validator\r\n */\r\nexport function range(min, max, i18n) {\r\n return new Range(min, max, i18n);\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { Base } from './base';\r\n\r\n/**\r\n * Define a number validator which check whether input is a number\r\n * @param {I18n} i18n - provide callback getString to get message,\r\n * will be called with args 'Validation_Number_Require_Numeric'\r\n */\r\nclass Type extends Base {\r\n constructor(i18n) {\r\n super(i18n);\r\n\r\n this.blockInput = false;\r\n this.message = i18n.getString('Validation_Number_Require_Numeric');\r\n }\r\n\r\n isValidValue(value) {\r\n return putil.isNil(value) || _.isNumber(value);\r\n }\r\n}\r\n\r\n/**\r\n * Define a number validator which check whether input is in a valid size\r\n * @param {int} integerLength - the length of int\r\n * @param {int} decimalLength - the length of decimal\r\n * @param {I18n} i18n - provide callback getString to get message,\r\n * will be called with args 'Validation_Number_Max_Length'\r\n */\r\nexport class Size extends Base {\r\n constructor(integerLength, decimalLength, i18n) {\r\n super(i18n);\r\n\r\n this.blockInput = false;\r\n this.message = i18n.getString('Validation_Number_Max_Length');\r\n this.integerLength = integerLength;\r\n this.decimalLength = decimalLength;\r\n }\r\n\r\n isValidValue(value) {\r\n // leave for required validator\r\n if (putil.isNil(value)) {\r\n return true;\r\n }\r\n\r\n // leave for number validator\r\n if (!_.isNumber(value)) {\r\n return true;\r\n }\r\n\r\n let text = value.toString();\r\n\r\n if (value < 0) {\r\n text = text.substr(1);\r\n }\r\n\r\n const segments = text.split('.');\r\n\r\n if (this.integerLength && _.size(segments[0]) > this.integerLength) {\r\n return false;\r\n }\r\n\r\n if (this.decimalLength === 0 && _.size(segments) > 1) {\r\n return false;\r\n }\r\n\r\n if (this.decimalLength && _.size(segments[1]) > this.decimalLength) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * Define a nunmber validate which check whether input value in a valid range\r\n * @param {int|float} min - min value of input\r\n * @param {int|float} max - max value of input\r\n * @param {I18n} i18n - provide callback getString to get error message, will be called with args\r\n * 'Validation_Number_Range_Between', 'Validation_Number_Range_Min' or 'Validation_Number_Range_Max'\r\n */\r\nexport class Range extends Base {\r\n constructor(min, max, i18n) {\r\n super(i18n);\r\n\r\n this.min = min;\r\n this.max = max;\r\n\r\n if (_.isFinite(min) && _.isFinite(max)) {\r\n this.message = i18n.getString('Validation_Number_Range_Between', {\r\n min: i18n.formatDecimal(min, { minimumFractionDigits: 0, maximumFractionDigits: 2 }),\r\n max: i18n.formatDecimal(max, { minimumFractionDigits: 0, maximumFractionDigits: 2 }),\r\n });\r\n } else if (_.isFinite(min)) {\r\n this.message = i18n.getString('Validation_Number_Range_Min', {\r\n min: i18n.formatDecimal(min, { minimumFractionDigits: 0, maximumFractionDigits: 2 }),\r\n });\r\n } else {\r\n this.message = i18n.getString('Validation_Number_Range_Max', {\r\n max: i18n.formatDecimal(max, { minimumFractionDigits: 0, maximumFractionDigits: 2 }),\r\n });\r\n }\r\n }\r\n\r\n isValidValue(value) {\r\n // leave for required validator\r\n if (putil.isNil(value)) {\r\n return true;\r\n }\r\n\r\n // leave for number validator\r\n if (!_.isNumber(value)) {\r\n return true;\r\n }\r\n\r\n let result = true;\r\n\r\n if (_.isFinite(this.min)) {\r\n result = result && value >= this.min;\r\n }\r\n\r\n if (_.isFinite(this.max)) {\r\n result = result && value <= this.max;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Create a number type validator\r\n * @param {I18n} i18n - provide callback getString to get message\r\n * @returns {Validator} - number type validator instance\r\n */\r\nexport function type(i18n) {\r\n return new Type(i18n);\r\n}\r\n\r\n/**\r\n * Create a size validator\r\n * @param {int} integerLength - the length of int\r\n * @param {int} decimalLength - the length of decimal\r\n * @param {I18n} i18n - provide callback getString to get message\r\n * @returns {Validator} - number size validator instance\r\n */\r\nexport function size(integerLength, decimalLength, i18n) {\r\n return new Size(integerLength, decimalLength, i18n);\r\n}\r\n\r\n/**\r\n * Create a range validator\r\n * @param {int|float} min - min value of input\r\n * @param {int|float} max - max value of input\r\n * @param {I18n} i18n - provide callback getString to get message\r\n * @returns {Validator} - number range validator instance\r\n */\r\nexport function range(min, max, i18n) {\r\n return new Range(min, max, i18n);\r\n}\r\n","import _ from 'underscore';\r\nimport { Base } from './base';\r\n\r\n/**\r\n * Enum validator, which check whether value is in enumators\r\n * @param {array} enumerators - possible values\r\n * @param {I18n} i18n - provide getString callback, will be called in Base class\r\n */\r\nclass Enum extends Base {\r\n constructor(enumerators, i18n) {\r\n super(i18n);\r\n\r\n this.enumerators = enumerators.slice();\r\n }\r\n\r\n isValidValue(value) {\r\n return _.contains(this.enumerators, value);\r\n }\r\n}\r\n\r\n/**\r\n * Create a enum validator instance\r\n * @param {array} enumerators - possible values\r\n * @param {I18n} i18n - provide getString callback, will be called in Base class\r\n * @returns {Validator} - return a enum validator\r\n */\r\nexport function enumeration(enumerators, i18n) {\r\n return new Enum(enumerators, i18n);\r\n}\r\n","import _ from 'underscore';\r\nimport { Base } from './base';\r\n\r\n/**\r\n * Define a type validator which check the value type is an array\r\n * @param {I18n} i18n - provide callback getString to get error message for Base\r\n */\r\nclass Type extends Base {\r\n isValidValue(value) {\r\n return _.isArray(value);\r\n }\r\n}\r\n\r\n/**\r\n * Define a size validator which check the size of array between min and max\r\n * @param {int} min - the min size of array, default be 0\r\n * @param {int} max - the max size of array\r\n * @param {I18n} i18n - provide callback getString to get error message when validate failed, will\r\n * be callled with args 'Validation_Array_Size_Between' or 'Validation_Array_Size_Max'\r\n */\r\nclass Size extends Base {\r\n constructor(min, max, i18n) {\r\n super(i18n);\r\n\r\n this.min = min || 0;\r\n this.max = max;\r\n if (this.min) {\r\n this.message = i18n.getString('Validation_Array_Size_Between', { min: this.min, max });\r\n } else {\r\n this.message = i18n.getString('Validation_Array_Size_Max', { max });\r\n }\r\n }\r\n\r\n isValidValue(value) {\r\n const valueSize = _.size(value);\r\n\r\n return _.isArray(value) && valueSize >= this.min && valueSize <= this.max;\r\n }\r\n}\r\n\r\nfunction passAll(validators, value) {\r\n return _.every(validators, validator => validator.isValid(value));\r\n}\r\n\r\nfunction sizeNotFits(value, validators, additionalValidators) {\r\n return !additionalValidators && _.size(value) > _.size(validators);\r\n}\r\n\r\n/**\r\n * Create an array validator which inspects each item of an array by validators passed in.\r\n * @param {Validator[]} validators - validators for all items, each item should pass all validators.\r\n * @param {I18n} i18n - provide callback getString to get error message, will be called with args\r\n * 'Validation_Base_Field_Not_Valid' or 'Validation_Array_Items_Invalid'\r\n */\r\nclass Item extends Base {\r\n constructor(validators, i18n) {\r\n super(i18n);\r\n\r\n this.validators = validators;\r\n this.message = (value) => {\r\n if (!_.isArray(value)) {\r\n return i18n.getString('Validation_Base_Field_Not_Valid');\r\n }\r\n\r\n return i18n.getString('Validation_Array_Items_Invalid');\r\n };\r\n }\r\n\r\n /**\r\n * override function, check whether value is valid\r\n * @param {array} value - value to validate\r\n * @return {boolean} - whether value is valid\r\n */\r\n isValidValue(value) {\r\n return _.isArray(value) && _.isEmpty(this.invalidItems(value));\r\n }\r\n\r\n /**\r\n * Filter out invalid items.\r\n * @param {array} value - value to verify\r\n * @return {array} - return invalidate items\r\n * @see http://json-schema.org/latest/json-schema-validation.html#anchor37 for understanding conditions of successful validation.\r\n */\r\n invalidItems(value) {\r\n return _.omit(value, _.partial(passAll, this.validators));\r\n }\r\n}\r\n\r\n/**\r\n * Create an array validator which inspects items of an array.\r\n * @param {Validator[]} validators - validators for first _.size(validator) items.\r\n * @param {(Validator[]|boolean)} additionalValidators - boolean as allowing or\r\n * not additional items, Validator[] as validators for additional items.\r\n * @param {I18n} i18n - provide callback getString to get error message\r\n */\r\nclass Items extends Base {\r\n constructor(validators, additionalValidators, i18n) {\r\n super(i18n);\r\n\r\n this.validators = validators;\r\n this.message = (value) => {\r\n if (!_.isArray(value)) {\r\n return i18n.getString('Validation_Base_Field_Not_Valid');\r\n }\r\n\r\n if (sizeNotFits(value, validators, additionalValidators)) {\r\n return i18n.getString('Validation_Array_Size_Max', { max: _.size(validators) });\r\n }\r\n\r\n return i18n.getString('Validation_Array_Items_Invalid');\r\n };\r\n }\r\n\r\n isValidValue(value) {\r\n return _.isArray(value) && _.isEmpty(this.invalidItems(value));\r\n }\r\n\r\n /**\r\n * Filter out invalid items.\r\n *\r\n * when additionalValidators is false, means max length of array is _.size(validators);\r\n * when additionalValidators is true, no validation for additional items;\r\n * when additionalValidators is Validator[], it will be applied to additional\r\n * items not covered by validators.\r\n * @param {array} value - value to verify\r\n * @return {array} - return invalid items\r\n * @see http://json-schema.org/latest/json-schema-validation.html#anchor37 for understanding conditions of successful validation.\r\n */\r\n invalidItems(value) {\r\n const { validators } = this;\r\n let { additionalValidators } = this;\r\n\r\n if (sizeNotFits(value, validators, additionalValidators)) {\r\n return value;\r\n }\r\n\r\n // additionalValidator could be validators or boolean\r\n if (additionalValidators === true) {\r\n additionalValidators = [];\r\n }\r\n\r\n return _.omit(value, (val, index) => {\r\n const vs = validators[index] || additionalValidators;\r\n return passAll(vs, val);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Create an array validator unique, check whether element unique in array\r\n * @param {I18n} i18n - provide callback getString, will be called\r\n * with args 'Validation_Array_Items_Duplicate'\r\n */\r\nclass Unique extends Base {\r\n constructor(i18n) {\r\n super(i18n);\r\n\r\n this.message = i18n.getString('Validation_Array_Items_Duplicate');\r\n }\r\n\r\n isValidValue(value) {\r\n return _.isArray(value) && _.size(_.uniq(value)) === _.size(value);\r\n }\r\n}\r\n\r\n/**\r\n * Create array type validate instance\r\n * @param {I18n} i18n - provide callback getString to get error message\r\n * @return {Validator} - array type validator\r\n */\r\nexport function type(i18n) {\r\n return new Type(i18n);\r\n}\r\n\r\n/**\r\n * Create size validate instance\r\n * @param {int} min - the min size of array\r\n * @param {int} max - the max size of array\r\n * @param {I18n} i18n - provide callback getString to get error message\r\n * @returns {Validator} - array size validator\r\n */\r\nexport function size(min, max, i18n) {\r\n return new Size(min, max, i18n);\r\n}\r\n\r\n/**\r\n * Create item validate instance\r\n * @param {Validator[]} validators - validators for all items, each item should pass all validators.\r\n * @param {I18n} i18n - provide callback getString to get error message, will be called with args\r\n * 'Validation_Base_Field_Not_Valid' or 'Validation_Array_Items_Invalid'\r\n * @returns {Validator} - array item validator\r\n */\r\nexport function item(validators, i18n) {\r\n return new Item(validators, i18n);\r\n}\r\n\r\n/**\r\n * Create an array items validator instance\r\n * @param {Validator[]} validators - validators for first _.size(validator) items.\r\n * @param {(Validator[]|boolean)} additionalValidators - boolean as allowing or\r\n * not additional items, Validator[] as validators for additional items.\r\n * @param {I18n} i18n - provide callback getString to get error message\r\n * @returns {Validator} - array items validator\r\n */\r\nexport function items(validators, additionalValidators, i18n) {\r\n return new Items(validators, additionalValidators, i18n);\r\n}\r\n\r\n/**\r\n * Create an array unique validate instance\r\n * @param {I18n} i18n - provide callback getString, will be called\r\n * with args 'Validation_Array_Items_Duplicate'\r\n * @returns {Validator} - array unique validator\r\n */\r\nexport function unique(i18n) {\r\n return new Unique(i18n);\r\n}\r\n","import { Base } from './base';\r\n\r\n/**\r\n * Define passive validator\r\n * @param {I18n} i18n - provide callback getString to get message\r\n */\r\nclass Passive extends Base {\r\n constructor(i18n) {\r\n super(i18n);\r\n\r\n this.error = null;\r\n }\r\n\r\n /**\r\n * Check whether value is valid\r\n * @param {any} value - value to be checked\r\n * @returns {boolean} - if value is valid return true, otherwise, return false\r\n */\r\n isValid(value) {\r\n if (this.error && this.error.value === value) {\r\n return false;\r\n }\r\n this.error = null;\r\n return true;\r\n }\r\n\r\n /**\r\n * Set error value and correspond message\r\n * @param {function|string} message - message of error\r\n * @param {any} value - error value\r\n * @returns {undefined} - no returns\r\n */\r\n setError(message, value) {\r\n this.error = {\r\n message,\r\n value,\r\n };\r\n this.message = message;\r\n }\r\n}\r\n\r\n/**\r\n * Create passive validator instance\r\n * @param {I18n} i18n - provide callback getString to get message\r\n * @returns {Validator} - return passive validator instance\r\n */\r\nexport function passive(i18n) {\r\n return new Passive(i18n);\r\n}\r\n","import { Base } from './base';\r\n\r\n/**\r\n * Use to create a Customized validator\r\n * @param {function} method - validate function will be called to validate value\r\n * @param {function|string} message - a function or string, message of this validator\r\n * @param {boolean} blockInput - whether block input when validate failed\r\n * @param {I18n} i18n - i18n to get message, only used for Base class\r\n */\r\nclass Custom extends Base {\r\n constructor(method, message, blockInput, i18n) {\r\n super(i18n);\r\n\r\n if (blockInput) {\r\n this.blockInput = blockInput;\r\n }\r\n\r\n if (message) {\r\n this.message = message;\r\n }\r\n\r\n this.isValid = method;\r\n }\r\n}\r\n\r\n/**\r\n * Create cusotmize validator instance\r\n * @param {function} method - validate function will be called to validate value\r\n * @param {function|string} message - a function or string, message of this validator\r\n * @param {boolean} blockInput - whether block input when validate failed\r\n * @param {I18n} i18n - i18n to get message, only used for Base class\r\n * @returns {Validator} - customized validator instance\r\n */\r\nexport function custom(method, message, blockInput, i18n) {\r\n return new Custom(method, message, blockInput, i18n);\r\n}\r\n","export * from './src/constants';\r\nexport * from './src/utils';\r\n","export const AccountCustomerLinkType = Object.freeze({\r\n Unknown: 0,\r\n DirectParent: 1,\r\n AgencyCustomer: 2,\r\n ParentInHierachy: 3, // * Account's parent in a Hierachy with Target Customer\r\n AgencyInHierachy: 4, // * Account's Agency in a Hierachy with Target Customer\r\n});\r\n\r\nexport const AccountLinkPermissionType = Object.freeze({\r\n Unknown: 0,\r\n Standard: 1,\r\n AccountCampaignManagement: 2,\r\n Billing: 3,\r\n ReadOnly: 4,\r\n});\r\n\r\nexport const MultiAgencyHeaderHide = Object.freeze({\r\n [AccountLinkPermissionType.Billing]: {\r\n import: true,\r\n myWebsite: true,\r\n mmc: true,\r\n assetLibrary: true,\r\n },\r\n});\r\n","import _ from 'underscore';\r\n\r\nimport {\r\n AccountLinkPermissionType,\r\n MultiAgencyHeaderHide,\r\n} from './constants';\r\n\r\nexport const isMultiAgencyBillingEnabled = permissions => _.get(permissions, ['dynamic', 'MultiAgencyBilling'], false);\r\n\r\nexport const getAccountLinkPermissionType = settingsContext => _.get(settingsContext, 'AccountLinkPermissionType');\r\n\r\nexport const isValidLinkPermission = settingsContext => _.contains(_.values(AccountLinkPermissionType), getAccountLinkPermissionType(settingsContext));\r\nexport const isStandardLinkPermission = settingsContext => getAccountLinkPermissionType(settingsContext) === AccountLinkPermissionType.Standard;\r\nexport const isBillingLinkPermission = settingsContext => getAccountLinkPermissionType(settingsContext) === AccountLinkPermissionType.Billing;\r\n\r\nexport const getHeaderHide = settingsContext => MultiAgencyHeaderHide[getAccountLinkPermissionType(settingsContext)] || {};\r\n","import getLocalStorage from './src/local-storage';\r\nimport getMemoryStorage from './src/memory-storage';\r\nimport getSessionStorage from './src/session-storage';\r\n\r\nexport {\r\n getLocalStorage,\r\n getMemoryStorage,\r\n getSessionStorage\r\n};\r\n","export default function (instrumentation) {\r\n const logError = function (error) {\r\n if (instrumentation && instrumentation.logError) {\r\n instrumentation.logError(error.message);\r\n } else {\r\n console.error(error.message); // eslint-disable-line no-console\r\n }\r\n };\r\n\r\n const LocalStorage = {\r\n supportsStorage() {\r\n try {\r\n return window && 'localStorage' in window && window.localStorage != null;\r\n } catch (err) {\r\n logError(err);\r\n return false;\r\n }\r\n },\r\n set(key, data) {\r\n const str = JSON.stringify(data);\r\n try {\r\n window.localStorage.setItem(key, str);\r\n } catch (err) {\r\n try {\r\n window.localStorage.clear();\r\n window.localStorage.setItem(key, str);\r\n } catch (innerErr) {\r\n logError(innerErr);\r\n }\r\n }\r\n },\r\n get(key) {\r\n let result = null;\r\n try {\r\n const str = window.localStorage.getItem(key);\r\n if (str) {\r\n result = JSON.parse(str);\r\n }\r\n } catch (err) {\r\n logError(err);\r\n }\r\n return result;\r\n },\r\n invalidate(key) {\r\n try {\r\n window.localStorage.removeItem(key);\r\n } catch (err) {\r\n logError(err);\r\n }\r\n },\r\n clear() {\r\n try {\r\n window.localStorage.clear();\r\n } catch (err) {\r\n logError(err);\r\n }\r\n },\r\n keys() {\r\n return Object.getOwnPropertyNames(window.localStorage);\r\n },\r\n type: 'localStorage',\r\n };\r\n return LocalStorage;\r\n}\r\n","import { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nexport default function () {\r\n let dataset = {};\r\n const MemoryStorage = {\r\n supportsStorage() {\r\n return true;\r\n },\r\n set(key, data) {\r\n dataset[key] = data;\r\n },\r\n get(key, deepCopy) {\r\n let result = null;\r\n if (Object.prototype.hasOwnProperty.call(dataset, key)) {\r\n result = dataset[key];\r\n }\r\n\r\n if (result && deepCopy) {\r\n result = cloneDeep(result);\r\n }\r\n\r\n return result;\r\n },\r\n invalidate(key) {\r\n if (Object.prototype.hasOwnProperty.call(dataset, key)) {\r\n delete dataset[key];\r\n }\r\n },\r\n clear() {\r\n dataset = {};\r\n },\r\n keys() {\r\n return Object.getOwnPropertyNames(dataset);\r\n },\r\n type: 'memoryStorage',\r\n };\r\n\r\n return MemoryStorage;\r\n}\r\n","export default function (instrumentation) {\r\n const logError = function (error) {\r\n if (instrumentation && instrumentation.logError) {\r\n instrumentation.logError(error.message);\r\n } else {\r\n console.error(error.message); // eslint-disable-line no-console\r\n }\r\n };\r\n\r\n const SessionStorage = {\r\n supportsStorage() {\r\n return window && 'sessionStorage' in window && window.sessionStorage != null;\r\n },\r\n set(key, data) {\r\n const str = JSON.stringify(data);\r\n try {\r\n window.sessionStorage.setItem(key, str);\r\n } catch (err) {\r\n try {\r\n window.sessionStorage.clear();\r\n window.sessionStorage.setItem(key, str);\r\n } catch (innerErr) {\r\n logError(err);\r\n }\r\n }\r\n },\r\n get(key) {\r\n let result = null;\r\n try {\r\n const str = window.sessionStorage.getItem(key);\r\n if (str) {\r\n result = JSON.parse(str);\r\n }\r\n } catch (err) {\r\n logError(err);\r\n }\r\n return result;\r\n },\r\n clear() {\r\n try {\r\n window.sessionStorage.clear();\r\n } catch (err) {\r\n logError(err);\r\n }\r\n },\r\n invalidate(key) {\r\n try {\r\n window.sessionStorage.removeItem(key);\r\n } catch (err) {\r\n logError(err);\r\n }\r\n },\r\n type: 'sessionStorage',\r\n };\r\n\r\n return SessionStorage;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__45__;","\r\n\r\nexport { JsDataRestStore } from './src/jsDataRestStore';\r\n\r\nexport { JsDataRestAdapter } from './src/jsDataRestAdapter';\r\n","import JSData from 'js-data';\r\nimport { JsDataRestAdapter } from './jsDataRestAdapter';\r\n\r\n/**\r\n * This class is a extension of JSData DS(data store)\r\n * @param {object} restfulService - (required) a wrapper of ajax request\r\n */\r\nexport class JsDataRestStore extends JSData.DS {\r\n constructor({\r\n restfulService,\r\n }) {\r\n super().registerAdapter('rest', new JsDataRestAdapter({ restfulService }), { default: true });\r\n }\r\n\r\n /**\r\n * Define resource using JSData data store\r\n * @param {string} resourceName - (required) the name of resource\r\n * @param {object} uriPath - (required) the default uri path for each resource\r\n * @param {string} primaryKey - (optional) the primary key for the resource, default is 'id'\r\n *\r\n * @returns {object} the JsData resource\r\n */\r\n defineRestResource(resourceName, { uriPath, primaryKey = 'id' }) {\r\n if (this.definitions && this.definitions[resourceName]) {\r\n return this.definitions[resourceName];\r\n }\r\n return this.defineResource({\r\n name: resourceName,\r\n meta: { uriPath },\r\n idAttribute: primaryKey,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport URI from 'urijs';\r\n\r\n/**\r\n * Generate uri for restful ajax request\r\n * @param {object} definition - resource definition\r\n * @param {object} properties - query options collection\r\n * @param {object} options - options collection to help generate URL\r\n *\r\n * @returns {string} the uri for restful ajax request\r\n */\r\nconst generateUri = function generate(definition, properties, options) {\r\n let query = '';\r\n\r\n if (!_.isEmpty(properties)) {\r\n const queryParam = {};\r\n\r\n _.each(properties, (value, key) => {\r\n switch (key) {\r\n case 'orderBy':\r\n if (_.isString(value)) {\r\n queryParam.$orderby = `${value} asc`;\r\n } else if (_.isArray(value) && _.isArray(value[0]) && value[0].length > 1) {\r\n queryParam.$orderby = `${value[0][0]} ${value[0][1].toLowerCase()}`;\r\n } else if (_.isObject(value)) {\r\n const name = _.keys(value)[0];\r\n const direction = value[name] > 0 ? 'asc' : 'desc';\r\n\r\n queryParam.$orderby = `${name} ${direction}`;\r\n }\r\n break;\r\n // Todo: may need a better design of this part,using 'query' here is for compatibility.\r\n case 'query':\r\n _.extend(queryParam, value);\r\n break;\r\n case 'limit':\r\n if (!_.isNumber(value) || _.isNaN(value)) {\r\n throw new TypeError('limit must be a number and not NaN');\r\n } else if (value !== Number.MAX_VALUE) {\r\n queryParam.$top = value;\r\n }\r\n break;\r\n case 'offset':\r\n queryParam.$skip = value;\r\n break;\r\n default:\r\n queryParam[key] = value;\r\n break;\r\n }\r\n });\r\n query = `?${URI.buildQuery(queryParam, false, false)}`;\r\n }\r\n\r\n let path = definition.meta.uriPath;\r\n if (options && !_.isEmpty(options.pathExtension)) {\r\n _.each(options.pathExtension, (value, key) => {\r\n path = `${path}/${key}/${value}`;\r\n });\r\n }\r\n return `${path}${query}`;\r\n};\r\n\r\nconst checkAndAddPrimaryKey = (primaryKey, items) => {\r\n const queryId = _.uniqueId('query-');\r\n // JSData requires ID for every resource, some calls won't return items with ID\r\n // We add ID here to fit JSData requirement before JSData inject happens\r\n _.each(items, (item, index) => {\r\n if (!_.has(item, primaryKey)) {\r\n item[primaryKey] = `${queryId}-${index}`; // eslint-disable-line no-param-reassign\r\n }\r\n });\r\n return items;\r\n};\r\n\r\n/**\r\n * This class is a extension of JSData DS(data store)\r\n * @param {object} restfulService - (required) a wrapper of ajax request\r\n */\r\nexport class JsDataRestAdapter {\r\n constructor({\r\n restfulService,\r\n }) {\r\n this.restfulService = restfulService;\r\n }\r\n\r\n /**\r\n * implement of JSData API create\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} attrs - properties with which to create the item\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n create(definition, attrs, options) {\r\n // Must resolve the promise with the created item\r\n return this.restfulService.post(generateUri(definition, {}, options), attrs, options);\r\n }\r\n\r\n /**\r\n * implement of JSData API find\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {string|number} id - primary key of the item to retrieve\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n find(definition, id, options) {\r\n // Must return a promise that resolves with the found item\r\n return this.restfulService.get(generateUri(definition, {\r\n [definition.idAttribute]: id,\r\n }, options), options);\r\n }\r\n\r\n /**\r\n * implement of JSData API findAll\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} params - query parameters for selecting items from the collection\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {Promise.} Promise of item list. ID will be added to item if it's missing\r\n * total and other properties will be added as well.\r\n */\r\n findAll(definition, params, options) {\r\n // Must return a promise that resolves with the found items\r\n return this.restfulService.get(generateUri(definition, params, options), options)\r\n .then((res) => {\r\n if (options && _.isFunction(options.preProcess)) {\r\n // eslint-disable-next-line no-param-reassign\r\n res = options.preProcess(res);\r\n }\r\n\r\n const addPropertyTotalCount = obj => Object.defineProperty(obj, 'totalCount', {\r\n value: res.total,\r\n enumerable: false,\r\n });\r\n\r\n const addPropertyRaw = obj => Object.defineProperty(obj, 'raw', {\r\n value: res,\r\n enumerable: false,\r\n });\r\n\r\n const addProperties = _.compose(addPropertyTotalCount, addPropertyRaw);\r\n\r\n // To handle different format response, some calls will return\r\n // {total: a number, value: a list of items},\r\n // For these cases we need change the value.\r\n const items = checkAndAddPrimaryKey(definition.idAttribute, _.has(res, 'value') ? res.value : res);\r\n\r\n if (res.value && options.cacheResponse) {\r\n options.afterInject = _.compose( // eslint-disable-line no-param-reassign\r\n options.afterInject || _.identity,\r\n (innerOptions, injected) => addProperties(injected)\r\n );\r\n } else {\r\n addProperties(items);\r\n }\r\n return items;\r\n });\r\n }\r\n\r\n /**\r\n * implement of JSData API update\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {string|number} id - primary key of the item to update\r\n * @param {object} attrs - properties with which to update the item.\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n update(definition, id, attrs, options) {\r\n // Must return a promise that resolves with the update items\r\n return this.restfulService.patch(generateUri(definition, { id }, options), attrs, options);\r\n }\r\n\r\n /**\r\n * implement of JSData API updateAll\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} attrs - the attributes which to update the resource.\r\n * @param {object} [params] - query parameters for selecting which items to update. Default: {}.\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {Promise.} Promise of item list. ID will be added to item if it's missing\r\n */\r\n updateAll(definition, attrs, params, options) {\r\n return this.restfulService.patch(generateUri(definition, params, options), attrs, options)\r\n .then(res => checkAndAddPrimaryKey(definition.idAttribute, _.has(res, 'value') ? res.value : res));\r\n }\r\n\r\n /**\r\n * implement of JSData API destroy\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {string|number} id - primary key of the item to destroy\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n destroy(definition, id, options) {\r\n // Must return a promise\r\n return this.restfulService.delete(generateUri(definition, { id }, options), options);\r\n }\r\n\r\n /**\r\n * implement of JSData API destroyAll\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} params - query parameters for selecting which items to destroy\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n destroyAll(definition, params, options) {\r\n // Must return a promise\r\n return this.restfulService.delete(generateUri(definition, params, options), options);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__68__;","export { Registry } from './src/index';\r\n","/* eslint-disable no-mixed-operators */\r\n/* eslint no-param-reassign: 0 */\r\nimport _ from 'underscore';\r\n\r\ntype Item = Namespace | T;\r\n\r\n/** Class representing a namespace */\r\nclass Namespace {\r\n map: { [frag: string]: Item };\r\n parent: Namespace | null;\r\n\r\n /**\r\n * Create a namespace\r\n * @param {Namespace|null} parent - The parent namespace\r\n */\r\n constructor(parent: Namespace | null) {\r\n this.map = {};\r\n this.parent = parent;\r\n }\r\n\r\n /**\r\n * Resolve an object by name\r\n * @param {String[]} segments - The name segments\r\n * @return {Object} The object registered with the given name\r\n */\r\n resolve(segments: string[]): Namespace | T | null {\r\n const iterator = (ns: Item, seg: string) => {\r\n if (ns && ns instanceof Namespace) {\r\n return ns.map[seg];\r\n }\r\n return ns;\r\n };\r\n\r\n return _.reduce(segments, iterator, this) ||\r\n this.parent && this.parent.resolve(segments);\r\n }\r\n\r\n /**\r\n * Register an object\r\n * @param {Object} obj - The object to be registered\r\n * @param {String[]} segments - The name segments for the object\r\n * @return {Void} Nothing to return\r\n */\r\n register(obj: T, segments: string[]): void {\r\n const key = segments.pop();\r\n const iterator = (ns: Item, seg: string) => {\r\n if (ns instanceof Namespace) {\r\n if (_.isUndefined(ns.map[seg])) {\r\n ns.map[seg] = new Namespace(ns);\r\n }\r\n return ns.map[seg];\r\n }\r\n throw new Error(`There are conflicts when defining registry for ${segments.join('.')}`);\r\n };\r\n\r\n const nsTarget = >_.reduce(segments, iterator, this);\r\n\r\n nsTarget.map[key] = obj;\r\n }\r\n\r\n /**\r\n * Iterate through all objects in this namespace\r\n * @param {Function} worker - The callback for each of the objects\r\n * @return {void} Nothing to return\r\n */\r\n each(worker: (obj: T) => void): void {\r\n _.each(this.map, (obj) => {\r\n if (obj instanceof Namespace) {\r\n obj.each(worker);\r\n } else {\r\n worker(obj);\r\n }\r\n });\r\n }\r\n}\r\n\r\ninterface ObjectWithName {\r\n name: string\r\n}\r\n\r\nfunction isObjectWithName(obj: any): obj is ObjectWithName {\r\n return typeof obj.name === 'string';\r\n}\r\n\r\ninterface Map {\r\n get(key: K): V | undefined;\r\n set(key: K, value: V): this;\r\n}\r\n\r\ninterface MapConstructor {\r\n new(): Map;\r\n}\r\n\r\ndeclare var Map: MapConstructor;\r\n\r\n/** Class representing a namespaced registry */\r\nexport class Registry {\r\n rootNamespace: Namespace;\r\n qualifiedNames: Map;\r\n\r\n /**\r\n * Create a registry\r\n */\r\n constructor() {\r\n this.rootNamespace = new Namespace(null);\r\n this.qualifiedNames = new Map();\r\n }\r\n\r\n /**\r\n * Resolve an object by name\r\n * @param {String} name - The name of the object\r\n * @param {String} [namespace=this.rootNamespace] - The base namespace to resolve against\r\n * @return {Object|null} The object registered with the name\r\n */\r\n resolve(name: string, namespace?: string): Namespace | T | null {\r\n const ns = namespace ?\r\n this.rootNamespace.resolve(namespace.split('.')) :\r\n this.rootNamespace;\r\n const obj = ns instanceof Namespace ? ns.resolve(name.split('.')) : null;\r\n\r\n return obj || null;\r\n }\r\n\r\n resolveQualifiedName(name: string, namespace?: string) {\r\n const obj = this.resolve(name, namespace);\r\n if (obj instanceof Namespace || !obj) {\r\n return null;\r\n }\r\n\r\n return this.qualifiedNames.get(obj) || null;\r\n }\r\n\r\n /**\r\n * Register an object\r\n * @param {Object} obj - The object to be registered\r\n * @param {String} [name=obj.name] - The qualified name for the object\r\n * @return {void} Nothing to return\r\n */\r\n register(obj: T, name?: string): void {\r\n const realName = !name && isObjectWithName(obj) ? obj.name : name;\r\n if (typeof realName === 'undefined') {\r\n throw new Error(`name not passed in and obj ${JSON.stringify(obj)} doesn't have name property`);\r\n }\r\n this.rootNamespace.register(obj, realName.split('.'));\r\n this.qualifiedNames.set(obj, realName);\r\n }\r\n\r\n /**\r\n * Iterate through all registered objects\r\n * @param {Function} worker - The callback for each of the objects\r\n * @return {void} Nothing to return\r\n */\r\n each(worker: (obj: T) => void): void {\r\n this.rootNamespace.each(worker);\r\n }\r\n\r\n /**\r\n * Get namespace from a qualified name\r\n * @param {String} name - The qualified name\r\n * @return {String} The namespace\r\n */\r\n static getNamespace(name: string): string {\r\n const segments = name.split('.');\r\n\r\n segments.pop();\r\n return segments.join('.');\r\n }\r\n\r\n /**\r\n * Get short name from a qualified name\r\n * @param {String} name - The qualified name\r\n * @return {String} The short name\r\n */\r\n static getShortName(name: string): string {\r\n return _.last(name.split('.'));\r\n }\r\n\r\n static getQualifiedName(name: string, namespace?: string) {\r\n return namespace ? `${namespace}.${name}` : name;\r\n }\r\n}\r\n\r\n","export { PerfMarkerFactory } from './src/index';\r\nexport { functionWithPerfMarker, asyncFunctionWithPerfMarker } from './src/helpers';\r\nexport { perfMarkerPropTypes } from './src/proptypes';\r\n","import { createActivity } from './activity';\r\nimport { PerfMarker } from './marker';\r\n\r\nlet instrumentation;\r\nconst filesFetched = [];\r\n\r\nexport class PerfMarkerFactory {\r\n static init(instr) {\r\n instrumentation = instr;\r\n }\r\n\r\n static createMarker(\r\n name,\r\n markerOptions = { autoEnd: false, isActiveChild: true },\r\n activity = createActivity(instrumentation),\r\n parentMarker = {}\r\n ) {\r\n const isFileFetched = filesFetched.indexOf(name) > -1;\r\n\r\n if (!isFileFetched) {\r\n filesFetched.push(name);\r\n }\r\n\r\n return new PerfMarker(name, markerOptions, isFileFetched, activity, parentMarker);\r\n }\r\n\r\n static isPerfMarker(obj) {\r\n return obj instanceof PerfMarker;\r\n }\r\n\r\n static isInit() {\r\n return instrumentation !== null && instrumentation !== undefined;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst schema = {\r\n scenario: [\r\n {\r\n name: 'perfMarker',\r\n value: 'PerfMarker',\r\n setting: {},\r\n activity: [\r\n {\r\n name: 'sendLog',\r\n value: 'SendLog',\r\n },\r\n ],\r\n },\r\n ],\r\n};\r\n\r\nlet perfScenario = null;\r\n\r\nfunction getScenario(instrumentation) {\r\n if (_.isEmpty(perfScenario)) {\r\n instrumentation.addScenario(schema);\r\n perfScenario = instrumentation.perfMarker.create();\r\n }\r\n\r\n return perfScenario;\r\n}\r\n\r\nexport function createActivity(instrumentation) {\r\n const scenario = getScenario(instrumentation);\r\n\r\n return scenario.sendLog.create();\r\n}\r\n","import _ from 'underscore';\r\nimport { PageReady } from '@bingads-webui/page-ready';\r\nimport { PerfMarkerFactory } from './index';\r\n\r\nlet isPageReadyFulfilled = false;\r\n\r\nPageReady.afterPageReady().then(() => {\r\n isPageReadyFulfilled = true;\r\n});\r\n\r\nfunction markTime() {\r\n return {\r\n time: performance.now(),\r\n activeTime: _.result(performance, 'activeTime', NaN),\r\n };\r\n}\r\n\r\nfunction isMarkerValid({ time, activeTime } = {}) {\r\n return _.isNumber(time) && time >= 0 &&\r\n _.isNumber(activeTime) && activeTime >= 0;\r\n}\r\n\r\nfunction getUrl() {\r\n return (window.location.pathname || '') + (window.location.search || '') + (window.location.hash || '');\r\n}\r\n\r\n/**\r\n * Do not access PerfMarker class directly, use PerfMarker Factory\r\n */\r\nexport class PerfMarker {\r\n constructor(name, markerOptions, isFileFetched, activity, parentMarker) {\r\n this.markers = {};\r\n this.InitUrl = getUrl();\r\n this.isFileFetched = isFileFetched; // is js file already downloaded or not\r\n this.name = name;\r\n this.parentMarker = parentMarker;\r\n this.hierarchy = this.parentMarker.hierarchy ? `${this.parentMarker.hierarchy}.${this.name}` : this.name;\r\n this.activity = activity;\r\n this.isDone = false;\r\n this.autoEnd = markerOptions.autoEnd;\r\n this.isActiveChild = markerOptions.isActiveChild;\r\n this.activeChildren = [];\r\n this.data = markerOptions.data || {};\r\n this.doneCallback = null;\r\n }\r\n\r\n createChild(name, markerOptions = { autoEnd: false, isActiveChild: true }) {\r\n const childMarker = PerfMarkerFactory.createMarker(name, markerOptions, this.activity, this);\r\n\r\n if (childMarker && childMarker.isActiveChild !== false) {\r\n this.activeChildren.push(childMarker);\r\n }\r\n\r\n return childMarker;\r\n }\r\n\r\n willFetchFile() {\r\n this.markers.timeFetchFile = markTime();\r\n\r\n this.markConsole('willFetchFile');\r\n }\r\n\r\n willFetchData() {\r\n this.markers.timeFetchData = markTime();\r\n\r\n this.markConsole('willFetchData');\r\n }\r\n\r\n willInit() {\r\n this.markers.timeInit = markTime();\r\n\r\n this.markConsole('willInit');\r\n }\r\n\r\n willRender() {\r\n this.markers.timeRender = markTime();\r\n\r\n this.markConsole('willRender');\r\n }\r\n\r\n onChildDone(childMarker) {\r\n this.activeChildren = _.reject(this.activeChildren, activeChild => activeChild === childMarker);\r\n\r\n if (this.autoEnd &&\r\n !this.isDone &&\r\n _.isEmpty(this.activeChildren)) {\r\n this.done();\r\n }\r\n }\r\n\r\n done(additionalMessage = {}) {\r\n this.markers.timeDone = markTime();\r\n this.markConsole('done');\r\n\r\n this.additionalMessage = additionalMessage;\r\n\r\n // If marker already done, do not log again\r\n if (this.isDone) {\r\n return;\r\n }\r\n\r\n this.send();\r\n\r\n this.isDone = true;\r\n\r\n if (this.doneCallback && _.isFunction(this.doneCallback)) {\r\n this.doneCallback();\r\n }\r\n\r\n if (this.parentMarker.onChildDone) {\r\n this.parentMarker.onChildDone(this);\r\n }\r\n }\r\n\r\n markConsole(markerPoint) {\r\n if (console.timeStamp) {\r\n console.timeStamp(`PerfMarker ${this.name} ${markerPoint}`);\r\n }\r\n }\r\n\r\n send() {\r\n const message = this.parseMarkers();\r\n\r\n if (_.isEmpty(message)) {\r\n return;\r\n }\r\n\r\n this.activity.perf(JSON.stringify(message), this.hierarchy);\r\n }\r\n\r\n parseMarkers() {\r\n // Calling willFetchFile is optional. If not called, clear file fetching flag\r\n if (!isMarkerValid(this.markers.timeFetchFile)) {\r\n this.isFileFetched = true;\r\n }\r\n\r\n if (_.some([this.markers.timeInit, this.markers.timeDone], marker => !isMarkerValid(marker))) {\r\n return null; // init and done markers should be valid\r\n }\r\n\r\n const doneUrl = getUrl();\r\n const didUrlChange = this.InitUrl !== doneUrl;\r\n\r\n return {\r\n Version: 'perf-marker@0.2.0',\r\n Name: this.name,\r\n ParentName: this.parentMarker.name,\r\n Data: this.data,\r\n IsParentDone: this.parentMarker.isDone,\r\n IsPageReadyFulfilled: isPageReadyFulfilled,\r\n IsFileFetched: this.isFileFetched,\r\n FileFetchStartTime: _.result(this.markers.timeFetchFile, 'time', 0),\r\n FileFetchActiveStartTime: _.result(this.markers.timeFetchFile, 'activeTime', 0),\r\n DataFetchStartTime: _.result(this.markers.timeFetchData, 'time', 0),\r\n DataFetchActiveStartTime: _.result(this.markers.timeFetchData, 'activeTime', 0),\r\n RenderStartTime: _.result(this.markers.timeRender, 'time', 0),\r\n RenderActiveStartTime: _.result(this.markers.timeRender, 'activeTime', 0),\r\n InitStartTime: this.markers.timeInit.time,\r\n InitActiveStartTime: this.markers.timeInit.activeTime,\r\n DoneStartTime: this.markers.timeDone.time,\r\n DoneActiveStartTime: this.markers.timeDone.activeTime,\r\n DidUrlChange: didUrlChange,\r\n InitUrl: didUrlChange ? this.InitUrl : '',\r\n DoneUrl: didUrlChange ? doneUrl : '',\r\n AdditionalMessage: this.additionalMessage,\r\n };\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__68__;","\r\nimport _ from 'underscore';\r\n\r\nconst functionWithPerfMarker = function (perfMarker, func, context) {\r\n if (!_.isFunction(func)) {\r\n return null;\r\n }\r\n\r\n const newFunc = function (...args) {\r\n perfMarker.willInit();\r\n\r\n const result = func.apply(context || this, args);\r\n\r\n perfMarker.done();\r\n\r\n return result;\r\n };\r\n\r\n return newFunc;\r\n};\r\n\r\nconst asyncFunctionWithPerfMarker = function (perfMarker, asyncFunc, context) {\r\n if (!_.isFunction(asyncFunc)) {\r\n return null;\r\n }\r\n\r\n const newAsyncFunc = function (...args) {\r\n perfMarker.willInit();\r\n\r\n return asyncFunc.apply(context || this, args).then((result) => {\r\n perfMarker.done();\r\n\r\n return result;\r\n });\r\n };\r\n\r\n return newAsyncFunc;\r\n};\r\n\r\nexport { functionWithPerfMarker, asyncFunctionWithPerfMarker };\r\n","import PropTypes from 'prop-types';\r\n\r\nexport const perfMarkerPropTypes = PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n willFetchFile: PropTypes.func.isRequired,\r\n willFetchData: PropTypes.func.isRequired,\r\n willInit: PropTypes.func.isRequired,\r\n willRender: PropTypes.func.isRequired,\r\n done: PropTypes.func.isRequired,\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__71__;","export { ImageODataService } from './src/index';\r\n","import _ from 'underscore';\r\nimport { odata } from '@bingads-webui/http-util';\r\n\r\nexport class ImageODataService {\r\n constructor({\r\n cid,\r\n aid,\r\n host,\r\n path,\r\n token,\r\n controller,\r\n }) {\r\n this.cid = cid;\r\n this.aid = aid;\r\n this.host = host;\r\n this.path = path;\r\n this.token = token;\r\n this.controller = controller || 'Images';\r\n }\r\n\r\n /**\r\n * Get the images using the OData\r\n *\r\n * @param {Object} options - options for getting\r\n * @param {Number} options.top - top\r\n * @param {Number} options.skip - skip\r\n * @param {Object} options.customQueries - key value pair for the additional queries.\r\n *\r\n * @returns {Promise} - Promise of getting the images\r\n */\r\n getImages(options) {\r\n const defaultOptions = {\r\n top: 12,\r\n skip: 0,\r\n customQueries: {},\r\n };\r\n\r\n const optionsWithDefault = _.defaults(options, defaultOptions);\r\n\r\n const url = `/Customers(${this.cid})/Accounts(${this.aid})/${this.controller}`;\r\n\r\n const query = _.extend({\r\n $top: optionsWithDefault.top,\r\n $skip: optionsWithDefault.skip,\r\n }, optionsWithDefault.customQueries);\r\n\r\n return odata.get(url, {\r\n data: query,\r\n host: this.host,\r\n path: this.path,\r\n oDataToken: this.token,\r\n });\r\n }\r\n\r\n /**\r\n * Post image with the passed in data\r\n *\r\n * @param {Object} body - object containing the upload data\r\n *\r\n * @returns {Promise} - Promise reponse form the OData call\r\n */\r\n postImage(body) {\r\n const url = `/Customers(${this.cid})/Accounts(${this.aid})/${this.controller}`;\r\n\r\n return odata.post(url, {\r\n data: body,\r\n host: this.host,\r\n path: this.path,\r\n oDataToken: this.token,\r\n });\r\n }\r\n\r\n /**\r\n * Patch image with the passed in data\r\n *\r\n * @param {Number} id - id of the image to patch\r\n * @param {Object} body - object containing the patch data\r\n *\r\n * @returns {Promise} - Promise reponse form the OData call\r\n */\r\n patchImage(id, body) {\r\n const url = `/Customers(${this.cid})/Accounts(${this.aid})/${this.controller}(${id})`;\r\n\r\n return odata.patch(url, {\r\n data: body,\r\n host: this.host,\r\n path: this.path,\r\n oDataToken: this.token,\r\n });\r\n }\r\n\r\n /**\r\n * Delete image by the id passed in\r\n *\r\n * @param {Number} id - Id of the image to be deleted.\r\n *\r\n * @returns {Promise} - Promise response from the OData call.\r\n */\r\n deleteImage(id) {\r\n const url = `/Customers(${this.cid})/Accounts(${this.aid})/${this.controller}(${id})`;\r\n\r\n return odata.delete(url, {\r\n host: this.host,\r\n path: this.path,\r\n oDataToken: this.token,\r\n });\r\n }\r\n\r\n /**\r\n * Get image by the id passed in\r\n *\r\n * @param {Number} id - Id of the iamge to be requested.\r\n *\r\n * @returns {Promise} - Promise response from the OData call.\r\n */\r\n getImage(id) {\r\n const url = `/Customers(${this.cid})/Accounts(${this.aid})/${this.controller}(${id})`;\r\n\r\n return odata.get(url, {\r\n host: this.host,\r\n path: this.path,\r\n oDataToken: this.token,\r\n });\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__44__;","module.exports = __WEBPACK_EXTERNAL_MODULE__125__;","import PreferenceService from './src/preference-service';\r\n\r\nexport { PreferenceService };\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { getSessionStorage } from '@bingads-webui/storage';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { preferenceDS } from './data-store';\r\n\r\nconst Level = {\r\n All: 0,\r\n User: 1,\r\n Account: 2,\r\n};\r\n\r\nlet isInitialized = false;\r\nlet localRepository = [];\r\nlet localAccountLevelRepository = [];\r\nlet localUserLevelRepository = [];\r\nlet p$preferences = null;\r\nlet keySessionStorage = null;\r\n\r\nconst localToRemoteIdMap = {};\r\nconst userLevelLocalToRemoteIdMap = {};\r\nlet latestLocalId = 0;\r\nconst resolvedPromise = Promise.resolve();\r\nlet remoteSyncTasks = resolvedPromise;\r\n\r\nconst SessionStorage = getSessionStorage();\r\nlet currentUserInfo;\r\nlet currentCustomerInfo;\r\nlet currentAccountInfo;\r\nlet APIHost;\r\nlet APIPath;\r\nlet oDataToken;\r\n\r\n/**\r\n * Resolves when remote sync tasks is done. Will make use of\r\n * passed in ID after other optimizations, making it mandatory to pass\r\n * for that case.\r\n * @param {String} id - ID for data\r\n * @returns {Promise} - resolves when remote sync is done\r\n */\r\nconst onRemoteSyncDone = (id) => {\r\n if (!id) {\r\n throw new Error('Should pass the ID of the preference item to check');\r\n }\r\n\r\n return remoteSyncTasks;\r\n};\r\n\r\n/**\r\n * Resolves when remote sync tasks for multiple Ids is done. Will make use of\r\n * passed in IDs after other optimizations, making it mandatory to pass\r\n * for that case.\r\n * @param {String[]} ids - IDs for data\r\n * @returns {Promise} - resolves when remote sync is done\r\n */\r\nconst onMultipleRemoteSyncDone = ids => Promise.all(ids.map(id => onRemoteSyncDone(id)));\r\n\r\nconst getStoreOptions = (params, isUserLevel) => {\r\n const accountId = isUserLevel === true ? 0 : currentAccountInfo.Id;\r\n const customerId = currentCustomerInfo.Id;\r\n\r\n return {\r\n cacheResponse: false,\r\n entitySet: {\r\n odataURL: `/Customers(${customerId})/Accounts(${accountId})/Preferences`,\r\n $withKey: function withKey(id) {\r\n const odataURL = `${this.odataURL}(${id})`;\r\n return {\r\n odataURL,\r\n };\r\n },\r\n },\r\n afterUpdate: (resource, attrs) =>\r\n // OData Server should return the entity as response for PATCH\r\n // But it doesn't, so we hack here to use request body as the response\r\n Promise.resolve(_.defaults({}, params, attrs)),\r\n host: APIHost,\r\n path: APIPath,\r\n oDataToken,\r\n };\r\n};\r\n\r\nconst concatLocalRepository = () => {\r\n if (_.isArray(localUserLevelRepository) && localUserLevelRepository.length > 0) {\r\n localRepository = localUserLevelRepository.concat(localAccountLevelRepository);\r\n } else {\r\n localRepository = localAccountLevelRepository;\r\n }\r\n\r\n return localRepository;\r\n};\r\n\r\nconst getSessionStorageKey = () => {\r\n const userName = currentUserInfo.Name || 'anonymous';\r\n const customerId = currentCustomerInfo.Id;\r\n\r\n return `Preferences_${userName}_${customerId}`;\r\n};\r\n\r\nconst parseData = (rawData) => {\r\n let parsedData = null;\r\n\r\n try {\r\n parsedData = JSON.parse(rawData);\r\n } catch (e) {\r\n parsedData = rawData;\r\n }\r\n\r\n return parsedData;\r\n};\r\n\r\nconst mapPreferenceData = rawPreferenceData => _.map(rawPreferenceData, (result) => {\r\n result.Data = parseData(result.Data); // eslint-disable-line no-param-reassign\r\n\r\n return result;\r\n});\r\n\r\nconst initSync = ({\r\n initialUserPreferences,\r\n currentUser,\r\n currentCustomer,\r\n currentAccount,\r\n apiHost,\r\n apiPath,\r\n authToken,\r\n}) => {\r\n if (localRepository.length === 0) {\r\n currentUserInfo = currentUser;\r\n currentCustomerInfo = currentCustomer;\r\n currentAccountInfo = currentAccount;\r\n APIHost = apiHost;\r\n APIPath = apiPath;\r\n oDataToken = authToken;\r\n\r\n const userLevelPreferenceFromPageContext =\r\n parseData(initialUserPreferences.UserLevelPreferences);\r\n const accountLevelPreferenceFromPageContext =\r\n parseData(initialUserPreferences.AccountLevelPreferences);\r\n\r\n if (_.isArray(userLevelPreferenceFromPageContext)\r\n && _.isArray(accountLevelPreferenceFromPageContext)) {\r\n localUserLevelRepository = mapPreferenceData(userLevelPreferenceFromPageContext);\r\n localAccountLevelRepository = mapPreferenceData(accountLevelPreferenceFromPageContext);\r\n\r\n // successfully initialized with data from page context\r\n isInitialized = true;\r\n concatLocalRepository();\r\n }\r\n }\r\n\r\n return localRepository;\r\n};\r\n\r\nconst initialize = (context) => {\r\n if (!p$preferences) {\r\n const {\r\n initialUserPreferences,\r\n currentUser,\r\n currentCustomer,\r\n currentAccount,\r\n apiHost,\r\n apiPath,\r\n authToken,\r\n } = context;\r\n\r\n const repository = initSync({\r\n initialUserPreferences,\r\n currentUser,\r\n currentCustomer,\r\n currentAccount,\r\n apiHost,\r\n apiPath,\r\n authToken,\r\n });\r\n\r\n if (isInitialized) {\r\n // repository has already been initialized, no need to call findAll()\r\n p$preferences = Promise.resolve().then(() => repository);\r\n return p$preferences;\r\n }\r\n\r\n currentUserInfo = currentUser;\r\n currentCustomerInfo = currentCustomer;\r\n currentAccountInfo = currentAccount;\r\n APIHost = apiHost;\r\n APIPath = apiPath;\r\n oDataToken = authToken;\r\n\r\n p$preferences = Promise.settle([\r\n preferenceDS.findAll({\r\n limit: Number.MAX_VALUE - 1,\r\n userLevel: false,\r\n }, getStoreOptions()),\r\n preferenceDS.findAll({\r\n limit: Number.MAX_VALUE - 1,\r\n userLevel: true,\r\n }, getStoreOptions({}, true)),\r\n ]).then((results) => {\r\n if (results[1].isFulfilled()) {\r\n const resultUserPreferences = results[1].value();\r\n\r\n if (_.isArray(resultUserPreferences)) {\r\n localUserLevelRepository = mapPreferenceData(resultUserPreferences);\r\n }\r\n }\r\n\r\n if (results[0].isFulfilled()) {\r\n const resultAccountPreferences = results[0].value();\r\n\r\n if (_.isArray(resultAccountPreferences)) {\r\n localAccountLevelRepository = mapPreferenceData(resultAccountPreferences);\r\n }\r\n }\r\n\r\n // successfully initialized with async odata fetch\r\n isInitialized = true;\r\n return concatLocalRepository();\r\n });\r\n }\r\n\r\n if (!keySessionStorage) {\r\n keySessionStorage = getSessionStorageKey();\r\n }\r\n\r\n return p$preferences;\r\n};\r\n\r\nconst findByPrefix = (prefix) => {\r\n if (!prefix) {\r\n return [];\r\n }\r\n\r\n const searchPattern = new RegExp(`^${prefix.replace(/\\./g, '\\\\.')}`, 'i');\r\n\r\n return cloneDeep(_.filter(localRepository, preference => searchPattern.test(preference.Name)));\r\n};\r\n\r\nconst findByName = name => cloneDeep(_.findWhere(localRepository, { Name: name }));\r\n\r\nconst findByNameAtUserLevel =\r\n name => cloneDeep(_.findWhere(localUserLevelRepository, { Name: name }));\r\n\r\nconst findByNameAtAccountLevel =\r\n name => cloneDeep(_.findWhere(localAccountLevelRepository, { Name: name }));\r\n\r\nconst find = id => cloneDeep(_.findWhere(localRepository, { Id: id }));\r\n\r\nconst setToSession = (data) => {\r\n if (!data || !SessionStorage) {\r\n return Promise.resolve();\r\n }\r\n\r\n const sessionData = SessionStorage.get(keySessionStorage) || [];\r\n\r\n const preference = _.findWhere(sessionData, { Name: data.Name });\r\n\r\n if (_.isEmpty(preference)) {\r\n sessionData.push(data);\r\n } else {\r\n _.extend(preference, data);\r\n }\r\n\r\n SessionStorage.set(keySessionStorage, sessionData);\r\n\r\n return Promise.resolve(sessionData);\r\n};\r\n\r\nconst findByNameInSession = (name) => {\r\n const sessionData = SessionStorage.get(keySessionStorage);\r\n\r\n return _.findWhere(sessionData, { Name: name });\r\n};\r\n\r\nconst delFromSession = (name) => {\r\n if (!name || !SessionStorage) {\r\n return;\r\n }\r\n\r\n let sessionData = SessionStorage.get(keySessionStorage);\r\n\r\n sessionData = _.reject(sessionData, { Name: name });\r\n SessionStorage.set(keySessionStorage, sessionData);\r\n};\r\n\r\n/**\r\n * Generate a local ID for keys created in this window.\r\n * Once data is persisted to remote, it will be mapped to the\r\n * remote ID for subsequent syncing.\r\n * @returns {String} - ID for data\r\n */\r\nconst generateLocalId = () => {\r\n latestLocalId += 1;\r\n return `localId_${latestLocalId}`;\r\n};\r\n\r\n/**\r\n * Replaces the Id parameter with the remote Id if it\r\n * was previously mapped\r\n * @param {Object} params - The params object to save\r\n * @param {Any} id - The local Id to replace\r\n * @param {Boolean} isUserLevel - True if it is a user level preference\r\n * @returns {undefined} - no returns\r\n */\r\nconst setRemoteId = (params, id, isUserLevel) => {\r\n if (!_.isString(params.Id) || params.Id.indexOf('localId_') !== 0) {\r\n return;\r\n }\r\n const keyMap = isUserLevel ? userLevelLocalToRemoteIdMap : localToRemoteIdMap;\r\n\r\n params.Id = keyMap[id] || undefined; // eslint-disable-line no-param-reassign\r\n};\r\n\r\n/**\r\n * After a preference is destroyed, removes its ID mapping\r\n * @param {any} id - local ID\r\n * @param {any} isUserLevel - True if it is a user level preference\r\n * @returns {undefined} - no returns\r\n */\r\nconst deleteMappedId = (id, isUserLevel) => {\r\n const remoteIdMap = isUserLevel ? userLevelLocalToRemoteIdMap : localToRemoteIdMap;\r\n\r\n delete remoteIdMap[id];\r\n};\r\n\r\n/**\r\n * Adds a task for remote syncing to the queue\r\n * @param {Promise} task - Promise with some CUD operation\r\n * @returns {Promise} - The promise that will resolve once operation is done\r\n */\r\nconst addTask = (task) => {\r\n if (remoteSyncTasks !== resolvedPromise && remoteSyncTasks.isFulfilled()) {\r\n remoteSyncTasks = resolvedPromise;\r\n }\r\n remoteSyncTasks = remoteSyncTasks.then(task).catch(() => {\r\n // Remote call failed. Chain will continue;\r\n });\r\n return remoteSyncTasks;\r\n};\r\n\r\nconst updateLocalCopy = (isUserLevel, id, data) => {\r\n const localCopy = isUserLevel === true ? localUserLevelRepository : localAccountLevelRepository;\r\n let preference = _.findWhere(localCopy, { Id: id });\r\n\r\n if (_.isEmpty(preference)) {\r\n preference = _.defaults({ Id: id }, data);\r\n localCopy.push(preference);\r\n } else {\r\n _.extend(preference, data);\r\n }\r\n\r\n concatLocalRepository();\r\n\r\n return cloneDeep(preference);\r\n};\r\n\r\nconst createOrUpdate = (data, level) => {\r\n if (!isInitialized) {\r\n return Promise.resolve(null);\r\n }\r\n\r\n const isUserLevel = level === Level.User;\r\n let currentPreference = [];\r\n if (level === Level.All) {\r\n currentPreference = findByName(data.Name);\r\n } else if (level === Level.User) {\r\n currentPreference = findByNameAtUserLevel(data.Name);\r\n } else if (level === Level.Account) {\r\n currentPreference = findByNameAtAccountLevel(data.Name);\r\n }\r\n\r\n if (currentPreference\r\n && _.isEqual(currentPreference.Data, data.Data)) {\r\n return Promise.resolve(currentPreference);\r\n }\r\n\r\n if (currentPreference && !data.Id) {\r\n data.Id = currentPreference.Id; // eslint-disable-line no-param-reassign\r\n }\r\n\r\n const params = _.defaults({\r\n // Data is in type String in OData Server\r\n Data: _.isString(data.Data) ? data.Data : JSON.stringify(data.Data),\r\n }, _.defaults(data, {\r\n Type: 'string',\r\n Version: 1,\r\n }));\r\n\r\n const id = _.isNull(data.Id) || _.isUndefined(data.Id) ? generateLocalId() : data.Id;\r\n const preference = updateLocalCopy(isUserLevel, id, data);\r\n\r\n addTask(() => {\r\n setRemoteId(params, id, isUserLevel);\r\n return preferenceDS.create(params, getStoreOptions(params, isUserLevel)).then((ret) => {\r\n const remoteIdMap = isUserLevel ? userLevelLocalToRemoteIdMap : localToRemoteIdMap;\r\n\r\n remoteIdMap[id] = ret.Id;\r\n });\r\n });\r\n\r\n return Promise.resolve(preference);\r\n};\r\n\r\nconst set = data => createOrUpdate(data, Level.All);\r\n\r\nconst setAtUserLevel = data => createOrUpdate(data, Level.User);\r\n\r\nconst setAtAccountLevel = data => createOrUpdate(data, Level.Account);\r\n\r\nconst processBulkSetResponse = response => ({\r\n Action: 'BatchCreate',\r\n Response: response,\r\n});\r\n\r\n\r\nconst bulkCreate = (params, isUserLevel) => {\r\n if (!isInitialized) {\r\n return Promise.resolve(null);\r\n }\r\n\r\n const options = getStoreOptions(params, isUserLevel);\r\n\r\n options.bulkCreate = true;\r\n options.action = 'POST';\r\n options.processResponse = processBulkSetResponse;\r\n options.overrideResponse = true;\r\n\r\n // Make bulkCreate wait for other tasks to finish\r\n return addTask(() => preferenceDS.create(params, options).then((result) => {\r\n if (!result || !result.Response || !_.isArray(result.Response)) {\r\n return {\r\n Status: false,\r\n Response: result.Response,\r\n };\r\n }\r\n\r\n let status = false;\r\n\r\n _.forEach(result.Response, (item, index) => {\r\n if (item.status !== 200 || !item.data) {\r\n return;\r\n }\r\n\r\n status = true;\r\n const data = params.reqs[index];\r\n\r\n data.Data = parseData(data.Data);\r\n updateLocalCopy(isUserLevel, item.data.Id, data);\r\n });\r\n\r\n concatLocalRepository();\r\n\r\n return {\r\n Status: status,\r\n Response: result.Response,\r\n };\r\n }));\r\n};\r\n\r\nconst delFromStore = (id, isUserLevel) => {\r\n const params = { Id: id };\r\n\r\n if (isUserLevel === true) {\r\n localUserLevelRepository = _.reject(localUserLevelRepository, { Id: id });\r\n } else {\r\n localAccountLevelRepository = _.reject(localAccountLevelRepository, { Id: id });\r\n }\r\n\r\n concatLocalRepository();\r\n\r\n addTask(() => {\r\n setRemoteId(params, id, isUserLevel);\r\n return preferenceDS.destroy(params.Id, getStoreOptions({}, isUserLevel)).then(() => {\r\n deleteMappedId(id, isUserLevel);\r\n });\r\n });\r\n\r\n return Promise.resolve();\r\n};\r\n\r\nconst del = id => delFromStore(id, false);\r\n\r\nconst delAtUserLevel = id => delFromStore(id, true);\r\n\r\nexport default {\r\n isInitialized,\r\n initSync,\r\n initialize,\r\n findByPrefix,\r\n findByName,\r\n find,\r\n set,\r\n setAtUserLevel,\r\n setAtAccountLevel,\r\n bulkCreate,\r\n del,\r\n setToSession,\r\n findByNameInSession,\r\n delFromSession,\r\n delAtUserLevel,\r\n findByNameAtUserLevel,\r\n findByNameAtAccountLevel,\r\n onRemoteSyncDone,\r\n onMultipleRemoteSyncDone,\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__152__;","import JSData from 'js-data';\r\nimport { ODataBaseAdapter } from '@bingads-webui/js-data-odata-base-adapter';\r\n\r\nconst dataStore = new JSData.DS({ cacheResponse: false });\r\n\r\ndataStore.registerAdapter(\r\n 'odata',\r\n new ODataBaseAdapter({}),\r\n { default: true }\r\n);\r\n\r\nconst preferenceDS = dataStore.defineResource({\r\n name: 'Preference',\r\n idAttribute: 'Id', // Customized on the idAttribute\r\n});\r\n\r\nexport {\r\n preferenceDS,\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__43__;","import _ from 'underscore';\r\nimport * as $url from '@bingads-webui/url-util';\r\nimport { URLMakeOptions, HTTPOptions, StringDictionary } from '../types';\r\n\r\nexport function host(options: URLMakeOptions) {\r\n return options.host;\r\n // NOFIX:\r\n // return config.has(options.host)? config.get(options.host) : options.host;\r\n}\r\n\r\nexport function path(options: URLMakeOptions) {\r\n return options.path;\r\n // NOFIX:\r\n // return config.has(options.path)? config.get(options.path) : options.path;\r\n}\r\n\r\nexport function fill(url: string, options: URLMakeOptions = {}) {\r\n let ret = url;\r\n let params: StringDictionary = {};\r\n\r\n // NOFIX:\r\n // if (options.use_state !== false) {\r\n // params = state.attributes;\r\n // }\r\n\r\n if (options.params) {\r\n params = _.extend({}, params, options.params);\r\n }\r\n\r\n // try to replace with value from params; otherwise keep as original\r\n ret = url.replace(/:([a-zA-Z_]+)/g, (match: string, key: string) => (_.has(params, key) ? params[key] : match));\r\n\r\n return ret;\r\n}\r\n\r\nexport function expand(url: string, options: URLMakeOptions = {}) {\r\n let ret = url;\r\n const expandOptions = _.defaults(options, {\r\n composeBatchUrl: true,\r\n });\r\n\r\n if (expandOptions.composeBatchUrl && (expandOptions.host && !new RegExp(`^${host(expandOptions)}`).test(ret))) {\r\n ret = $url.join(host(expandOptions) || '', path(expandOptions) || '', ret);\r\n }\r\n\r\n // replace all param placeholders by backbone style slugs\r\n // ex: /Customers()/Accounts()/ becomes /Customers(:customer_id)/Accounts(:account_id)/\r\n ret = ret.replace(/\\/((\\w+?)s?)(\\(\\))/g, (match: string, col: string, type: string) => `/${col}(:${type.toLowerCase()}_id)`);\r\n\r\n return ret;\r\n}\r\n\r\nexport function make(url: string, options: URLMakeOptions) {\r\n return fill(expand(url, options), options);\r\n}\r\n\r\nexport function queryify(url: string, {\r\n method,\r\n data,\r\n customParamSerialize,\r\n urlParameters,\r\n}: HTTPOptions) {\r\n const isGet = !method || method === 'GET';\r\n if (isGet && _.isObject(data)) {\r\n // $.param is not supported by node, so use custom param serialization function\r\n return $url.queryify(url, data, customParamSerialize);\r\n }\r\n\r\n const isPostOrPatch = !method || method === 'POST' || method === 'PATCH';\r\n if (isPostOrPatch && _.isObject(urlParameters)) {\r\n // $.param is not supported by node, so use custom param serialization function\r\n return $url.queryify(url, urlParameters, customParamSerialize);\r\n }\r\n\r\n return url;\r\n}\r\n\r\nexport function getDomain() {\r\n return document.domain;\r\n}\r\n\r\nexport function getProtocol() {\r\n return window.location.protocol;\r\n}\r\n\r\nexport function getPort() {\r\n return window.location.port;\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport * as core from './core';\r\nimport * as urlUtil from '../util/url';\r\nimport { Args, ODataOptions } from '../types';\r\n\r\nexport default function ajax, TResult>(...args: Args) {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n // NOFIX:\r\n // if (!options.host) {\r\n // options.host = 'odata.url';\r\n // }\r\n\r\n // if (!options.path) {\r\n // options.path = 'odata.path';\r\n // }\r\n\r\n const uri = urlUtil.make(url, {\r\n host: options.host,\r\n path: options.path,\r\n // NOFIX:\r\n // use_state: options.use_state,\r\n params: options.params,\r\n });\r\n\r\n options.beforeSend = <(jqXHR: JQuery.jqXHR, settings: Options) => void>_.wrap(options.beforeSend || _.noop, (func, jqXHR) => {\r\n // All these setRequestHeader logic could be handled by `options.headers`\r\n // These code and related options are deprecated\r\n\r\n // NOFIX:\r\n // var oDataToken = config.get('odata.token');\r\n // NOTICE: oDataToken changed to come from options\r\n const { oDataToken, oDataTokenType } = options;\r\n\r\n if (oDataToken) {\r\n const tokenType = oDataTokenType || 'CCMTSmallToken';\r\n jqXHR.setRequestHeader('Authorization', `${tokenType} ${oDataToken}`);\r\n }\r\n\r\n // NOFIX:\r\n // var loginType = config.get('odata.loginType');\r\n // NOTICE: loginType changed to come from options\r\n const { loginType } = options;\r\n if (loginType) {\r\n jqXHR.setRequestHeader('x-ms-logintype', loginType);\r\n }\r\n\r\n // enable odata annotations by default;\r\n // we use annotations to return aggregates in grid responses\r\n jqXHR.setRequestHeader('Prefer', 'odata.include-annotations=\"*\"');\r\n\r\n const requestId = putil.generateGuid();\r\n jqXHR.setRequestHeader('x-ms-requestid', requestId);\r\n\r\n const { applicationName } = options;\r\n\r\n jqXHR.setRequestHeader('x-ms-applicationname', applicationName || 'bingadsweb');\r\n\r\n const { headers } = options;\r\n // NOFIX:\r\n // var sessionId = _.result(config.get('Omniture'), 'SessionId');\r\n // JFX_SessionId is a secure HttpOnly cookie, inaccessible to client side cookie.\r\n // Changed from cookie to come from options.\r\n const sessionId = options.SessionId;\r\n if (!_.isUndefined(sessionId)) {\r\n jqXHR.setRequestHeader('x-ms-sessionid', sessionId);\r\n } else if (headers && headers['x-ms-sessionid']) {\r\n jqXHR.setRequestHeader('x-ms-sessionid', headers['x-ms-sessionid']);\r\n }\r\n\r\n // NOFIX:\r\n // We could pass in all these from `options.headers`\r\n // var pageContext = config.attributes();\r\n // if (!_.isUndefined(pageContext)) {\r\n // jqXHR.setRequestHeader('x-ms-lcid', pageContext.CultureLcid);\r\n // jqXHR.setRequestHeader('lcid', pageContext.CultureLcid);\r\n // }\r\n\r\n if (options.customHeader) {\r\n jqXHR.setRequestHeader(options.customHeader.name, options.customHeader.value);\r\n }\r\n // call the original func we are wrapping here\r\n if (_.isFunction(func)) {\r\n return func(jqXHR);\r\n }\r\n\r\n return undefined;\r\n });\r\n\r\n options.parse = (err) => err.value;\r\n\r\n // TODO: this logic is specific to Campaign OData\r\n options.i18nErrors = (errs, i18n) => {\r\n if (errs) {\r\n return _.map(errs, (err) => {\r\n let key = `Error_Campaign_API_${err.Code}`;\r\n if (err['@odata.type'] === '#Model.ApiEditorialError') {\r\n key = `Error_Editorial_Raw_${err.Code}`;\r\n }\r\n return i18n.getStringOrDefault(key, i18n.getString('Error: ') + err.Code);\r\n });\r\n }\r\n return [];\r\n };\r\n\r\n if (_.isUndefined(options.contentType)) {\r\n options.contentType = 'application/json';\r\n }\r\n\r\n return core.ajax(uri, options, cb);\r\n}\r\n","import * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport ajax from './odata-core';\r\nimport * as multipart from '../util/multipart';\r\nimport { ODataBatchOptions, Callback, ODataOptions } from '../types';\r\n\r\nexport default function batch(options: ODataBatchOptions, cb: Callback) {\r\n const boundary = putil.generateGuid();\r\n // NOFIX:\r\n // const url = config.get('odata.batch_url');\r\n const url = options.batchURL;\r\n\r\n // NOFIX:\r\n // if (!options.host) {\r\n // options.host = 'odata.url';\r\n // }\r\n\r\n // if (!options.path) {\r\n // options.path = 'odata.path';\r\n // }\r\n\r\n return ajax, string>(url, {\r\n method: 'POST',\r\n data: multipart.generate(options, boundary),\r\n contentType: `multipart/mixed; boundary=\"${boundary}\"`,\r\n dataType: 'text',\r\n host: options.host,\r\n path: options.path,\r\n headers: options.headers,\r\n // NOTICE: oDataToken, loginType, SessionId are deprecated, use headers\r\n }, (err, response, textStatus, xhr) => {\r\n const res = err ? [] : multipart.parse(response);\r\n\r\n if (cb) {\r\n cb(err, res, textStatus, xhr);\r\n }\r\n })\r\n .then(multipart.parse);\r\n}\r\n","import _ from 'underscore';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nimport * as urlUtil from './url';\r\nimport {\r\n ODataBatchOptions, HTTPResponse, HTTPResponses, StringDictionary, StringableDictionary,\r\n} from '../types';\r\n\r\nexport function generate(options: ODataBatchOptions, boundary: string) {\r\n const lines = [];\r\n\r\n _.each(options.reqs, (req) => {\r\n const method = req.type.toUpperCase();\r\n const url = urlUtil.make(req.url, _.extend(options, {\r\n // NOFIX:\r\n // path: 'odata.multipart_path',\r\n path: options.multipartPath,\r\n }));\r\n lines.push(`--${boundary}`);\r\n\r\n // [imang]: the content-type and content-transfer-encoding headers\r\n // must be present for delete reqs inside a batch call\r\n if (method !== 'GET' || options.needContentType /* && method != 'DELETE' */) {\r\n lines.push(`Content-Type: ${req.contentType || 'application/http'}`);\r\n lines.push(`Content-Transfer-Encoding: ${req.contentTransferEncoding || 'binary'}`);\r\n }\r\n\r\n lines.push('', `${method} ${url} HTTP/1.1`);\r\n\r\n // req.headers is used to support all kinds of data headers of every request in batch call body\r\n if (!_.isUndefined(req.headers)) {\r\n // the following is meant to ingnore the specific headers which are already supported by req.dataContentType\r\n // and options.authorization.\r\n // for any other headers, please use req.headers. don't add another specific option to support.\r\n const ignored: string[] = [];\r\n if (!_.isNull(req.data) && !_.isUndefined(req.data)) {\r\n ignored.push('Content-Type');\r\n if (options.authorization) {\r\n ignored.push('Authorization');\r\n }\r\n }\r\n\r\n _.each(req.headers as StringableDictionary, (value, key) => {\r\n if (ignored.indexOf(key) === -1) {\r\n lines.push(`${key}: ${value}`);\r\n }\r\n });\r\n }\r\n\r\n if (!_.isNull(req.data) && !_.isUndefined(req.data)) {\r\n lines.push(`Content-Type: ${req.dataContentType || 'application/json; charset=utf-8'}`);\r\n if (options.authorization) {\r\n lines.push(`Authorization: ${options.authorization}`);\r\n }\r\n lines.push('', JSON.stringify(req.data));\r\n }\r\n\r\n lines.push('\\r\\n');\r\n });\r\n\r\n if (lines.length) {\r\n lines.push(`--${boundary}--`, '');\r\n }\r\n\r\n return lines.join('\\r\\n');\r\n}\r\n\r\nfunction parseHttpResponse(responseString: string) {\r\n const lines = responseString.split(/\\r?\\n/);\r\n const statusLine = lines.shift();\r\n\r\n // parse header lines\r\n const headers: StringDictionary = {};\r\n let headerParts: string[];\r\n let headerLine: string;\r\n let key: string;\r\n\r\n while (lines.length > 0) {\r\n headerLine = lines.shift();\r\n\r\n if (headerLine === '') {\r\n break;\r\n }\r\n\r\n headerParts = headerLine.split(':');\r\n key = headerParts.shift();\r\n\r\n headers[key] = headerParts.join(':').trim();\r\n }\r\n\r\n const response: HTTPResponse = {\r\n headers,\r\n data: safeJSON.parseSync(lines.join('')),\r\n };\r\n\r\n // parse status line\r\n const parts = statusLine.match(/^(.+) ([0-9]{3}) (.*)$/);\r\n\r\n if (parts) {\r\n const [, protocol, status, statusMessage] = parts;\r\n response.protocol = protocol;\r\n response.status = parseInt(status, 10);\r\n response.statusMessage = statusMessage;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function parse(text = '') {\r\n const lines = text.split('\\r\\n');\r\n const boundary = lines[0];\r\n const responses: HTTPResponse[] = [];\r\n let tmp: string[];\r\n let scanStatus = 0;\r\n\r\n _.each(lines, (line) => {\r\n if (line.indexOf(boundary) === 0) {\r\n if (scanStatus === 2) {\r\n responses.push(parseHttpResponse(tmp.join('\\r\\n')));\r\n }\r\n // a new response begin\r\n scanStatus = 1;\r\n tmp = [];\r\n } else if (scanStatus === 1 && line === '') {\r\n // real response begin\r\n scanStatus = 2;\r\n } else if (scanStatus === 2) {\r\n tmp.push(line);\r\n }\r\n });\r\n\r\n const successCodeList = [200, 204];\r\n const statusCounter = _.chain(responses)\r\n .countBy((val) => (_.contains(successCodeList, val.status) ? 'success' : 'failure'))\r\n .defaults({\r\n success: 0,\r\n failure: 0,\r\n })\r\n .value();\r\n\r\n Object.defineProperty(responses, 'statusCounter', {\r\n value: statusCounter,\r\n enumerable: false,\r\n });\r\n\r\n return responses;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__13__;","module.exports = __WEBPACK_EXTERNAL_MODULE__373__;","import * as odata from './src/channel/odata';\r\nimport * as http from './src/channel/core';\r\nimport * as batchUtil from './src/util/multipart';\r\n\r\nconst httpWithDelete = {\r\n signature: http.signature,\r\n ajax: http.ajax,\r\n defaults: http.defaults,\r\n xhr: http.xhr,\r\n get: http.get,\r\n post: http.post,\r\n put: http.put,\r\n patch: http.patch,\r\n delete: http.$delete,\r\n};\r\n\r\nconst odataWithDelete = {\r\n defaults: odata.defaults,\r\n get: odata.get,\r\n post: odata.post,\r\n put: odata.put,\r\n patch: odata.patch,\r\n delete: odata.$delete,\r\n ajax: odata.ajax,\r\n batch: odata.batch,\r\n upload: odata.upload,\r\n};\r\n\r\nexport {\r\n httpWithDelete as http,\r\n odataWithDelete as odata,\r\n batchUtil,\r\n};\r\n","import _ from 'underscore';\r\nimport * as core from './core';\r\nimport ajax from './odata-core';\r\nimport batch from './odata-batch';\r\nimport {\r\n Args, ODataOptions, ODataUploadOptions, ODataMethod,\r\n} from '../types';\r\n\r\nexport function defaults(defaultOptions: ODataOptions): ODataMethod {\r\n return , TResult>(...args: Args) => {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n const op = _.defaults({}, options, defaultOptions);\r\n\r\n return ajax(url, op, cb);\r\n };\r\n}\r\n\r\nexport const get = defaults({ method: 'GET' });\r\nexport const put = defaults({ method: 'PUT' });\r\nexport const patch = defaults({ method: 'PATCH' });\r\nexport const $delete = defaults({ method: 'DELETE' });\r\nexport { ajax, batch };\r\n\r\nexport function post, TResult>(...args: Args) {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n const op = _.defaults({}, options, {\r\n method: 'POST',\r\n xhr() {\r\n const xhr = core.xhr();\r\n\r\n if (options.progress && xhr.upload) {\r\n xhr.upload.addEventListener('progress', options.progress, false);\r\n }\r\n\r\n return xhr;\r\n },\r\n });\r\n\r\n return ajax(url, op, cb);\r\n}\r\n\r\n// upload using FormData with content-type multipart/form-data.\r\n// FormData is not avaiable until IE 10.\r\nexport function upload, TResult>(...args: Args) {\r\n const [url, options, cb] = core.signature(args);\r\n\r\n const op = _.defaults({}, options, {\r\n data: new FormData(),\r\n contentType: false,\r\n processData: false,\r\n });\r\n\r\n op.data.append('file', options.file);\r\n\r\n return post(url, op, cb);\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nimport { queryify } from '../util/url';\r\nimport {\r\n HTTPOptions, Args, Signature, Callback, StringDictionary, ErrorDetails, ExtraInfo, HTTPMethod,\r\n} from '../types';\r\n\r\nconst defaultOptions: HTTPOptions = {\r\n contentType: 'application/json',\r\n dataType: 'json',\r\n cache: false,\r\n type: 'GET',\r\n};\r\n\r\nfunction getResponseHeaders(xhrObject: JQueryXHR): StringDictionary {\r\n const ret: StringDictionary = {};\r\n\r\n const str = xhrObject.getAllResponseHeaders();\r\n const arr = str && str.split('\\r\\n');\r\n const reg = /^([^:]*): (.*)$/;\r\n\r\n _.each(arr, (header) => {\r\n // sample header: 'key: value'\r\n const matches = header.match(reg);\r\n if (matches) {\r\n const [, key, value] = matches;\r\n ret[key] = value;\r\n }\r\n });\r\n\r\n return ret;\r\n}\r\n\r\nfunction stringify(data: any, { method, contentType }: HTTPOptions) : undefined | string {\r\n if (!method || method === 'GET') {\r\n return undefined;\r\n }\r\n\r\n if (!_.isString(data) && contentType === 'application/json') {\r\n return JSON.stringify(data);\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport function signature, TResult>(...originalArgs: Args | [Args] | [IArguments]): Signature {\r\n let arg = >originalArgs;\r\n if (_.isArray(originalArgs[0])) {\r\n [arg] = originalArgs;\r\n } else if (_.isArguments(originalArgs[0])) {\r\n arg = >_.toArray(originalArgs[0]);\r\n }\r\n\r\n const [first, second, third] = arg;\r\n\r\n if (_.isObject(first)) {\r\n // options is first arg\r\n return [\r\n (first).uri || (first).url || '',\r\n first,\r\n second,\r\n ];\r\n } if (_.isFunction(second)) {\r\n // url is string, but options is omited\r\n return [\r\n first,\r\n {},\r\n second,\r\n ];\r\n }\r\n\r\n return [\r\n first,\r\n second,\r\n third,\r\n ];\r\n}\r\n\r\nexport function ajax, TResult>(...args: Args) {\r\n const [url, {\r\n customAjax,\r\n method,\r\n xhrFields,\r\n success,\r\n error,\r\n data,\r\n customParamSerialize,\r\n urlParameters,\r\n contentType,\r\n dataType,\r\n converters,\r\n cache,\r\n beforeSend,\r\n complete,\r\n bypassAjaxLogging,\r\n processData,\r\n xhr: xhrOption,\r\n parse,\r\n i18nErrors,\r\n headers,\r\n timeout,\r\n }, cb] = signature(args);\r\n const ajaxFunc = customAjax || $.ajax;\r\n\r\n // todo handle upper case method\r\n const $op = _.defaults({\r\n type: method ? method.toUpperCase() : undefined,\r\n xhrFields: {\r\n withCredentials: xhrFields && xhrFields.withCredentials,\r\n responseType: xhrFields && xhrFields.responseType,\r\n },\r\n success(response: any, textStatus: JQuery.Ajax.SuccessTextStatus, xhrObject: JQuery.jqXHR) {\r\n if (success) {\r\n success(response, textStatus, xhrObject);\r\n }\r\n\r\n if (cb) {\r\n cb(null, response, textStatus, xhrObject);\r\n }\r\n },\r\n error(xhrObject: JQuery.jqXHR, textStatus: JQuery.Ajax.ErrorTextStatus, errorThrown: string) {\r\n // NOFIX:\r\n // If you need this logic, you should wrap options.error to add this in your code\r\n // if (xhr && xhr.status === 401) {\r\n // state.trigger('http.auth.error');\r\n // }\r\n\r\n if (error) {\r\n error(xhrObject, textStatus, errorThrown);\r\n }\r\n\r\n const details: ErrorDetails = {\r\n xhr: xhrObject,\r\n textStatus,\r\n error: errorThrown,\r\n headers: getResponseHeaders(xhrObject),\r\n };\r\n\r\n safeJSON.parse(xhrObject.responseText, (err, res) => {\r\n if (err) {\r\n if (cb) {\r\n cb(_.extend(new Error('could not parse error'), details));\r\n }\r\n return;\r\n }\r\n\r\n details.body = res;\r\n\r\n if ($op.parse) {\r\n details.errors = $op.parse(res);\r\n }\r\n\r\n if ($op.i18nErrors && details.errors) {\r\n details.i18nErrors = $op.i18nErrors;\r\n }\r\n\r\n if (cb) {\r\n cb(details);\r\n }\r\n });\r\n },\r\n }, {\r\n contentType,\r\n dataType,\r\n converters,\r\n cache,\r\n beforeSend,\r\n complete,\r\n bypassAjaxLogging,\r\n processData,\r\n xhr: xhrOption,\r\n parse,\r\n i18nErrors,\r\n headers,\r\n timeout,\r\n }, defaultOptions);\r\n\r\n $op.url = queryify(url, {\r\n method,\r\n data,\r\n customParamSerialize,\r\n urlParameters,\r\n });\r\n $op.data = stringify(data, { method, contentType });\r\n\r\n return Promise\r\n .resolve(ajaxFunc($op))\r\n .catch((err: JQuery.jqXHR) => {\r\n const extraInfo: ExtraInfo = {\r\n body: safeJSON.parseSync(err.responseText),\r\n headers: getResponseHeaders(err),\r\n };\r\n\r\n if ($op.parse && extraInfo.body) {\r\n extraInfo.errors = $op.parse(extraInfo.body);\r\n }\r\n\r\n if ($op.i18nErrors && extraInfo.errors) {\r\n extraInfo.i18nErrors = $op.i18nErrors;\r\n }\r\n\r\n // TODO: this error increase noise in logging errors, and will revert this behavior for now\r\n // We are adding some extra logging to determine the extent of readyState=0 errors\r\n // if (err && err.readyState === 0) {\r\n // setTimeout(() => {\r\n // // eslint-disable-next-line\r\n // throw new Error(`http-util: readyState=0 fail. type: ${$op && $op.type} url: ${$op && $op.url}`);\r\n // }, 1);\r\n // }\r\n\r\n throw _.extend(err, extraInfo);\r\n });\r\n}\r\n\r\nexport function defaults(defaultOps: HTTPOptions): HTTPMethod {\r\n return function wrappedAjax, TResult>(...originalArgs: Args) {\r\n const [url, options, cb] = signature(originalArgs);\r\n\r\n const op = _.defaults({}, options, defaultOps);\r\n\r\n return ajax(url, op, cb);\r\n };\r\n}\r\n\r\nexport function xhr() {\r\n return ($.ajaxSettings.xhr)();\r\n}\r\n\r\nexport const get = defaults({ method: 'GET' });\r\nexport const post = defaults({ method: 'POST' });\r\nexport const put = defaults({ method: 'PUT' });\r\nexport const patch = defaults({ method: 'PATCH' });\r\n// delete is a reserved keyword\r\nexport const $delete = defaults({ method: 'DELETE' });\r\n","export { Listener } from './src/index';\r\nexport { Formatter } from './src/formatter';\r\nexport { Filter } from './src/filter';\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * Base listener class - defines the interface for custom listeners.\r\n * This can be extended by custom listeners\r\n */\r\nexport class Listener {\r\n constructor() {\r\n this.initialized = false;\r\n this.logs = [];\r\n }\r\n\r\n filterLogs(logMessage) {\r\n return _.any(this.filters, filter => filter.check(logMessage));\r\n }\r\n\r\n formatLogs(logMessage) {\r\n let formattedMsg = _.clone(logMessage);\r\n _.each(this.formatters, (formatter) => {\r\n formattedMsg = formatter.format(formattedMsg);\r\n });\r\n return formattedMsg;\r\n }\r\n\r\n write() {\r\n throw new Error('Not Implemented');\r\n }\r\n\r\n teardown() {\r\n _.noop();\r\n }\r\n}\r\n","/**\r\n * Base Formatter class - defines the interface for custom Formatters\r\n */\r\nexport class Formatter {\r\n format() {\r\n throw new Error('Not Implemented');\r\n }\r\n}\r\n","/**\r\n * Base Filter class - defines the interface for custom Filters\r\n */\r\nexport class Filter {\r\n check() {\r\n throw new Error('Not Implemented');\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__123__;","export { ODataBaseAdapter } from './src/index';\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { odataQuery, odataUri, odataCast } from '@bingads-webui/odata-converter';\r\n\r\nfunction sendBatchRequest(definition, params, options) {\r\n const reqs = _.map(params, (param) => {\r\n const id = param.Id;\r\n const uri = odataUri.convert({ definition, options, id });\r\n\r\n return {\r\n type: options.action,\r\n url: uri,\r\n data: param,\r\n };\r\n });\r\n\r\n return odata.batch({ reqs, path: options.path }).then((response) => {\r\n if (_.isFunction(options.processResponse)) {\r\n options.processResponse(response);\r\n }\r\n return response;\r\n });\r\n}\r\n\r\nfunction getCommonOptions({\r\n ajaxOptions = {},\r\n urlParameters,\r\n host,\r\n path,\r\n headers,\r\n successCallback,\r\n state,\r\n oDataToken,\r\n} = {}) {\r\n const options = _.defaults({}, ajaxOptions);\r\n if (_.isObject(urlParameters)) {\r\n options.urlParameters = urlParameters;\r\n }\r\n if (host) {\r\n options.host = host;\r\n }\r\n if (path) {\r\n options.path = path;\r\n }\r\n if (oDataToken) {\r\n options.oDataToken = oDataToken;\r\n }\r\n if (headers) {\r\n options.headers = headers;\r\n }\r\n // [lizho] Remove this after related OData APIs are refactored.\r\n // This callback is to get response header for product offer/product group related OData APIs.\r\n if (_.isFunction(successCallback)) {\r\n options.success = successCallback\r\n }\r\n // \r\n if (state) {\r\n options.params = _.clone(state.attributes);\r\n }\r\n return options;\r\n}\r\n\r\nexport class ODataBaseAdapter {\r\n // All of the methods shown here must return a promise\r\n\r\n // \"definition\" is a resource defintion that would\r\n // be returned by DS#defineResource\r\n\r\n // \"options\" would be the options argument that\r\n // was passed into the DS method that is calling\r\n // the adapter method\r\n constructor(options = {}) {\r\n this.options = options;\r\n }\r\n\r\n convertQuery(queryParameters) {\r\n return odataQuery.convert(queryParameters);\r\n }\r\n\r\n create(definition, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n let data = odataCast.data({ data: attrs, definition, options });\r\n let urlParameters = options.urlParameters;\r\n\r\n // Below if block is for the calls being made without EDM models\r\n // This enables making \"POST\" calls with query parameters without edm.\r\n if (attrs.queryParams) {\r\n urlParameters = this.convertQuery(attrs.queryParams);\r\n data = _.omit(data, 'queryParams');\r\n }\r\n\r\n // Must resolve the promise with the created item\r\n // NOTICE: added ajaxOptions here.\r\n return odata\r\n .post(odataUri.convert({ definition, options }), _.defaults({ data, urlParameters }, getCommonOptions(options)));\r\n }\r\n\r\n find(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n let params = {};\r\n let queryParameters = options.queryParameters;\r\n\r\n if (_.isObject(queryParameters)) {\r\n params = { data: _.omit(this.convertQuery(queryParameters), '$top', '$count') };\r\n }\r\n\r\n params.path = options.path;\r\n\r\n // Must resolve the promise with the found item\r\n return odata.get(odataUri.convert({ definition, options, id, isFinding: true }), _.defaults(params, getCommonOptions(options)));\r\n }\r\n\r\n findAll(definition, params, options = {}) {\r\n // Must resolve the promise with the found items\r\n _.extendOwn(options, this.options);\r\n const filterOptions = options.filterOptions;\r\n\r\n // params.entitySet is flavored. options.entitySet is only surported for backward support.\r\n const queryEntitySet = get(params, 'query.entitySet');\r\n const entitySet = options.edmRootResourceIdentifier && queryEntitySet ?\r\n options.edmRootResourceIdentifier.identifyEntitySet(queryEntitySet) :\r\n get(options, 'entitySet');\r\n\r\n let request;\r\n\r\n if (entitySet && options.edm && get(entitySet, 'navigation.source.type') instanceof options.edm.types.ActionType) {\r\n request = odata\r\n .post(\r\n url.queryify(odataUri.convert({ definition, options, isFinding: true, entitySet }), this.convertQuery(_.extend({ filterOptions }, params)), options.ajaxOptions.customParameterizationFunc),\r\n _.defaults({ data: entitySet.navigation.parameters }, getCommonOptions(options))\r\n );\r\n\r\n options.cacheResponse = false;\r\n } else {\r\n request = odata\r\n .get(\r\n odataUri.convert({ definition, options, isFinding: true, entitySet }),\r\n _.defaults({ data: this.convertQuery(_.extend({ filterOptions }, params)) }, getCommonOptions(options))\r\n );\r\n }\r\n\r\n return request.then((res) => {\r\n if (!res) {\r\n return null;\r\n }\r\n\r\n const addPropertyTotalCount = (obj) => Object.defineProperty(obj, 'totalCount', {\r\n value: res['@odata.count'],\r\n enumerable: false,\r\n });\r\n\r\n const addPropertyRaw = (obj) => Object.defineProperty(obj, 'raw', {\r\n value: res,\r\n enumerable: false,\r\n });\r\n\r\n const queryId = _.uniqueId('query-');\r\n\r\n // if OData results is just an array of string, make it an object then assign the object to value.\r\n if (_.isString(_.first(res.value))) {\r\n res.value = _.map(res.value, item => ({ id: _.uniqueId('item-'), value: item }));\r\n }\r\n\r\n // JSData requires ID for every resource\r\n // Some calls to OData server won't return items with ID, or return items with an empty string as id\r\n // We add ID here to fit JSData requirement before JSData inject happens\r\n _.each(res.value, (item, index) => {\r\n if (!_.has(item, definition.idAttribute) || item[definition.idAttribute] === '') {\r\n item[definition.idAttribute] = `${queryId}-${index}`;\r\n }\r\n });\r\n\r\n const addProperties = _.compose(addPropertyTotalCount, addPropertyRaw);\r\n\r\n if (options.cacheResponse) {\r\n options.afterInject = _.compose(\r\n options.afterInject || _.identity,\r\n (innerOptions, injected) => addProperties(injected)\r\n );\r\n } else {\r\n // if odata response payload is not wrapped in value property,\r\n // move the contents under res.value\r\n res.value = _.has(res, 'value') ? res.value : res;\r\n addProperties(res.value);\r\n }\r\n\r\n return res.value;\r\n }, (res) => {\r\n //in case of error, it returns statusText for caller\r\n return res.statusText;\r\n });\r\n }\r\n\r\n update(definition, id, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n const data = odataCast.data({ data: attrs, definition, options });\r\n\r\n return odata\r\n .patch(\r\n odataUri.convert({ definition, options, id }),\r\n // NOTICE: modified to replace app state/config\r\n _.defaults({ data }, getCommonOptions(options))\r\n );\r\n }\r\n updateAll(definition, attrs, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must resolve the promise with the updated items\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n\r\n destroy(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must return a promise\r\n return odata\r\n .delete(odataUri.convert({ definition, options, id }), getCommonOptions(options))\r\n .then(_.property('value'));\r\n }\r\n\r\n destroyAll(definition, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n}\r\n","export { Instrumentation } from './src/instrumentation';\r\nexport { Logger } from './src/loggers/logger';\r\nexport { constants } from './src/constants';\r\n","import _ from 'underscore';\r\nimport { getDefaultConfig } from './default-config';\r\nimport { LoggingService } from './logging-service';\r\nimport { LogTransmitter } from './log-transmitter';\r\n\r\n/**\r\n * Class representing Instrumentation\r\n */\r\nexport class Instrumentation {\r\n /**\r\n * Create an instance of Instrumentation\r\n * @param {object} config - should contain a config of loggers/processors/listeners:\r\n * loggers - specify custom loggers to override or add to the default trace, perf, error loggers.\r\n * processors - specify custom log processors to modify or enrich the logs.\r\n * listeners - specify listeners to write logs to.\r\n * isDebugMode - specify if it's in debug mode or not. Default to false. It will throw error\r\n * if (scenario, activity) pair has already been registered before in debug mode\r\n */\r\n constructor(config = {}) {\r\n this.setup(config);\r\n\r\n // scenarioContext maintains the current scenario in use.\r\n this.scenarioContext = {};\r\n\r\n this.initTransmissionService(this.scenarioContext);\r\n\r\n this.initLoggingService();\r\n }\r\n\r\n setup(config) {\r\n const defaultConfig = getDefaultConfig();\r\n this.loggers = _.defaults(config.loggers || {}, defaultConfig.loggers);\r\n this.processors = _.defaults(config.processors || {}, defaultConfig.processors);\r\n this.listeners = _.defaults(config.listeners || {}, defaultConfig.listeners);\r\n this.isDebugMode = config.isDebugMode || defaultConfig.isDebugMode;\r\n\r\n window.addEventListener('unload', () => this.stop());\r\n }\r\n\r\n stop() {\r\n this.beforeStop();\r\n this.logTransmitter.stop();\r\n }\r\n\r\n initTransmissionService(scenarioContext) {\r\n this.logTransmitter = new LogTransmitter({\r\n scenarioContext,\r\n processors: this.processors,\r\n listeners: this.listeners,\r\n });\r\n this.writeRawLog = rawLogs => this.logTransmitter.transmit(rawLogs);\r\n }\r\n\r\n initLoggingService() {\r\n _.each(this.loggers, (logger) => {\r\n logger.logTransmitter = this.logTransmitter; // eslint-disable-line no-param-reassign\r\n });\r\n this.loggingService = new LoggingService({\r\n loggers: this.loggers,\r\n isDebugMode: this.isDebugMode,\r\n });\r\n }\r\n\r\n /**\r\n * adds specified scenarios on to the instrumentation instance\r\n * @param {object} scenarioSchema - schema that specifies the scenarios to be added\r\n * @returns {Instrumentation} - return self for chaining\r\n */\r\n addScenario(scenarioSchema) {\r\n _.extend(this, this.loggingService.parseSchema(scenarioSchema));\r\n return this;\r\n }\r\n\r\n /**\r\n * add simple scenario and activity for one time use\r\n * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n * @returns {object} - activity instance ready to call logger methods\r\n * usage would be: instrumentation.createScenarioAndActivity(\"scenario\", \"activity\")\r\n * DO NOT use this if the scenario is created multiple times, in which case\r\n * the scenarioId would be different\r\n * .signal(\"something happened\")\r\n */\r\n createScenarioAndActivity(scenarioContext) {\r\n const { parentScenario, scenarioName, activityName } = scenarioContext;\r\n\r\n // build the scenario schema with activity\r\n const schema = {\r\n scenario: [\r\n {\r\n name: scenarioName,\r\n value: scenarioName,\r\n activity: activityName ? [\r\n activityName,\r\n ] : [],\r\n },\r\n ],\r\n };\r\n this.addScenario(schema);\r\n const scenario = this[scenarioName].create(parentScenario);\r\n const activity = activityName ? scenario[activityName].create() : undefined;\r\n return {\r\n scenario,\r\n activity,\r\n };\r\n }\r\n\r\n /**\r\n * add simple scenario and activity for one time use\r\n * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n * @returns {object} - scenario instance\r\n */\r\n createScenario(scenarioContext) {\r\n return this.createScenarioAndActivity(scenarioContext).scenario;\r\n }\r\n\r\n /**\r\n * method for custom logic to be run before the instrumentation service exits\r\n * can be overridden\r\n * @returns {undefined} - no returns\r\n */\r\n beforeStop() {\r\n _.noop();\r\n }\r\n\r\n get ScenarioContext() {\r\n return this.scenarioContext;\r\n }\r\n}\r\n","import { TraceLogger } from './loggers/trace-logger';\r\nimport { PerfLogger } from './loggers/perf-logger';\r\nimport { ErrorLogger } from './loggers/error-logger';\r\nimport { AjaxLogger } from './loggers/ajax-logger';\r\nimport { ScenarioProcessor } from './processors/scenario-processor';\r\nimport { SubstrateLogger } from './loggers/substrate-logger';\r\n\r\nexport function getDefaultConfig() {\r\n // default loggers\r\n const traceLogger = new TraceLogger();\r\n const perfLogger = new PerfLogger();\r\n const errorLogger = new ErrorLogger();\r\n const ajaxLogger = new AjaxLogger();\r\n const substrateLogger = new SubstrateLogger();\r\n\r\n // default processors\r\n const scenarioProcessor = new ScenarioProcessor();\r\n\r\n return {\r\n isDebugMode: false,\r\n loggers: {\r\n traceLogger, errorLogger, perfLogger, ajaxLogger, substrateLogger,\r\n },\r\n processors: { scenarioProcessor },\r\n listeners: {},\r\n };\r\n}\r\n\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Trace Logger\r\n */\r\nexport class TraceLogger extends Logger {\r\n /**\r\n * trace - logs passed in args as trace logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the trace log method\r\n * @returns {undefined} - no returns\r\n */\r\n trace(scenario, activity, parentScenario, [message, api, requestId, httpMethod, logLevel]) {\r\n super.log({\r\n api,\r\n message,\r\n requestId,\r\n httpMethod,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.TRACE,\r\n logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['trace'];\r\n }\r\n}\r\n","export const constants = {\r\n IMPACTUSER: {\r\n True: true,\r\n False: false,\r\n NA: null,\r\n },\r\n LOGLEVEL: {\r\n INFO: {\r\n name: 'Info',\r\n value: 0,\r\n },\r\n DEBUG: {\r\n name: 'Debug',\r\n value: 1,\r\n },\r\n VERBOSE: {\r\n name: 'Verbose',\r\n value: 2,\r\n },\r\n },\r\n LOGCATEGORY: {\r\n PERFORMANCE: 'ClientPerf',\r\n ERROR: 'ApplicationErrorClientScript',\r\n TRACE: 'ClientTrace',\r\n SUBSTRATE: 'Substrate',\r\n },\r\n ENTRYTYPE: {\r\n SCENARIO: 'Scenario',\r\n ACTIVITY: 'Activity',\r\n AJAX: 'Ajax',\r\n AJAXRENDER: 'AjaxRender',\r\n METHOD: 'Method',\r\n MESSAGE: 'Message',\r\n },\r\n};\r\n","/**\r\n * Base Logger\r\n */\r\nexport class Logger {\r\n /**\r\n * log - transmits logs to the log transmitter\r\n * @param {object} rawLogs - raw logs to be transmitted\r\n * @returns {undefined} - no returns\r\n */\r\n log(rawLogs) {\r\n this.transmitter.transmit(rawLogs);\r\n }\r\n\r\n getLogMethods() {\r\n throw new Error('Not Implemented');\r\n }\r\n\r\n set logTransmitter(logTransmitter) {\r\n this.transmitter = logTransmitter;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { getUtcTime, getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Perf Logger\r\n */\r\nexport class PerfLogger extends Logger {\r\n /**\r\n * start - used to measure start of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - api of activity\r\n * @returns {undefined} - no returns\r\n */\r\n start(scenario, activity, parentScenario, [api]) {\r\n super.log({\r\n api,\r\n isMethodEnter: true,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n /**\r\n * stop - used to measure stop of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - result and api of activity\r\n * @returns {undefined} - no returns\r\n */\r\n stop(scenario, activity, parentScenario, [result, api]) {\r\n super.log({\r\n api,\r\n isMethodEnter: false,\r\n timeStamp: getUtcTime(),\r\n pass: _.isUndefined(result) ? true : result,\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n /**\r\n * monitor - can be used to monitor and measure the duration of a function\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - function that is to be monitored and duration measured\r\n * @returns {undefined} - no returns\r\n */\r\n monitor(scenario, activity, parentScenario, [func, context]) {\r\n const originalFunc = context[func];\r\n\r\n if (!_.isFunction(originalFunc)) {\r\n return;\r\n }\r\n\r\n context[func] = (...args) => { // eslint-disable-line no-param-reassign\r\n const t0 = getTimestamp();\r\n\r\n const result = originalFunc.apply(context, args);\r\n\r\n const timeTaken = getTimestamp() - t0;\r\n\r\n super.log({\r\n api: originalFunc.name,\r\n timeTaken,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * monitorAsync - can be used to measure the duration of a promise\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - function that is async and returns a promise\r\n * @returns {undefined} - returns a promise with perf markers\r\n */\r\n monitorAsync(scenario, activity, parentScenario, [promise]) {\r\n const t0 = getTimestamp();\r\n\r\n // log monitor start\r\n super.log({\r\n isMethodEnter: true,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n\r\n const onPromiseDone = () => {\r\n const timeTaken = getTimestamp() - t0;\r\n\r\n // log monitor stop\r\n super.log({\r\n isMethodEnter: false,\r\n timeTaken,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n };\r\n\r\n promise.then(onPromiseDone, onPromiseDone);\r\n return promise;\r\n }\r\n\r\n /**\r\n * perf - logs passed in args as perf logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the perf log method\r\n * @returns {undefined} - no returns\r\n */\r\n perf(scenario, activity, parentScenario, [message, api]) {\r\n super.log({\r\n api,\r\n message,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['start', 'stop', 'monitor', 'monitorAsync', 'perf'];\r\n }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * Default Error Logger\r\n */\r\nexport class ErrorLogger extends Logger {\r\n /**\r\n * error - logs passed in args as error logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the error log method\r\n * @returns {undefined} - no returns\r\n */\r\n error(scenario, activity, parentScenario, [message, api, requestId, impactUser, httpMethod, logLevel]) {\r\n super.log({\r\n api,\r\n message,\r\n requestId,\r\n impactUser: impactUser || constants.IMPACTUSER.NA,\r\n httpMethod,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.ERROR,\r\n logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['error'];\r\n }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Ajax Logger - internal logger that can used by for logging Ajax calls\r\n */\r\nexport class AjaxLogger extends Logger {\r\n /**\r\n * ajax - logs passed in args as ajax logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the ajax log method\r\n * @returns {undefined} - no returns\r\n */\r\n ajax(scenario, activity, parentScenario, [requestId, api,\r\n isMethodEnter, httpMethod, timeTaken, pass, message, entityCount, includeRendering]) {\r\n super.log({\r\n requestId,\r\n api,\r\n isMethodEnter,\r\n httpMethod,\r\n timeTaken,\r\n pass,\r\n message,\r\n entityCount,\r\n entryType: includeRendering === true ?\r\n constants.ENTRYTYPE.AJAXRENDER :\r\n constants.ENTRYTYPE.AJAX,\r\n timeStamp: getUtcTime(),\r\n logLevel: constants.LOGLEVEL.INFO,\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['ajax'];\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * ScenarioProcessor class responsible for enriching logs with scenario/activity information\r\n */\r\nexport class ScenarioProcessor {\r\n process(rawLogs) {\r\n if (!_.has(rawLogs, 'scenario')) {\r\n return rawLogs;\r\n }\r\n\r\n let logs = _.extend(rawLogs, {\r\n activityId: rawLogs.activity.id,\r\n activityName: rawLogs.activity.value,\r\n scenarioId: rawLogs.scenario.id,\r\n scenarioName: rawLogs.scenario.value,\r\n parentScenarioId: rawLogs.parentScenario && rawLogs.parentScenario.id,\r\n parentScenarioName: rawLogs.parentScenario && rawLogs.parentScenario.value,\r\n });\r\n\r\n // drop activity/scenario/parentScenarioScenario since we've already extracted the needed info\r\n logs = _.omit(logs, 'activity', 'scenario', 'parentScenario');\r\n\r\n return logs;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Substrate Logger to log events for user behavior analysis\r\n * Key data entries include\r\n * Sn: scenario name\r\n * SceId: scenario id, this is re-generated whenever a scenario is created\r\n * An: activity name\r\n * ActId: activity id, this is re-generated when an activity is created\r\n * Mes: a custom message for the signal\r\n * Dur: time taken for the signal\r\n */\r\nexport class SubstrateLogger extends Logger {\r\n /**\r\n * startSignal - used to measure start of a signal\r\n * @param {object} scenario - scenario that defines the activity\r\n * @param {object} activity - activity that invoked the log method\r\n * @returns {undefined} - no returns\r\n */\r\n startSignal(scenario, activity) {\r\n if (!scenario || !activity) {\r\n return;\r\n }\r\n activity.startTime = new Date();\r\n }\r\n\r\n /**\r\n * stopSignal - used to measure stop of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {boolean} trackDuration - indicate if the signal needs to track time taken\r\n * @param {object} message - a custom message for the activity itself\r\n * @returns {undefined} - no returns\r\n */\r\n stopSignal(scenario, activity, parentScenario, [message, api, trackDuration = true]) {\r\n if (!scenario || !activity || (trackDuration && !activity.startTime)) {\r\n return;\r\n }\r\n\r\n const endTime = new Date();\r\n super.log({\r\n timeStamp: trackDuration ? activity.startTime.toJSON() : endTime.toJSON(),\r\n timeTaken: trackDuration ? (endTime - activity.startTime) : 0,\r\n logCategory: constants.LOGCATEGORY.SUBSTRATE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n message,\r\n api,\r\n });\r\n }\r\n\r\n /**\r\n * signal - an atomic signal that has start and stop paired automatically\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} message - a custom message for the activity itself\r\n * @returns {undefined} - no returns\r\n */\r\n signal(scenario, activity, parentScenario, [message, api]) {\r\n this.stopSignal(scenario, activity, parentScenario, [message, api, false]);\r\n }\r\n\r\n /**\r\n * withSignalSync - caller provides a function\r\n * start and stop are measure at start and stop of the function\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} action - caller provided function as the signal\r\n * action may return message as custom message\r\n * @returns {undefined} - no returns\r\n */\r\n withSignalSync(scenario, activity, parentScenario, [action]) {\r\n this.startSignal(scenario, activity);\r\n const actionReturn = action();\r\n this.stopSignal(\r\n scenario,\r\n activity,\r\n parentScenario,\r\n actionReturn ? [actionReturn.message, actionReturn.api] : []\r\n );\r\n return actionReturn;\r\n }\r\n\r\n /**\r\n * withSignalAsync - async version of withSignalAsync, caller provides a promise\r\n * start and stop are measure at start and stop of the prmoise\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} prmoise - caller provided promise as the signal\r\n * @returns {undefined} - no returns\r\n */\r\n withSignalAsync(scenario, activity, parentScenario, [promise]) {\r\n this.startSignal(scenario, activity);\r\n const onPromiseDone = (promiseReturn) => {\r\n this.stopSignal(\r\n scenario,\r\n activity,\r\n parentScenario,\r\n promiseReturn ? [promiseReturn.message, promiseReturn.api] : []\r\n );\r\n };\r\n\r\n promise.then(onPromiseDone, onPromiseDone);\r\n return promise;\r\n }\r\n\r\n getLogMethods() {\r\n return ['startSignal', 'stopSignal', 'signal', 'withSignalSync', 'withSignalAsync'];\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ScenarioFactory } from './scenario-factory';\r\n\r\n/**\r\n * LoggingService class responsible for setting up scenarioFactories\r\n */\r\nexport class LoggingService {\r\n /**\r\n * @param {object} options - contains the loggers/debugMode to be used\r\n */\r\n constructor(options) {\r\n this.loggers = options.loggers;\r\n this.isDebugMode = options.isDebugMode;\r\n // Record (scenario, activity) map for duplication check in debug mode\r\n this.registry = this.isDebugMode ? {} : undefined;\r\n }\r\n\r\n checkSchemaDuplication(scenarios) {\r\n /* eslint-disable no-restricted-syntax */\r\n if (this.isDebugMode && this.registry !== undefined) {\r\n for (const scenario of scenarios) {\r\n const { name: scenarioName, activity: activities } = scenario;\r\n // eslint-disable-next-line no-undef\r\n this.registry[scenarioName] = this.registry[scenarioName] || new Set();\r\n\r\n for (const { name: activityName } of activities) {\r\n if (this.registry[scenarioName].has(activityName)) {\r\n throw new Error(`[Debug] Scenario: ${scenarioName} Activity: ${activityName} already registered.`);\r\n }\r\n this.registry[scenarioName].add(activityName);\r\n }\r\n }\r\n }\r\n /* eslint-enable no-restricted-syntax */\r\n }\r\n\r\n parseSchema(scenarioSchema) {\r\n const scenarios = scenarioSchema.scenario;\r\n this.checkSchemaDuplication(scenarios);\r\n const scenarioFactories = {};\r\n _.each(scenarios, (scenario) => {\r\n scenarioFactories[scenario.name] = new ScenarioFactory(scenario, this.loggers);\r\n });\r\n return scenarioFactories;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ActivityFactory } from './activity-factory';\r\n\r\n/**\r\n * Scenario class to create an instance of a Scenario\r\n */\r\nclass Scenario {\r\n constructor(scenarioSchema, loggers, parentScenario) {\r\n this.value = scenarioSchema.value;\r\n this.name = scenarioSchema.name;\r\n this.id = generateGuid();\r\n this.setting = scenarioSchema.setting;\r\n this.loggers = loggers;\r\n this.parentScenario = parentScenario;\r\n\r\n const activities = scenarioSchema.activity;\r\n _.each(activities, (activity) => {\r\n this[(typeof activity === 'string') ? activity : activity.name] = new ActivityFactory(this, activity, loggers, parentScenario);\r\n });\r\n }\r\n\r\n createActivity(activityName) {\r\n return new ActivityFactory(this, activityName, this.loggers, this.parentScenario).create();\r\n }\r\n}\r\n\r\n/**\r\n* ScenarioFactory class responsible for creating Scenario\r\n*/\r\nexport class ScenarioFactory {\r\n /**\r\n * @param {object} scenarioSchema - schema of scenario to be created\r\n * @param {object} loggers - available loggers\r\n */\r\n constructor(scenarioSchema, loggers) {\r\n this.scenarioSchema = scenarioSchema;\r\n this.loggers = loggers;\r\n }\r\n\r\n create(parentScenario) {\r\n return new Scenario(this.scenarioSchema, this.loggers, parentScenario);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Activity class to create an instance of an Activity\r\n */\r\nclass Activity {\r\n constructor(scenario, activitySchema, loggers, parentScenario) {\r\n const simpleActivity = (typeof activitySchema === 'string');\r\n this.name = simpleActivity ? activitySchema : activitySchema.name;\r\n this.value = simpleActivity ? activitySchema : activitySchema.value;\r\n this.setting = simpleActivity ? undefined : activitySchema.setting;\r\n this.id = generateGuid();\r\n\r\n // Add logger methods on the activity\r\n _.each(loggers, (logger) => {\r\n const logMethods = logger.getLogMethods();\r\n _.each(logMethods, (logMethod) => {\r\n this[logMethod] = (...args) => logger[logMethod](scenario, this, parentScenario, args);\r\n });\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * ActivityFactory class responsible for creating Activity\r\n */\r\nexport class ActivityFactory {\r\n /**\r\n * @param {object} scenario - scenario the activity belongs to\r\n * @param {object} activitySchema - schema of scenario to be created\r\n * @param {object} loggers - available loggers\r\n * @param {object} parentScenario - parentScenario of the scenario\r\n */\r\n constructor(scenario, activitySchema, loggers, parentScenario) {\r\n this.scenario = scenario;\r\n this.activitySchema = activitySchema;\r\n this.parentScenario = parentScenario;\r\n this.loggers = loggers;\r\n }\r\n\r\n create() {\r\n return new Activity(this.scenario, this.activitySchema, this.loggers, this.parentScenario);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * LogTransmitter class responsible for transmitting logs to listeners\r\n */\r\nexport class LogTransmitter {\r\n /**\r\n * @param {object} options - has listeners, optional processors and scenarioContext\r\n */\r\n constructor(options = {}) {\r\n this.listeners = options.listeners;\r\n this.processors = options.processors;\r\n this.scenarioContext = options.scenarioContext;\r\n }\r\n\r\n /**\r\n * Updates shared scenario context every time we write, so it can be read(as parentScenario)\r\n * by internal activities when writing logs\r\n * @param {object} rawLogs - the raw logs being transmitted to the listeners\r\n * @returns {undefined} - no returns\r\n */\r\n updateScenarioContext(rawLogs) {\r\n // Scenario is marked hidden for non user defined scenarios\r\n const isHiddenScenario = _.result(rawLogs.scenario.setting, 'hidden');\r\n if (!isHiddenScenario) {\r\n this.scenarioContext.id = rawLogs.scenario.id;\r\n this.scenarioContext.value = rawLogs.scenario.value;\r\n }\r\n }\r\n\r\n transmit(rawLogs) {\r\n if (this.stopped) {\r\n return;\r\n }\r\n\r\n if (_.has(rawLogs, 'scenario')) {\r\n this.updateScenarioContext(rawLogs);\r\n }\r\n\r\n // Pass the rawLogs through each procesor to enrich them\r\n let processedLogs = rawLogs;\r\n _.each(this.processors, (processor) => {\r\n processedLogs = processor.process(processedLogs);\r\n });\r\n\r\n _.each(this.listeners, listener => listener.write(processedLogs));\r\n }\r\n\r\n /**\r\n * Stop the log transmitter service by tearing down the listeners\r\n * @returns {undefined} - no returns\r\n */\r\n stop() {\r\n _.each(this.listeners, (listener) => {\r\n listener.teardown();\r\n });\r\n this.stopped = true;\r\n }\r\n}\r\n","export { StateStore } from './src/state-store';\r\n","import {\r\n Observable,\r\n Observer,\r\n Subscription,\r\n SubscriptionObserver,\r\n} from '@bingads-webui-universal/observable';\r\nimport _ from 'underscore';\r\n\r\ninterface IStateType {\r\n [key: string]: any;\r\n}\r\n\r\nexport class StateStore {\r\n public state: T;\r\n\r\n protected subscriptions: Subscription[];\r\n\r\n protected observable: Observable;\r\n\r\n private isDefaultStateSet: boolean = false;\r\n\r\n protected set defaultState(dstate: T) {\r\n if (!this.isDefaultStateSet) {\r\n this.state = dstate;\r\n this.isDefaultStateSet = true;\r\n }\r\n }\r\n\r\n protected get defaultState() {\r\n return this.state;\r\n }\r\n\r\n constructor(initialState: T | undefined = undefined) {\r\n if (typeof initialState === 'object') {\r\n this.defaultState = initialState;\r\n }\r\n this.state = this.defaultState;\r\n this.subscriptions = [];\r\n this.observable = new Observable(this.subscriber);\r\n }\r\n\r\n setState = (stateChange: Partial) => {\r\n if (this.shallowDiff(this.state, stateChange)) {\r\n this.state = _.extend({}, this.state, stateChange);\r\n this.subscriptions.forEach((subscription) => {\r\n subscription.observer.next(this.state);\r\n });\r\n }\r\n };\r\n\r\n subscribe(observer: Observer | ((value: T) => void)): Subscription {\r\n const subscription = this.observable.subscribe(\r\n this.ensureObserverType(observer),\r\n );\r\n this.subscriptions.push(subscription);\r\n\r\n return subscription;\r\n }\r\n\r\n private shallowDiff(left: any, right: any) {\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (const prop in right) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!left.hasOwnProperty(prop) || left[prop] !== right[prop]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private subscriber = (observer: SubscriptionObserver) => () => {\r\n this.subscriptions = this.subscriptions.filter((subscription) => subscription.observer !== observer);\r\n };\r\n\r\n private ensureObserverType(ob: Observer | ((value: any) => void)): Observer {\r\n if (typeof ob !== 'function') {\r\n return ob;\r\n }\r\n return {\r\n start: (_value: any) => {},\r\n next: ob,\r\n error: (_errValue: any) => {},\r\n complete: () => {},\r\n };\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__76__;","export { InMemoryListener } from './src/in-memory-listener';\r\nexport { InMemorySink } from './src/in-memory-sink';\r\nexport { SessionStorageSink } from './src/session-storage-sink';\r\n","import { Listener } from '@bingads-webui/listener';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * In memory listener class. This logs to an in-memory object that is passed\r\n * in. It expects a sink object with write method on it.\r\n */\r\n\r\nexport class InMemoryListener extends Listener {\r\n /**\r\n * Creates an instance of InMemoryListener.\r\n * @param {any} [options={}] - The options for in-memory listener\r\n * @param {Object} options.sink - Sink to push logs to.\r\n * Should have write method on it\r\n * @param {Object} options.formatters - Object where values are formatters\r\n * to use for the listener\r\n * @param {Object} options.filters - Object where values are filters to\r\n * use for the listener\r\n */\r\n constructor(options = {}) {\r\n super(options);\r\n\r\n this.formatters = options.formatters || {};\r\n this.filters = options.filters || {};\r\n this.sink = options.sink;\r\n }\r\n\r\n /**\r\n * Init in memory listener if needed options passed in\r\n * @returns {undefined} - no returns\r\n */\r\n init() {\r\n if (this.sink && _.isFunction(this.sink.write)) {\r\n this.initialized = true;\r\n }\r\n }\r\n\r\n /**\r\n * writes logs to the listener\r\n * @param {object} logMessage - logs to be written\r\n * @returns {undefined} - no returns\r\n */\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n this.sink.write(formattedMsg);\r\n }\r\n}\r\n\r\n","/**\r\n * Sink that is compatible with InMemoryListener.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class InMemorySink {\r\n /**\r\n * Creates an instance of InMemorySink.\r\n * @param {Number} [maxSize=2000] - Maximum size of logs array.\r\n * Pass in -1 to have unbounded array.\r\n */\r\n constructor({ maxSize = 2000 } = {}) {\r\n this.logs = [];\r\n this.maxSize = maxSize;\r\n }\r\n\r\n /**\r\n * Write log to the sink\r\n * @param {Object} log - Log object to write\r\n * @returns {undefined} - no returns\r\n */\r\n write(log) {\r\n this.logs.push(log);\r\n\r\n while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n this.logs.shift();\r\n }\r\n }\r\n\r\n /**\r\n * Getter for logs written to sink. Returns the\r\n * logs array.\r\n * @readonly\r\n */\r\n get items() {\r\n return this.logs;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n/**\r\n * Sink that is compatible with SessionStorage.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class SessionStorageSink {\r\n /**\r\n * Creates an instance of SessionStorageSink.\r\n * @param {Object} options - Options to initialize\r\n * @param {Number} [options.maxSize=2000] - Maximum size of logs array.\r\n * @param {String} options.storageKey - Key to use in session storage\r\n * Pass in -1 to have unbounded array.\r\n */\r\n constructor(options = {}) {\r\n this.logs = [];\r\n this.maxSize = options.maxSize || 2000;\r\n\r\n if (!options.storageKey) {\r\n throw new Error('Cannot create sink without storageKey');\r\n }\r\n\r\n if (SessionStorageSink.keyCache[options.storageKey]) {\r\n throw new Error('Storage key is already initialized on page');\r\n }\r\n SessionStorageSink.keyCache[options.storageKey] = true;\r\n\r\n this.storageKey = options.storageKey;\r\n const existingItemsStr = window.sessionStorage.getItem(this.storageKey);\r\n const existingItems = _.isEmpty(existingItemsStr) ? [] : JSON.parse(existingItemsStr);\r\n existingItems.forEach(formattedMsg => this.write(formattedMsg));\r\n\r\n window.addEventListener('beforeunload', () => {\r\n this.setItemsOnUnload();\r\n });\r\n }\r\n\r\n /**\r\n * Write log to the sink\r\n * @param {Object} log - Log object to write\r\n * @returns {undefined} - no returns\r\n */\r\n write(log) {\r\n this.logs.push(log);\r\n\r\n while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n this.logs.shift();\r\n }\r\n }\r\n\r\n /**\r\n * Getter for logs written to sink. Returns the\r\n * logs array.\r\n * @readonly\r\n */\r\n get items() {\r\n return this.logs;\r\n }\r\n\r\n setItemsOnUnload() {\r\n window.sessionStorage.setItem(this.storageKey, JSON.stringify(this.logs));\r\n }\r\n\r\n static keyCache = {};\r\n}\r\n","export { LocalStorageListener } from './src/local-storage-listener';\r\n","import { Listener } from '@bingads-webui/listener';\r\n\r\nlet logCount = 0;\r\n/**\r\n * Local storage listener class. This logs to Local Storage using\r\n * the Storage API.\r\n */\r\n\r\nexport class LocalStorageListener extends Listener {\r\n constructor(options = {}) {\r\n super(options);\r\n\r\n this.formatters = options.formatters || [];\r\n this.filters = options.filters || [];\r\n this.uniquePageId = options.uniquePageId;\r\n this.storage = window.localStorage;\r\n }\r\n\r\n init() {\r\n if (this.storage && this.uniquePageId) {\r\n this.initialized = true;\r\n }\r\n }\r\n\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n const key = this.generateKey();\r\n\r\n try {\r\n this.storage.setItem(key, JSON.stringify(formattedMsg));\r\n logCount += 1;\r\n } catch (e) {\r\n this.logError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Generate key to use when putting log in local storage.\r\n * It uses the string unique page Id and total count of logs\r\n * written already to determine the key\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n generateKey() {\r\n return `localStorageListener.${this.uniquePageId}.${logCount}`;\r\n }\r\n\r\n logError(e) {\r\n console.error(e); // eslint-disable-line no-console\r\n }\r\n}\r\n","import { keyCode } from './src/keyCode';\r\nimport { keyName } from './src/keyName';\r\n\r\n\r\nexport { keyCode, keyName };\r\n","// The key is capitalized to be compatible with http://www.w3.org/TR/DOM-Level-3-Events-code.\r\n\r\n// Theoretically the properties should be named as keyCode (numeric) and code (string) to be\r\n// aligned with KeyboardEvent#keyCode and KeyboardEvent#code, but that would be confusing for people\r\n// that are not familiar with this story, and when KeyboardEvent#code is supported by the browser,\r\n// this component should be deprecated altogether, so let's use easy-to-understand property names\r\n// here.\r\n\r\n/**\r\n * Look up keyCode (KeyboardEvent#keyCode, numeric) with keyName (KeyboardEvent#code, string).\r\n * @example keyCode.Tab === 9\r\n * @return {number} The keyCode (KeyboardEvent#keyCode, numeric)\r\n */\r\n/* eslint-disable quote-props */\r\nexport const keyCode = {\r\n // Alpha-numeric\r\n 'Digit1': 0x31, // 49\r\n 'Digit2': 0x32, // 50\r\n 'Digit3': 0x33, // 51\r\n 'Digit4': 0x34, // 52\r\n 'Digit5': 0x35, // 53\r\n 'Digit6': 0x36, // 54\r\n 'Digit7': 0x37, // 55\r\n 'Digit8': 0x38, // 56\r\n 'Digit9': 0x39, // 57\r\n 'Digit0': 0x30, // 48\r\n 'KeyA': 0x41, // 65\r\n 'KeyB': 0x42, // 66\r\n 'KeyC': 0x43, // 67\r\n 'KeyD': 0x44, // 68\r\n 'KeyE': 0x45, // 69\r\n 'KeyF': 0x46, // 70\r\n 'KeyG': 0x47, // 71\r\n 'KeyH': 0x48, // 72\r\n 'KeyI': 0x49, // 73\r\n 'KeyJ': 0x4A, // 74\r\n 'KeyK': 0x4B, // 75\r\n 'KeyL': 0x4C, // 76\r\n 'KeyM': 0x4D, // 77\r\n 'KeyN': 0x4E, // 78\r\n 'KeyO': 0x4F, // 79\r\n 'KeyP': 0x50, // 80\r\n 'KeyQ': 0x51, // 81\r\n 'KeyR': 0x52, // 82\r\n 'KeyS': 0x53, // 83\r\n 'KeyT': 0x54, // 84\r\n 'KeyU': 0x55, // 85\r\n 'KeyV': 0x56, // 86\r\n 'KeyW': 0x57, // 87\r\n 'KeyX': 0x58, // 88\r\n 'KeyY': 0x59, // 89\r\n 'KeyZ': 0x5A, // 90\r\n\r\n // Punctuation\r\n 'Comma': 0xBC, // 188\r\n 'Period': 0xBE, // 190\r\n 'Semicolon': 0xBA, // 186\r\n 'Quote': 0xDE, // 222\r\n 'BracketLeft': 0xDB, // 219\r\n 'BracketRight': 0xDD, // 221\r\n 'Backquote': 0xC0, // 192\r\n 'Backslash': 0xDC, // 220\r\n 'Minus': 0xBD, // 189\r\n 'Equal': 0xBB, // 187\r\n 'IntlRo': 0xC1, // 193\r\n 'IntlYen': 0xFF, // 255\r\n\r\n // Modifiers\r\n 'AltLeft': 0x12, // 18\r\n 'AltRight': 0x12, // 18\r\n 'CapsLock': 0x14, // 20\r\n 'ControlLeft': 0x11, // 17\r\n 'ControlRight': 0x11, // 17\r\n 'OSLeft': 0x5B, // 91\r\n 'OSRight': 0x5C, // 92\r\n 'ShiftLeft': 0x10, // 16\r\n 'ShiftRight': 0x10, // 16\r\n\r\n // Non-printable\r\n 'ContextMenu': 0x5D, // 93\r\n 'Enter': 0x0D, // 13\r\n 'Space': 0x20, // 32\r\n 'Tab': 0x09, // 9\r\n 'Delete': 0x2E, // 46\r\n 'End': 0x23, // 35\r\n 'Home': 0x24, // 36\r\n 'Insert': 0x2D, // 45\r\n 'PageDown': 0x22, // 34\r\n 'PageUp': 0x21, // 33\r\n 'ArrowDown': 0x28, // 40\r\n 'ArrowLeft': 0x25, // 37\r\n 'ArrowRight': 0x27, // 39\r\n 'ArrowUp': 0x26, // 38\r\n 'Escape': 0x1B, // 27\r\n 'PrintScreen': 0x2C, // 44\r\n 'ScrollLock': 0x91, // 145\r\n 'Pause': 0x13, // 19\r\n\r\n // Functional\r\n 'F1': 0x70, // 112\r\n 'F2': 0x71, // 113\r\n 'F3': 0x72, // 114\r\n 'F4': 0x73, // 115\r\n 'F5': 0x74, // 116\r\n 'F6': 0x75, // 117\r\n 'F7': 0x76, // 118\r\n 'F8': 0x77, // 119\r\n 'F9': 0x78, // 120\r\n 'F10': 0x79, // 121\r\n 'F11': 0x7A, // 122\r\n 'F12': 0x7B, // 123\r\n 'F13': 0x7C, // 124\r\n 'F14': 0x7D, // 125\r\n 'F15': 0x7E, // 126\r\n 'F16': 0x7F, // 127\r\n 'F17': 0x80, // 128\r\n 'F18': 0x81, // 129\r\n 'F19': 0x82, // 130\r\n 'F20': 0x83, // 131\r\n 'F21': 0x84, // 132\r\n 'F22': 0x85, // 133\r\n 'F23': 0x86, // 134\r\n 'F24': 0x87, // 135\r\n\r\n // NumPad with NumLock on\r\n 'NumLock': 0x90, // 144\r\n 'Numpad0': 0x60, // 96\r\n 'Numpad1': 0x61, // 97\r\n 'Numpad2': 0x62, // 98\r\n 'Numpad3': 0x63, // 99\r\n 'Numpad4': 0x64, // 100\r\n 'Numpad5': 0x65, // 101\r\n 'Numpad6': 0x66, // 102\r\n 'Numpad7': 0x67, // 103\r\n 'Numpad8': 0x68, // 104\r\n 'Numpad9': 0x69, // 105\r\n 'NumpadAdd': 0x6B, // 107\r\n 'NumpadComma': 0xC2, // 194\r\n 'NumpadDecimal': 0x6E, // 110\r\n 'NumpadDivide': 0x6F, // 111\r\n 'NumpadEnter': 0x0D, // 13\r\n 'NumpadEqual': 0x0C, // 12\r\n 'NumpadMultiply': 0x6A, // 106\r\n 'NumpadSubtract': 0x6D, // 109\r\n\r\n // NumPad with NumLock off\r\n 'Numpad0-Insert': 0x2D, // 45\r\n 'Numpad1-End': 0x23, // 35\r\n 'Numpad2-ArrowDown': 0x28, // 40\r\n 'Numpad3-PageDown': 0x22, // 34\r\n 'Numpad4-ArrowLeft': 0x25, // 37\r\n 'Numpad5-Clear': 0x0C, // 12\r\n 'Numpad6-ArrowRight': 0x27, // 39\r\n 'Numpad7-Home': 0x24, // 36\r\n 'Numpad8-ArrowUp': 0x26, // 38\r\n 'Numpad9-PageUp': 0x21, // 33\r\n 'NumpadDecimal-Delete': 0x2E, // 46\r\n};\r\n/* eslint-enable quote-props */\r\n","import _ from 'underscore';\r\nimport { keyCode } from './keyCode';\r\n\r\n// The key is capitalized to be compatible with http://www.w3.org/TR/DOM-Level-3-Events-code.\r\n\r\n// Generate a readonly output.\r\n// Theoretically the properties should be named as keyCode (numeric) and code (string) to be\r\n// aligned with KeyboardEvent#keyCode and KeyboardEvent#code, but that would be confusing for people\r\n// that are not familiar with this story, and when KeyboardEvent#code is supported by the browser,\r\n// this component should be deprecated altogether, so let's use easy-to-understand property names\r\n// here.\r\n\r\nconst uniqueValues = object => _.object(_.unique(_.pairs(object), o => o[1]));\r\n\r\n/**\r\n * Look up keyName (KeyboardEvent#code, string) with keyCode (KeyboardEvent#keyCode, numeric).\r\n * @example keyName[9] === 'Tab'\r\n * @return {string} The name (KeyboardEvent#code, string)\r\n */\r\nexport const keyName = Object.create(\r\n Object.prototype,\r\n _.mapObject(_.invert(uniqueValues(keyCode)), val => ({\r\n enumerable: true,\r\n value: val,\r\n writable: false,\r\n }))\r\n);\r\n","export * from './src/index';\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport URI from 'urijs';\r\nimport topDomainList from './top-domain';\r\n\r\nexport function join(first: string, ...frags: string[]) {\r\n return frags.reduce((memo, frag) => {\r\n if (_.isEmpty(frag)) {\r\n return memo;\r\n }\r\n const eSlash = /\\/$/.test(memo);\r\n const sSlash = /^\\//.test(frag);\r\n\r\n if (!eSlash && !sSlash) {\r\n return `${memo}/${frag}`;\r\n } if (eSlash && sSlash) {\r\n return memo + frag.substring(1);\r\n }\r\n return memo + frag;\r\n }, first);\r\n}\r\n\r\ntype QueryObject = any[] | JQuery.PlainObject | JQuery;\r\n\r\nexport function queryify(url: string, data: QueryObject, serializeParam = (originalData: QueryObject) => $.param(originalData)) {\r\n const startOfRoute = url.indexOf('#');\r\n let route = '';\r\n let pathAndQuery = url;\r\n\r\n if (startOfRoute !== -1) {\r\n route = url.substring(startOfRoute);\r\n pathAndQuery = url.substring(0, startOfRoute);\r\n }\r\n\r\n // $.param is not supported by node, so use custom param serialization function\r\n return pathAndQuery + (pathAndQuery.indexOf('?') === -1 ? '?' : '&') + serializeParam(data) + route;\r\n}\r\n\r\nexport function mailto(recipient: string, subject: string, body: string) {\r\n return `mailto:${recipient}?subject=${subject}&body=${body}`;\r\n}\r\n\r\nexport function setUrlParameter(name: string, value: string, url = window.location.href, options = { keepSqBrackets: false }) {\r\n const keepSqBrackets = !!options.keepSqBrackets;\r\n\r\n const setQueryStringParam = function (innerUrl: string, originalN: string, v: string, replaceOnly: boolean) {\r\n let n = originalN;\r\n if (!keepSqBrackets) {\r\n n = n.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n }\r\n const regex = new RegExp(`([\\\\?&])${n}=.*?(&|$|#)`);\r\n if (innerUrl.match(regex)) {\r\n return innerUrl.replace(regex, `$1${n}=${v}$2`);\r\n }\r\n if (!replaceOnly) {\r\n let qs = '';\r\n const position = innerUrl.indexOf('?');\r\n if (position > -1) {\r\n if (position + 1 < innerUrl.length) {\r\n qs = '&';\r\n }\r\n } else {\r\n qs = '?';\r\n }\r\n return `${innerUrl + qs + n}=${v}`;\r\n }\r\n return innerUrl;\r\n };\r\n\r\n const pound = url.lastIndexOf('#');\r\n if (pound > -1) {\r\n return setQueryStringParam(url.slice(0, pound), name, value, false)\r\n + setQueryStringParam(url.slice(pound), name, value, true);\r\n }\r\n\r\n return setQueryStringParam(url, name, value, false);\r\n}\r\n\r\n// Gets the url parameter value by parameter name.\r\nexport function getParameter(originalName: string, url = window.location.href) {\r\n const name = originalName.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const value = (RegExp(`[\\\\?&]${name}=([^&#]*)`).exec(url) || [null, null])[1];\r\n if (value) return decodeURIComponent(value);\r\n return value;\r\n}\r\n\r\n// Update the url parameter by parameter name and value.\r\nexport function updateParameter(key: string, value: string, originalUrl: string) {\r\n const re = new RegExp(`([?|&])${key}=.*?(&|#|$)`, 'i');\r\n let url = originalUrl;\r\n if (url.match(re)) {\r\n return url.replace(re, `$1${key}=${value}$2`);\r\n }\r\n\r\n let hash = '';\r\n if (url.indexOf('#') !== -1) {\r\n hash = url.replace(/.*#/, '#');\r\n url = url.replace(/#.*/, '');\r\n }\r\n const separator = url.indexOf('?') !== -1 ? '&' : '?';\r\n return `${url + separator + key}=${value}${hash}`;\r\n}\r\n\r\nexport function hasScheme(url: string) {\r\n // eslint-disable-next-line prefer-regex-literals\r\n const urlRegex = new RegExp('^(http|https|ftp)(://)(.+)', 'i');\r\n return urlRegex.test(url);\r\n}\r\n\r\nexport function hasProtocol(url: string) {\r\n // eslint-disable-next-line prefer-regex-literals\r\n const urlRegex = new RegExp('^(http|https|ftp)(://)', 'i');\r\n return urlRegex.test(url);\r\n}\r\n\r\nexport function extendPath(url: string, path: string) {\r\n const queryIndex = url.indexOf('?');\r\n if (queryIndex === -1) {\r\n return join(url, path);\r\n }\r\n\r\n return join(url.slice(0, queryIndex), path) + url.slice(queryIndex);\r\n}\r\n\r\nexport function getDomain(originalUrl: string) {\r\n let url = originalUrl;\r\n if (!_.isString(url) || _.isEmpty(url.trim())) {\r\n return '';\r\n }\r\n\r\n url = url.trim();\r\n const a = document.createElement('a');\r\n let domain = '';\r\n a.href = hasProtocol(url) ? url : (`http://${url}`);\r\n\r\n try {\r\n const { hostname } = a;\r\n const startIndex = url.toLowerCase().indexOf(hostname);\r\n\r\n domain = (startIndex === -1 ? '' : url.substring(startIndex, hostname.length + startIndex));\r\n } catch (err) {\r\n domain = '';\r\n }\r\n\r\n return domain;\r\n}\r\n\r\nexport function isRelativeUrl(url: string) {\r\n return _.isString(url) && (url.indexOf('/') === 0);\r\n}\r\n\r\nexport function isInternalUrl(url: string, domainsToCheck = ['ads.microsoft.com', 'ads-int.microsoft.com', 'corp.microsoft.com']) {\r\n if (isRelativeUrl(url)) {\r\n return true;\r\n }\r\n\r\n const domain = getDomain(url).toLowerCase();\r\n\r\n return (domain === 'localhost')\r\n || _.any(domainsToCheck, (toCheck) => domain.indexOf(toCheck.toLowerCase()) > -1);\r\n}\r\n\r\nexport function getUrlWithProtocol(website: string) {\r\n const site = website.trim();\r\n const uri = new URI(site);\r\n\r\n if (uri.protocol()) {\r\n return uri.toString();\r\n }\r\n\r\n // input path without protocal, add '//' manually to force abs path;\r\n const urlWithProtocal = URI(`${'//'}${site}`).protocol('https').toString();\r\n return urlWithProtocal;\r\n}\r\n\r\nexport function isValidUrlWithValidTopDomain(url: string) {\r\n const regex = /^https?:\\/\\/([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.([a-z]{2,63})(?=$|\\/|\\?)/i;\r\n const matchs = url.match(regex);\r\n const topLevelDomain = _.result(matchs, '2');\r\n return _.isString(url) && regex.test(url)\r\n && topLevelDomain && _.contains(topDomainList, topLevelDomain.toUpperCase());\r\n}\r\n\r\n// Regular expressions used to determine if a URL starts with a valid domain name.\r\n// Similar regex to Microsoft.Ads.Mca.Implementation.Ads.EO.ValidationHelper.ValidateWebsite\r\nexport const UrlRegex = /^https?:\\/\\/([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.[a-z]{2,63}(?=$|\\/|\\?)/i;\r\nexport const UrlRegexWithOptionalProtocol = /^(?:http(s)?:\\/\\/)?([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.[a-z]{2,63}(?=$|\\/|\\?)/i;\r\n\r\n/**\r\n * Validate a HTTP or HTTPS URL.\r\n * @param {String} url - Fully qualified URL, including the prefix. E.g. http://www.example.com/foo\r\n * @returns {Boolean} - True if the URL is valid.\r\n */\r\nexport function isValidUrl(url: string) {\r\n return _.isString(url) && UrlRegex.test(url);\r\n}\r\n\r\n/**\r\n * Extracts the protocol and domain from a URL, with no trailing slash.\r\n * @param {String} url - URL to extract from, e.g. 'https://abc-123.com/foo.html'\r\n * @returns {String} - Protocol and domain name, or null if url could not be parsed.\r\n */\r\nexport function getUrlProtocolAndDomain(url: string) {\r\n const matches = url.match(UrlRegex);\r\n if (matches) {\r\n const result = _.first(matches);\r\n return result || '';\r\n }\r\n return '';\r\n}\r\n","// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\r\n// # Version 2022101900, Last Updated Wed Oct 19 07:07:01 2022 UTC\r\n\r\nexport default [\r\n 'AAA',\r\n 'AARP',\r\n 'ABARTH',\r\n 'ABB',\r\n 'ABBOTT',\r\n 'ABBVIE',\r\n 'ABC',\r\n 'ABLE',\r\n 'ABOGADO',\r\n 'ABUDHABI',\r\n 'AC',\r\n 'ACADEMY',\r\n 'ACCENTURE',\r\n 'ACCOUNTANT',\r\n 'ACCOUNTANTS',\r\n 'ACO',\r\n 'ACTOR',\r\n 'AD',\r\n 'ADAC',\r\n 'ADS',\r\n 'ADULT',\r\n 'AE',\r\n 'AEG',\r\n 'AERO',\r\n 'AETNA',\r\n 'AF',\r\n 'AFL',\r\n 'AFRICA',\r\n 'AG',\r\n 'AGAKHAN',\r\n 'AGENCY',\r\n 'AI',\r\n 'AIG',\r\n 'AIRBUS',\r\n 'AIRFORCE',\r\n 'AIRTEL',\r\n 'AKDN',\r\n 'AL',\r\n 'ALFAROMEO',\r\n 'ALIBABA',\r\n 'ALIPAY',\r\n 'ALLFINANZ',\r\n 'ALLSTATE',\r\n 'ALLY',\r\n 'ALSACE',\r\n 'ALSTOM',\r\n 'AM',\r\n 'AMAZON',\r\n 'AMERICANEXPRESS',\r\n 'AMERICANFAMILY',\r\n 'AMEX',\r\n 'AMFAM',\r\n 'AMICA',\r\n 'AMSTERDAM',\r\n 'ANALYTICS',\r\n 'ANDROID',\r\n 'ANQUAN',\r\n 'ANZ',\r\n 'AO',\r\n 'AOL',\r\n 'APARTMENTS',\r\n 'APP',\r\n 'APPLE',\r\n 'AQ',\r\n 'AQUARELLE',\r\n 'AR',\r\n 'ARAB',\r\n 'ARAMCO',\r\n 'ARCHI',\r\n 'ARMY',\r\n 'ARPA',\r\n 'ART',\r\n 'ARTE',\r\n 'AS',\r\n 'ASDA',\r\n 'ASIA',\r\n 'ASSOCIATES',\r\n 'AT',\r\n 'ATHLETA',\r\n 'ATTORNEY',\r\n 'AU',\r\n 'AUCTION',\r\n 'AUDI',\r\n 'AUDIBLE',\r\n 'AUDIO',\r\n 'AUSPOST',\r\n 'AUTHOR',\r\n 'AUTO',\r\n 'AUTOS',\r\n 'AVIANCA',\r\n 'AW',\r\n 'AWS',\r\n 'AX',\r\n 'AXA',\r\n 'AZ',\r\n 'AZURE',\r\n 'BA',\r\n 'BABY',\r\n 'BAIDU',\r\n 'BANAMEX',\r\n 'BANANAREPUBLIC',\r\n 'BAND',\r\n 'BANK',\r\n 'BAR',\r\n 'BARCELONA',\r\n 'BARCLAYCARD',\r\n 'BARCLAYS',\r\n 'BAREFOOT',\r\n 'BARGAINS',\r\n 'BASEBALL',\r\n 'BASKETBALL',\r\n 'BAUHAUS',\r\n 'BAYERN',\r\n 'BB',\r\n 'BBC',\r\n 'BBT',\r\n 'BBVA',\r\n 'BCG',\r\n 'BCN',\r\n 'BD',\r\n 'BE',\r\n 'BEATS',\r\n 'BEAUTY',\r\n 'BEER',\r\n 'BENTLEY',\r\n 'BERLIN',\r\n 'BEST',\r\n 'BESTBUY',\r\n 'BET',\r\n 'BF',\r\n 'BG',\r\n 'BH',\r\n 'BHARTI',\r\n 'BI',\r\n 'BIBLE',\r\n 'BID',\r\n 'BIKE',\r\n 'BING',\r\n 'BINGO',\r\n 'BIO',\r\n 'BIZ',\r\n 'BJ',\r\n 'BLACK',\r\n 'BLACKFRIDAY',\r\n 'BLOCKBUSTER',\r\n 'BLOG',\r\n 'BLOOMBERG',\r\n 'BLUE',\r\n 'BM',\r\n 'BMS',\r\n 'BMW',\r\n 'BN',\r\n 'BNPPARIBAS',\r\n 'BO',\r\n 'BOATS',\r\n 'BOEHRINGER',\r\n 'BOFA',\r\n 'BOM',\r\n 'BOND',\r\n 'BOO',\r\n 'BOOK',\r\n 'BOOKING',\r\n 'BOSCH',\r\n 'BOSTIK',\r\n 'BOSTON',\r\n 'BOT',\r\n 'BOUTIQUE',\r\n 'BOX',\r\n 'BR',\r\n 'BRADESCO',\r\n 'BRIDGESTONE',\r\n 'BROADWAY',\r\n 'BROKER',\r\n 'BROTHER',\r\n 'BRUSSELS',\r\n 'BS',\r\n 'BT',\r\n 'BUILD',\r\n 'BUILDERS',\r\n 'BUSINESS',\r\n 'BUY',\r\n 'BUZZ',\r\n 'BV',\r\n 'BW',\r\n 'BY',\r\n 'BZ',\r\n 'BZH',\r\n 'CA',\r\n 'CAB',\r\n 'CAFE',\r\n 'CAL',\r\n 'CALL',\r\n 'CALVINKLEIN',\r\n 'CAM',\r\n 'CAMERA',\r\n 'CAMP',\r\n 'CANON',\r\n 'CAPETOWN',\r\n 'CAPITAL',\r\n 'CAPITALONE',\r\n 'CAR',\r\n 'CARAVAN',\r\n 'CARDS',\r\n 'CARE',\r\n 'CAREER',\r\n 'CAREERS',\r\n 'CARS',\r\n 'CASA',\r\n 'CASE',\r\n 'CASH',\r\n 'CASINO',\r\n 'CAT',\r\n 'CATERING',\r\n 'CATHOLIC',\r\n 'CBA',\r\n 'CBN',\r\n 'CBRE',\r\n 'CBS',\r\n 'CC',\r\n 'CD',\r\n 'CENTER',\r\n 'CEO',\r\n 'CERN',\r\n 'CF',\r\n 'CFA',\r\n 'CFD',\r\n 'CG',\r\n 'CH',\r\n 'CHANEL',\r\n 'CHANNEL',\r\n 'CHARITY',\r\n 'CHASE',\r\n 'CHAT',\r\n 'CHEAP',\r\n 'CHINTAI',\r\n 'CHRISTMAS',\r\n 'CHROME',\r\n 'CHURCH',\r\n 'CI',\r\n 'CIPRIANI',\r\n 'CIRCLE',\r\n 'CISCO',\r\n 'CITADEL',\r\n 'CITI',\r\n 'CITIC',\r\n 'CITY',\r\n 'CITYEATS',\r\n 'CK',\r\n 'CL',\r\n 'CLAIMS',\r\n 'CLEANING',\r\n 'CLICK',\r\n 'CLINIC',\r\n 'CLINIQUE',\r\n 'CLOTHING',\r\n 'CLOUD',\r\n 'CLUB',\r\n 'CLUBMED',\r\n 'CM',\r\n 'CN',\r\n 'CO',\r\n 'COACH',\r\n 'CODES',\r\n 'COFFEE',\r\n 'COLLEGE',\r\n 'COLOGNE',\r\n 'COM',\r\n 'COMCAST',\r\n 'COMMBANK',\r\n 'COMMUNITY',\r\n 'COMPANY',\r\n 'COMPARE',\r\n 'COMPUTER',\r\n 'COMSEC',\r\n 'CONDOS',\r\n 'CONSTRUCTION',\r\n 'CONSULTING',\r\n 'CONTACT',\r\n 'CONTRACTORS',\r\n 'COOKING',\r\n 'COOKINGCHANNEL',\r\n 'COOL',\r\n 'COOP',\r\n 'CORSICA',\r\n 'COUNTRY',\r\n 'COUPON',\r\n 'COUPONS',\r\n 'COURSES',\r\n 'CPA',\r\n 'CR',\r\n 'CREDIT',\r\n 'CREDITCARD',\r\n 'CREDITUNION',\r\n 'CRICKET',\r\n 'CROWN',\r\n 'CRS',\r\n 'CRUISE',\r\n 'CRUISES',\r\n 'CU',\r\n 'CUISINELLA',\r\n 'CV',\r\n 'CW',\r\n 'CX',\r\n 'CY',\r\n 'CYMRU',\r\n 'CYOU',\r\n 'CZ',\r\n 'DABUR',\r\n 'DAD',\r\n 'DANCE',\r\n 'DATA',\r\n 'DATE',\r\n 'DATING',\r\n 'DATSUN',\r\n 'DAY',\r\n 'DCLK',\r\n 'DDS',\r\n 'DE',\r\n 'DEAL',\r\n 'DEALER',\r\n 'DEALS',\r\n 'DEGREE',\r\n 'DELIVERY',\r\n 'DELL',\r\n 'DELOITTE',\r\n 'DELTA',\r\n 'DEMOCRAT',\r\n 'DENTAL',\r\n 'DENTIST',\r\n 'DESI',\r\n 'DESIGN',\r\n 'DEV',\r\n 'DHL',\r\n 'DIAMONDS',\r\n 'DIET',\r\n 'DIGITAL',\r\n 'DIRECT',\r\n 'DIRECTORY',\r\n 'DISCOUNT',\r\n 'DISCOVER',\r\n 'DISH',\r\n 'DIY',\r\n 'DJ',\r\n 'DK',\r\n 'DM',\r\n 'DNP',\r\n 'DO',\r\n 'DOCS',\r\n 'DOCTOR',\r\n 'DOG',\r\n 'DOMAINS',\r\n 'DOT',\r\n 'DOWNLOAD',\r\n 'DRIVE',\r\n 'DTV',\r\n 'DUBAI',\r\n 'DUNLOP',\r\n 'DUPONT',\r\n 'DURBAN',\r\n 'DVAG',\r\n 'DVR',\r\n 'DZ',\r\n 'EARTH',\r\n 'EAT',\r\n 'EC',\r\n 'ECO',\r\n 'EDEKA',\r\n 'EDU',\r\n 'EDUCATION',\r\n 'EE',\r\n 'EG',\r\n 'EMAIL',\r\n 'EMERCK',\r\n 'ENERGY',\r\n 'ENGINEER',\r\n 'ENGINEERING',\r\n 'ENTERPRISES',\r\n 'EPSON',\r\n 'EQUIPMENT',\r\n 'ER',\r\n 'ERICSSON',\r\n 'ERNI',\r\n 'ES',\r\n 'ESQ',\r\n 'ESTATE',\r\n 'ET',\r\n 'ETISALAT',\r\n 'EU',\r\n 'EUROVISION',\r\n 'EUS',\r\n 'EVENTS',\r\n 'EXCHANGE',\r\n 'EXPERT',\r\n 'EXPOSED',\r\n 'EXPRESS',\r\n 'EXTRASPACE',\r\n 'FAGE',\r\n 'FAIL',\r\n 'FAIRWINDS',\r\n 'FAITH',\r\n 'FAMILY',\r\n 'FAN',\r\n 'FANS',\r\n 'FARM',\r\n 'FARMERS',\r\n 'FASHION',\r\n 'FAST',\r\n 'FEDEX',\r\n 'FEEDBACK',\r\n 'FERRARI',\r\n 'FERRERO',\r\n 'FI',\r\n 'FIAT',\r\n 'FIDELITY',\r\n 'FIDO',\r\n 'FILM',\r\n 'FINAL',\r\n 'FINANCE',\r\n 'FINANCIAL',\r\n 'FIRE',\r\n 'FIRESTONE',\r\n 'FIRMDALE',\r\n 'FISH',\r\n 'FISHING',\r\n 'FIT',\r\n 'FITNESS',\r\n 'FJ',\r\n 'FK',\r\n 'FLICKR',\r\n 'FLIGHTS',\r\n 'FLIR',\r\n 'FLORIST',\r\n 'FLOWERS',\r\n 'FLY',\r\n 'FM',\r\n 'FO',\r\n 'FOO',\r\n 'FOOD',\r\n 'FOODNETWORK',\r\n 'FOOTBALL',\r\n 'FORD',\r\n 'FOREX',\r\n 'FORSALE',\r\n 'FORUM',\r\n 'FOUNDATION',\r\n 'FOX',\r\n 'FR',\r\n 'FREE',\r\n 'FRESENIUS',\r\n 'FRL',\r\n 'FROGANS',\r\n 'FRONTDOOR',\r\n 'FRONTIER',\r\n 'FTR',\r\n 'FUJITSU',\r\n 'FUN',\r\n 'FUND',\r\n 'FURNITURE',\r\n 'FUTBOL',\r\n 'FYI',\r\n 'GA',\r\n 'GAL',\r\n 'GALLERY',\r\n 'GALLO',\r\n 'GALLUP',\r\n 'GAME',\r\n 'GAMES',\r\n 'GAP',\r\n 'GARDEN',\r\n 'GAY',\r\n 'GB',\r\n 'GBIZ',\r\n 'GD',\r\n 'GDN',\r\n 'GE',\r\n 'GEA',\r\n 'GENT',\r\n 'GENTING',\r\n 'GEORGE',\r\n 'GF',\r\n 'GG',\r\n 'GGEE',\r\n 'GH',\r\n 'GI',\r\n 'GIFT',\r\n 'GIFTS',\r\n 'GIVES',\r\n 'GIVING',\r\n 'GL',\r\n 'GLASS',\r\n 'GLE',\r\n 'GLOBAL',\r\n 'GLOBO',\r\n 'GM',\r\n 'GMAIL',\r\n 'GMBH',\r\n 'GMO',\r\n 'GMX',\r\n 'GN',\r\n 'GODADDY',\r\n 'GOLD',\r\n 'GOLDPOINT',\r\n 'GOLF',\r\n 'GOO',\r\n 'GOODYEAR',\r\n 'GOOG',\r\n 'GOOGLE',\r\n 'GOP',\r\n 'GOT',\r\n 'GOV',\r\n 'GP',\r\n 'GQ',\r\n 'GR',\r\n 'GRAINGER',\r\n 'GRAPHICS',\r\n 'GRATIS',\r\n 'GREEN',\r\n 'GRIPE',\r\n 'GROCERY',\r\n 'GROUP',\r\n 'GS',\r\n 'GT',\r\n 'GU',\r\n 'GUARDIAN',\r\n 'GUCCI',\r\n 'GUGE',\r\n 'GUIDE',\r\n 'GUITARS',\r\n 'GURU',\r\n 'GW',\r\n 'GY',\r\n 'HAIR',\r\n 'HAMBURG',\r\n 'HANGOUT',\r\n 'HAUS',\r\n 'HBO',\r\n 'HDFC',\r\n 'HDFCBANK',\r\n 'HEALTH',\r\n 'HEALTHCARE',\r\n 'HELP',\r\n 'HELSINKI',\r\n 'HERE',\r\n 'HERMES',\r\n 'HGTV',\r\n 'HIPHOP',\r\n 'HISAMITSU',\r\n 'HITACHI',\r\n 'HIV',\r\n 'HK',\r\n 'HKT',\r\n 'HM',\r\n 'HN',\r\n 'HOCKEY',\r\n 'HOLDINGS',\r\n 'HOLIDAY',\r\n 'HOMEDEPOT',\r\n 'HOMEGOODS',\r\n 'HOMES',\r\n 'HOMESENSE',\r\n 'HONDA',\r\n 'HORSE',\r\n 'HOSPITAL',\r\n 'HOST',\r\n 'HOSTING',\r\n 'HOT',\r\n 'HOTELES',\r\n 'HOTELS',\r\n 'HOTMAIL',\r\n 'HOUSE',\r\n 'HOW',\r\n 'HR',\r\n 'HSBC',\r\n 'HT',\r\n 'HU',\r\n 'HUGHES',\r\n 'HYATT',\r\n 'HYUNDAI',\r\n 'IBM',\r\n 'ICBC',\r\n 'ICE',\r\n 'ICU',\r\n 'ID',\r\n 'IE',\r\n 'IEEE',\r\n 'IFM',\r\n 'IKANO',\r\n 'IL',\r\n 'IM',\r\n 'IMAMAT',\r\n 'IMDB',\r\n 'IMMO',\r\n 'IMMOBILIEN',\r\n 'IN',\r\n 'INC',\r\n 'INDUSTRIES',\r\n 'INFINITI',\r\n 'INFO',\r\n 'ING',\r\n 'INK',\r\n 'INSTITUTE',\r\n 'INSURANCE',\r\n 'INSURE',\r\n 'INT',\r\n 'INTERNATIONAL',\r\n 'INTUIT',\r\n 'INVESTMENTS',\r\n 'IO',\r\n 'IPIRANGA',\r\n 'IQ',\r\n 'IR',\r\n 'IRISH',\r\n 'IS',\r\n 'ISMAILI',\r\n 'IST',\r\n 'ISTANBUL',\r\n 'IT',\r\n 'ITAU',\r\n 'ITV',\r\n 'JAGUAR',\r\n 'JAVA',\r\n 'JCB',\r\n 'JE',\r\n 'JEEP',\r\n 'JETZT',\r\n 'JEWELRY',\r\n 'JIO',\r\n 'JLL',\r\n 'JM',\r\n 'JMP',\r\n 'JNJ',\r\n 'JO',\r\n 'JOBS',\r\n 'JOBURG',\r\n 'JOT',\r\n 'JOY',\r\n 'JP',\r\n 'JPMORGAN',\r\n 'JPRS',\r\n 'JUEGOS',\r\n 'JUNIPER',\r\n 'KAUFEN',\r\n 'KDDI',\r\n 'KE',\r\n 'KERRYHOTELS',\r\n 'KERRYLOGISTICS',\r\n 'KERRYPROPERTIES',\r\n 'KFH',\r\n 'KG',\r\n 'KH',\r\n 'KI',\r\n 'KIA',\r\n 'KIDS',\r\n 'KIM',\r\n 'KINDER',\r\n 'KINDLE',\r\n 'KITCHEN',\r\n 'KIWI',\r\n 'KM',\r\n 'KN',\r\n 'KOELN',\r\n 'KOMATSU',\r\n 'KOSHER',\r\n 'KP',\r\n 'KPMG',\r\n 'KPN',\r\n 'KR',\r\n 'KRD',\r\n 'KRED',\r\n 'KUOKGROUP',\r\n 'KW',\r\n 'KY',\r\n 'KYOTO',\r\n 'KZ',\r\n 'LA',\r\n 'LACAIXA',\r\n 'LAMBORGHINI',\r\n 'LAMER',\r\n 'LANCASTER',\r\n 'LANCIA',\r\n 'LAND',\r\n 'LANDROVER',\r\n 'LANXESS',\r\n 'LASALLE',\r\n 'LAT',\r\n 'LATINO',\r\n 'LATROBE',\r\n 'LAW',\r\n 'LAWYER',\r\n 'LB',\r\n 'LC',\r\n 'LDS',\r\n 'LEASE',\r\n 'LECLERC',\r\n 'LEFRAK',\r\n 'LEGAL',\r\n 'LEGO',\r\n 'LEXUS',\r\n 'LGBT',\r\n 'LI',\r\n 'LIDL',\r\n 'LIFE',\r\n 'LIFEINSURANCE',\r\n 'LIFESTYLE',\r\n 'LIGHTING',\r\n 'LIKE',\r\n 'LILLY',\r\n 'LIMITED',\r\n 'LIMO',\r\n 'LINCOLN',\r\n 'LINDE',\r\n 'LINK',\r\n 'LIPSY',\r\n 'LIVE',\r\n 'LIVING',\r\n 'LK',\r\n 'LLC',\r\n 'LLP',\r\n 'LOAN',\r\n 'LOANS',\r\n 'LOCKER',\r\n 'LOCUS',\r\n 'LOFT',\r\n 'LOL',\r\n 'LONDON',\r\n 'LOTTE',\r\n 'LOTTO',\r\n 'LOVE',\r\n 'LPL',\r\n 'LPLFINANCIAL',\r\n 'LR',\r\n 'LS',\r\n 'LT',\r\n 'LTD',\r\n 'LTDA',\r\n 'LU',\r\n 'LUNDBECK',\r\n 'LUXE',\r\n 'LUXURY',\r\n 'LV',\r\n 'LY',\r\n 'MA',\r\n 'MACYS',\r\n 'MADRID',\r\n 'MAIF',\r\n 'MAISON',\r\n 'MAKEUP',\r\n 'MAN',\r\n 'MANAGEMENT',\r\n 'MANGO',\r\n 'MAP',\r\n 'MARKET',\r\n 'MARKETING',\r\n 'MARKETS',\r\n 'MARRIOTT',\r\n 'MARSHALLS',\r\n 'MASERATI',\r\n 'MATTEL',\r\n 'MBA',\r\n 'MC',\r\n 'MCKINSEY',\r\n 'MD',\r\n 'ME',\r\n 'MED',\r\n 'MEDIA',\r\n 'MEET',\r\n 'MELBOURNE',\r\n 'MEME',\r\n 'MEMORIAL',\r\n 'MEN',\r\n 'MENU',\r\n 'MERCKMSD',\r\n 'MG',\r\n 'MH',\r\n 'MIAMI',\r\n 'MICROSOFT',\r\n 'MIL',\r\n 'MINI',\r\n 'MINT',\r\n 'MIT',\r\n 'MITSUBISHI',\r\n 'MK',\r\n 'ML',\r\n 'MLB',\r\n 'MLS',\r\n 'MM',\r\n 'MMA',\r\n 'MN',\r\n 'MO',\r\n 'MOBI',\r\n 'MOBILE',\r\n 'MODA',\r\n 'MOE',\r\n 'MOI',\r\n 'MOM',\r\n 'MONASH',\r\n 'MONEY',\r\n 'MONSTER',\r\n 'MORMON',\r\n 'MORTGAGE',\r\n 'MOSCOW',\r\n 'MOTO',\r\n 'MOTORCYCLES',\r\n 'MOV',\r\n 'MOVIE',\r\n 'MP',\r\n 'MQ',\r\n 'MR',\r\n 'MS',\r\n 'MSD',\r\n 'MT',\r\n 'MTN',\r\n 'MTR',\r\n 'MU',\r\n 'MUSEUM',\r\n 'MUSIC',\r\n 'MUTUAL',\r\n 'MV',\r\n 'MW',\r\n 'MX',\r\n 'MY',\r\n 'MZ',\r\n 'NA',\r\n 'NAB',\r\n 'NAGOYA',\r\n 'NAME',\r\n 'NATURA',\r\n 'NAVY',\r\n 'NBA',\r\n 'NC',\r\n 'NE',\r\n 'NEC',\r\n 'NET',\r\n 'NETBANK',\r\n 'NETFLIX',\r\n 'NETWORK',\r\n 'NEUSTAR',\r\n 'NEW',\r\n 'NEWS',\r\n 'NEXT',\r\n 'NEXTDIRECT',\r\n 'NEXUS',\r\n 'NF',\r\n 'NFL',\r\n 'NG',\r\n 'NGO',\r\n 'NHK',\r\n 'NI',\r\n 'NICO',\r\n 'NIKE',\r\n 'NIKON',\r\n 'NINJA',\r\n 'NISSAN',\r\n 'NISSAY',\r\n 'NL',\r\n 'NO',\r\n 'NOKIA',\r\n 'NORTHWESTERNMUTUAL',\r\n 'NORTON',\r\n 'NOW',\r\n 'NOWRUZ',\r\n 'NOWTV',\r\n 'NP',\r\n 'NR',\r\n 'NRA',\r\n 'NRW',\r\n 'NTT',\r\n 'NU',\r\n 'NYC',\r\n 'NZ',\r\n 'OBI',\r\n 'OBSERVER',\r\n 'OFFICE',\r\n 'OKINAWA',\r\n 'OLAYAN',\r\n 'OLAYANGROUP',\r\n 'OLDNAVY',\r\n 'OLLO',\r\n 'OM',\r\n 'OMEGA',\r\n 'ONE',\r\n 'ONG',\r\n 'ONL',\r\n 'ONLINE',\r\n 'OOO',\r\n 'OPEN',\r\n 'ORACLE',\r\n 'ORANGE',\r\n 'ORG',\r\n 'ORGANIC',\r\n 'ORIGINS',\r\n 'OSAKA',\r\n 'OTSUKA',\r\n 'OTT',\r\n 'OVH',\r\n 'PA',\r\n 'PAGE',\r\n 'PANASONIC',\r\n 'PARIS',\r\n 'PARS',\r\n 'PARTNERS',\r\n 'PARTS',\r\n 'PARTY',\r\n 'PASSAGENS',\r\n 'PAY',\r\n 'PCCW',\r\n 'PE',\r\n 'PET',\r\n 'PF',\r\n 'PFIZER',\r\n 'PG',\r\n 'PH',\r\n 'PHARMACY',\r\n 'PHD',\r\n 'PHILIPS',\r\n 'PHONE',\r\n 'PHOTO',\r\n 'PHOTOGRAPHY',\r\n 'PHOTOS',\r\n 'PHYSIO',\r\n 'PICS',\r\n 'PICTET',\r\n 'PICTURES',\r\n 'PID',\r\n 'PIN',\r\n 'PING',\r\n 'PINK',\r\n 'PIONEER',\r\n 'PIZZA',\r\n 'PK',\r\n 'PL',\r\n 'PLACE',\r\n 'PLAY',\r\n 'PLAYSTATION',\r\n 'PLUMBING',\r\n 'PLUS',\r\n 'PM',\r\n 'PN',\r\n 'PNC',\r\n 'POHL',\r\n 'POKER',\r\n 'POLITIE',\r\n 'PORN',\r\n 'POST',\r\n 'PR',\r\n 'PRAMERICA',\r\n 'PRAXI',\r\n 'PRESS',\r\n 'PRIME',\r\n 'PRO',\r\n 'PROD',\r\n 'PRODUCTIONS',\r\n 'PROF',\r\n 'PROGRESSIVE',\r\n 'PROMO',\r\n 'PROPERTIES',\r\n 'PROPERTY',\r\n 'PROTECTION',\r\n 'PRU',\r\n 'PRUDENTIAL',\r\n 'PS',\r\n 'PT',\r\n 'PUB',\r\n 'PW',\r\n 'PWC',\r\n 'PY',\r\n 'QA',\r\n 'QPON',\r\n 'QUEBEC',\r\n 'QUEST',\r\n 'RACING',\r\n 'RADIO',\r\n 'RE',\r\n 'READ',\r\n 'REALESTATE',\r\n 'REALTOR',\r\n 'REALTY',\r\n 'RECIPES',\r\n 'RED',\r\n 'REDSTONE',\r\n 'REDUMBRELLA',\r\n 'REHAB',\r\n 'REISE',\r\n 'REISEN',\r\n 'REIT',\r\n 'RELIANCE',\r\n 'REN',\r\n 'RENT',\r\n 'RENTALS',\r\n 'REPAIR',\r\n 'REPORT',\r\n 'REPUBLICAN',\r\n 'REST',\r\n 'RESTAURANT',\r\n 'REVIEW',\r\n 'REVIEWS',\r\n 'REXROTH',\r\n 'RICH',\r\n 'RICHARDLI',\r\n 'RICOH',\r\n 'RIL',\r\n 'RIO',\r\n 'RIP',\r\n 'RO',\r\n 'ROCHER',\r\n 'ROCKS',\r\n 'RODEO',\r\n 'ROGERS',\r\n 'ROOM',\r\n 'RS',\r\n 'RSVP',\r\n 'RU',\r\n 'RUGBY',\r\n 'RUHR',\r\n 'RUN',\r\n 'RW',\r\n 'RWE',\r\n 'RYUKYU',\r\n 'SA',\r\n 'SAARLAND',\r\n 'SAFE',\r\n 'SAFETY',\r\n 'SAKURA',\r\n 'SALE',\r\n 'SALON',\r\n 'SAMSCLUB',\r\n 'SAMSUNG',\r\n 'SANDVIK',\r\n 'SANDVIKCOROMANT',\r\n 'SANOFI',\r\n 'SAP',\r\n 'SARL',\r\n 'SAS',\r\n 'SAVE',\r\n 'SAXO',\r\n 'SB',\r\n 'SBI',\r\n 'SBS',\r\n 'SC',\r\n 'SCA',\r\n 'SCB',\r\n 'SCHAEFFLER',\r\n 'SCHMIDT',\r\n 'SCHOLARSHIPS',\r\n 'SCHOOL',\r\n 'SCHULE',\r\n 'SCHWARZ',\r\n 'SCIENCE',\r\n 'SCOT',\r\n 'SD',\r\n 'SE',\r\n 'SEARCH',\r\n 'SEAT',\r\n 'SECURE',\r\n 'SECURITY',\r\n 'SEEK',\r\n 'SELECT',\r\n 'SENER',\r\n 'SERVICES',\r\n 'SES',\r\n 'SEVEN',\r\n 'SEW',\r\n 'SEX',\r\n 'SEXY',\r\n 'SFR',\r\n 'SG',\r\n 'SH',\r\n 'SHANGRILA',\r\n 'SHARP',\r\n 'SHAW',\r\n 'SHELL',\r\n 'SHIA',\r\n 'SHIKSHA',\r\n 'SHOES',\r\n 'SHOP',\r\n 'SHOPPING',\r\n 'SHOUJI',\r\n 'SHOW',\r\n 'SHOWTIME',\r\n 'SI',\r\n 'SILK',\r\n 'SINA',\r\n 'SINGLES',\r\n 'SITE',\r\n 'SJ',\r\n 'SK',\r\n 'SKI',\r\n 'SKIN',\r\n 'SKY',\r\n 'SKYPE',\r\n 'SL',\r\n 'SLING',\r\n 'SM',\r\n 'SMART',\r\n 'SMILE',\r\n 'SN',\r\n 'SNCF',\r\n 'SO',\r\n 'SOCCER',\r\n 'SOCIAL',\r\n 'SOFTBANK',\r\n 'SOFTWARE',\r\n 'SOHU',\r\n 'SOLAR',\r\n 'SOLUTIONS',\r\n 'SONG',\r\n 'SONY',\r\n 'SOY',\r\n 'SPA',\r\n 'SPACE',\r\n 'SPORT',\r\n 'SPOT',\r\n 'SR',\r\n 'SRL',\r\n 'SS',\r\n 'ST',\r\n 'STADA',\r\n 'STAPLES',\r\n 'STAR',\r\n 'STATEBANK',\r\n 'STATEFARM',\r\n 'STC',\r\n 'STCGROUP',\r\n 'STOCKHOLM',\r\n 'STORAGE',\r\n 'STORE',\r\n 'STREAM',\r\n 'STUDIO',\r\n 'STUDY',\r\n 'STYLE',\r\n 'SU',\r\n 'SUCKS',\r\n 'SUPPLIES',\r\n 'SUPPLY',\r\n 'SUPPORT',\r\n 'SURF',\r\n 'SURGERY',\r\n 'SUZUKI',\r\n 'SV',\r\n 'SWATCH',\r\n 'SWISS',\r\n 'SX',\r\n 'SY',\r\n 'SYDNEY',\r\n 'SYSTEMS',\r\n 'SZ',\r\n 'TAB',\r\n 'TAIPEI',\r\n 'TALK',\r\n 'TAOBAO',\r\n 'TARGET',\r\n 'TATAMOTORS',\r\n 'TATAR',\r\n 'TATTOO',\r\n 'TAX',\r\n 'TAXI',\r\n 'TC',\r\n 'TCI',\r\n 'TD',\r\n 'TDK',\r\n 'TEAM',\r\n 'TECH',\r\n 'TECHNOLOGY',\r\n 'TEL',\r\n 'TEMASEK',\r\n 'TENNIS',\r\n 'TEVA',\r\n 'TF',\r\n 'TG',\r\n 'TH',\r\n 'THD',\r\n 'THEATER',\r\n 'THEATRE',\r\n 'TIAA',\r\n 'TICKETS',\r\n 'TIENDA',\r\n 'TIFFANY',\r\n 'TIPS',\r\n 'TIRES',\r\n 'TIROL',\r\n 'TJ',\r\n 'TJMAXX',\r\n 'TJX',\r\n 'TK',\r\n 'TKMAXX',\r\n 'TL',\r\n 'TM',\r\n 'TMALL',\r\n 'TN',\r\n 'TO',\r\n 'TODAY',\r\n 'TOKYO',\r\n 'TOOLS',\r\n 'TOP',\r\n 'TORAY',\r\n 'TOSHIBA',\r\n 'TOTAL',\r\n 'TOURS',\r\n 'TOWN',\r\n 'TOYOTA',\r\n 'TOYS',\r\n 'TR',\r\n 'TRADE',\r\n 'TRADING',\r\n 'TRAINING',\r\n 'TRAVEL',\r\n 'TRAVELCHANNEL',\r\n 'TRAVELERS',\r\n 'TRAVELERSINSURANCE',\r\n 'TRUST',\r\n 'TRV',\r\n 'TT',\r\n 'TUBE',\r\n 'TUI',\r\n 'TUNES',\r\n 'TUSHU',\r\n 'TV',\r\n 'TVS',\r\n 'TW',\r\n 'TZ',\r\n 'UA',\r\n 'UBANK',\r\n 'UBS',\r\n 'UG',\r\n 'UK',\r\n 'UNICOM',\r\n 'UNIVERSITY',\r\n 'UNO',\r\n 'UOL',\r\n 'UPS',\r\n 'US',\r\n 'UY',\r\n 'UZ',\r\n 'VA',\r\n 'VACATIONS',\r\n 'VANA',\r\n 'VANGUARD',\r\n 'VC',\r\n 'VE',\r\n 'VEGAS',\r\n 'VENTURES',\r\n 'VERISIGN',\r\n 'VERSICHERUNG',\r\n 'VET',\r\n 'VG',\r\n 'VI',\r\n 'VIAJES',\r\n 'VIDEO',\r\n 'VIG',\r\n 'VIKING',\r\n 'VILLAS',\r\n 'VIN',\r\n 'VIP',\r\n 'VIRGIN',\r\n 'VISA',\r\n 'VISION',\r\n 'VIVA',\r\n 'VIVO',\r\n 'VLAANDEREN',\r\n 'VN',\r\n 'VODKA',\r\n 'VOLKSWAGEN',\r\n 'VOLVO',\r\n 'VOTE',\r\n 'VOTING',\r\n 'VOTO',\r\n 'VOYAGE',\r\n 'VU',\r\n 'VUELOS',\r\n 'WALES',\r\n 'WALMART',\r\n 'WALTER',\r\n 'WANG',\r\n 'WANGGOU',\r\n 'WATCH',\r\n 'WATCHES',\r\n 'WEATHER',\r\n 'WEATHERCHANNEL',\r\n 'WEBCAM',\r\n 'WEBER',\r\n 'WEBSITE',\r\n 'WED',\r\n 'WEDDING',\r\n 'WEIBO',\r\n 'WEIR',\r\n 'WF',\r\n 'WHOSWHO',\r\n 'WIEN',\r\n 'WIKI',\r\n 'WILLIAMHILL',\r\n 'WIN',\r\n 'WINDOWS',\r\n 'WINE',\r\n 'WINNERS',\r\n 'WME',\r\n 'WOLTERSKLUWER',\r\n 'WOODSIDE',\r\n 'WORK',\r\n 'WORKS',\r\n 'WORLD',\r\n 'WOW',\r\n 'WS',\r\n 'WTC',\r\n 'WTF',\r\n 'XBOX',\r\n 'XEROX',\r\n 'XFINITY',\r\n 'XIHUAN',\r\n 'XIN',\r\n 'XN--11B4C3D',\r\n 'XN--1CK2E1B',\r\n 'XN--1QQW23A',\r\n 'XN--2SCRJ9C',\r\n 'XN--30RR7Y',\r\n 'XN--3BST00M',\r\n 'XN--3DS443G',\r\n 'XN--3E0B707E',\r\n 'XN--3HCRJ9C',\r\n 'XN--3PXU8K',\r\n 'XN--42C2D9A',\r\n 'XN--45BR5CYL',\r\n 'XN--45BRJ9C',\r\n 'XN--45Q11C',\r\n 'XN--4DBRK0CE',\r\n 'XN--4GBRIM',\r\n 'XN--54B7FTA0CC',\r\n 'XN--55QW42G',\r\n 'XN--55QX5D',\r\n 'XN--5SU34J936BGSG',\r\n 'XN--5TZM5G',\r\n 'XN--6FRZ82G',\r\n 'XN--6QQ986B3XL',\r\n 'XN--80ADXHKS',\r\n 'XN--80AO21A',\r\n 'XN--80AQECDR1A',\r\n 'XN--80ASEHDB',\r\n 'XN--80ASWG',\r\n 'XN--8Y0A063A',\r\n 'XN--90A3AC',\r\n 'XN--90AE',\r\n 'XN--90AIS',\r\n 'XN--9DBQ2A',\r\n 'XN--9ET52U',\r\n 'XN--9KRT00A',\r\n 'XN--B4W605FERD',\r\n 'XN--BCK1B9A5DRE4C',\r\n 'XN--C1AVG',\r\n 'XN--C2BR7G',\r\n 'XN--CCK2B3B',\r\n 'XN--CCKWCXETD',\r\n 'XN--CG4BKI',\r\n 'XN--CLCHC0EA0B2G2A9GCD',\r\n 'XN--CZR694B',\r\n 'XN--CZRS0T',\r\n 'XN--CZRU2D',\r\n 'XN--D1ACJ3B',\r\n 'XN--D1ALF',\r\n 'XN--E1A4C',\r\n 'XN--ECKVDTC9D',\r\n 'XN--EFVY88H',\r\n 'XN--FCT429K',\r\n 'XN--FHBEI',\r\n 'XN--FIQ228C5HS',\r\n 'XN--FIQ64B',\r\n 'XN--FIQS8S',\r\n 'XN--FIQZ9S',\r\n 'XN--FJQ720A',\r\n 'XN--FLW351E',\r\n 'XN--FPCRJ9C3D',\r\n 'XN--FZC2C9E2C',\r\n 'XN--FZYS8D69UVGM',\r\n 'XN--G2XX48C',\r\n 'XN--GCKR3F0F',\r\n 'XN--GECRJ9C',\r\n 'XN--GK3AT1E',\r\n 'XN--H2BREG3EVE',\r\n 'XN--H2BRJ9C',\r\n 'XN--H2BRJ9C8C',\r\n 'XN--HXT814E',\r\n 'XN--I1B6B1A6A2E',\r\n 'XN--IMR513N',\r\n 'XN--IO0A7I',\r\n 'XN--J1AEF',\r\n 'XN--J1AMH',\r\n 'XN--J6W193G',\r\n 'XN--JLQ480N2RG',\r\n 'XN--JLQ61U9W7B',\r\n 'XN--JVR189M',\r\n 'XN--KCRX77D1X4A',\r\n 'XN--KPRW13D',\r\n 'XN--KPRY57D',\r\n 'XN--KPUT3I',\r\n 'XN--L1ACC',\r\n 'XN--LGBBAT1AD8J',\r\n 'XN--MGB9AWBF',\r\n 'XN--MGBA3A3EJT',\r\n 'XN--MGBA3A4F16A',\r\n 'XN--MGBA7C0BBN0A',\r\n 'XN--MGBAAKC7DVF',\r\n 'XN--MGBAAM7A8H',\r\n 'XN--MGBAB2BD',\r\n 'XN--MGBAH1A3HJKRD',\r\n 'XN--MGBAI9AZGQP6J',\r\n 'XN--MGBAYH7GPA',\r\n 'XN--MGBBH1A',\r\n 'XN--MGBBH1A71E',\r\n 'XN--MGBC0A9AZCG',\r\n 'XN--MGBCA7DZDO',\r\n 'XN--MGBCPQ6GPA1A',\r\n 'XN--MGBERP4A5D4AR',\r\n 'XN--MGBGU82A',\r\n 'XN--MGBI4ECEXP',\r\n 'XN--MGBPL2FH',\r\n 'XN--MGBT3DHD',\r\n 'XN--MGBTX2B',\r\n 'XN--MGBX4CD0AB',\r\n 'XN--MIX891F',\r\n 'XN--MK1BU44C',\r\n 'XN--MXTQ1M',\r\n 'XN--NGBC5AZD',\r\n 'XN--NGBE9E0A',\r\n 'XN--NGBRX',\r\n 'XN--NODE',\r\n 'XN--NQV7F',\r\n 'XN--NQV7FS00EMA',\r\n 'XN--NYQY26A',\r\n 'XN--O3CW4H',\r\n 'XN--OGBPF8FL',\r\n 'XN--OTU796D',\r\n 'XN--P1ACF',\r\n 'XN--P1AI',\r\n 'XN--PGBS0DH',\r\n 'XN--PSSY2U',\r\n 'XN--Q7CE6A',\r\n 'XN--Q9JYB4C',\r\n 'XN--QCKA1PMC',\r\n 'XN--QXA6A',\r\n 'XN--QXAM',\r\n 'XN--RHQV96G',\r\n 'XN--ROVU88B',\r\n 'XN--RVC1E0AM3E',\r\n 'XN--S9BRJ9C',\r\n 'XN--SES554G',\r\n 'XN--T60B56A',\r\n 'XN--TCKWE',\r\n 'XN--TIQ49XQYJ',\r\n 'XN--UNUP4Y',\r\n 'XN--VERMGENSBERATER-CTB',\r\n 'XN--VERMGENSBERATUNG-PWB',\r\n 'XN--VHQUV',\r\n 'XN--VUQ861B',\r\n 'XN--W4R85EL8FHU5DNRA',\r\n 'XN--W4RS40L',\r\n 'XN--WGBH1C',\r\n 'XN--WGBL6A',\r\n 'XN--XHQ521B',\r\n 'XN--XKC2AL3HYE2A',\r\n 'XN--XKC2DL3A5EE0H',\r\n 'XN--Y9A3AQ',\r\n 'XN--YFRO4I67O',\r\n 'XN--YGBI2AMMX',\r\n 'XN--ZFR164B',\r\n 'XXX',\r\n 'XYZ',\r\n 'YACHTS',\r\n 'YAHOO',\r\n 'YAMAXUN',\r\n 'YANDEX',\r\n 'YE',\r\n 'YODOBASHI',\r\n 'YOGA',\r\n 'YOKOHAMA',\r\n 'YOU',\r\n 'YOUTUBE',\r\n 'YT',\r\n 'YUN',\r\n 'ZA',\r\n 'ZAPPOS',\r\n 'ZARA',\r\n 'ZERO',\r\n 'ZIP',\r\n 'ZM',\r\n 'ZONE',\r\n 'ZUERICH',\r\n 'ZW',\r\n];\r\n","export { AjaxStub } from './src/ajax-stub/ajax-stub';\r\nexport { AjaxEventHandler } from './src/ajax-stub/ajax-event-handler';\r\nexport { ErrorStub } from './src/error-stub/error-stub';\r\n","import _ from 'underscore';\r\nimport { AjaxInterceptor } from './ajax-interceptor';\r\nimport { defaultConfig } from './default-config';\r\nimport { schema } from './ajax-stub-schema';\r\n\r\n/**\r\n * AjaxStub class - Creates an ajax stub that can be used by Instrumentation to stub ajax calls\r\n */\r\nexport class AjaxStub {\r\n /**\r\n * @param {object} options - contains instrumentation and optionally stubOptions, AjaxEventhandler\r\n */\r\n constructor(options = {}) {\r\n this.stubOptions = _.defaults(options.stubOptions || {}, defaultConfig.stubOptions);\r\n this.handler = options.eventHandler || defaultConfig.eventHandler;\r\n\r\n // create scenario for logging\r\n this.setupScenario(options.instrumentation);\r\n\r\n this.interceptor = new AjaxInterceptor(this.stubOptions, this.handler, this.ajaxStubScenario);\r\n }\r\n\r\n init() {\r\n _.each(this.stubOptions.objectsToStub, (objectToStub) => {\r\n this.interceptor.intercept(objectToStub);\r\n });\r\n }\r\n\r\n setupScenario(instr) {\r\n instr.addScenario(schema);\r\n this.ajaxStubScenario = instr.ajaxStubScenario.create(instr.ScenarioContext);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport urijs from 'urijs';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { AjaxEventInterceptor } from './ajax-event-interceptor';\r\n\r\n// We only want one ajax intercept, however instrumentation can be created a second time\r\n// e.g. after creating a CID during signup\r\nlet globalInterceptInstance = null;\r\n\r\n/**\r\n * AjaxInterceptor - Provides functionality to intercept ajax calls\r\n */\r\nexport class AjaxInterceptor {\r\n /**\r\n * @param {object} stubOptions - stub options to be used in ajax logging\r\n * @param {object} eventHandler - handler for ajax events\r\n * @param {object} scenario - scenario to be used by the stub\r\n * @param {function} generateRid - optional: overwrites the function that generates an RID\r\n */\r\n constructor(stubOptions, eventHandler, scenario, generateRid) {\r\n this.stubOptions = stubOptions;\r\n this.eventHandler = eventHandler;\r\n this.scenario = scenario;\r\n this.generateRid = generateRid || generateGuid;\r\n }\r\n\r\n /* eslint-disable no-param-reassign */\r\n intercept(jQuery) {\r\n const originalAjax = jQuery.ajax;\r\n const intercept = (url, options) => {\r\n options = options || {};\r\n\r\n if (_.isObject(url)) {\r\n options = url;\r\n } else if (_.isString(url)) {\r\n options.url = url;\r\n }\r\n\r\n // add requestId to url\r\n const requestId = this.generateRid();\r\n if (this.shouldAddRequestId(options.dataType, options.url)) {\r\n options.url = urijs(options.url).setQuery('ReqId', requestId).toString();\r\n }\r\n\r\n const activity = this.scenario.ajaxStubActivity.create();\r\n const ajaxEventInterceptor = new AjaxEventInterceptor(\r\n options,\r\n requestId,\r\n this.stubOptions,\r\n this.eventHandler,\r\n activity\r\n );\r\n ajaxEventInterceptor.triggerEventInterceptors();\r\n\r\n return originalAjax.call(jQuery, options);\r\n };\r\n\r\n globalInterceptInstance = intercept;\r\n\r\n jQuery.ajax = (url, options) => (globalInterceptInstance === intercept ?\r\n intercept(url, options) :\r\n originalAjax.call(jQuery, url, options));\r\n }\r\n\r\n shouldAddRequestId(dataType, url) {\r\n const urlInLowerCase = _.isString(url) ? url.toLowerCase() : '';\r\n\r\n return _.isString(url) &&\r\n urlInLowerCase.indexOf('reqid') === -1 &&\r\n (_.isUndefined(dataType) || dataType !== 'script') &&\r\n urlInLowerCase.indexOf('scripts/') === -1;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst event = {\r\n BEFORESEND: 'beforeSend', SUCCESS: 'success', COMPLETE: 'complete', ERROR: 'error',\r\n};\r\n\r\n/**\r\n * AjaxInterceptor - Intercepts ajax events (beforeSend, success, error, complete)\r\n */\r\nexport class AjaxEventInterceptor {\r\n /**\r\n * @param {object} options - options from ajax call\r\n * @param {object} requestId - request id\r\n * @param {object} stubOptions - stub options to be used in ajax logging\r\n * @param {object} eventHandler - handler for ajax events\r\n * @param {object} activity - activity to be used by the ajax logging calls\r\n */\r\n constructor(options, requestId, stubOptions, eventHandler, activity) {\r\n this.options = options;\r\n this.requestId = requestId;\r\n this.stubOptions = stubOptions;\r\n this.eventHandler = eventHandler;\r\n this.activity = activity;\r\n }\r\n\r\n triggerEventInterceptors() {\r\n const pageTrackingId = _.result(this.stubOptions, 'pageTrackingId');\r\n const ajaxContext = {\r\n stubOptions: this.stubOptions,\r\n url: this.options.url,\r\n requestId: this.requestId,\r\n pageTrackingId,\r\n requestResult: true,\r\n httpMethod: this.options.type,\r\n error: '',\r\n ajaxStartTime: 0,\r\n ajaxRenderStartTime: 0,\r\n entityCount: this.stubOptions.getPageSize(this.options.data),\r\n activity: this.activity,\r\n };\r\n\r\n if (this.eventHandler.beforeSendHandler) this.interceptBeforeSend(this.options, ajaxContext);\r\n if (this.eventHandler.successHandler) this.interceptSuccess(this.options, ajaxContext);\r\n if (this.eventHandler.errorHandler) this.interceptError(this.options, ajaxContext);\r\n if (this.eventHandler.completeHandler) this.interceptComplete(this.options, ajaxContext);\r\n }\r\n\r\n /* eslint-disable no-param-reassign */\r\n interceptBeforeSend(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.BEFORESEND])) {\r\n ajaxOptions[event.BEFORESEND] = (...args) => {\r\n context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.BEFORESEND])) {\r\n const originalEventHandler = ajaxOptions[event.BEFORESEND];\r\n ajaxOptions[event.BEFORESEND] = function onBeforeSend(...args) {\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n if (originalRet && _.isFunction(originalRet.onBeforeSendDone)) {\r\n return originalRet.onBeforeSendDone(ajaxContext, args);\r\n }\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptSuccess(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.SUCCESS])) {\r\n ajaxOptions[event.SUCCESS] = (...args) => {\r\n context.eventHandler.successHandler(ajaxContext, args);\r\n if (context.eventHandler.successRenderHandler) {\r\n context.eventHandler.successRenderHandler(ajaxContext, args);\r\n }\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.SUCCESS])) {\r\n const originalEventHandler = ajaxOptions[event.SUCCESS];\r\n ajaxOptions[event.SUCCESS] = function onSuccess(...args) {\r\n context.eventHandler.successHandler(ajaxContext, args);\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n if (context.eventHandler.successRenderHandler) {\r\n context.eventHandler.successRenderHandler(ajaxContext, args);\r\n }\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptError(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.ERROR])) {\r\n ajaxOptions[event.ERROR] = (...args) => {\r\n context.eventHandler.errorHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.ERROR])) {\r\n const originalEventHandler = ajaxOptions[event.ERROR];\r\n ajaxOptions[event.ERROR] = function onError(...args) {\r\n context.eventHandler.errorHandler(ajaxContext, args);\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptComplete(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.COMPLETE])) {\r\n ajaxOptions[event.COMPLETE] = (...args) => {\r\n context.eventHandler.completeHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.COMPLETE])) {\r\n const originalEventHandler = ajaxOptions[event.COMPLETE];\r\n ajaxOptions[event.COMPLETE] = function onComplete(...args) {\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n context.eventHandler.completeHandler(ajaxContext, args);\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n static handleException(func, api, requestId, activity, message) {\r\n return function wrappedFunc(...args) {\r\n const context = this;\r\n let error = !_.isUndefined(message) ? `${message}: ` : '';\r\n try {\r\n return func.apply(context, args);\r\n } catch (ex) {\r\n if (!ex.message) {\r\n error += ex.toString();\r\n } else if (!ex.stack) {\r\n error += ex.message;\r\n } else {\r\n error += `${ex.message}\\tStackTrace: ${ex.stack}`;\r\n }\r\n activity.error(error, api, requestId);\r\n\r\n throw ex;\r\n }\r\n };\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { AjaxEventHandler } from './ajax-event-handler';\r\n\r\nconst defaultStubOptions = {\r\n objectsToStub: [$],\r\n serverErrorCodes: [-1],\r\n detectError(respData, serverErrorCodes) {\r\n const result = {\r\n pass: true,\r\n };\r\n\r\n if (respData &&\r\n respData.Errors &&\r\n respData.Errors[0] &&\r\n respData.Errors[0].Code &&\r\n _.isArray(serverErrorCodes) &&\r\n _.contains(serverErrorCodes, respData.Errors[0].Code)) {\r\n result.pass = false;\r\n result.message = respData.Errors[0].Message;\r\n result.impactUser = true;\r\n }\r\n return result;\r\n },\r\n getEntityCount(respData) {\r\n if (respData && respData.Records) {\r\n return respData.Records.RowCount;\r\n }\r\n return -1;\r\n },\r\n getPageSize(requestData) {\r\n const pageSizeParam = '.PageSize';\r\n if (_.isObject(requestData) && requestData.BiDateRange) {\r\n const keys = _.keys(requestData);\r\n const pageSizeProp = _.find(keys, key => key.length > pageSizeParam.length &&\r\n key.substr(key.length - pageSizeParam.length) === pageSizeParam);\r\n return requestData[pageSizeProp];\r\n }\r\n return -1;\r\n },\r\n};\r\n\r\n// default ajax event handler\r\nconst ajaxEventHandler = new AjaxEventHandler();\r\n\r\nexport const defaultConfig = {\r\n stubOptions: defaultStubOptions,\r\n eventHandler: ajaxEventHandler,\r\n};\r\n\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * AjaxEventHandler - contains event handlers for ajax events (beforeSend, success, error, complete)\r\n * The consuming application can override the handlers here by extending from this base handler\r\n * and pass in a custom AjaxEventHandler when instantiating the AjaxStub\r\n */\r\nexport class AjaxEventHandler {\r\n constructor(options = {}) {\r\n this.errorMappers = options.errorMappers || [];\r\n this.shouldAddHeaders = options.shouldAddHeaders || _.constant(true);\r\n }\r\n\r\n /**\r\n * Handler for the ajax beforeSend event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the beforeSend ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n beforeSendHandler(ajaxContext, [jqXHR]) {\r\n /* eslint-disable no-param-reassign */\r\n ajaxContext.ajaxStartTime = getTimestamp();\r\n\r\n if (this.shouldAddHeaders(ajaxContext) === true) {\r\n const applicationName = _.result(ajaxContext.stubOptions.ajaxStubOptions, 'applicationName', 'bingadsweb');\r\n const featureName = _.result(ajaxContext.stubOptions.ajaxStubOptions, 'featureName', null);\r\n\r\n jqXHR.setRequestHeader('x-ms-requestid', ajaxContext.requestId);\r\n // eslint-disable-next-line no-unused-expressions\r\n ajaxContext.pageTrackingId && jqXHR.setRequestHeader('x-ms-pagetrackingid', ajaxContext.pageTrackingId);\r\n jqXHR.setRequestHeader('x-ms-applicationname', applicationName);\r\n jqXHR.setRequestHeader('x-ms-lcid', ajaxContext.stubOptions.lcid);\r\n jqXHR.setRequestHeader('lcid', ajaxContext.stubOptions.lcid);\r\n if (featureName) {\r\n jqXHR.setRequestHeader('x-ms-featurename', featureName);\r\n }\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n true,\r\n ajaxContext.httpMethod,\r\n 0,\r\n true,\r\n '',\r\n ajaxContext.entityCount\r\n );\r\n }\r\n\r\n /**\r\n * Handler for the ajax success event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the success ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n successHandler(ajaxContext, [data, textStatus, jqXHR]) { // eslint-disable-line no-unused-vars\r\n const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n const result = ajaxContext.stubOptions.detectError(data);\r\n\r\n if (!result.pass) {\r\n ajaxContext.requestResult = false;\r\n ajaxContext.error = result.message;\r\n\r\n ajaxContext.activity.error(\r\n ajaxContext.error,\r\n ajaxContext.url,\r\n ajaxContext.requestId,\r\n result.impactUser,\r\n ajaxContext.httpMethod\r\n );\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n ajaxTimeTaken,\r\n ajaxContext.requestResult,\r\n this.constructor.getServerPerf(jqXHR),\r\n ajaxContext.entityCount\r\n );\r\n\r\n ajaxContext.entityCount = ajaxContext.stubOptions.getEntityCount(data);\r\n ajaxContext.ajaxRenderStartTime = getTimestamp();\r\n }\r\n\r\n /**\r\n * Handler to execute after the ajax success callback.\r\n * It's only purpose is to measure ajaxRender time.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @returns {undefined} - no returns\r\n */\r\n successRenderHandler(ajaxContext) {\r\n if (ajaxContext.requestResult === true) {\r\n const renderTimeTaken = getTimestamp() - ajaxContext.ajaxRenderStartTime;\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n renderTimeTaken,\r\n ajaxContext.requestResult,\r\n '',\r\n ajaxContext.entityCount,\r\n true\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Handler for the ajax error event.\r\n * This may need to be overriden by the application to handle expected errors.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the error ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n errorHandler(ajaxContext, [jqXHR, textStatus, errorThrown]) {\r\n const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n\r\n if (jqXHR.status !== 0) {\r\n ajaxContext.requestResult = false;\r\n\r\n ajaxContext.error = `Ajax error [${jqXHR.status}]`;\r\n\r\n if (textStatus && $.trim(textStatus) !== '') {\r\n ajaxContext.error += (`, ${textStatus}`);\r\n // Log jqXHR.responseText when it is not 200 (which means will enter errorHandler)\r\n if (jqXHR.responseText && $.trim(jqXHR.responseText) !== '') {\r\n ajaxContext.error += (`, ${jqXHR.responseText}`);\r\n } else if (jqXHR.responseXML && $.trim(jqXHR.responseXML) !== '') {\r\n ajaxContext.error += (`, ${jqXHR.responseXML}`);\r\n }\r\n }\r\n\r\n if (errorThrown && $.trim(errorThrown) !== '') {\r\n ajaxContext.error += (`, ${errorThrown}`);\r\n }\r\n\r\n switch (jqXHR.status) {\r\n case 400:\r\n case 404:\r\n // If error maps to a user error, log at trace level\r\n if (this.isUserError(ajaxContext, jqXHR, textStatus, errorThrown)) {\r\n ajaxContext.requestResult = true;\r\n }\r\n break;\r\n case 401:\r\n // Log 401 unauthorized error at trace level\r\n ajaxContext.requestResult = true;\r\n break;\r\n default:\r\n ajaxContext.requestResult = false;\r\n }\r\n\r\n if (ajaxContext.requestResult === false) {\r\n ajaxContext.activity.error(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, '', ajaxContext.httpMethod);\r\n } else {\r\n ajaxContext.activity.trace(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, ajaxContext.httpMethod);\r\n }\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n ajaxTimeTaken,\r\n ajaxContext.requestResult\r\n );\r\n }\r\n\r\n /**\r\n * Handler for the ajax complete event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the beforeSend ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n completeHandler(ajaxContext, [jqXHR]) { // eslint-disable-line no-unused-vars\r\n // do nothing\r\n }\r\n\r\n /**\r\n * private method to check if ajax error maps to an user error\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {object} jqXHR - jqXHR passed to the ajax callback\r\n * @param {object} textStatus - textStatus passed to the ajax callback\r\n * @param {object} errorThrown - errorThrown passed to the ajax callback\r\n * @returns {bool} - if error is an user error\r\n */\r\n isUserError(ajaxContext, jqXHR, textStatus, errorThrown) {\r\n return _.any(this.errorMappers, errorMapper => errorMapper.check(\r\n ajaxContext,\r\n jqXHR,\r\n textStatus,\r\n errorThrown\r\n ));\r\n }\r\n\r\n static getServerPerf(jqXHR) {\r\n if (jqXHR && _.isFunction(jqXHR.getResponseHeader)) {\r\n const perfTimings = jqXHR.getResponseHeader('PerfTimings');\r\n if (perfTimings) {\r\n return perfTimings;\r\n }\r\n const odataPerf = {};\r\n _.each(\r\n ['x-ms-mte2eelapsedtimems', 'x-ms-odataapie2eelapsedtimems', 'x-ms-odataapionlye2eelapsedtimems'],\r\n (header) => {\r\n const value = jqXHR.getResponseHeader(header);\r\n if (value) {\r\n odataPerf[header] = value;\r\n }\r\n }\r\n );\r\n\r\n if (jqXHR.responseJSON) {\r\n const key = '@ns.cacheobjectused';\r\n odataPerf[key] = jqXHR.responseJSON[key];\r\n\r\n const keyUnfilteredCount = '@ns.unfiltered.count';\r\n odataPerf[keyUnfilteredCount] = jqXHR.responseJSON[keyUnfilteredCount];\r\n\r\n const keyOdataCount = '@odata.count';\r\n odataPerf[keyOdataCount] = jqXHR.responseJSON[keyOdataCount];\r\n }\r\n\r\n return JSON.stringify(odataPerf);\r\n }\r\n return '';\r\n }\r\n}\r\n","/**\r\n * Pre-defined schema used for Ajax Stub\r\n */\r\nexport const schema = {\r\n scenario: [{\r\n name: 'ajaxStubScenario',\r\n value: 'Ajax Stub Scenario',\r\n setting: {\r\n hidden: true,\r\n },\r\n activity: [\r\n {\r\n name: 'ajaxStubActivity',\r\n value: 'Ajax Stub Activity',\r\n setting: {},\r\n },\r\n ],\r\n }],\r\n};\r\n","import _ from 'underscore';\r\nimport StackTrace from 'stacktrace-js';\r\nimport Promise from 'bluebird';\r\nimport { schema } from './error-stub-schema';\r\n\r\nfunction getStackStringFromStackFrames(stackFrames) {\r\n const stackLines = _.map(stackFrames, frame => [\r\n frame.getFunctionName() || '', ' (',\r\n frame.getFileName(), ':',\r\n frame.getLineNumber(), ':',\r\n frame.getColumnNumber(), ')',\r\n ].join('')).join('\\n');\r\n\r\n return stackLines;\r\n}\r\n\r\n// By default, stacktrace-js loads source maps synchronously. This is not good for performance.\r\nexport function asyncAjaxOverride(url) {\r\n return new Promise((resolve, reject) => {\r\n const req = new XMLHttpRequest();\r\n req.open('get', url, true); // Third parameter true for async call\r\n req.onerror = reject;\r\n req.onreadystatechange = function onreadystatechange() {\r\n if (req.readyState === 4) {\r\n if ((req.status >= 200 && req.status < 300) ||\r\n (url.substr(0, 7) === 'file://' && req.responseText)) {\r\n resolve(req.responseText);\r\n } else {\r\n reject(new Error(`HTTP status: ${req.status} retrieving ${url}`));\r\n }\r\n }\r\n };\r\n req.send();\r\n });\r\n}\r\n\r\n/**\r\n * ErrorStub class - Creates a window.onerror stub that can be used by Instrumentation\r\n */\r\nexport class ErrorStub {\r\n /**\r\n * @param {object} options - contains instrumentation for logging\r\n */\r\n constructor(options = {}) {\r\n // create scenario for logging\r\n this.setupScenario(options.instrumentation);\r\n this.logUnhandledPromiseRejections = options.logUnhandledPromiseRejections || false;\r\n this.skipStackTraceResolutionForPromiseRejections = options.skipStackTraceResolutionForPromiseRejections;\r\n\r\n this.isExpectedUnhandledPromiseError = options.isExpectedUnhandledPromiseError;\r\n this.stackTraceOptions = {\r\n ajax: asyncAjaxOverride, // by default it uses synchroneous ajax\r\n };\r\n }\r\n\r\n init() {\r\n this.intercept();\r\n }\r\n\r\n intercept() {\r\n window.onerror = (errorMsg, url, lineNumber, column, errorObj) => {\r\n const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n this.handleError(errorMsg, url, lineNumber, column, errorObj, activity);\r\n\r\n return true;\r\n };\r\n\r\n if (this.logUnhandledPromiseRejections) {\r\n window.addEventListener('unhandledrejection', (promiseRejection) => {\r\n const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n this.handlePromiseRejection(promiseRejection, activity);\r\n });\r\n }\r\n }\r\n\r\n handleError(errorMsg, url, lineNumber, column, errorObj, activity) {\r\n let errorMessage = `${errorMsg}\\tScript: ${url} Line: ${lineNumber}`;\r\n if (!_.isUndefined(column)) {\r\n errorMessage += ` Column: ${column}`;\r\n }\r\n return StackTrace.fromError(errorObj, this.stackTraceOptions).then((stackFrames) => {\r\n errorMessage += ` StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n }).catch((ex) => {\r\n if (_.isObject(errorObj) && _.has(errorObj, 'stack')) {\r\n errorMessage += ` StackTrace: ${errorObj.stack}\\n [StackTrace Error: ${ex}]`;\r\n }\r\n }).finally(() => {\r\n errorMessage += `\\tCurrentURL: ${window.location.href}\\tPreviousURL: ${document.referrer ? document.referrer : 'Unknown'}`;\r\n\r\n const perviousRoute = window.history.state && window.history.state.state ?\r\n window.history.state.state.previousRoute : null;\r\n\r\n if (perviousRoute) {\r\n errorMessage += `\\tPreviousRoute: ${perviousRoute}`;\r\n }\r\n\r\n activity.error(errorMessage, 'onerror');\r\n });\r\n }\r\n\r\n handlePromiseRejection(promiseRejectionEvent, activity) {\r\n let errorMessage = 'Unhandled promise rejection;';\r\n\r\n const logError = (message) => {\r\n if (this.isExpectedUnhandledPromiseError && this.isExpectedUnhandledPromiseError(message)) {\r\n activity.trace(message, 'onunhandledrejection');\r\n } else {\r\n activity.error(message, 'onunhandledrejection');\r\n }\r\n return Promise.resolve();\r\n };\r\n\r\n // Bluebird stores these properties in .detail while native promise stores these properties at top level\r\n const { promise, reason } = promiseRejectionEvent.detail || promiseRejectionEvent;\r\n\r\n // Reason is an Error-like object\r\n if (reason && (reason.message || reason.stack)) {\r\n const { message, stack } = reason;\r\n if (this.skipStackTraceResolutionForPromiseRejections) {\r\n errorMessage += ` Message: ${message}; StackTrace: ${stack}`;\r\n return logError(errorMessage);\r\n }\r\n\r\n return StackTrace.fromError(reason, this.stackTraceOptions).then((stackFrames) => {\r\n errorMessage += ` Message: ${message}; StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n }).catch((ex) => {\r\n errorMessage += `${message} at ${stack}\\n [StackTrace Error: ${ex}]`;\r\n }).finally(() => {\r\n logError(errorMessage);\r\n });\r\n }\r\n\r\n // Use bluebird's stack trace if available\r\n errorMessage += `Non error object thrown; Reason: ${JSON.stringify(reason)}; StackTrace: ${_.get(promise, '_trace.stack')};`;\r\n logError(errorMessage);\r\n return Promise.resolve();\r\n }\r\n\r\n setupScenario(instr) {\r\n instr.addScenario(schema);\r\n this.errorStubScenario = instr.errorStubScenario.create(instr.ScenarioContext);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__52__;","/**\r\n * Pre-defined schema used for Error Stub\r\n */\r\nexport const schema = {\r\n scenario: [{\r\n name: 'errorStubScenario',\r\n value: 'Error Stub Scenario',\r\n setting: {\r\n hidden: true,\r\n },\r\n activity: [\r\n {\r\n name: 'errorStubActivity',\r\n value: 'Error Stub Activity',\r\n setting: {},\r\n },\r\n ],\r\n }],\r\n};\r\n","export { PerformanceTimingLogger } from './src/index';\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * Create an instance of Performance Timing Logger\r\n */\r\nexport class PerformanceTimingLogger {\r\n constructor(options = {}) {\r\n this.instrumentation = options.instrumentation;\r\n this.updateInterval = options.updateInterval || 2500;\r\n }\r\n\r\n /**\r\n * init performance timing logging\r\n * @returns {undefined} - no returns\r\n */\r\n init() {\r\n if (!_.isFunction(window.performance.getEntriesByType)) {\r\n return;\r\n }\r\n\r\n this.isPageLoaded = false;\r\n this.pageNavLogged = false;\r\n\r\n if (document.readyState === 'complete') {\r\n this.logOnLoad();\r\n } else {\r\n window.addEventListener('load', () => this.logOnLoad(), false);\r\n }\r\n\r\n this.timer = setInterval(() => this.logOnTimer(), this.updateInterval);\r\n\r\n this.instrumentation.beforeStop = () => {\r\n this.logOnUnload();\r\n };\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n logOnLoad() {\r\n this.writeResourceTimingLogs();\r\n this.tryRecordInactiveTime();\r\n this.tryLogPageNavigation();\r\n this.isPageLoaded = true;\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n logOnTimer() {\r\n this.writeResourceTimingLogs();\r\n this.tryLogPageNavigation();\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n logOnUnload() {\r\n this.writeResourceTimingLogs();\r\n }\r\n\r\n /**\r\n * writes resource timing logs\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n writeResourceTimingLogs() {\r\n const logs = window.performance.getEntriesByType('resource');\r\n\r\n this.clearLogBuffer();\r\n\r\n if (!logs.length) {\r\n return;\r\n }\r\n\r\n _.each(logs, (log) => {\r\n _.extend(log, { pageLoaded: this.isPageLoaded });\r\n this.instrumentation.writeRawLog(log);\r\n });\r\n }\r\n\r\n /**\r\n * If supported, record the amount of time the page was in the background.\r\n * It gets the foreground time from window.performance.activeTime\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n tryRecordInactiveTime() {\r\n if (_.isFunction(window.performance.activeTime)) {\r\n this.inactiveTime = window.performance.now() - window.performance.activeTime();\r\n }\r\n }\r\n\r\n /**\r\n * try log page navigation logs\r\n * @private\r\n * @returns {bool} - if page navigation has been logged\r\n */\r\n tryLogPageNavigation() {\r\n if (!this.pageNavLogged &&\r\n window.performance.timing &&\r\n window.performance.timing.loadEventEnd > 0) {\r\n this.pageNavLogged = this.writePageNavigationLogs();\r\n }\r\n\r\n return this.pageNavLogged;\r\n }\r\n\r\n /**\r\n * writes page navigation logs\r\n * @private\r\n * @returns {bool} - if page navigation has been logged\r\n */\r\n writePageNavigationLogs() {\r\n const extensions = {\r\n isPageNavigationLog: true,\r\n };\r\n\r\n if (window.chrome && _.isFunction(window.chrome.loadTimes)) {\r\n const { firstPaintTime } = (window.chrome.loadTimes() || {});\r\n\r\n if (_.isNumber(firstPaintTime) && firstPaintTime > 0) {\r\n extensions.firstPaintTime = firstPaintTime * 1000;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n const navTimingV2Logs = window.performance.getEntriesByType('navigation');\r\n\r\n if (_.isArray(navTimingV2Logs) && _.size(navTimingV2Logs) > 0) {\r\n const navTimingV2Log = _.first(navTimingV2Logs);\r\n const colsToReplace = _.pick(\r\n navTimingV2Log,\r\n 'unloadEventStart', 'unloadEventEnd', 'redirectCount', 'redirectStart'\r\n , 'redirectEnd'\r\n );\r\n _.extend(extensions, colsToReplace);\r\n } else {\r\n extensions.redirectCount = window.performance.navigation.redirectCount;\r\n }\r\n\r\n if (this.inactiveTime) {\r\n extensions.inactiveTime = this.inactiveTime;\r\n }\r\n\r\n this.instrumentation.writeRawLog(_.extend({}, window.performance.timing, extensions));\r\n return true;\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n clearLogBuffer() {\r\n if (_.isFunction(window.performance.clearResourceTimings)) {\r\n window.performance.clearResourceTimings();\r\n } else if (_.isFunction(window.performance.webkitClearResourceTimings)) {\r\n window.performance.webkitClearResourceTimings();\r\n }\r\n }\r\n}\r\n","import * as odataQuery from './src/query';\r\nimport * as odataUri from './src/uri';\r\nimport * as odataCast from './src/cast';\r\n\r\nexport { odataCast, odataQuery, odataUri };\r\n","import _ from 'underscore';\r\n\r\nconst DefaultTop = 20;\r\n\r\nexport function convert({\r\n where = {},\r\n expand,\r\n limit,\r\n offset,\r\n orderBy,\r\n query,\r\n select,\r\n source,\r\n any,\r\n} = {}) {\r\n const ret = {};\r\n\r\n const { '*': { contains: search } = {} } = where;\r\n\r\n if (!_.isEmpty(search)) {\r\n ret.$search = search;\r\n }\r\n\r\n if (_.isString(where) && !_.isEmpty(where)) {\r\n // If 'where' is a string, then directly use it as '$filter' without any further conversion.\r\n // In this case, 'where' is a well-formed, non-URL-encoded string, such as:\r\n // \"(PerformanceMetrics/Clicks gt 10 and contains(Name, 'Campaign')\r\n // and HasAuctionInsight eq true)\"\r\n ret.$filter = where;\r\n }\r\n\r\n if (!_.isEmpty(expand) && _.isArray(expand)) {\r\n ret.$expand = expand.join(',');\r\n }\r\n\r\n if (_.isNull(limit) || _.isUndefined(limit)) {\r\n ret.$top = DefaultTop;\r\n } else if (!_.isNumber(limit) || _.isNaN(limit)) {\r\n throw new TypeError('limit must be a number and not NaN');\r\n } else if (limit !== Number.MAX_VALUE) {\r\n ret.$top = limit;\r\n }\r\n\r\n if (!_.isUndefined(offset)) {\r\n ret.$skip = offset;\r\n }\r\n\r\n ret.$count = true;\r\n\r\n if (!_.isUndefined(source)) {\r\n ret.$source = source;\r\n }\r\n // todo [akamel] only supports one order column\r\n // todo [akamel] this expects mongo style orderby obj; rely on js-data syntax for this instead...\r\n if (!_.isEmpty(orderBy)) {\r\n if (_.isString(orderBy)) {\r\n ret.$orderby = `${orderBy} asc`;\r\n } else if (_.isArray(orderBy)) {\r\n const arr = orderBy.map((item) => {\r\n if (_.isString(item)) {\r\n return `${item} asc`;\r\n } else if (_.isArray(item)) {\r\n return `${item[0]} ${item[1].toLowerCase()}`;\r\n } else if (_.isObject(item)) {\r\n const name = _.keys(item)[0];\r\n const direction = item[name] > 0 ? 'asc' : 'desc';\r\n\r\n return `${name} ${direction}`;\r\n }\r\n return null;\r\n }).filter(item => item);\r\n\r\n ret.$orderby = arr.join(',');\r\n }\r\n }\r\n\r\n if (!_.isEmpty(select)) {\r\n ret.$select = select.join(',');\r\n }\r\n\r\n if (_.isObject(any)) {\r\n _.each(_.keys(any), (key) => {\r\n const value = any[key];\r\n if (_.isString(value)) {\r\n ret[key] = any[key];\r\n }\r\n });\r\n }\r\n\r\n return _.extend(ret, _.omit(query, 'entitySet'));\r\n}\r\n","import _ from 'underscore';\r\nimport * as odataCast from './cast';\r\n\r\nfunction getCast({ cast = null }) {\r\n return _.isEmpty(cast) ? '' : `/${cast}`;\r\n}\r\n\r\nfunction getParent({ parent = null }) {\r\n return _.isEmpty(parent) ? '' : `${parent}/`;\r\n}\r\n\r\n// TODO: wewei, ericwa, remove the parent/cast in existing code\r\nfunction getUriLegacy(definition, options, id) {\r\n if (options.url) {\r\n return options.url;\r\n }\r\n\r\n const name = `${definition.name}s`;\r\n const idType = _.chain(definition)\r\n .result('schema')\r\n .result('properties')\r\n .result(definition.idAttribute)\r\n .result('type')\r\n .value();\r\n\r\n if (!_.isNull(id)) {\r\n if (_.isString(id) && (idType === 'string' || !idType)) {\r\n return `/Customers(:advertisercustomer_id)/Accounts(:account_id)/${getParent(options)}${name}('${id}')${getCast(options)}`;\r\n }\r\n\r\n return `/Customers(:advertisercustomer_id)/Accounts(:account_id)/${getParent(options)}${name}(${id})${getCast(options)}`;\r\n }\r\n\r\n return `/Customers(:advertisercustomer_id)/Accounts(:account_id)/${getParent(options)}${name}${getCast(options)}`;\r\n}\r\n\r\nexport function convert({\r\n definition,\r\n options = {},\r\n id = null,\r\n isFinding = false,\r\n entitySet = options.entitySet,\r\n}) {\r\n if (entitySet) {\r\n // NOTICE: Change made here to pass in advertiserCustomerID\r\n // instead of pulling from component/state.\r\n const { useAdvertiserCustomerId = true, advertiserCustomerID } = options;\r\n const searchId = useAdvertiserCustomerId && entitySet.Accounts ?\r\n advertiserCustomerID :\r\n id;\r\n\r\n let resIds = _.isNull(searchId) ? entitySet : entitySet.$withKey(searchId);\r\n\r\n if (isFinding) {\r\n resIds = odataCast.resIds({ resIds, definition, options });\r\n }\r\n\r\n return resIds.odataURL;\r\n }\r\n return getUriLegacy(definition, options, id);\r\n}\r\n","import _ from 'underscore';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nfunction needCast(definition, options) {\r\n // _.has means has own, it will not check property in __proto__\r\n const jsdataResource = _.has(options, 'entitySet') ?\r\n get(options, 'entitySet.type.elementType.jsdataResource') :\r\n get(options, 'entitySet.jsdataResource');\r\n\r\n return !_.isEmpty(jsdataResource) && definition !== jsdataResource;\r\n}\r\n\r\nexport function resIds({ resIds: ids, definition, options }) {\r\n return needCast(definition, options) ? ids.$cast(`Model.${definition.name}`) : ids;\r\n}\r\n\r\nexport function data({ data: d, definition, options }) {\r\n const extra = needCast(definition, options) ? { '@odata.type': `Model.${definition.name}` } : {};\r\n\r\n return _.extend(extra, d);\r\n}\r\n","export { KeepAlive, keepAliveInstance } from './src';\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport * as urlUtil from '@bingads-webui/url-util';\r\nimport { http } from '@bingads-webui/http-util';\r\n\r\nconst checkFrequencyInMinutes = 5;\r\n\r\nfunction fullFillUrl(relativeUrl) {\r\n const domain = urlUtil.getDomain(window.location.href);\r\n return `${window.location.protocol}//${domain.replace(/ui\\./i, '')}${relativeUrl}`;\r\n}\r\n\r\nexport class KeepAlive {\r\n /**\r\n * initialize Keep Alive Class\r\n * @param {object} [deps] - provide dep injection for keep alive\r\n * @param {string} [url] - url to keep alive, if pass absolute url, rewrite url will be useless\r\n * @param {function} [reWriteUrl] - function to rewrite url when pass relative url\r\n * @param {number} [timeoutInMinutes] - user is idle but we keep session alive duration\r\n * @param {function} [unAuthCallBack] - call back when get 401 from keep alive\r\n * @returns {void}\r\n */\r\n constructor({\r\n deps = {\r\n httpUtil: http,\r\n },\r\n url = '/root/keepalive?__adcenterAJAX=true',\r\n requestOption = {\r\n converters: {\r\n 'text json': function (data) {\r\n if (_.isEmpty(data)) {\r\n return null;\r\n }\r\n return JSON.parse(data);\r\n },\r\n },\r\n xhrFields: {\r\n withCredentials: true,\r\n },\r\n contentType: 'application/x-www-form-urlencoded',\r\n },\r\n reWriteUrl = fullFillUrl,\r\n timeoutInMinutes = 240,\r\n unAuthCallBack = _.identity,\r\n }) {\r\n this.url = url;\r\n if (urlUtil.isRelativeUrl(url)) {\r\n this.url = reWriteUrl(url);\r\n }\r\n this.deps = deps;\r\n this.keepAliveTask = null;\r\n this.checkFrequency = checkFrequencyInMinutes * 1000 * 60;\r\n this.keepAliveCounter = 0;\r\n this.keepAliveMaxCount = timeoutInMinutes / checkFrequencyInMinutes;\r\n this.unAuthCallBack = unAuthCallBack;\r\n this.requestOption = requestOption;\r\n }\r\n\r\n issueKeepAliveRequest() {\r\n return this.deps.httpUtil.get(this.url, this.requestOption).then((data = {}) => {\r\n if (_.result(data, 'Error') === '401') {\r\n this.unAuthCallBack(data);\r\n return false;\r\n }\r\n return true;\r\n }).catch((reason) => {\r\n if (_.result(reason, 'status') === 200) {\r\n return true;\r\n }\r\n return false;\r\n }).then((result) => {\r\n if (result) {\r\n this.keepAliveCounter = this.keepAliveCounter + 1;\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n issueKeepAliveRequestWithExceptionHandling() {\r\n try {\r\n this.issueKeepAliveRequest();\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {}\r\n }\r\n\r\n start() {\r\n this.stop();\r\n this.issueKeepAliveRequestWithExceptionHandling();\r\n this.keepAliveTask = setInterval(() => {\r\n if (this.keepAliveCounter <= this.keepAliveMaxCount) {\r\n this.issueKeepAliveRequestWithExceptionHandling();\r\n }\r\n }, this.checkFrequency);\r\n\r\n $(window).on('unload', () => this.stop());\r\n }\r\n\r\n stop() {\r\n if (this.keepAliveTask !== null) {\r\n clearInterval(this.keepAliveTask);\r\n this.keepAliveTask = null;\r\n }\r\n }\r\n\r\n refresh() {\r\n this.keepAliveCounter = 0;\r\n }\r\n}\r\n\r\nexport const keepAliveInstance = new KeepAlive({});\r\n"],"sourceRoot":""}