{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/ts/config/production/Config.ts","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./src/ts/helpers/DownloadSkypeHelper.ts","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/@skype/ecsclient/dist/EcsClient.js","webpack:///./src/ts/components/common/Captcha.tsx","webpack:///./node_modules/@skype/ecsclient/dist/TelemetryEvents.js","webpack:///./src/ts/components/meetings/Launcher.tsx","webpack:///./src/ts/helpers/SilentLoginHelper.ts","webpack:///./src/ts/helpers/LoggerHelper.ts","webpack:///./src/ts/components/do/RootView.tsx","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./src/ts/index.tsx","webpack:///./node_modules/@skype/ecsclient/dist/AppActiveData.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/v1.js","webpack:///./node_modules/uuid/dist/esm-browser/parse.js","webpack:///./node_modules/uuid/dist/esm-browser/v35.js","webpack:///./node_modules/uuid/dist/esm-browser/md5.js","webpack:///./node_modules/uuid/dist/esm-browser/v3.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/uuid/dist/esm-browser/sha1.js","webpack:///./node_modules/uuid/dist/esm-browser/v5.js","webpack:///./node_modules/uuid/dist/esm-browser/nil.js","webpack:///./node_modules/uuid/dist/esm-browser/version.js","webpack:///./src/ts/helpers/RedirectHelper.ts","webpack:///./src/ts/components/common/Padder.tsx","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/uniq.js","webpack:///./src/ts/components/common/StackNavigationView.tsx","webpack:///./src/ts/contexts/ErrorContext.ts","webpack:///./src/ts/components/common/ErrorBoundary.tsx","webpack:///./src/ts/components/meetings/login/GuestLogin.tsx","webpack:///./src/ts/contexts/meetings/MeetingContext.ts","webpack:///./src/ts/components/meetings/LoginView.tsx","webpack:///./src/ts/helpers/EcsHelper.ts","webpack:///./src/ts/components/meetings/login/GuestRedirect.tsx","webpack:///./src/ts/config/BaseConfig.ts","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./src/ts/models/SharedTypes.ts","webpack:///./src/ts/helpers/LocalizerHelper.ts","webpack:///./src/ts/components/bots/BotInfo.tsx","webpack:///./src/ts/components/profiles/Launcher.tsx","webpack:///./src/ts/helpers/SafariRedirectHelper.ts","webpack:///./src/ts/components/bots/BotLauncher.tsx","webpack:///./node_modules/lodash/_overRest.js","webpack:///./src/ts/components/common/ARootView.tsx","webpack:///./node_modules/subscribableevent/dist-es2015/SubscribableEvent.js","webpack:///./node_modules/@skype/ecsclient/dist/TelemetryEventBase.js","webpack:///./src/ts/rest/BotsRestClient.ts","webpack:///./node_modules/clipboard-polyfill/dist/clipboard-polyfill.esm.js","webpack:///./node_modules/@skype/ecsclient/dist/Cache.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./src/ts/components/meetings/JoinLink.tsx","webpack:///./src/ts/rest/MeetingsApiClientUtils.ts","webpack:///./src/ts/components/meetings/login/UnifiedLoginMethod.tsx","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./src/ts/themes/common.ts","webpack:///./src/ts/components/bots/RootView.tsx","webpack:///./src/ts/helpers/UrlHelper.ts","webpack:///./src/ts/components/common/ErrorModal.tsx","webpack:///./src/ts/contexts/ConfigContext.ts","webpack:///./src/ts/themes/index.ts","webpack:///./src/ts/components/meetings/RootView.tsx","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/merge.js","webpack:///./src/ts/meetnow/MeetNowEdgeHandler.ts","webpack:///./src/ts/meetnow/FallbackFlow.ts","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./src/ts/contexts/AriaContext.ts","webpack:///./src/ts/contexts/bots/BotsContext.ts","webpack:///./src/ts/components/meetings/login/LoginMethod.tsx","webpack:///./src/ts/helpers/SkypeTokenHelper.ts","webpack:///./src/ts/components/profiles/RootView.tsx","webpack:///./src/ts/contexts/StackNavigationContext.ts","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/@skype/ecsclient/dist/Config.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/@skype/ecsclient/dist/RestClient.js","webpack:///./src/ts/components/invites/InviteView.tsx","webpack:///./src/ts/models/OffSkypeInviteServiceModel.ts","webpack:///./src/ts/contexts/do/DoContext.ts","webpack:///./src/ts/themes/light.ts","webpack:///./src/ts/rest/BaseRestClient.ts","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/@skype/ecsclient/dist/AllowBackgroundFetchData.js","webpack:///./src/ts/components/common/LoadingView.tsx","webpack:///./src/ts/helpers/CookieHelper.ts","webpack:///./src/ts/rest/MeetingsApiClient.ts","webpack:///./node_modules/@skype/ecsclient/dist/Scheduler.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./src/ts/meetnow/MeetNowSettings.ts","webpack:///./src/ts/components/common/NestedStackNavigationView.tsx","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./src/ts/components/meetings/UnifiedView.tsx","webpack:///./src/ts/components/do/Launcher.tsx","webpack:///./src/ts/helpers/ClipboardHelper.ts","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/@skype/ecsclient/dist/TelemetryManager.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./src/ts/helpers/DomHelper.ts","webpack:///./src/ts/App.tsx","webpack:///./src/ts/themes/teams.ts","webpack:///./src/ts/components/invites/Launcher.tsx","webpack:///./node_modules/@skype/ecsclient/dist/Models.js","webpack:///./src/ts/components/common/Spinner.tsx","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./src/ts/rest/HuddleApiClient.ts","webpack:///./src/ts/contexts/invites/InviteContext.ts","webpack:///./src/ts/components/common/AriaLive.tsx","webpack:///./src/ts/components/bots/AddBotView.tsx","webpack:///./src/ts/components/meetings/JoinView.tsx","webpack:///./src/ts/helpers/ErrorHelper.ts","webpack:///./src/ts/meetnowJoin/JoinHandler.ts","webpack:///./src/ts/helpers/DateHelper.ts","webpack:///./src/ts/contexts/UserContext.ts","webpack:///./src/ts/components/do/DoView.tsx","webpack:///./src/ts/components/common/Select.tsx","webpack:///./src/ts/components/common/ALauncher.tsx","webpack:///./src/ts/components/common/ErrorDetails.tsx","webpack:///./src/ts/contexts/profiles/ProfilesContext.ts","webpack:///./src/ts/components/common/Header.tsx","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/@skype/ecsclient/dist/SkypeTokenData.js","webpack:///./src/ts/components/common/Footer.tsx","webpack:///./src/ts/components/invites/RootView.tsx","webpack:///./src/ts/helpers/EnvironmentHelper.ts","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./src/ts/contexts/EcsContext.ts","webpack:///./src/ts/components/profiles/ProfileView.tsx","webpack:///./src/ts/app.less?0651","webpack:///./vendor/silentLogin.js","webpack:///./src/ts/app.less","webpack:///./src/ts/rest/ProfileRestClient.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Uint8Array","arrayBuffer","constructor","byteLength","set","downloadSkype","threadId","url","logger","action","sessionFinished","completionType","os","OperatingSystems","Android","urls","app","downloadAndroid","MacOS","downloadDesktop","download","location","href","Stack","assignMergeValue","baseFor","baseMergeDeep","isObject","keysIn","safeGet","baseMerge","source","srcIndex","customizer","stack","srcValue","newValue","undefined","baseCreate","getPrototype","isPrototype","AllowBackgroundFetchData_1","AppActiveData_1","Cache_1","Config_1","Models","Scheduler_1","SkypeTokenData_1","TelemetryManager_1","EcsClient","this","_allowBackgroundFetchData","default","_appActiveData","_config","_cache","_skypeTokenData","_telemetryManager","_scheduler","telemetryEventAdded","configUpdated","initialize","config","_this","putSkypeTokenData","initialSkypeTokenData","putAppActive","initialAppActiveState","then","getConfig","getEcsConfig","getConfigType","cacheConfig","configType","requestUpdate","pause","resume","setAllowBackgroundFetch","allowBackgroundFetch","putBackgroundFetchAllowed","useSkypeToken","skypeToken","skypeTokenExpiration","setAppActive","active","setConfigsToFetch","types","updateConfigsToFetch","setFetchTimeout","fetchTimeout","props","onSolutionUpdated","event","target","state","currentSolution","setState","challenge","render","AriaContextConsumer","ariaContext","id","className","ref","announce","assertive","text","localizer","getString","src","onChange","autoFocus","React","PureComponent","Captcha","extendStatics","__extends","b","setPrototypeOf","__proto__","Array","__","EcsConfigFetchResponse","_super","_responseTime","_responseCode","_fetchAttempts","_hasValidToken","_serverEndpoint","_etag","_fetchDurationValid","_cacheAvailable","_responseSize","_configAge","_configExpired","_fetchStart","_fetchEnd","getEventName","getAttributes","attributes","TelemetryEventBase","_getLauncherUrl","conv","conversation","sessionId","getCorrelationId","launcher","intentUri","toLowerCase","resource","isIOSInAppBrowserFlow","shortId","universalUri","skypeUri","_getLoggerAction","ALauncher","Launcher","silentLoginAsync","silentLogin","deferral","startTime","Date","getTime","SKYPE","login","Silent","SyncTasks","Defer","init","setCallback","response","skypetoken","resolve","expiration","expires_in","error","reject","errorDescription","error_description","load","promise","done","status","SilentLoginStatus","Success","duration","fail","Fail","CommonProperty","_logger","AWTLogManager","getLogger","_commonProperties","_sessionStartDate","_wasLoggedIn","_wasUnifiedView","_prefix","getSessionId","priority","AWTEventPriority","Normal","_log","network","navigation","sessionStarted","wasPreLoggedin","useUnifiedView","sessionIntermediateStep","wasLoggedIn","sessionDurationInMs","getDiffInMS","meetNowFallbackFlow","correlationIdFromQuery","UrlHelper","getQueryParameterAsString","setName","eventProperties","setType","setCommonProperties","keys","forEach","piiKind","setPropertyWithPii","setProperty","browser","deviceType","env","setProperties","properties","propertyPrefix","setPiiProperties","piiProperties","AWTPiiKind","NotSet","type","_onError","message","file","line","col","ariaTenantId","prefix","logging","ariaTenant","canSendStatEvent","enableAutoUserSession","onerror","removeEventListener","flushAndTeardown","addEventListener","initCommonProperty","addSkypeIdAndMsaCidHexCommonProperties","isGuest","UserId","getSkypeIdFromSkypeToken","Identity","AWTPropertyType","String","MsaCidHex","getMsaCidHexFromSkypeToken","AWTEventProperties","setEventPriority","isArray","logEvent","LoggerHelper","_onLaunchClick","oldState","launcherKey","doContext","RootView","getParamsFromUrl","getQueryParameters","recipient","correlationId","Source","CorrelationId","skypeId","toString","Actions","Call","Chat","componentDidMount","params","displayableErrors","Generic","DeviceTypes","Desktop","webClientUrl","getWebClientUrlWithCorrelationId","assign","CookieHelper","getCookie","cookies","csrf","singleValue","DoContextProvider","do","StackNavigationView","loading","initialView","DoView","onLaunchClick","initialViewProps","eventViewName","ARootView","isArrayLike","isObjectLike","theme","container","document","getElementById","language","getElementsByTagName","lang","basePath","getAttribute","injectedEntryPoint","injectedSkypetoken","entryPoint","EntryPoint","Meetings","rawTheme","getQueryParameter","values","Themes","includes","ReactDOM","App","AppActiveData","_isActive","isActive","isAppActive","_appActiveDeferral","waitForAppActive","Resolved","getRandomValues","rnds8","rng","crypto","msCrypto","Error","uuid","test","byteToHex","substr","_nodeId","_clockseq","arr","offset","arguments","TypeError","_lastMSecs","_lastNSecs","options","buf","node","clockseq","seedBytes","random","msecs","now","nsecs","dt","tl","tmh","v","parseInt","generateUUID","namespace","str","unescape","encodeURIComponent","bytes","charCodeAt","stringToBytes","hashfunc","version","err","DNS","URL","getOutputLength","inputLength8","safeAdd","x","y","lsw","md5cmn","q","a","num","cnt","md5ff","md5gg","md5hh","md5ii","v35","msg","input","output","length32","hex","charAt","md5ToHexEncodedArray","len","olda","oldb","oldc","oldd","wordsToMd5","length8","Uint32Array","bytesToWords","rnds","f","z","ROTL","K","H","N","Math","ceil","M","_i","pow","floor","_i2","W","_t","e","_t2","T","doPostRedirect","form","buildForm","body","appendChild","submit","createElement","method","style","display","addParameters","addParameter","flex","Padder","freeExports","nodeType","freeModule","Buffer","root","allocUnsafe","buffer","isDeep","copy","baseUniq","array","_track","views","current","view","isRoot","parentContext","eventPriority","_push","ariaMessage","prevState","animating","defaultStackViewProperties","animation","AnimationType","None","setTimeout","_pop","previous","usedAnimation","pop","_getAnimationStyle","prev","Fade","FadeOut","Slide","SlideOut","renderPrevView","visible","fullscreenClassName","visibility","renderCurrentView","mainContentId","role","renderViews","candidate","ViewType","Overlay","pushRoot","popRoot","pushParent","popParent","componentWillMount","componentWillUnmount","StackNavigationContextProvider","LoadingView","context","createContext","setError","clear","ErrorContextProvider","Provider","ErrorContextConsumer","Consumer","_onFaqClick","faq","_onExploreClick","skypeCom","_onDownloadClick","downloadUrl","errorInfo","_alternatives","contentLocString","descriptonLocString","linkTextLocString","linkClickHandler","componentDidCatch","ErrorHelper","isDisplayableError","title","pageTitleLocString","ErrorDetails","showSkype","_renderAlternatives","children","map","item","index","_renderAlternativeItem","Header","as","content","description","ConfigContextConsumer","configContext","Button","onClick","ErrorBoundary","_updateGuestName","guestName","joinButtonEnabled","_createGuest","stackNavigationContext","meetingContext","errorContext","ecsContext","joinParams","joinButtonSpinEnabled","captchaState","show","_captchaSolution","_joinAsGuest","preventDefault","stopPropagation","ecsSettings","settings","useMeetingsApi","joinAsGuestMeetingsApi","retries","maxRetries","joinThread","useJoinThread","joinAsGuestHuddleApi","joinAsGuest","flowId","guestUser","GuestRedirect","username","catch","newState","statusCode","enrichErrorFromWebResponse","JoinDisabled","TooManyUsers","Busy","displayName","includesCaptcha","InviteNotFound","ready","captchaPayload","challengeId","azureRegion","_onCaptchaSolutionUpdated","solutionValue","solution","componentWillUpdate","_nextProps","nextState","_renderTitle","_renderExpirationWarning","_renderInput","width","height","Text","size","styles","color","marginTop","weight","StackNavigationContextConsumer","EcsContextConsumer","MeetingContextConsumer","_renderTosAndPrivacy","disabled","Spinner","Input","fontSize","marginBottom","placeholder","textAlign","linkPrivacy","linkTerms","GuestLogin","MeetingContextProvider","renderThemeAware","background","siteVariables","brand","Image","NestedStackNavigationView","LoginMethod","Footer","dark","ProviderConsumer","LoginView","_ecsClient","loadConfig","callback","fallback","clientName","clientVersion","configsToFetch","EcsConfigType","User","Default","hosts","ecs","getEcsParameters","clientId","EcsHelper","subscribe","SWG_WebClient","deviceId","localStorage","getItem","deviceIdLocalStorageKey","v4","setItem","ecsHelper","_autoSubmit","instance","getRedirectSubdomain","skype","path","maxAge","domain","client_id","redirect_uri","api","profile","huddle","meetings","invite","captcha","rand","redirectUri","logout","s4lWeb","webSubDomain","inviteId","botLogin","botId","useBotLauncherQueryParam","loginUri","cookiePolicy","join","origin","fallbackUri","inviteLauncher","offSkypeInviteId","botLauncher","doLauncher","meetNowJoinLauncher","exp","video","mic","identity","overRest","setToString","func","start","AppIds","defaultDimension","loadTranslation","initSync","locale","localizedTable","I18NBUNDLE","fallbackTable","I18NBUNDLE_FALLBACK","BotsContextConsumer","botContext","_renderAvatar","botInfo","isTrusted","avatarImage","avatarUrl","objectFit","position","Avatar","margin","image","BotInfo","allowDesktopSafariGuestFlow","isSafariBrowserEligibleForMeetingGuestFlow","webSubdomainForRedirect","botSkypeId","BotLauncher","nativeMax","max","transform","args","otherArgs","Component","SubscriptionToken","_event","_callback","unsubscribe","SubscribableEvent","_allowStopPropagation","fire","subs","_subscribers","ret","dispose","concat","filter","getBotInfo","genericEventPath","performApiGet","addBotToContacts","headers","performApiPut","BaseRestClient","BotsRestClient","Promise","u","next","throw","label","sent","trys","ops","return","iterator","console","warn","log","setData","indexOf","getData","C","clipboardData","g","navigator","userAgent","setAttribute","textContent","removeChild","attachShadow","innerText","D","execCommand","E","clipboard","writeText","h","readText","k","w","DT","setDebugLog","suppressWarnings","write","read","success","getSelection","createRange","selectNodeContents","removeAllRanges","addRange","ClipboardEvent","subscribableevent_1","Models_1","Cache","_cachedConfigs","_a","databaseInterface","dbFetchPromises","_loop_1","this_1","ecsConfig","configsToFetch_1","all","getEcsConfigByType","putConfig","oldEcsConfig","currentEcsConfig","putData","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","iteratee","comparator","isCommon","seen","outer","computed","seenIndex","overArg","getPrototypeOf","baseRest","isIterateeCall","assigner","sources","guard","_getClickHandler","joinLink","clipboardHelper","copyToClipboard","copied","_getKeyDownHandler","keyCode","componentDidUpdate","joinLinkClassName","tabIndex","onKeyDown","replace","JoinLink","transformWrapper","model","longId","customErrorHandler","errResp","ErrorHandlingType","RetryCountedWithBackoff","DoNotRetry","isMeetingRedirectInProgress","renderDesktopBody","_canJoinOnWebWithSafariException","renderDownloadButton","primary","_joinOnWebAsGuest","eventType","canJoinOnWeb","meetNowSettings","handleJoin","getShortIdFromUrl","handleJoinError","_joinOnWebOtherAccount","_joinOnWeb","isUnauthenticatedFlow","_renderActions","UserContextConsumer","userContext","canJoinOnWebWithSafariException","_renderAuthenticatedActions","_renderUnauthenticatedActions","ErrorModal","assetsBasePath","onClose","userProfile","_renderAccounts","email","emails","firstname","lastname","currentAccountAvatar","currentAccountText","Layout","vertical","end","currentAccount","main","otherAccountIcon","Icon","backgroundColor","borderRadius","padding","otherAccountText","otherAccount","_renderWhatsThis","UnifiedLoginMethod","baseAssignValue","eq","objValue","componentStyles","isAddBotInProgress","handleAddBotViewProgress","handleAddBotViewAdd","isAddedAsContact","handleAddBotViewError","_isLoading","isLoginInProgress","_getBotIdFromUrl","BotNotFound","BotId","_getBotInfo","prevProps","BotsContextProvider","AddBotView","onProgress","onAdd","onError","Rejected","pathname","split","getWebClientUrl","getAllowedQueryParameters","allowedParameters","param","pair","search","decodeURIComponent","reduce","ShortIdFromUrl","ConfigContextProvider","_preRequisitesLoadCompleted","getLoginView","determineIsItUnifiedView","UnifiedView","Mobile","JoinView","_getShortIdFromUrl","legacyMobileFlowView","useNewMobileJoinFlow","loadConversation","loadConversationFromMeetingsApi","loadConversationFromHuddleApi","loadingConversation","_silentLoginStatus","silentLoginNotSupported","Skipped","Started","Ended","isLoading","unifiedViewEcsSettings","getConversation","ThreadId","GenericData","nativeKeysIn","isProto","merge","createAssigner","getShortIdFromJoinLink","getSource","logShortIdAndThreadId","meeting","ShortId","logUserId","createConversationServiceModel","createGuestMeeting","DefaultMeetingTitle","MeetNowEdgeNumberOfFetchRetries","createMeetnowGuest","localizedGuestDefaultName","meetnowGuest","createAuthenticatedMeeting","loginResult","SkypeToken","getThreadId","conversion","buildWebClientRedirectParamsForAuthenticatedFlow","conversationServiceModel","buildWebClientRedirectParamsFromMeetnowGuestServiceModel","meetnowGuestServiceModel","redirectToSkypeClient","isNewJoinFlowFromJoinLink","webClientRedirectParams","skypeid","msacidhex","High","queryParams","buildRedirectQueryParameters","MeetNowEdgeAllowedQueryParameters","fallbackCorrelationId","find","processMeetNowEdgeGuestRequest","triggerFallbackFlow","processMeetNowEdgeAuthenticatedRequest","reason","showErrorMessage","handleReloadButton","handleNavigateToWebClientButton","pageTitle","querySelector","fallbackSection","reloadPageButton","reload","goToSkypeButton","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArguments","isArrayLikeObject","isBuffer","isFunction","isPlainObject","isTypedArray","toPlainObject","mergeFunc","stacked","isArr","isBuff","isTyped","AriaContextProvider","secondaryButtonTransparentStyle","parseSkypeToken","token","parts","header","JSON","parse","atob","payload","signature","tokenContent","cid","toUpperCase","getSkypeIdFromUrl","Profile","profilesContext","ProfilesContextProvider","ProfileView","defaultSlideAnimation","defaultFadeAnimation","Fullscreen","noop","__assign","Config","baseGetTag","funcProto","Function","objectProto","funcToString","objectCtorString","proto","Ctor","lastResponseTime","currentRequestTime","simplerestclients_1","TelemetryEvents","EcsFetcher","_getUserConfig","parameters","_apiPath","paramList","_blockRequestUntil","isSkypeTokenValid","isBackgroundFetchAllowed","race","waitForBackgroundFetchAllowed","waitForValidSkypeToken","_getHeaders","getSkypeToken","timeout","performApiGetDetailed","GenericRestClient","_ecsFailureBackoffTimer","ExponentialTime","_cacheMaxAgeRegex","_serverIndex","NaN","oldConfig","userConfig","isNaN","deferred","fetchAttempts","callConfigServer","etag","eTag","fetcher","res","eTagHeader","expirationHeader","Headers","ETag","Expires","stringify","ecsData","updatedExpiration","_calculateExpirationDate","cacheUpdateTime","lastFetchTokenHash","getSkypeTokenHash","requestHeaders","appVersion","fetchDelayMs","fetchDurationValid","cacheAge","sendTelemetryEvent","reset","getTimeAndCalculateNext","forceFetchTime","responseDate","clockSkew","headerExpirationTime","min","match","exec","lastIndex","Number","inviteContext","inviterSkypeId","_downloadSkype","open","renderAvatar","InviteContextConsumer","renderTitle","user_name","renderControls","renderMobileBody","download_skype","textDecoration","InviteView","clientSource","ClientSource","inviterName","InviterName","InviterSkypeId","LongId","DoContextConsumer","colors","brand02","brand04","brand06","brand08","brand12","brand14","brand16","brandIcon","unwrap","resp","_defaultOptions","contentType","acceptType","networkCallback","customPropertiesProvider","endTime","responseUrl","_endpointUrl","eventUrl","responseTime","statusText","host","custom","apiPath","performApiPost","objToPost","performApiPostDetailed","performApiPatch","objToPatch","performApiPatchDetailed","objToPut","performApiPutDetailed","performApiDelete","objToDelete","performApiDeleteDetailed","Set","AllowBackgroundFetchData","_isAllowed","isAllowed","_isAllowedDeferral","hasCookie","setCookie","cookieValuesObject","round","TS","TM","cookieObjectToString","getExpirationDate","toUTCString","optionsString","cookie","getCookieValue","setCookieValue","removeCookie","separatorPos","substring","trim","parseCookieValues","cookieObject","cookieSeparator","cookieObjectKeys","cookieValue","cookieObjectKey","splitCookieValue","splitParams","seconds","createMeeting","MeetingsApiClient","RestClient_1","Scheduler","appActiveData","allowBackgroundFetchData","telemetryManager","_isFetchingSettings","_pendingFetch","_paused","_fetchEcsSettingsIfNeeded","cachedConfig","configExpirationMs","_fetchSkypeEcsSettings","bypassPause","skypeTokenChanged","_b","_c","cachedData","allowedQueryParameters","currentSettings","MeetNowEdgeAriaTenantId","MeetNowEdgeJoinApiHost","rootElement","dataset","parsedSettings","MeetNowSettings","_renderNested","childProps","_","ClipboardHelper","copyObject","TelemetryManager","eventName","eventData","telemetryEnabled","clientTelemetryConfig","_containsEcsClientTelemetryConfig","ECSCONFIG","ecsClientTelemetry","assignValue","isNew","fakeButtonAccessibilityKey","currentTarget","click","setFocus","element","focus","DomHelper","_switchLanguage","_announce","_setErrorContext","_clearErrorContext","_getProfileAsync","getUserProfileInfo","SkypeId","loadingTranslations","loadingEcs","switchLanguage","localThemes","common","Teams","teams","light","_canUseSilentLogin","EcsConfigFallback","Browsers","Safari","head","innerHTML","raceTimer","timedOut","cancel","_startLoadingEcs","themes","htmlFontSize","UserContextProvider","EcsContextProvider","AriaLive","_getRootView","_renderErrorPortal","Portal","trapFocus","isClickableOutsideFocusTrap","_renderErrorPortalContent","Boolean","_determineIsItUnifiedView","quickJoinFlowSupportedBrowsers","EnvironmentHelper","updateEnvironmentSettings","Bots","Invites","Do","Profiles","spinner","keyframe","from","to","iterationCount","Animation","viewBox","xmlns","fill","fillRule","strokeLinecap","stroke","strokeWidth","animations","arrayLikeKeys","baseKeysIn","isIndex","Action","FlowId","Id","Resource","getOffSkypeInvite","HuddleApiClient","InviteContextProvider","botsContext","_renderBotAddedContent","_renderBotAddPromptContent","showOnlyLegalInfo","addAsContactAllowed","_renderAddButton","_renderBotDetails","_addBotToContacts","privacyAndTos","privacyStatement","tos","_renderCapabilities","capabilities","botCapabilities","capabilitiestoLocStringMap","uniqueLocalizedCapabilities","cap","BotTooManyContacts","_redirectToLogin","useBotsLauncherQueryParam","_isFallbackFlow","renderLogo","joinMeeting","headerLocString","descriptionLocString","emoticonPath","InviteIdFromUrl","convertToGenericDisplayableError","arg","displayableError","webResponse","getErrorFromWebErrorResponse","joinLinkRegex","redirectParams","addUserToMeeting","guestUserServiceModel","validateJoinLinkOrCode","normalizedJoinLink","normalizeJoinLink","joinLinkDomain","trimmedJoinLink","startsWith","startDate","endDate","valueOf","renderBody","defaultEmptyOption","renderOptions","option","_onChange","selectedCountry","searchOption","selected","_onFocus","focused","_onBlur","_autoFocus","el","_domReference","componentWillReceiveProps","nextProps","wrapperAdditionalClass","ariaLabel","onFocus","onBlur","Select","launchUrl","ProfilesContextConsumer","_updateDimensionDebouncer","_debounce","clearTimeout","_updateDimension","browserSupportDimension","_browserSupportElement","clientHeight","clientWidth","_setBrowserSupport","renderJoinOnWebDisclaimer","list_supported_browser","Win","WinRT","Linux","minHeight","onLoad","alignSelf","marginLeft","SkypeTokenData","initialData","_data","_validSkypeTokenDeferral","tokenData","mem","languages","_selectedLanguage","matchingLanguage","_setElement","_footerElement","footerDimension","_changeLanguage","separator","YEAR","getFullYear","OffSkypeInvites","InviteSkypeId","osRegExps","WinPhone","iOS","ChromeOS","browserRegExps","Opera","EdgeOld","Edge","MSIE","Chrome","Firefox","Facebook","isSafariBrowserVersionAtLeast","minimumVersion","getBrowserName","getSafariBrowserVersion","major","minor","getIOSVersion","iOSVersionMatches","_uaParser","getUA","RegExp","getOS","osInformation","detectedOs","_getOsFallback","maxTouchPoints","browserName","getBrowser","_getBrowserNameFallback","bugfix","getDeviceType","Ubuntu","AndroidX86","Unknown","WebOS","Tizen","Other","isQuickWebJoinSupported","_currentBrowserSupportsQuickJoinOnWeb","getScreenResolution","_screen","screen","getLanguage","_navigator","userLanguage","_os","_browser","knownInAppBrowsers","getSupportedBrowsersDefault","android","Chromium","Yandex","ios","SafariMobile","mac","windows","others","customUaParser","_quickJoinFlowSupportedBrowsers","currentBrowser","currentOs","supportedBrowsers","osKey","browserKey","screenResolution","deviceLanguage","platform","cloneArrayBuffer","typedArray","byteOffset","ecsDefaults","fontWeight","locals","ancestorElement","loginDomains","ssoLoginDomains","originCheckMap","iFrameReference","timeoutObj","originCheckHosts","eventRegistered","processing","logEnabled","_messageListener","_destroySilentLogin","_callCallback","_handleTimeout","_getFrameSource","qa","live","isSsoCompatible","debug","tokens","prop","originCheckPassed","ex","receivedState","attr","timestamp","domainMap","query","response_type","partner","_accept","_nc","_createQuery","attachEvent","callbackFunction","protocol","_validateSettings","frameBorder","getSkypetoken","getFullResponse","ProfileRestClient"],"mappings":"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","file":"js/meetings.19112d6cd8366c85413e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \tvar deferredModules = [];\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 = \"https://join.secure.skypeassets.com/static/14.418\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"3rxE\",0,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import config, { Config, CookieConfig } from '../BaseConfig';\r\n\r\nconst override: Partial = {\r\n};\r\n\r\n// Export here should mirror parent, so webpack can do his magic with alias\r\nexport { Config, CookieConfig };\r\nexport default { ...config, ...override };\r\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","import config from 'config';\r\nimport { OperatingSystems, os } from './EnvironmentHelper';\r\nimport { logger } from './LoggerHelper';\r\n\r\nexport const downloadSkype = (threadId?: string) => {\r\n return () => {\r\n logger.action({ name: 'download' });\r\n logger.sessionFinished({completionType: 'DownloadSkypeButton'});\r\n\r\n let url: string;\r\n if (os === OperatingSystems.Android) {\r\n url = config.urls.app.downloadAndroid(threadId);\r\n } else if (os === OperatingSystems.MacOS) {\r\n url = config.urls.app.downloadDesktop;\r\n } else {\r\n url = config.urls.app.download;\r\n }\r\n\r\n window.location.href = url;\r\n };\r\n};\r\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","\"use strict\";\r\n/**\r\n*\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS Module\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AllowBackgroundFetchData_1 = require(\"./AllowBackgroundFetchData\");\r\nvar AppActiveData_1 = require(\"./AppActiveData\");\r\nvar Cache_1 = require(\"./Cache\");\r\nvar Config_1 = require(\"./Config\");\r\nvar Models = require(\"./Models\");\r\nexports.Models = Models;\r\nvar Scheduler_1 = require(\"./Scheduler\");\r\nvar SkypeTokenData_1 = require(\"./SkypeTokenData\");\r\nvar TelemetryManager_1 = require(\"./TelemetryManager\");\r\nvar EcsClient = /** @class */ (function () {\r\n function EcsClient() {\r\n this._allowBackgroundFetchData = new AllowBackgroundFetchData_1.default();\r\n this._appActiveData = new AppActiveData_1.default();\r\n this._config = new Config_1.default();\r\n this._cache = new Cache_1.default(this._config);\r\n this._skypeTokenData = new SkypeTokenData_1.default();\r\n this._telemetryManager = new TelemetryManager_1.default(this._cache);\r\n this._scheduler = new Scheduler_1.default(this._config, this._skypeTokenData, this._cache, this._appActiveData, this._allowBackgroundFetchData, this._telemetryManager);\r\n // Typescript 3.X has started inlining type requires for inferred type-only imports if the import isn't used elsewhere in the file\r\n // Older versions of typescript do not support this so specify it here for backwards definition file compatibility\r\n this.telemetryEventAdded = this._telemetryManager.telemetryEventAdded;\r\n this.configUpdated = this._cache.configUpdated;\r\n }\r\n EcsClient.prototype.initialize = function (config) {\r\n var _this = this;\r\n this._config.initialize(config);\r\n this._skypeTokenData.putSkypeTokenData(config.initialSkypeTokenData);\r\n this._appActiveData.putAppActive(config.initialAppActiveState);\r\n return this._cache.initialize().then(function () {\r\n _this._scheduler.initialize();\r\n });\r\n };\r\n EcsClient.prototype.getConfig = function () {\r\n return this._cache.getEcsConfig();\r\n };\r\n EcsClient.prototype.getConfigType = function () {\r\n var cacheConfig = this._cache.getEcsConfig();\r\n if (!cacheConfig) {\r\n return undefined;\r\n }\r\n return cacheConfig.configType;\r\n };\r\n EcsClient.prototype.requestUpdate = function () {\r\n this._scheduler.requestUpdate();\r\n };\r\n EcsClient.prototype.pause = function () {\r\n this._scheduler.pause();\r\n };\r\n EcsClient.prototype.resume = function () {\r\n this._scheduler.resume();\r\n };\r\n EcsClient.prototype.setAllowBackgroundFetch = function (allowBackgroundFetch) {\r\n this._allowBackgroundFetchData.putBackgroundFetchAllowed(allowBackgroundFetch);\r\n };\r\n EcsClient.prototype.useSkypeToken = function (skypeToken, skypeTokenExpiration) {\r\n this._skypeTokenData.putSkypeTokenData({ skypeToken: skypeToken, skypeTokenExpiration: skypeTokenExpiration });\r\n };\r\n EcsClient.prototype.setAppActive = function (active) {\r\n this._appActiveData.putAppActive(active);\r\n };\r\n EcsClient.prototype.setConfigsToFetch = function (types) {\r\n var _this = this;\r\n this._config.setConfigsToFetch(types);\r\n return this._cache.updateConfigsToFetch().then(function () {\r\n _this._scheduler.updateConfigsToFetch();\r\n });\r\n };\r\n EcsClient.prototype.setFetchTimeout = function (fetchTimeout) {\r\n this._config.setFetchTimeout(fetchTimeout);\r\n };\r\n return EcsClient;\r\n}());\r\nexports.default = EcsClient;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\n\r\nexport interface CaptchaSolution {\r\n solution: string; // \"dhjdprwgyn\",\r\n challengeId: string;\r\n azureRegion: string;\r\n}\r\n\r\nexport interface CaptchaProps {\r\n challengeId: string;\r\n challenge: string;\r\n azureRegion: string;\r\n onSolutionUpdated: (solutionValue: string) => void;\r\n}\r\n\r\nexport interface CaptchaState {\r\n currentSolution: string;\r\n}\r\n\r\nexport class Captcha extends React.PureComponent {\r\n private challenge: string;\r\n constructor(props: CaptchaProps) {\r\n super(props);\r\n this.state = {\r\n currentSolution: '',\r\n };\r\n this.challenge = props.challenge;\r\n }\r\n\r\n render() {\r\n return <>\r\n { (ariaContext) =>\r\n
{\r\n ariaContext.announce({ assertive: true, text: localizer.getString('Common.a11y_announce_captcha') });\r\n } }>\r\n \r\n \r\n
\r\n
\r\n }
\r\n ;\r\n }\r\n\r\n private onSolutionUpdated = (event: React.ChangeEvent) => {\r\n const newValue = event.target.value;\r\n if (newValue !== this.state.currentSolution) {\r\n this.setState({\r\n currentSolution: newValue,\r\n });\r\n this.props.onSolutionUpdated(newValue);\r\n }\r\n }\r\n}\r\n","\"use strict\";\r\n/**\r\n* TelemetryEvents.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* All the ECS client telemetry events\r\n*/\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TelemetryEventBase_1 = require(\"./TelemetryEventBase\");\r\nvar EcsConfigFetchResponse = /** @class */ (function (_super) {\r\n __extends(EcsConfigFetchResponse, _super);\r\n function EcsConfigFetchResponse(_responseTime, _responseCode, _fetchAttempts, _hasValidToken, _serverEndpoint, _etag, _fetchDurationValid, _cacheAvailable, _responseSize, _configAge, _configExpired, _fetchStart, _fetchEnd) {\r\n var _this = _super.call(this) || this;\r\n _this._responseTime = _responseTime;\r\n _this._responseCode = _responseCode;\r\n _this._fetchAttempts = _fetchAttempts;\r\n _this._hasValidToken = _hasValidToken;\r\n _this._serverEndpoint = _serverEndpoint;\r\n _this._etag = _etag;\r\n _this._fetchDurationValid = _fetchDurationValid;\r\n _this._cacheAvailable = _cacheAvailable;\r\n _this._responseSize = _responseSize;\r\n _this._configAge = _configAge;\r\n _this._configExpired = _configExpired;\r\n _this._fetchStart = _fetchStart;\r\n _this._fetchEnd = _fetchEnd;\r\n return _this;\r\n }\r\n EcsConfigFetchResponse.prototype.getEventName = function () {\r\n return 'ecs_tsclient_fetch_config';\r\n };\r\n EcsConfigFetchResponse.prototype.getAttributes = function () {\r\n var attributes = _super.prototype.getAttributes.call(this);\r\n attributes['fetch_delay_ms'] = this._responseTime;\r\n attributes['fetch_response_code'] = this._responseCode;\r\n attributes['fetch_attempts'] = this._fetchAttempts;\r\n attributes['authenticated_user'] = this._hasValidToken;\r\n attributes['url'] = this._serverEndpoint;\r\n attributes['fetched_etag'] = this._etag;\r\n attributes['fetch_duration_valid'] = this._fetchDurationValid;\r\n attributes['cache_available'] = this._cacheAvailable;\r\n attributes['response_size'] = this._responseSize;\r\n attributes['config_age'] = this._configAge;\r\n attributes['config_expired'] = this._configExpired;\r\n attributes['fetch_start'] = this._fetchStart;\r\n attributes['fetch_end'] = this._fetchEnd;\r\n return attributes;\r\n };\r\n return EcsConfigFetchResponse;\r\n}(TelemetryEventBase_1.TelemetryEventBase));\r\nexports.EcsConfigFetchResponse = EcsConfigFetchResponse;\r\n","import config from 'config';\r\nimport { Actions } from 'src/ts/models/SharedTypes';\r\nimport { isIOSInAppBrowserFlow, OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ConversationServiceModel } from '../../models/ConversationServiceModel';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n conversation: ConversationServiceModel;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n const conv = this.props.conversation;\r\n const sessionId = logger.getCorrelationId();\r\n\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.launcher.intentUri(\r\n conv.action.toLowerCase() as Actions,\r\n conv.resource,\r\n sessionId,\r\n 'launcher',\r\n config.urls.app.downloadAndroid(conv.resource));\r\n } else if (isIOSInAppBrowserFlow && conv.shortId) {\r\n return config.urls.launcher.universalUri(conv.shortId, sessionId);\r\n }\r\n\r\n return config.urls.launcher.skypeUri(conv.action.toLowerCase() as Actions, conv.resource, sessionId, 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join';\r\n }\r\n}\r\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { logger, SilentLoginStatus } from './LoggerHelper';\r\n\r\nexport interface SilentLoginResult {\r\n skypetoken: string;\r\n expiration: number;\r\n}\r\n\r\nexport const silentLoginAsync = () => {\r\n const initLogin = (): SyncTasks.Promise => {\r\n\r\n const silentLogin = (window as any).SKYPE.login.Silent;\r\n const deferral = SyncTasks.Defer();\r\n\r\n silentLogin.init(config.silentLogin)\r\n .setCallback((response: any) => {\r\n if (response && response.skypetoken) {\r\n deferral.resolve({ skypetoken: response.skypetoken, expiration: response.expires_in });\r\n return;\r\n }\r\n if (response && response.error) {\r\n deferral.reject({ error: response.error, errorDescription: response.error_description || '' });\r\n return;\r\n }\r\n deferral.reject();\r\n })\r\n .load();\r\n\r\n return deferral.promise();\r\n };\r\n\r\n const startTime = new Date().getTime();\r\n\r\n return initLogin()\r\n .done(() => logger.silentLogin({ status: SilentLoginStatus.Success, duration: new Date().getTime() - startTime }))\r\n .fail((response) => logger.silentLogin({\r\n status: SilentLoginStatus.Fail,\r\n duration: new Date().getTime() - startTime,\r\n error: response.error,\r\n errorDescription: response.errorDescription,\r\n }));\r\n};\r\n","import { AWTEventPriority, AWTEventProperties, AWTLogger, AWTLogManager, AWTPiiKind, AWTPropertyType } from '@aria/webjs-sdk';\r\nimport Config from 'config';\r\nimport { Dictionary } from '../models/SharedTypes';\r\nimport { getDiffInMS } from './DateHelper';\r\nimport { browser, deviceType, os } from './EnvironmentHelper';\r\nimport { getMsaCidHexFromSkypeToken, getSkypeIdFromSkypeToken } from './SkypeTokenHelper';\r\nimport { UrlHelper } from './UrlHelper';\r\n\r\nexport interface NetworkEvent {\r\n host: string;\r\n path: string;\r\n url: string;\r\n method: string;\r\n statusCode: number;\r\n statusText?: string;\r\n responseTime: number;\r\n custom?: any;\r\n}\r\n\r\nexport type NavigationEventType = 'push' | 'pop';\r\nexport interface NavigationEvent {\r\n view: string;\r\n type: NavigationEventType;\r\n isRoot: boolean;\r\n}\r\n\r\nexport interface SessionStartedEvent {\r\n useUnifiedView: boolean;\r\n wasPreLoggedin: boolean;\r\n}\r\n\r\nexport interface SessionFinishedEvent {\r\n useUnifiedView?: boolean;\r\n sessionDurationInMs?: number;\r\n completionType: string;\r\n wasLoggedIn?: boolean;\r\n}\r\n\r\nexport interface SessionIntermediateEvent {\r\n useUnifiedView?: boolean;\r\n wasLoggedIn?: boolean;\r\n eventType: string;\r\n}\r\n\r\nexport interface ActionEvent {\r\n name: string;\r\n}\r\n\r\nexport enum SilentLoginStatus {\r\n Success = 'success',\r\n Fail = 'fail',\r\n}\r\nexport interface SilentLoginEvent {\r\n status: SilentLoginStatus;\r\n duration: number;\r\n error?: string;\r\n errorDescription?: string;\r\n}\r\n\r\nexport interface FallbackFlowEvent {\r\n message: string;\r\n reason: string;\r\n}\r\n\r\nconst defaultPrefix = 'ui_';\r\n\r\nexport enum CommonProperty {\r\n SkypeId = 'UserInfo.SkypeId',\r\n ThreadId = 'Meeting.ThreadId',\r\n ShortId = 'Meeting.ShortId',\r\n InviteSkypeId = 'Invite.SkypeId',\r\n BotId = 'Bot.BotId',\r\n EntryPoint = 'Page.EntryPoint',\r\n CorrelationId = 'Page.CorrelationId',\r\n Source = 'Page.Source',\r\n Profile = 'Profile.SkypeId',\r\n IsLoggedIn = 'UserInfo.IsLoggedIn',\r\n UserId = 'UserInfo.Id',\r\n MsaCidHex = 'MSACIDHEX',\r\n IsUnsupportedPlatformOrBrowser = 'IsUnsupportedPlatformOrBrowser',\r\n}\r\n\r\nexport interface Property {\r\n key: CommonProperty;\r\n value: string | number | boolean | Date;\r\n piiKind?: AWTPiiKind;\r\n type?: AWTPropertyType;\r\n}\r\n\r\nclass LoggerHelper {\r\n private _logger: AWTLogger = AWTLogManager.getLogger();\r\n private _commonProperties: Dictionary = {};\r\n private _sessionStartDate: Date = new Date();\r\n private _wasLoggedIn: boolean = false;\r\n private _wasUnifiedView: boolean = false;\r\n private _prefix: string = defaultPrefix;\r\n\r\n init(ariaTenantId = Config.logging.ariaTenant, prefix?: string) {\r\n if (prefix) {\r\n this._prefix = prefix;\r\n }\r\n\r\n AWTLogManager.initialize(ariaTenantId, {\r\n canSendStatEvent: () => false,\r\n enableAutoUserSession: true,\r\n });\r\n\r\n window.onerror = this._onError;\r\n\r\n // Current implementation of the flushAndTeardown method has wrong context when used as callback\r\n // therefore asynchronous pending events would be lost, let's fix it\r\n window.removeEventListener('beforeunload', AWTLogManager.flushAndTeardown);\r\n window.addEventListener('beforeunload', AWTLogManager.flushAndTeardown.bind(AWTLogManager));\r\n }\r\n\r\n getSessionId = () => this._logger.getSessionId();\r\n\r\n public initCommonProperty(property: Property) {\r\n this._commonProperties[property.key] = property;\r\n }\r\n\r\n public addSkypeIdAndMsaCidHexCommonProperties(skypeToken: string | undefined, isGuest: boolean) {\r\n this.initCommonProperty({\r\n key: CommonProperty.UserId,\r\n value: getSkypeIdFromSkypeToken(skypeToken) || '',\r\n piiKind: isGuest ? AWTPiiKind.NotSet : AWTPiiKind.Identity, // guest skypeId is not considered PII as it's anonymous and valid for 24 hours\r\n type: AWTPropertyType.String,\r\n });\r\n\r\n this.initCommonProperty({\r\n key: CommonProperty.MsaCidHex,\r\n value: getMsaCidHexFromSkypeToken(skypeToken) || '',\r\n piiKind: AWTPiiKind.NotSet,\r\n type: AWTPropertyType.String,\r\n });\r\n }\r\n\r\n error = (event: Error, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'error', 'Error');\r\n }\r\n\r\n network = (event: NetworkEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'network_event', 'Network');\r\n }\r\n\r\n navigation = (event: NavigationEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'navigation', 'Navigation');\r\n }\r\n\r\n action = (event: ActionEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'action', 'Action');\r\n }\r\n\r\n silentLogin = (event: SilentLoginEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'silent_login', 'SilentLogin');\r\n }\r\n\r\n sessionStarted = (event: SessionStartedEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._sessionStartDate = new Date();\r\n this._wasLoggedIn = event.wasPreLoggedin;\r\n this._wasUnifiedView = event.useUnifiedView;\r\n this._log(event, priority, 'session_started', 'SessionStarted');\r\n }\r\n\r\n sessionIntermediateStep = (event: SessionIntermediateEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n event.wasLoggedIn = event.wasLoggedIn === undefined ? this._wasLoggedIn : event.wasLoggedIn;\r\n event.useUnifiedView = this._wasUnifiedView;\r\n this._log(event, priority, 'session_intermediate', 'SessionIntermediateEvent');\r\n }\r\n\r\n sessionFinished = (event: SessionFinishedEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n event.sessionDurationInMs = getDiffInMS(this._sessionStartDate);\r\n event.wasLoggedIn = this._wasLoggedIn;\r\n event.useUnifiedView = this._wasUnifiedView;\r\n\r\n this._log(event, priority, 'session_finished', 'SessionFinished');\r\n }\r\n\r\n meetNowFallbackFlow = (event: FallbackFlowEvent) => {\r\n this._log(event, AWTEventPriority.Normal, 'fallback_flow_started', 'FallbackFlowStarted');\r\n }\r\n\r\n getCorrelationId = () => {\r\n const correlationIdFromQuery = UrlHelper.getQueryParameterAsString('correlationId');\r\n if (correlationIdFromQuery) {\r\n return correlationIdFromQuery;\r\n }\r\n\r\n return this.getSessionId();\r\n }\r\n\r\n private setName = (eventProperties: AWTEventProperties, name: string) => {\r\n eventProperties.setName(this._prefix + name);\r\n eventProperties.setType(name);\r\n }\r\n\r\n private setCommonProperties = (eventProperties: AWTEventProperties) => {\r\n Object.keys(this._commonProperties).forEach((key) => {\r\n const property = (this._commonProperties as any)[key] as Property;\r\n if (property.piiKind) {\r\n eventProperties.setPropertyWithPii(property.key, property.value, property.piiKind);\r\n } else {\r\n eventProperties.setProperty(property.key, property.value);\r\n }\r\n });\r\n eventProperties.setProperty('DeviceInfo.Custom.Os', os);\r\n eventProperties.setProperty('DeviceInfo.Custom.Browser', browser);\r\n eventProperties.setProperty('DeviceInfo.Custom.DeviceType', deviceType);\r\n eventProperties.setProperty('Config.Env', Config.env);\r\n eventProperties.setProperty('Source', UrlHelper.getQueryParameterAsString('source'));\r\n eventProperties.setProperty('Exp', UrlHelper.getQueryParameterAsString('exp'));\r\n eventProperties.setProperty('Call', UrlHelper.getQueryParameterAsString('call'));\r\n eventProperties.setProperty('Video', UrlHelper.getQueryParameterAsString('video'));\r\n eventProperties.setProperty('Mic', UrlHelper.getQueryParameterAsString('mic'));\r\n eventProperties.setProperty('CorrelationId', this.getCorrelationId());\r\n eventProperties.setProperty('session_id', this.getCorrelationId()); // this is used as an actor in Interana\r\n }\r\n\r\n private setProperties = (eventProperties: AWTEventProperties, properties: any, propertyPrefix: string) => {\r\n Object.keys(properties).forEach((property) => {\r\n if (typeof properties[property] === 'object' && properties[property]) {\r\n this.setProperties(eventProperties, properties[property], propertyPrefix + '.' + property);\r\n } else {\r\n eventProperties.setProperty(propertyPrefix + '.' + property, properties[property]);\r\n }\r\n });\r\n }\r\n\r\n private setPiiProperties = (eventProperties: AWTEventProperties, piiProperties: Property[], propertyPrefix: string) => {\r\n piiProperties.forEach((property: Property) => {\r\n eventProperties.setPropertyWithPii(propertyPrefix + '.' + property.key, property.value, property.piiKind || AWTPiiKind.NotSet, property.type);\r\n });\r\n }\r\n\r\n private _onError = (message: any, file: any, line: any, col: any, error: any) => {\r\n this._log({\r\n message,\r\n file,\r\n line,\r\n col,\r\n error,\r\n }, AWTEventPriority.Normal, 'js_onerror', 'Error');\r\n }\r\n\r\n private _log(event: any, priority: AWTEventPriority, name: string, propertyPrefix: string, piiProperties?: Property[]) {\r\n const eventProperties = new AWTEventProperties();\r\n eventProperties.setEventPriority(priority);\r\n this.setName(eventProperties, name);\r\n this.setCommonProperties(eventProperties);\r\n this.setProperties(eventProperties, event, propertyPrefix);\r\n\r\n if (piiProperties && Array.isArray(piiProperties)) {\r\n this.setPiiProperties(eventProperties, piiProperties, propertyPrefix);\r\n }\r\n\r\n this._logger.logEvent(eventProperties);\r\n }\r\n}\r\n\r\nexport const logger = new LoggerHelper();\r\n","import config from 'config';\r\nimport * as React from 'react';\r\nimport { DoContext, DoContextProvider } from 'src/ts/contexts/do/DoContext';\r\nimport { CookieHelper } from 'src/ts/helpers/CookieHelper';\r\nimport { displayableErrors } from 'src/ts/helpers/ErrorHelper';\r\nimport { Actions } from 'src/ts/models/SharedTypes';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { UrlHelper } from '../../helpers/UrlHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { DoView } from './DoView';\r\nimport { Launcher } from './Launcher';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n doContext: DoContext;\r\n error?: Error | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n static getParamsFromUrl() {\r\n const { recipient, action, correlationId, source } = UrlHelper.getQueryParameters();\r\n\r\n logger.initCommonProperty({\r\n key: CommonProperty.Source,\r\n value: source as string,\r\n });\r\n logger.initCommonProperty({\r\n key: CommonProperty.CorrelationId,\r\n value: correlationId as string,\r\n });\r\n\r\n // S4L handle all of 'skype:8:myskypeid', 'skype:myskypeid', 'skype:19:mythreadid'\r\n // Thread will only work if '19:' prefix is provided.\r\n // Original spec does not say anything about ThreadId #564363, and also the page we are rewriting does not prepend '19:' suffix\r\n // Also, original implementation does not populate utm properties as specified in PBI. We also drop it because there is no handling on S4L level.\r\n return {\r\n skypeId: recipient,\r\n action: !action || action.toString().toLowerCase() === 'chat' ? Actions.Chat : Actions.Call,\r\n } as DoContext;\r\n }\r\n\r\n constructor(props: ARootViewProps) {\r\n super(props);\r\n this.state = {\r\n launcherKey: 0,\r\n doContext: RootView.getParamsFromUrl(),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const params = RootView.getParamsFromUrl();\r\n if (!params.action || !params.skypeId) {\r\n throw displayableErrors.Generic;\r\n }\r\n\r\n if (deviceType === DeviceTypes.Desktop) {\r\n logger.action({ name: 'join-do' });\r\n\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: params.skypeId });\r\n window.location.assign(config.urls.app.login(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue));\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n return \r\n { !!this.state.launcherKey && }\r\n { (ariaContext) =>\r\n }\r\n initialViewProps={ { eventViewName: 'do-view' } } />\r\n }\r\n ;\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\n\r\nimport { App, EntryPoint } from './App';\r\nimport './app.less';\r\nimport { logger } from './helpers/LoggerHelper';\r\nimport { UrlHelper } from './helpers/UrlHelper';\r\nimport { Themes } from './models/SharedTypes';\r\n\r\nconst container = document.getElementById('launcherApp')!!!;\r\nconst language = document.getElementsByTagName('html')[0].lang;\r\nconst basePath = container.getAttribute('basePath')!!!;\r\nconst injectedEntryPoint = container.getAttribute('entryPoint');\r\nconst injectedSkypetoken = container.getAttribute('skypetoken');\r\n\r\nconst entryPoint = (injectedEntryPoint && injectedEntryPoint !== '{ENTRYPOINT}') ? injectedEntryPoint as EntryPoint : EntryPoint.Meetings;\r\nconst skypetoken = (injectedSkypetoken && injectedSkypetoken !== '{SKYPETOKEN}') ? injectedSkypetoken : undefined;\r\n\r\nconst rawTheme = UrlHelper.getQueryParameter('theme') as any;\r\nlet theme: Themes | undefined;\r\nif (Object.values(Themes).includes(rawTheme)) {\r\n theme = rawTheme as Themes;\r\n}\r\n\r\nlogger.init();\r\nReactDOM.render(, container);\r\n","\"use strict\";\r\n/**\r\n* AppActiveData.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holder for App Active (foreground/background) information\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SyncTasks = require(\"synctasks\");\r\nvar AppActiveData = /** @class */ (function () {\r\n function AppActiveData() {\r\n this._isActive = false;\r\n }\r\n AppActiveData.prototype.putAppActive = function (isActive) {\r\n this._isActive = isActive;\r\n if (this.isAppActive() && this._appActiveDeferral) {\r\n var deferral = this._appActiveDeferral;\r\n this._appActiveDeferral = undefined;\r\n deferral.resolve(void 0);\r\n }\r\n };\r\n AppActiveData.prototype.isAppActive = function () {\r\n return this._isActive;\r\n };\r\n AppActiveData.prototype.waitForAppActive = function () {\r\n if (this.isAppActive()) {\r\n return SyncTasks.Resolved();\r\n }\r\n // Set up deferral to wait for app to become active\r\n if (!this._appActiveDeferral) {\r\n this._appActiveDeferral = SyncTasks.Defer();\r\n }\r\n return this._appActiveDeferral.promise();\r\n };\r\n return AppActiveData;\r\n}());\r\nexports.default = AppActiveData;\r\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","import curry from 'lodash/curry';\r\nimport map from 'lodash/map';\r\n\r\nexport const doPostRedirect = (url: string, params: object) => {\r\n const form = buildForm(url, params);\r\n\r\n document.body.appendChild(form);\r\n form.submit();\r\n};\r\n\r\n/**\r\n * This helper is not using React to render the \"utility form\" because on Meet Now Edge page, React is not included in the package.\r\n *\r\n * @param url\r\n * @param params\r\n */\r\nexport const buildForm = (url: string, params: object): HTMLFormElement => {\r\n const form = document.createElement('form');\r\n form.method = 'POST';\r\n form.style.display = 'none';\r\n form.action = url;\r\n\r\n addParameters(form, params);\r\n\r\n return form;\r\n};\r\n\r\nexport const addParameters = (form: HTMLFormElement, params: object) => {\r\n map(params, addParameter(form));\r\n};\r\n\r\nexport const addParameter = curry((form: HTMLFormElement, value: string, key: string) => {\r\n const input = document.createElement('input');\r\n input.type = 'hidden';\r\n input.name = key;\r\n input.value = value;\r\n\r\n form.appendChild(input);\r\n});\r\n","import * as React from 'react';\r\n\r\nexport class Padder extends React.PureComponent {\r\n\r\n render() {\r\n return
;\r\n }\r\n}\r\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","import * as React from 'react';\r\nimport { AriaContext } from 'src/ts/contexts/AriaContext';\r\nimport { logger, NavigationEventType } from 'src/ts/helpers/LoggerHelper';\r\nimport { Dimension, mainContentId } from 'src/ts/models/SharedTypes';\r\nimport {\r\n AnimationType, defaultStackViewProperties, StackAnimation, StackNavigationContext,\r\n StackNavigationContextProvider, StackView, StackViewProperties, ViewType,\r\n} from '../../contexts/StackNavigationContext';\r\nimport { ARootViewProps } from './ARootView';\r\nimport { LoadingView } from './LoadingView';\r\n\r\nexport interface StackNavigationProps extends ARootViewProps {\r\n ariaContext: AriaContext;\r\n loading?: boolean;\r\n parentContext?: StackNavigationContext;\r\n readonly initialView: React.ReactNode;\r\n readonly initialViewProps?: Partial;\r\n onDimensionUpdate?: (dimension: Dimension) => void;\r\n}\r\n\r\nexport interface StackNavigationState extends StackNavigationContext {\r\n mainContentId?: string;\r\n}\r\n\r\nexport class StackNavigationView extends React.PureComponent {\r\n constructor(props: StackNavigationProps) {\r\n super(props);\r\n\r\n this.state = {\r\n animating: false,\r\n views: [{ view: props.initialView, properties: { ...defaultStackViewProperties, ...props.initialViewProps } }],\r\n push: this._push,\r\n pop: this._pop,\r\n pushRoot: props.parentContext ? props.parentContext.pushRoot : this._push,\r\n popRoot: props.parentContext ? props.parentContext.popRoot : this._pop,\r\n pushParent: props.parentContext ? props.parentContext.push : this._push,\r\n popParent: props.parentContext ? props.parentContext.pop : this._pop,\r\n mainContentId: props.parentContext ? undefined : mainContentId,\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this._track('push');\r\n }\r\n\r\n componentWillUnmount() {\r\n this._track('pop');\r\n }\r\n\r\n render() {\r\n return \r\n { this.props.loading ? : this.renderViews() }\r\n ;\r\n }\r\n\r\n private _track = (type: NavigationEventType) => {\r\n const views = this.state.views;\r\n if (!views.length) {\r\n return;\r\n }\r\n\r\n const current = views[views.length - 1];\r\n if (current.properties.eventViewName) {\r\n logger.navigation({ view: current.properties.eventViewName, type, isRoot: !this.props.parentContext }, current.properties.eventPriority);\r\n }\r\n }\r\n\r\n private _push = (view: React.ReactNode, properties?: Partial) => {\r\n if (properties && properties.ariaMessage) {\r\n this.props.ariaContext.announce(properties.ariaMessage);\r\n }\r\n\r\n this.setState((prevState) => {\r\n if (prevState.animating) {\r\n return null;\r\n }\r\n\r\n const views = [...prevState.views];\r\n views.push({\r\n view,\r\n properties: { ...defaultStackViewProperties, ...properties },\r\n });\r\n\r\n let animating = false;\r\n if (properties && properties.animation && properties.animation.type !== AnimationType.None) {\r\n animating = true;\r\n setTimeout(() => {\r\n this.setState({ animating: false });\r\n }, properties.animation.duration * 1000);\r\n }\r\n\r\n return {\r\n views,\r\n animating,\r\n };\r\n }, () => this._track('push'));\r\n }\r\n\r\n private _pop = () => {\r\n this._track('pop');\r\n\r\n if (this.state.views.length > 1) {\r\n const previous = this.state.views[this.state.views.length - 2];\r\n if (previous.properties.ariaMessage) {\r\n this.props.ariaContext.announce(previous.properties.ariaMessage);\r\n }\r\n }\r\n\r\n this.setState((prevState, props) => {\r\n if (prevState.animating) {\r\n return null;\r\n }\r\n\r\n const views = [...prevState.views];\r\n if (!views.length) {\r\n return null;\r\n }\r\n\r\n let animating = false;\r\n const current = views[views.length - 1];\r\n const usedAnimation = current.properties.animation;\r\n\r\n if (current.properties.eventViewName) {\r\n logger.navigation({ view: current.properties.eventViewName, type: 'pop', isRoot: !props.parentContext });\r\n }\r\n if (usedAnimation.type === AnimationType.None) {\r\n views.pop();\r\n } else {\r\n animating = true;\r\n current.properties.animation = { ...usedAnimation, type: `${ usedAnimation.type }Out` as AnimationType };\r\n setTimeout(() => {\r\n animating = false;\r\n views.pop();\r\n this.setState({\r\n views,\r\n animating,\r\n });\r\n }, current.properties.animation.duration * 1000);\r\n }\r\n\r\n return {\r\n views,\r\n animating,\r\n };\r\n });\r\n }\r\n\r\n private _getAnimationStyle = (animation: StackAnimation, prev: boolean): React.CSSProperties => {\r\n switch (animation.type) {\r\n case AnimationType.Fade:\r\n return prev ?\r\n { animation: `stackFadeOut ${ animation.duration }s forwards` }\r\n : { animation: `stackFade ${ animation.duration }s forwards` };\r\n case AnimationType.FadeOut:\r\n return prev ?\r\n { animation: `stackFade ${ animation.duration }s forwards` }\r\n : { animation: `stackFadeOut ${ animation.duration }s forwards` };\r\n case AnimationType.Slide:\r\n return prev ?\r\n { animation: `stackFadeOut ${ animation.duration }s forwards, stackRightOut ${ animation.duration }s forwards` }\r\n : { animation: `stackFade ${ animation.duration }s forwards, stackLeft ${ animation.duration }s forwards` };\r\n case AnimationType.SlideOut:\r\n return prev ?\r\n { animation: `stackFade ${ animation.duration }s forwards, stackRight ${ animation.duration }s forwards` }\r\n : { animation: `stackFadeOut ${ animation.duration }s forwards, stackLeftOut ${ animation.duration }s forwards` };\r\n case AnimationType.None:\r\n return {};\r\n default:\r\n throw new Error('Not implemented yet');\r\n }\r\n }\r\n\r\n private renderPrevView = (current: StackView, prev: StackView, visible = true) => {\r\n const fullscreenClassName = !this.props.parentContext ? 'fullscreen' : 'nested';\r\n\r\n return
{ prev.view }
;\r\n }\r\n\r\n private renderCurrentView = (current: StackView) => {\r\n const fullscreenClassName = !this.props.parentContext ? 'fullscreen' : 'nested';\r\n\r\n return
{ current.view }
;\r\n }\r\n\r\n private renderViews = () => {\r\n if (!this.state.views.length) {\r\n return undefined;\r\n }\r\n\r\n const current = this.state.views[this.state.views.length - 1];\r\n let prev: StackView | undefined;\r\n for (let i = this.state.views.length - 1; i > 0; i--) {\r\n const candidate = this.state.views[i - 1];\r\n if (candidate.properties.type !== ViewType.Overlay) {\r\n prev = candidate;\r\n break;\r\n }\r\n }\r\n if (prev && this.state.animating) {\r\n return <>\r\n { this.renderPrevView(current, prev) }\r\n { this.renderCurrentView(current) }\r\n ;\r\n } else if (prev && current.properties.type === ViewType.Overlay) {\r\n // Modal should always be displayed on top of a screen, in order to keep the state and have a proper close animation\r\n // Visibility hidden prevent user from tabbing inside the 'prev' view\r\n return <>\r\n { this.renderPrevView(current, prev, false) }\r\n { this.renderCurrentView(current) }\r\n ;\r\n }\r\n\r\n return <>\r\n { this.renderCurrentView(current) }\r\n ;\r\n }\r\n}\r\n","import noop from 'lodash/noop';\r\nimport * as React from 'react';\r\nimport { DisplayableError } from '../helpers/ErrorHelper';\r\n\r\nexport interface ErrorContext {\r\n error: DisplayableError | undefined;\r\n setError: (error: DisplayableError) => void;\r\n clear: () => void;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({\r\n error: undefined,\r\n setError: noop,\r\n clear: noop,\r\n});\r\n\r\nexport const ErrorContextProvider = context.Provider;\r\n\r\nexport const ErrorContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { ConfigContext, ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { mainContentId } from '../../models/SharedTypes';\r\nimport { ErrorDetails } from './ErrorDetails';\r\n\r\ninterface ErrorBoundaryState {\r\n error: Error | undefined;\r\n errorInfo: React.ErrorInfo | undefined;\r\n}\r\n\r\ninterface AlternativeItem {\r\n contentLocString: string;\r\n descriptonLocString: string;\r\n linkTextLocString: string;\r\n linkClickHandler: (config: ConfigContext) => void;\r\n}\r\n\r\nexport class ErrorBoundary extends React.PureComponent<{}, ErrorBoundaryState> {\r\n private readonly _alternatives: AlternativeItem[];\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n\r\n this.state = {\r\n error: undefined,\r\n errorInfo: undefined,\r\n };\r\n\r\n this._alternatives = [\r\n {\r\n contentLocString: 'txt_helpBox_got_question',\r\n descriptonLocString: 'txt_helpBox_have_your_queries',\r\n linkTextLocString: 'txt_helpBox_see_faq',\r\n linkClickHandler: this._onFaqClick,\r\n },\r\n {\r\n contentLocString: 'txt_helpBox_explore_skype',\r\n descriptonLocString: 'txt_helpBox_have_your_queries',\r\n linkTextLocString: 'txt_helpBox_see_faq',\r\n linkClickHandler: this._onExploreClick,\r\n },\r\n {\r\n contentLocString: 'txt_helpBox_need_to_use_skype',\r\n descriptonLocString: 'txt_helpBox_download_on_device',\r\n linkTextLocString: 'txt_helpBox_get_the_app',\r\n linkClickHandler: this._onDownloadClick,\r\n },\r\n ];\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\r\n logger.error(error);\r\n\r\n this.setState({\r\n error,\r\n errorInfo,\r\n });\r\n\r\n if (ErrorHelper.isDisplayableError(error)) {\r\n document.title = localizer.getString(error.pageTitleLocString);\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n return
\r\n \r\n { this._renderAlternatives() }\r\n
;\r\n }\r\n\r\n return this.props.children;\r\n }\r\n\r\n private _renderAlternatives() {\r\n return
\r\n { this._alternatives.map((item, index) => this._renderAlternativeItem(item, index)) }\r\n
;\r\n }\r\n\r\n private _renderAlternativeItem(item: AlternativeItem, index: number) {\r\n return
\r\n \r\n \r\n { (configContext) => \r\n }\r\n \r\n
;\r\n }\r\n\r\n private _onFaqClick = (config: ConfigContext) => {\r\n window.location.href = config.urls.app.faq;\r\n }\r\n\r\n private _onExploreClick = (config: ConfigContext) => {\r\n window.location.href = config.urls.app.skypeCom;\r\n }\r\n\r\n private _onDownloadClick = (config: ConfigContext) => {\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.location.href = downloadUrl;\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, ICSSInJSStyle, Input, Text } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { EcsContext, EcsContextConsumer } from 'src/ts/contexts/EcsContext';\r\nimport HuddleApiClient from 'src/ts/rest/HuddleApiClient';\r\nimport MeetingsApiClient from 'src/ts/rest/MeetingsApiClient';\r\nimport { ErrorContext, ErrorContextConsumer } from '../../../contexts/ErrorContext';\r\nimport { MeetingContext, MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../../contexts/StackNavigationContext';\r\nimport { DisplayableError, displayableErrors, ErrorHelper } from '../../../helpers/ErrorHelper';\r\nimport { logger } from '../../../helpers/LoggerHelper';\r\nimport { GuestJoinPayloadMeetingsApiWithCaptcha } from '../../../models/GuestJoinPayloadMeetingsApiWithCaptcha';\r\nimport { Captcha, CaptchaSolution } from '../../common/Captcha';\r\nimport { Spinner } from '../../common/Spinner';\r\nimport { GuestRedirect } from './GuestRedirect';\r\n\r\ninterface GuestLoginState {\r\n guestName: string;\r\n joinButtonEnabled: boolean;\r\n joinButtonSpinEnabled: boolean;\r\n captchaState: CaptchaState;\r\n captchaPayload: CaptchaPayload | undefined;\r\n error?: Error;\r\n ecsContext: EcsContext;\r\n}\r\n\r\ninterface CaptchaState {\r\n show: boolean;\r\n ready: boolean;\r\n error?: string;\r\n}\r\n\r\ninterface CaptchaPayload {\r\n challenge: string;\r\n challengeId: string;\r\n azureRegion: string;\r\n}\r\n\r\ninterface JoinAsGuestBaseParams {\r\n meetingContext: MeetingContext;\r\n stackNavigationContext: StackNavigationContext;\r\n errorContext: ErrorContext;\r\n}\r\n\r\ninterface JoinAsGuestParams extends JoinAsGuestBaseParams {\r\n ecsContext: EcsContext;\r\n}\r\n\r\ninterface JoinAsGuestMeetingsApiParams extends JoinAsGuestBaseParams {\r\n joinThread?: boolean;\r\n retries?: number;\r\n}\r\n\r\nconst maxGuestNameLength = 50;\r\nexport class GuestLogin extends React.PureComponent<{}, GuestLoginState> {\r\n private _captchaSolution?: CaptchaSolution;\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n guestName: '',\r\n joinButtonEnabled: false,\r\n joinButtonSpinEnabled: false,\r\n captchaPayload: undefined,\r\n captchaState: {\r\n show: false,\r\n ready: false,\r\n },\r\n ecsContext: {\r\n settings: {\r\n useMeetingsApi: false,\r\n useUnifiedView: false,\r\n useJoinThread: false,\r\n maxRetries: 0,\r\n },\r\n },\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n delete this._captchaSolution;\r\n }\r\n\r\n componentWillUpdate(_nextProps: {}, nextState: GuestLoginState) {\r\n if (!nextState.captchaState.show && this.state.captchaState.show) {\r\n delete this._captchaSolution;\r\n }\r\n }\r\n\r\n render() {\r\n return
\r\n { this._renderTitle() }\r\n { this._renderExpirationWarning() }\r\n { this._renderInput() }\r\n { this.state.captchaState.show && this.state.captchaPayload &&\r\n }\r\n { this.state.captchaState.show && !this.state.captchaState.ready &&
\r\n
\r\n
\r\n
\r\n
}\r\n { this.state.captchaState.error && * { this.state.captchaState.error } }\r\n\r\n
\r\n { (stackNavigationContext) =>\r\n <>\r\n { (ecsContext) =>\r\n { (errorContext) =>\r\n { (meetingContext) => meetingContext && meetingContext.conversation &&\r\n <>\r\n { this._renderTosAndPrivacy() }\r\n \r\n \r\n }\r\n }\r\n }\r\n \r\n \r\n }\r\n
\r\n ;\r\n }\r\n\r\n private _renderTitle() {\r\n return \r\n { localizer.getString('Login.btn_join_as_guest') }\r\n ;\r\n }\r\n\r\n private _renderExpirationWarning() {\r\n return (\r\n
\r\n { (ecsContext) =>\r\n ecsContext.settings.useUnifiedView ? \r\n { localizer.getString('Login.txt_guest_account_expiration') }\r\n : <>\r\n }\r\n
);\r\n }\r\n\r\n private _renderInput() {\r\n const styles: ICSSInJSStyle = {\r\n fontSize: '1rem',\r\n marginTop: '2rem',\r\n marginBottom: '1rem',\r\n };\r\n return ;\r\n }\r\n\r\n private _renderTosAndPrivacy() {\r\n const styles: ICSSInJSStyle = {\r\n fontSize: '0.75rem',\r\n marginBottom: '1rem',\r\n textAlign: 'center',\r\n };\r\n return \r\n { localizer.get('txt_launch_guest_accept_tos', {\r\n linkPrivacy: { type: 'a', href: 'https://go.microsoft.com/fwlink/?LinkId=521839' },\r\n linkTerms: { type: 'a', href: 'https://go.microsoft.com/fwlink/?LinkID=246338' },\r\n }) }\r\n ;\r\n }\r\n\r\n private _updateGuestName = (event: React.ChangeEvent) => {\r\n if (event.target.value && event.target.value.length > maxGuestNameLength) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n guestName: event.target.value,\r\n joinButtonEnabled: !!event.target.value && event.target.value.length > 0,\r\n });\r\n }\r\n\r\n private _createGuest = (stackNavigationContext: StackNavigationContext, meetingContext: MeetingContext, errorContext: ErrorContext, ecsContext: EcsContext) => {\r\n return (e: React.MouseEvent) => {\r\n const joinParams: JoinAsGuestParams = {\r\n stackNavigationContext,\r\n meetingContext,\r\n errorContext,\r\n ecsContext,\r\n };\r\n\r\n logger.action({ name: 'create-guest' });\r\n this.setState({ joinButtonEnabled: false, joinButtonSpinEnabled: true });\r\n\r\n if (this.state.captchaState.show && this._captchaSolution) {\r\n this._joinAsGuest(joinParams);\r\n } else {\r\n this._joinAsGuest(joinParams);\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n }\r\n\r\n private _joinAsGuest = (params: JoinAsGuestParams) => {\r\n const { ecsContext, ...joinParams } = params;\r\n const ecsSettings = ecsContext.settings;\r\n\r\n logger.sessionFinished({completionType: 'JoinOnWebAsGuest'});\r\n\r\n return ecsSettings.useMeetingsApi ?\r\n this.joinAsGuestMeetingsApi({\r\n ...joinParams,\r\n retries: ecsSettings.maxRetries,\r\n joinThread: ecsSettings.useJoinThread,\r\n }) :\r\n this.joinAsGuestHuddleApi(joinParams);\r\n }\r\n\r\n private joinAsGuestHuddleApi = (params: JoinAsGuestBaseParams) => {\r\n return HuddleApiClient.joinAsGuest({\r\n flowId: logger.getCorrelationId(),\r\n name: this.state.guestName,\r\n threadId: params.meetingContext.conversation.resource,\r\n }).then((guestUser) => {\r\n params.stackNavigationContext.push(\r\n ,\r\n { eventViewName: 'guest-redirect' },\r\n );\r\n }).catch((response: WebErrorResponse) => {\r\n this.setState((oldState) => {\r\n const newState: GuestLoginState = { ...oldState, joinButtonSpinEnabled: false, joinButtonEnabled: true };\r\n\r\n const createGuestRequest = 'Create guest user';\r\n let error: DisplayableError | undefined;\r\n switch (response.statusCode) {\r\n case 405:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.JoinDisabled, response, createGuestRequest);\r\n break;\r\n case 429:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 412:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 500:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, createGuestRequest);\r\n break;\r\n default:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Busy, response, createGuestRequest);\r\n break;\r\n }\r\n if (error) {\r\n params.errorContext.setError(error);\r\n logger.error(error);\r\n }\r\n\r\n return newState;\r\n });\r\n\r\n });\r\n }\r\n\r\n private joinAsGuestMeetingsApi = (params: JoinAsGuestMeetingsApiParams) => {\r\n return MeetingsApiClient.joinAsGuest({\r\n flowId: logger.getCorrelationId(),\r\n displayName: this.state.guestName,\r\n threadId: params.meetingContext.conversation.resource,\r\n shortId: params.meetingContext.shortId,\r\n },\r\n params.retries,\r\n params.joinThread,\r\n this._captchaSolution,\r\n () => ({ includesCaptcha: !!this._captchaSolution }))\r\n .then((guestUser) => {\r\n params.stackNavigationContext.push(\r\n ,\r\n { eventViewName: 'guest-redirect' },\r\n );\r\n }).catch((response: WebErrorResponse) => {\r\n this.setState((oldState) => {\r\n const newState: GuestLoginState = { ...oldState, joinButtonSpinEnabled: false, joinButtonEnabled: true };\r\n\r\n const createGuestRequest = 'Create guest user';\r\n let error: DisplayableError | undefined;\r\n this._captchaSolution = undefined;\r\n switch (response.statusCode) {\r\n case 403:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.JoinDisabled, response, createGuestRequest);\r\n break;\r\n case 404:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.InviteNotFound, response, createGuestRequest);\r\n break;\r\n case 412: // @todo review all response codes\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 429:\r\n newState.joinButtonEnabled = false;\r\n newState.captchaState = {\r\n ready: true,\r\n show: true,\r\n };\r\n newState.captchaPayload = {\r\n challenge: response.body.challenge,\r\n challengeId: response.body.challengeId,\r\n azureRegion: response.body.azureRegion,\r\n };\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 500:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, createGuestRequest);\r\n break;\r\n default:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Busy, response, createGuestRequest);\r\n break;\r\n }\r\n if (error) {\r\n params.errorContext.setError(error);\r\n logger.error(error);\r\n }\r\n\r\n return newState;\r\n });\r\n });\r\n }\r\n\r\n private _onCaptchaSolutionUpdated = (solutionValue: string) => {\r\n if (solutionValue && this.state.captchaPayload) {\r\n if (this._captchaSolution) {\r\n this._captchaSolution.solution = solutionValue;\r\n } else {\r\n this._captchaSolution = {\r\n solution: solutionValue,\r\n challengeId: this.state.captchaPayload.challengeId,\r\n azureRegion: this.state.captchaPayload.azureRegion,\r\n };\r\n }\r\n this.setState({\r\n joinButtonEnabled: true,\r\n });\r\n } else if (!solutionValue && this.state.joinButtonEnabled) {\r\n this.setState({\r\n joinButtonEnabled: false,\r\n });\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { ConversationServiceModel } from '../../models/ConversationServiceModel';\r\n\r\nexport interface MeetingContext {\r\n conversation: ConversationServiceModel;\r\n shortId: string;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const MeetingContextProvider = context.Provider;\r\n\r\nexport const MeetingContextConsumer = context.Consumer;\r\n","import { Image, ProviderConsumer, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { Footer } from '../common/Footer';\r\nimport { NestedStackNavigationView } from '../common/NestedStackNavigationView';\r\nimport { LoginMethod } from './login/LoginMethod';\r\n\r\nexport class LoginView extends React.PureComponent {\r\n\r\n renderThemeAware = (theme: ThemePrepared) => {\r\n return
\r\n\r\n
\r\n { (configContext) =>\r\n \r\n }\r\n { (ariaContext) =>\r\n } initialViewProps={ { eventViewName: 'login-method' } } />\r\n }\r\n
\r\n\r\n
\r\n
;\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import EcsClient from '@skype/ecsclient';\r\nimport { EcsConfigType, EcsResponseBase } from '@skype/ecsclient/dist/Models';\r\nimport config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { STPromise } from 'synctasks';\r\nimport { v4 } from 'uuid';\r\nimport { EcsSettings, EcsSettings as EcsResponse } from '../contexts/EcsContext';\r\n\r\nexport interface EcsSettingsResponse extends EcsResponseBase {\r\n SWG_WebClient: EcsSettings;\r\n}\r\n\r\nclass EcsHelper {\r\n private static readonly deviceIdLocalStorageKey = 'mvt.device_id';\r\n private _ecsClient = new EcsClient();\r\n\r\n public loadConfig(\r\n skypetoken: string | undefined,\r\n expiration: number | undefined,\r\n callback: ((settings: EcsResponse) => void),\r\n fallback: EcsResponse): STPromise {\r\n return this._ecsClient.initialize({\r\n clientName: 'Launcher',\r\n clientVersion: '1.0.0.0', // @todo use version from build?\r\n configsToFetch: (!!skypetoken) ? [EcsConfigType.User] : [EcsConfigType.Default],\r\n hosts: [config.urls.ecs],\r\n initialAppActiveState: true,\r\n getEcsParameters: () => SyncTasks.Resolved({ clientId: EcsHelper.clientId}),\r\n initialSkypeTokenData: {\r\n skypeToken: skypetoken,\r\n skypeTokenExpiration: Date.now() + (expiration || 0),\r\n },\r\n }).then(() => {\r\n this._ecsClient.configUpdated.subscribe(() => {\r\n const response = this._ecsClient.getConfig();\r\n if (!!response && !!response.config) {\r\n callback(response.config.SWG_WebClient);\r\n } else {\r\n callback(fallback);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private static get clientId() {\r\n let deviceId;\r\n try {\r\n deviceId = localStorage.getItem(EcsHelper.deviceIdLocalStorageKey);\r\n } catch (e) {\r\n return '';\r\n }\r\n\r\n if (!deviceId) {\r\n deviceId = v4();\r\n try {\r\n localStorage.setItem(EcsHelper.deviceIdLocalStorageKey, deviceId);\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n\r\n return deviceId;\r\n }\r\n}\r\n\r\nexport const ecsHelper = new EcsHelper();\r\n","import config from 'config';\r\nimport * as React from 'react';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { EcsContextConsumer } from '../../../contexts/EcsContext';\r\nimport { MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { CookieHelper } from '../../../helpers/CookieHelper';\r\nimport { getRedirectSubdomain } from '../../../helpers/SafariRedirectHelper';\r\n\r\nexport interface GuestRedirectProps {\r\n username: string;\r\n skypetoken: string;\r\n}\r\n\r\nexport class GuestRedirect extends React.PureComponent {\r\n\r\n render() {\r\n return { (meetingContext) => meetingContext && meetingContext.conversation &&\r\n { (ecsContext) =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n };\r\n }\r\n\r\n private _autoSubmit = (instance: HTMLFormElement | null) => {\r\n if (instance) {\r\n instance.submit();\r\n }\r\n }\r\n}\r\n","import { Actions } from '../models/SharedTypes';\r\n\r\nexport interface CookieConfig {\r\n name: string;\r\n key?: string;\r\n path?: string;\r\n maxAge?: number;\r\n domain?: string;\r\n}\r\n\r\nexport interface S4LParameters {\r\n threadId?: string;\r\n inviteId?: string;\r\n skypeId?: string;\r\n}\r\n\r\nexport interface Config {\r\n env: 'dev' | 'latest' | 'qa' | 'dogfood' | 'production';\r\n cookies: {\r\n skype: CookieConfig;\r\n csrf: CookieConfig;\r\n };\r\n silentLogin: {\r\n env: string;\r\n client_id: string;\r\n redirect_uri: string;\r\n };\r\n logging: {\r\n ariaTenant: string;\r\n };\r\n urls: {\r\n ecs: string,\r\n api: {\r\n profile: string;\r\n huddle: string;\r\n meetings: string;\r\n invite: string;\r\n captcha: (lang: string, flowId: string, rand: string) => string;\r\n }\r\n app: {\r\n faq: string;\r\n login: (redirectUri: string, state: string) => string;\r\n logout: (redirectUri: string, state: string) => string;\r\n s4lWeb: (params: S4LParameters, webSubDomain?: string) => string;\r\n botLogin: (botId: string, useBotLauncherQueryParam?: boolean) => string;\r\n download: string;\r\n downloadAndroid: (threadId?: string) => string;\r\n downloadDesktop: string; // Remove once we have access to goLink CMS, the first one should be enough\r\n cookiePolicy: string;\r\n skypeCom: string,\r\n join: string,\r\n },\r\n launcher: {\r\n skypeUri: (action: Actions, threadId: string, sessionId: string, origin: string) => string;\r\n intentUri: (action: Actions, threadId: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n universalUri: (shortId: string, sessionId: string) => string;\r\n },\r\n inviteLauncher: {\r\n skypeUri: (skypeId: string, sessionId: string, offSkypeInviteId: string, origin: string) => string;\r\n intentUri: (skypeId: string, sessionId: string, offSkypeInviteId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n botLauncher: {\r\n skypeUri: (botId: string, sessionId: string, origin: string) => string;\r\n intentUri: (botId: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n doLauncher: {\r\n skypeUri: (action: Actions, skypeId: string, sessionId: string, origin: string) => string;\r\n intentUri: (action: Actions, skypeId: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n meetNowJoinLauncher: {\r\n skypeUri: (action: Actions, source: string, exp: string, call: string, video: string, mic: string, sessionId: string, origin: string) => string;\r\n intentUri: (action: Actions, source: string, exp: string, call: string, video: string, mic: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n };\r\n}\r\n\r\nconst config: Config = {\r\n env: 'production',\r\n cookies: {\r\n skype: {\r\n name: 'SC',\r\n path: '/',\r\n maxAge: 3600 * 24 * 90, // 90 days\r\n domain: '.skype.com',\r\n },\r\n csrf: {\r\n name: 'x-csrf-token',\r\n },\r\n },\r\n logging: {\r\n ariaTenant: '36f18b389f2543c0b54bf5c5555e3587-e50b4ede-9173-4805-ab3a-7c8564e50b52-6674',\r\n },\r\n silentLogin: {\r\n env: 'live',\r\n client_id: '371752',\r\n redirect_uri: 'https://join.skype.com',\r\n },\r\n urls: {\r\n ecs: 'https://a.config.skype.com',\r\n api: {\r\n profile: 'https://profile.skype.com/profile',\r\n huddle: 'https://join.skype.com/api',\r\n meetings: 'https://api.join.skype.com',\r\n invite: 'https://inviteconnector.skype.com',\r\n captcha: (lang: string, flowId: string, rand: string) =>\r\n `https://client.hip.live.com/GetHIP/GetWLSPHIP0/WLSPHIP0?mkt=${ lang }&fid=${ flowId }&id=skypeguest&type=visual&rnd=${ rand }`,\r\n },\r\n app: {\r\n faq: 'https://go.skype.com/faq.invites',\r\n login: (redirectUri: string, state: string) =>\r\n `https://login.skype.com/login?client_id=578134&redirect_uri=${ encodeURIComponent(redirectUri) }&state=${ state }`,\r\n logout: (redirectUri: string, state: string) =>\r\n `https://login.skype.com/logout?client_id=578134&redirect_uri=${ encodeURIComponent(redirectUri) }&state=${ state }`,\r\n s4lWeb: (params, webSubDomain) => {\r\n const url = `https://${ !!webSubDomain ? `${ webSubDomain }.` : '' }web.skype.com`;\r\n if (params.threadId) {\r\n return `${ url }/${ params.threadId }`;\r\n }\r\n\r\n if (params.inviteId && params.skypeId) {\r\n return `${ url }/8:${ params.skypeId }?inviteId=${ params.inviteId }`;\r\n }\r\n\r\n return url;\r\n },\r\n botLogin: (botId: string, useBotLauncherQueryParam?: boolean) => {\r\n const loginUri = `https://login.skype.com/login?client_id=708557&redirect_uri=https%3A%2F%2Fjoin.skype.com%2Fbot%2F${ botId }`;\r\n if (useBotLauncherQueryParam) {\r\n return loginUri + '?botsLauncher=true';\r\n }\r\n\r\n return loginUri;\r\n },\r\n download: 'https://go.skype.com/spaces.getskype',\r\n downloadAndroid: (threadId?: string) =>\r\n `https://play.google.com/store/apps/details?id=com.skype.raider&referrer=${threadId && encodeURIComponent(\r\n `utm_source=invite&utm_thread=${threadId}`)}`,\r\n downloadDesktop: 'https://go.skype.com/download-skype/',\r\n cookiePolicy: 'https://go.skype.com/privacy',\r\n skypeCom: 'https://www.skype.com',\r\n join: 'https://join.skype.com',\r\n },\r\n launcher: {\r\n skypeUri: (action, threadId, sessionId, origin) => `skype:?${ action }&threadId=${ threadId }&correlationId=${ sessionId }&origin=${ origin }`,\r\n intentUri: (action, threadId, sessionId, origin, fallbackUri) =>\r\n `intent://?${ action }&threadId=${ threadId }&correlationId=${ sessionId }&origin=${ origin }`\r\n + `#Intent;scheme=skype;package=com.skype.raider;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n universalUri: (shortId, sessionId) => `https://www.skype.com/meetnow/${ shortId }?fallback=true&correlationId=${sessionId}`,\r\n },\r\n inviteLauncher: {\r\n skypeUri: (skypeId, sessionId, offSkypeInviteId, origin) =>\r\n `skype:${ skypeId }?chat&correlationId=${ sessionId }&utm_source=buddy&utm_content=${ offSkypeInviteId }&origin=${ origin }`,\r\n intentUri: (skypeId, sessionId, offSkypeInviteId, origin, fallbackUri) =>\r\n `intent://${ skypeId }?chat&correlationId=${ sessionId }&utm_source=buddy&utm_content=${ offSkypeInviteId }&origin=${ origin }`\r\n + `#Intent;scheme=skype;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n botLauncher: {\r\n skypeUri: (botId, sessionId, origin) => `skype:${ botId }?chat&correlationId=${ sessionId }&origin=${ origin }`,\r\n intentUri: (botId, sessionId, origin, fallbackUri) =>\r\n `intent://${ botId }?chat&correlationId=${ sessionId }&origin=${ origin }#Intent;scheme=skype;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n doLauncher: {\r\n skypeUri: (action, skypeId, sessionId, origin) =>\r\n `skype:${ skypeId }?${ action }&correlationId=${ sessionId }&origin=${ origin }`,\r\n intentUri: (action, skypeId, sessionId, origin, fallbackUri) =>\r\n `intent://${ skypeId }?${ action }&correlationId=${ sessionId }&origin=${ origin }`\r\n + `#Intent;scheme=skype;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n meetNowJoinLauncher: {\r\n skypeUri: (action, source, exp, call, video, mic, sessionId, origin) =>\r\n `skype:?action=${ action }&source=${ source }&exp=${ exp }&correlationId=${ sessionId }&origin=${ origin }&call=${ call }&video=${ video}&mic=${ mic }`,\r\n intentUri: (action, source, exp, call, video, mic, sessionId, origin, fallbackUri) =>\r\n `intent://?action=${ action }&source=${ source }&exp=${ exp }&correlationId=${ sessionId }&origin=${ origin }&call=${ call }&video=${ video}&mic=${ mic }`\r\n + `#Intent;scheme=skype;package=com.skype.raider;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n },\r\n};\r\n\r\nexport default config;\r\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","export interface Dictionary {\r\n [index: string]: T;\r\n}\r\n\r\nexport enum Themes {\r\n Teams = 'teams',\r\n Light = 'light',\r\n}\r\n\r\nexport enum AppIds {\r\n Meetings = 'wl',\r\n OffSkypeInvites = 'oi',\r\n}\r\n\r\nexport enum Actions {\r\n Chat = 'chat',\r\n Call = 'call',\r\n MeetNowJoin = 'meetnowjoin',\r\n}\r\n\r\nexport interface Dimension { width: number; height: number; }\r\nexport const defaultDimension: Dimension = { width: 0, height: 0 };\r\nexport const mainContentId = 'mainContent';\r\n","import { localizer } from '@skype/bew-localization';\r\n\r\nexport const loadTranslation = (language: string) => {\r\n localizer.initSync({\r\n locale: language,\r\n localizedTable: (window as any).I18NBUNDLE,\r\n fallback: 'en',\r\n fallbackTable: (window as any).I18NBUNDLE_FALLBACK || (window as any).I18NBUNDLE,\r\n });\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Header, Image, Text } from '@stardust-ui/react';\r\nimport { BotsContextConsumer } from '../../contexts/bots/BotsContext';\r\nimport { ConfigContext, ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { BotInfoServiceModel } from '../../models/BotServiceModel';\r\n\r\nexport class BotInfo extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n \r\n { (botContext) => botContext &&\r\n <>\r\n \r\n { (configContext) => this._renderAvatar(configContext, botContext.botInfo) }\r\n \r\n { botContext.botInfo.isTrusted &&
\r\n \r\n { (configContext) =>\r\n }\r\n \r\n
\r\n }\r\n
\r\n
\r\n \r\n }\r\n \r\n
;\r\n }\r\n\r\n private _renderAvatar(configContext: ConfigContext, botInfo: BotInfoServiceModel) {\r\n const avatarImage = {\r\n src: botInfo.avatarUrl || `${ configContext.basePath }/images/avatar.jpg`,\r\n styles: { width: '100%', height: '100%', objectFit: 'cover' },\r\n };\r\n\r\n return
\r\n \r\n \r\n
;\r\n }\r\n}\r\n","import config from 'config';\r\nimport { ProfilesContext } from '../../contexts/profiles/ProfilesContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { Actions } from '../../models/SharedTypes';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n profile: ProfilesContext;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.doLauncher.intentUri(Actions.Chat, this.props.profile.skypeId, logger.getCorrelationId(), 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.doLauncher.skypeUri(Actions.Chat, this.props.profile.skypeId, logger.getCorrelationId(), 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join-profile';\r\n }\r\n}\r\n","import { EcsSettings } from '../contexts/EcsContext';\r\nimport { isSafariBrowserEligibleForMeetingGuestFlow } from './EnvironmentHelper';\r\n\r\nexport const getRedirectSubdomain = (settings: EcsSettings): string | undefined => {\r\n if (settings.allowDesktopSafariGuestFlow && isSafariBrowserEligibleForMeetingGuestFlow) {\r\n return settings.webSubdomainForRedirect;\r\n }\r\n\r\n return undefined;\r\n};\r\n","import config from 'config';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface BotLauncherProps {\r\n botSkypeId: string;\r\n}\r\n\r\nexport class BotLauncher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n const sessionId = logger.getCorrelationId();\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.botLauncher.intentUri(this.props.botSkypeId, sessionId, 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.botLauncher.skypeUri(this.props.botSkypeId, sessionId, 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'bot-launch';\r\n }\r\n}\r\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","import * as React from 'react';\r\n\r\nexport interface ARootViewProps {\r\n loading?: boolean;\r\n}\r\n\r\nexport abstract class ARootView

extends React.Component {\r\n protected mainContentId = 'mainContent';\r\n}\r\n","/**\n * SubscribableEvent.ts\n *\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT license.\n *\n * A simple strongly-typed pub/sub/fire eventing system.\n */\nvar SubscriptionToken = /** @class */ (function () {\n function SubscriptionToken(_event, _callback) {\n this._event = _event;\n this._callback = _callback;\n }\n SubscriptionToken.prototype.unsubscribe = function () {\n this._event.unsubscribe(this._callback);\n };\n return SubscriptionToken;\n}());\nexport { SubscriptionToken };\nvar SubscribableEvent = /** @class */ (function () {\n // By default, SubscribableEvent will fire to all subscribers regardless of any conditions.\n // If you enable allowStopPropagation, then a subscription callback can return a truthy response and it will halt further callbacks.\n function SubscribableEvent(_allowStopPropagation) {\n if (_allowStopPropagation === void 0) { _allowStopPropagation = false; }\n var _this = this;\n this._allowStopPropagation = _allowStopPropagation;\n this.fire = (function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Keep reference to the original readonly array. We don't want to have it change while we're firing\n var subs = _this._subscribers;\n // Execute handlers in the reverse order in which they were registered.\n for (var i = subs.length - 1; i >= 0; i--) {\n var ret = subs[i].apply(null, args);\n if (_this._allowStopPropagation && !!ret) {\n // If the value was handled, early out.\n return true;\n }\n }\n return false;\n });\n this._subscribers = [];\n }\n SubscribableEvent.prototype.dispose = function () {\n this._subscribers = [];\n };\n SubscribableEvent.prototype.subscribe = function (callback) {\n this._subscribers = this._subscribers.concat(callback);\n return new SubscriptionToken(this, callback);\n };\n SubscribableEvent.prototype.unsubscribe = function (callback) {\n this._subscribers = this._subscribers.filter(function (value) { return value !== callback; });\n };\n return SubscribableEvent;\n}());\nexport default SubscribableEvent;\n","\"use strict\";\r\n/**\r\n* TelemetryEventBase.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holds ECS client telemetry event base\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TelemetryEventBase = /** @class */ (function () {\r\n function TelemetryEventBase() {\r\n }\r\n TelemetryEventBase.prototype.getAttributes = function () {\r\n var attributes = {\r\n 'Source': 'ecs_client'\r\n };\r\n return attributes;\r\n };\r\n return TelemetryEventBase;\r\n}());\r\nexports.TelemetryEventBase = TelemetryEventBase;\r\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { BotInfoServiceModel } from '../models/BotServiceModel';\r\nimport { ApiCallOptions, BaseRestClient } from './BaseRestClient';\r\n\r\nclass BotsRestClient extends BaseRestClient {\r\n getBotInfo(botId: string): SyncTasks.Promise {\r\n const basePath = '/v1/bots/info/';\r\n const options: ApiCallOptions = {\r\n eventProperties: {\r\n genericEventPath: basePath,\r\n },\r\n };\r\n\r\n return this.performApiGet(basePath + botId, options);\r\n }\r\n\r\n addBotToContacts(botId: string, skypetoken: string) {\r\n const basePath = '/v1/bots/add/';\r\n const options: ApiCallOptions = {\r\n headers: {\r\n 'X-Skypetoken': skypetoken,\r\n },\r\n eventProperties: {\r\n genericEventPath: basePath,\r\n },\r\n };\r\n\r\n return this.performApiPut(basePath + botId, {}, options);\r\n }\r\n}\r\n\r\nexport default new BotsRestClient(config.urls.api.huddle);\r\n","function t(t,e,n,r){return new(n||(n=Promise))(function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(a,c)}u((r=r.apply(t,e||[])).next())})}function e(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1)return a('UA \"Edge\" => assuming success'),[2];if(x(document.body,n))return a(\"copyUsingTempSelection worked\"),[2];if(function(t){var e=document.createElement(\"div\");e.setAttribute(\"style\",\"-webkit-user-select: text !important\"),e.textContent=\"temporary element\",document.body.appendChild(e);var n=x(e,t);return document.body.removeChild(e),n}(n))return a(\"copyUsingTempElem worked\"),[2];if(void 0!==(t=n.getData(s))&&function(t){a(\"copyTextUsingDOM\");var e=document.createElement(\"div\");e.setAttribute(\"style\",\"-webkit-user-select: text !important\");var n=e;e.attachShadow&&(a(\"Using shadow DOM.\"),n=e.attachShadow({mode:\"open\"}));var r=document.createElement(\"span\");r.innerText=t,n.appendChild(r),document.body.appendChild(e),D(r);var o=document.execCommand(\"copy\");return E(),document.body.removeChild(e),o}(t))return a(\"copyTextUsingDOM worked\"),[2];throw new Error(\"Copy command failed.\")})})}function p(n){return t(this,void 0,void 0,function(){return e(this,function(t){return navigator.clipboard&&navigator.clipboard.writeText?(a(\"Using `navigator.clipboard.writeText()`.\"),[2,navigator.clipboard.writeText(n)]):[2,f(T(n))]})})}function v(){return t(this,void 0,void 0,function(){var t;return e(this,function(e){switch(e.label){case 0:return t=T,[4,h()];case 1:return[2,t.apply(void 0,[e.sent()])]}})})}function h(){return t(this,void 0,void 0,function(){return e(this,function(t){if(navigator.clipboard&&navigator.clipboard.readText)return a(\"Using `navigator.clipboard.readText()`.\"),[2,navigator.clipboard.readText()];if(C())return a(\"Reading text using IE strategy.\"),[2,k()];throw new Error(\"Read is not supported in your browser.\")})})}var b=!1;function m(){b||(c&&u('The deprecated default object of `clipboard-polyfill` was called. Please switch to `import * as clipboard from \"clipboard-polyfill\"` and see https://github.com/lgarron/clipboard-polyfill/issues/101 for more info.'),b=!0)}var w={DT:i,setDebugLog:function(t){return m(),l(t)},suppressWarnings:function(){return m(),d()},write:function(n){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,f(n)]})})},writeText:function(n){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,p(n)]})})},read:function(){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,v()]})})},readText:function(){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,h()]})})}},y=function(){this.success=!1};function g(t){var e=new y,n=function(t,e,n){a(\"listener called\"),t.success=!0,e.forEach(function(e,r){var o=n.clipboardData;o.setData(r,e),r===s&&o.getData(r)!==e&&(a(\"setting text/plain failed\"),t.success=!1)}),n.preventDefault()}.bind(this,e,t);document.addEventListener(\"copy\",n);try{document.execCommand(\"copy\")}finally{document.removeEventListener(\"copy\",n)}return e.success}function x(t,e){D(t);var n=g(e);return E(),n}function D(t){var e=document.getSelection();if(e){var n=document.createRange();n.selectNodeContents(t),e.removeAllRanges(),e.addRange(n)}}function E(){var t=document.getSelection();t&&t.removeAllRanges()}function T(t){var e=new i;return e.setData(s,t),e}function C(){return\"undefined\"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData}function k(){return t(this,void 0,void 0,function(){var t;return e(this,function(e){if(\"\"===(t=window.clipboardData.getData(\"Text\")))throw new Error(\"Empty clipboard or could not read plain text from clipboard\");return[2,t]})})}export default w;export{i as DT,v as read,h as readText,l as setDebugLog,d as suppressWarnings,f as write,p as writeText};\n//# sourceMappingURL=clipboard-polyfill.esm.js.map\n","\"use strict\";\r\n/**\r\n* Cache.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS data cache\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar subscribableevent_1 = require(\"subscribableevent\");\r\nvar SyncTasks = require(\"synctasks\");\r\nvar Models_1 = require(\"./Models\");\r\nvar Cache = /** @class */ (function () {\r\n function Cache(_config) {\r\n this._config = _config;\r\n this.configUpdated = new subscribableevent_1.default();\r\n this._cachedConfigs = {};\r\n // noop\r\n }\r\n Cache.prototype.initialize = function () {\r\n return this.updateConfigsToFetch();\r\n };\r\n Cache.prototype.updateConfigsToFetch = function () {\r\n var _this = this;\r\n var _a = this._config.getConfig(), databaseInterface = _a.databaseInterface, configsToFetch = _a.configsToFetch;\r\n // If we don't have DB support, we can't pre-populate any cache\r\n if (!databaseInterface) {\r\n return SyncTasks.Resolved();\r\n }\r\n var dbFetchPromises = [];\r\n var _loop_1 = function (configType) {\r\n // If we've already retrieved from the cache, don't fetch again\r\n if (this_1._cachedConfigs[configType]) {\r\n return \"continue\";\r\n }\r\n dbFetchPromises.push(databaseInterface.getData(configType).then(function (ecsConfig) {\r\n if (ecsConfig) {\r\n _this._cachedConfigs[configType] = ecsConfig;\r\n }\r\n }).catch(function () {\r\n // Return resolved no matter what happens\r\n return SyncTasks.Resolved();\r\n }));\r\n };\r\n var this_1 = this;\r\n for (var _i = 0, configsToFetch_1 = configsToFetch; _i < configsToFetch_1.length; _i++) {\r\n var configType = configsToFetch_1[_i];\r\n _loop_1(configType);\r\n }\r\n return SyncTasks.all(dbFetchPromises).then(function () {\r\n // If we fetched 1 or more configs, trigger a change\r\n if (dbFetchPromises.length > 0) {\r\n _this.configUpdated.fire();\r\n }\r\n });\r\n };\r\n Cache.prototype.getEcsConfig = function () {\r\n // Try user, then fallback to default\r\n return (this._cachedConfigs[Models_1.EcsConfigType.User] || this._cachedConfigs[Models_1.EcsConfigType.Default]);\r\n };\r\n Cache.prototype.getEcsConfigByType = function (configType) {\r\n return this._cachedConfigs[configType];\r\n };\r\n Cache.prototype.putConfig = function (ecsConfig) {\r\n // Store the config that we used before putting\r\n var oldEcsConfig = this.getEcsConfig();\r\n // Store new config\r\n this._cachedConfigs[ecsConfig.configType] = ecsConfig;\r\n var currentEcsConfig = this.getEcsConfig();\r\n // Only notify if the config of the same type changed or we've changed config types\r\n if (currentEcsConfig && currentEcsConfig.configType === ecsConfig.configType ||\r\n (oldEcsConfig && currentEcsConfig && oldEcsConfig.configType !== currentEcsConfig.configType)) {\r\n this.configUpdated.fire();\r\n }\r\n var databaseInterface = this._config.getConfig().databaseInterface;\r\n // If we don't have DB support, we can't pre-populate any cache\r\n if (!databaseInterface) {\r\n return SyncTasks.Resolved();\r\n }\r\n return databaseInterface.putData(ecsConfig.configType, ecsConfig);\r\n };\r\n return Cache;\r\n}());\r\nexports.default = Cache;\r\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","import { localizer } from '@skype/bew-localization';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { clipboardHelper } from '../../helpers/ClipboardHelper';\r\n\r\nexport interface JoinLinkProps {\r\n shortId: string;\r\n}\r\n\r\ninterface JoinLinkState {\r\n copied: boolean;\r\n}\r\n\r\nconst removeProtocol = (url: string): string => url.replace('https://', '');\r\n\r\nexport class JoinLink extends React.Component {\r\n constructor(props: JoinLinkProps) {\r\n super(props);\r\n\r\n this.state = {\r\n copied: false,\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n if (!this.state.copied) {\r\n return;\r\n }\r\n\r\n setTimeout(() => this.setState({\r\n copied: false,\r\n }), 5000);\r\n }\r\n\r\n render() {\r\n const copied = this.state.copied;\r\n const joinLink = `${ config.urls.app.join }/${ this.props.shortId }`;\r\n const joinLinkClassName = `joinLink ${ copied ? 'copied' : '' }`;\r\n\r\n return (\r\n

\r\n { localizer.getString('txt_launch_universal_link_fallback') }\r\n\r\n
\r\n { removeProtocol(joinLink) }\r\n
\r\n\r\n { copied &&
\r\n { localizer.getString('txt_launch_link_copied') }\r\n
}\r\n
\r\n );\r\n }\r\n\r\n private _getClickHandler = (joinLink: string) => () => {\r\n clipboardHelper.copyToClipboard(joinLink);\r\n\r\n this.setState({\r\n copied: true,\r\n });\r\n }\r\n\r\n private _getKeyDownHandler = (joinLink: string) => (e: React.KeyboardEvent) => {\r\n if (13 !== e.keyCode) {\r\n return;\r\n }\r\n\r\n this._getClickHandler(joinLink)();\r\n }\r\n}\r\n","import { ErrorHandlingType, WebErrorResponse } from 'simplerestclients';\r\nimport { ConversationServiceModel, RawConversationServiceModel } from '../models/ConversationServiceModel';\r\n\r\ntype Transform = (model: RawConversationServiceModel) => ConversationServiceModel;\r\n\r\nfunction transform(model: RawConversationServiceModel): ConversationServiceModel {\r\n return {\r\n action: 'Chat',\r\n flowId: model.flowId,\r\n id: model.longId,\r\n resource: model.threadId,\r\n };\r\n}\r\n\r\nexport const transformWrapper = (shortId: string): Transform =>\r\n (model: RawConversationServiceModel): ConversationServiceModel => ({\r\n ...transform(model),\r\n shortId,\r\n });\r\n\r\nconst shouldRetry = (statusCode: number): boolean =>\r\n statusCode === 0 || (statusCode >= 500 && statusCode < 600);\r\n\r\n// @todo: add logging if needed\r\nexport const customErrorHandler = ({ }, errResp: WebErrorResponse): ErrorHandlingType =>\r\n shouldRetry(errResp.statusCode) ? ErrorHandlingType.RetryCountedWithBackoff : ErrorHandlingType.DoNotRetry;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Header, Icon, Layout, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { ConfigContext, ConfigContextConsumer } from 'src/ts/contexts/ConfigContext';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, isSafariBrowserEligibleForMeetingGuestFlow, OperatingSystems, os } from 'src/ts/helpers/EnvironmentHelper';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { IMeetNowSettings } from 'src/ts/meetnow/MeetNowSettings';\r\nimport { handleJoin } from 'src/ts/meetnowJoin/JoinHandler';\r\nimport { EcsContextConsumer } from '../../../contexts/EcsContext';\r\nimport { MeetingContext, MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../../contexts/StackNavigationContext';\r\nimport { UserContextConsumer } from '../../../contexts/UserContext';\r\nimport { CookieHelper } from '../../../helpers/CookieHelper';\r\nimport { getRedirectSubdomain } from '../../../helpers/SafariRedirectHelper';\r\nimport { UserProfile } from '../../../models/ProfileServiceModel';\r\nimport { ErrorModal } from '../../common/ErrorModal';\r\nimport { GuestLogin } from './GuestLogin';\r\n\r\ninterface UnifiedLoginMethodProps {\r\n onLaunchClick: () => void;\r\n allowDesktopSafariGuestFlow: boolean;\r\n meetNowSettings: IMeetNowSettings;\r\n}\r\n\r\ninterface UnifiedLoginMethodState {\r\n isMeetingRedirectInProgress: boolean;\r\n handleJoinError?: Error;\r\n}\r\n\r\nexport class UnifiedLoginMethod extends React.PureComponent {\r\n public readonly state: UnifiedLoginMethodState = { isMeetingRedirectInProgress: false };\r\n\r\n render() {\r\n return
\r\n { this._renderTitle() }\r\n { this._renderActions() }\r\n
;\r\n }\r\n\r\n private _renderTitle() {\r\n return { (userContext) =>\r\n
\r\n { userContext.profile ?\r\n localizer.getString('Login.txt_sign_in_with_title')\r\n :\r\n localizer.getString('Meetings.txt_join_meeting_title')\r\n }\r\n
\r\n }
;\r\n }\r\n\r\n private _renderActions() {\r\n return { (userContext) => {\r\n const canJoinOnWebWithSafariException = this._canJoinOnWebWithSafariException(!userContext.profile);\r\n\r\n return
\r\n
\r\n { canJoinOnWebWithSafariException ? (\r\n userContext.profile ?\r\n this._renderAuthenticatedActions(userContext.profile) :\r\n this._renderUnauthenticatedActions()\r\n ) : (\r\n <>\r\n { this.renderDownloadButton(!userContext.profile) }\r\n { this.renderDesktopBody(!userContext.profile) }\r\n \r\n ) }\r\n
\r\n { canJoinOnWebWithSafariException && this.renderDownloadButton(!userContext.profile) }\r\n { canJoinOnWebWithSafariException && this.renderDesktopBody(!userContext.profile) }\r\n {\r\n this.state.handleJoinError &&\r\n \r\n {\r\n (configContext) => this.state.handleJoinError && (\r\n {\r\n this.setState({\r\n handleJoinError: undefined,\r\n });\r\n }\r\n } />\r\n )\r\n }\r\n \r\n }\r\n
;\r\n }}
;\r\n }\r\n\r\n private renderDesktopBody = (isGuest: boolean) => {\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n return null;\r\n }\r\n\r\n if (this._canJoinOnWebWithSafariException(isGuest)) {\r\n return (\r\n \r\n { localizer.getString('Meetings.txt_join_meeting_description') } \r\n { { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n }\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n { localizer.getString('Meetings.txt_join_meeting_description') }\r\n \r\n \r\n { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n \r\n \r\n );\r\n }\r\n\r\n private renderDownloadButton = (isGuest: boolean) => {\r\n if (this._canJoinOnWebWithSafariException(isGuest)) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private downloadSkype = () => {\r\n logger.sessionFinished({completionType: 'DownloadSkypeButton'});\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.location.href = downloadUrl;\r\n }\r\n\r\n private _renderAuthenticatedActions(userProfile: UserProfile) {\r\n return { (meetingContext) => meetingContext &&\r\n <>\r\n { (configContext) =>\r\n this._renderAccounts(userProfile, meetingContext, configContext) }\r\n \r\n { this._renderWhatsThis() }\r\n \r\n };\r\n }\r\n\r\n private _renderAccounts(userProfile: UserProfile, meetingContext: MeetingContext, configContext: ConfigContext) {\r\n const email: string | undefined = userProfile.emails && userProfile.emails.length ?\r\n userProfile.emails[0] : undefined;\r\n const name: string = userProfile.firstname && userProfile.lastname ?\r\n `${ userProfile.firstname } ${ userProfile.lastname }` : userProfile.username;\r\n const avatarImage = {\r\n src: userProfile.avatarUrl || `${ configContext.basePath }/images/avatar.jpg`,\r\n styles: { width: '100%', height: '100%', objectFit: 'cover' },\r\n };\r\n\r\n const currentAccountAvatar = ;\r\n const currentAccountText = { name } }\r\n end={ { email } } />;\r\n const currentAccount = { (ecsContext) =>\r\n \r\n };\r\n\r\n const otherAccountIcon = ;\r\n const otherAccountText = { localizer.getString('Login.btn_use_other_account') } } />;\r\n const otherAccount = { (ecsContext) =>\r\n \r\n };\r\n\r\n return
\r\n \r\n
;\r\n }\r\n\r\n private _joinOnWebAsGuest = (stackNavigationContext: StackNavigationContext, meetingContext: MeetingContext) => {\r\n return () => {\r\n logger.action({ name: 'join-as-guest' });\r\n logger.sessionIntermediateStep({eventType: 'JoinOnWebAsGuestInitialClickUnifiedView'});\r\n\r\n if (canJoinOnWeb) {\r\n if (this.props.meetNowSettings) {\r\n this.setState({\r\n isMeetingRedirectInProgress: true,\r\n });\r\n\r\n handleJoin(this.props.meetNowSettings, {\r\n action: 'joinmeetnow',\r\n flowId: logger.getCorrelationId(),\r\n id: '',\r\n resource: meetingContext.conversation.resource,\r\n shortId: UrlHelper.getShortIdFromUrl(),\r\n }, undefined, true).then(() => {\r\n this.setState({\r\n isMeetingRedirectInProgress: false,\r\n });\r\n }).catch((err) => {\r\n logger.error(err);\r\n this.setState({\r\n isMeetingRedirectInProgress: false,\r\n handleJoinError: err,\r\n });\r\n });\r\n } else {\r\n logger.action({ name: 'join-as-guest-fallback' });\r\n stackNavigationContext.push(, { eventViewName: 'guest-login' });\r\n }\r\n } else {\r\n logger.action({ name: 'join-as-guest-fallback' });\r\n stackNavigationContext.push(, { eventViewName: 'guest-login' });\r\n }\r\n };\r\n }\r\n\r\n private _joinOnWebOtherAccount = (meetingContext: MeetingContext, webSubdomainForRedirect: string | undefined) => {\r\n return () => {\r\n logger.action({ name: 'join-logout' });\r\n logger.sessionFinished({completionType: 'JoinOnWebOtherAccount'});\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }, webSubdomainForRedirect);\r\n window.location.href = config.urls.app.logout(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n };\r\n }\r\n\r\n private _joinOnWeb = (meetingContext: MeetingContext, isUnauthenticatedFlow: boolean, webSubdomainForRedirect: string | undefined) => {\r\n return () => {\r\n logger.action({ name: 'join-login' });\r\n logger.sessionFinished({completionType: 'JoinOnWeb'});\r\n if (isUnauthenticatedFlow) {\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }, webSubdomainForRedirect);\r\n window.location.href = config.urls.app.logout(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n } else {\r\n window.location.assign(UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }, webSubdomainForRedirect));\r\n }\r\n };\r\n }\r\n\r\n private _renderUnauthenticatedActions() {\r\n return <>\r\n { (stackNavigationContext) =>\r\n { (meetingContext) => meetingContext &&\r\n \r\n }\r\n \r\n }\r\n {canJoinOnWeb && { (meetingContext) => meetingContext &&\r\n { (ecsContext) =>\r\n <>\r\n \r\n { this._renderWhatsThis() }\r\n \r\n }\r\n }}\r\n ;\r\n }\r\n\r\n private _renderWhatsThis() {\r\n return \r\n { localizer.getString('Login.txt_use_ms_account') }\r\n  \r\n logger.action({ name: 'what-is-msa' }) }\r\n target='_blank'\r\n style={ { color: '#0078d4' } }\r\n aria-label={ localizer.getString('Login.lnk_a11y_what_is_ms_account') } >\r\n { localizer.getString('Login.lnk_what_is_ms_account') }\r\n \r\n ;\r\n }\r\n\r\n private _canJoinOnWebWithSafariException = (isGuest: boolean): boolean => {\r\n if (this.props.allowDesktopSafariGuestFlow && isGuest && os === OperatingSystems.MacOS) {\r\n return canJoinOnWeb || isSafariBrowserEligibleForMeetingGuestFlow;\r\n }\r\n\r\n return canJoinOnWeb;\r\n }\r\n}\r\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","import { ThemeInput } from '@stardust-ui/react';\r\n\r\nconst theme: ThemeInput = {\r\n componentStyles: {\r\n Button: {\r\n root: {\r\n fontSize: '80%',\r\n height: '3.5rem',\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport default theme;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { BotsContext, BotsContextProvider } from '../../contexts/bots/BotsContext';\r\nimport { UserContext, UserContextConsumer } from '../../contexts/UserContext';\r\nimport { displayableErrors, ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport BotsRestClient from '../../rest/BotsRestClient';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { AddBotView } from './AddBotView';\r\n\r\nexport interface RootViewState {\r\n context?: BotsContext;\r\n error?: Error | undefined;\r\n isAddBotInProgress: boolean;\r\n}\r\n\r\ninterface RootViewProps extends ARootViewProps {\r\n skypetoken: string | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n public readonly state: RootViewState = { isAddBotInProgress: false };\r\n\r\n componentDidMount() {\r\n const botId = this._getBotIdFromUrl();\r\n if (!botId) {\r\n throw displayableErrors.BotNotFound;\r\n }\r\n\r\n logger.initCommonProperty({ key: CommonProperty.BotId, value: botId });\r\n\r\n this._getBotInfo(botId)\r\n .then((botInfo) => {\r\n const context: BotsContext = { botId, botInfo, isAddedAsContact: false };\r\n this.setState({ context });\r\n }).catch((error: Error) => {\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: ARootViewProps) {\r\n if (prevProps.loading && !this.props.loading) {\r\n document.title = localizer.getString('add_bot_to_contacts');\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n return \r\n \r\n { (userContext) =>\r\n { (ariaContext) =>\r\n \r\n )}\r\n initialViewProps={ { eventViewName: 'add-bot-view' } } />\r\n }\r\n }\r\n \r\n ;\r\n }\r\n\r\n private readonly handleAddBotViewProgress = () => this.setState({ isAddBotInProgress: true });\r\n\r\n private readonly handleAddBotViewAdd =\r\n () => this.setState((state) => ({ context: { ...state.context!, isAddedAsContact: true }, isAddBotInProgress: false }))\r\n\r\n private readonly handleAddBotViewError = (error: Error) => this.setState({ error, isAddBotInProgress: false });\r\n\r\n private _getBotInfo(botId: string) {\r\n return BotsRestClient.getBotInfo(botId)\r\n .catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.BotNotFound, response, 'Get bot info');\r\n return SyncTasks.Rejected(error);\r\n });\r\n }\r\n\r\n private _isLoading = (userContext: UserContext) => {\r\n return this.props.loading || !(this.state.context && this.state.context.botInfo) || userContext.isLoginInProgress || this.state.isAddBotInProgress;\r\n }\r\n\r\n private _getBotIdFromUrl() {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n\r\n return pathParts.pop();\r\n }\r\n}\r\n","import config from 'config';\r\nimport { S4LParameters } from '../config/BaseConfig';\r\nimport { Dictionary } from '../models/SharedTypes';\r\nimport { displayableErrors } from './ErrorHelper';\r\nimport { logger } from './LoggerHelper';\r\n\r\ninterface KeyValuePair {\r\n key: string;\r\n value: string;\r\n}\r\n\r\nexport class UrlHelper {\r\n\r\n static getWebClientUrl(params: S4LParameters, webSubdomainForRedirect?: string | undefined) {\r\n // Websubdomain allow us to try out the integration with different version of webshell\r\n // Current up to date list is available: candidate, preview, dev, alpha, beta\r\n const { webSubDomain } = UrlHelper.getQueryParameters() as Dictionary;\r\n\r\n // webSubDomain passed by query param takes precedence to ECS config\r\n return config.urls.app.s4lWeb(params, webSubDomain || webSubdomainForRedirect);\r\n }\r\n\r\n static getWebClientUrlWithCorrelationId(params: S4LParameters, webSubdomainForRedirect?: string | undefined) {\r\n const url = UrlHelper.getWebClientUrl(params, webSubdomainForRedirect);\r\n\r\n return `${url}${url.includes('?') ? '&' : '?'}correlationId=${logger.getCorrelationId()}`;\r\n }\r\n\r\n static getAllowedQueryParameters(allowedParameters: string[]): KeyValuePair[] {\r\n return allowedParameters\r\n .map((param: string) => ({\r\n key: param,\r\n value: UrlHelper.getQueryParameter(param),\r\n } as KeyValuePair))\r\n .filter((pair: KeyValuePair) => pair.value);\r\n }\r\n\r\n static getQueryParameters() {\r\n if (!location.search || location.search.length < 1) {\r\n return {} as Dictionary;\r\n }\r\n\r\n return location.search\r\n .substr(1)\r\n .split('&')\r\n .map((value) => {\r\n const split = value.split('=');\r\n return {\r\n key: decodeURIComponent(split[0]),\r\n value: decodeURIComponent(split[1] || ''),\r\n } as KeyValuePair;\r\n })\r\n .reduce((prev, current) => {\r\n if (!!prev[current.key]) {\r\n const prevValue = prev[current.key];\r\n if (typeof prevValue === 'string') {\r\n prev[current.key] = [prev[current.key] as string];\r\n }\r\n (prev[current.key] as string[]).push(current.value);\r\n } else {\r\n prev[current.key] = current.value;\r\n }\r\n return prev;\r\n }, {} as Dictionary);\r\n }\r\n\r\n static getQueryParameter(key: string): string | string[] {\r\n return UrlHelper.getQueryParameters()[key];\r\n }\r\n\r\n static getQueryParameterAsString(key: string): string {\r\n return `${UrlHelper.getQueryParameter(key) || ''}`;\r\n }\r\n\r\n static getShortIdFromUrl(): string {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n const shortId = pathParts.pop();\r\n\r\n if (!shortId) {\r\n throw displayableErrors.ShortIdFromUrl;\r\n }\r\n\r\n return shortId;\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button } from '@stardust-ui/react';\r\nimport React from 'react';\r\nimport { ErrorDetails } from './ErrorDetails';\r\n\r\nexport interface ErrorModalProps {\r\n error: Error;\r\n assetsBasePath?: string;\r\n onClose: () => void;\r\n}\r\n\r\nexport class ErrorModal extends React.PureComponent {\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import { Config } from 'config';\r\nimport * as React from 'react';\r\n\r\nexport interface ConfigContext extends Config {\r\n basePath: string;\r\n language: string;\r\n switchLanguage: (language: string) => void;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as ConfigContext);\r\n\r\nexport const ConfigContextProvider = context.Provider;\r\n\r\nexport const ConfigContextConsumer = context.Consumer;\r\n","export { default as common } from './common';\r\nexport { default as light } from './light';\r\nexport { default as teams } from './teams';\r\n","import { AWTPiiKind } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\nimport { EcsSettings } from 'src/ts/contexts/EcsContext';\r\nimport { UserContext } from 'src/ts/contexts/UserContext';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport getMeetNowSettings from 'src/ts/meetnow/MeetNowSettings';\r\nimport { handleJoin } from 'src/ts/meetnowJoin/JoinHandler';\r\nimport { AppIds } from 'src/ts/models/SharedTypes';\r\nimport HuddleApiClient from 'src/ts/rest/HuddleApiClient';\r\nimport MeetingsApiClient from 'src/ts/rest/MeetingsApiClient';\r\nimport { MeetingContext, MeetingContextProvider } from '../../contexts/meetings/MeetingContext';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { displayableErrors, ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { LoadingView } from '../common/LoadingView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { JoinView } from './JoinView';\r\nimport { Launcher } from './Launcher';\r\nimport { UnifiedView } from './UnifiedView';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n meetingContext?: MeetingContext;\r\n error?: Error;\r\n loadingConversation: boolean;\r\n}\r\n\r\ninterface RootViewProps extends ARootViewProps {\r\n userContext: UserContext;\r\n ecsSettings: EcsSettings;\r\n}\r\n\r\nenum SilentLoginStatus {\r\n Started,\r\n Ended,\r\n Skipped,\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n private _silentLoginStatus: SilentLoginStatus;\r\n private _preRequisitesLoadCompleted = false;\r\n\r\n constructor(props: RootViewProps) {\r\n super(props);\r\n\r\n this.state = {\r\n launcherKey: deviceType === DeviceTypes.Desktop ? 1 : 0,\r\n loadingConversation: true,\r\n };\r\n\r\n this._silentLoginStatus = !!props.userContext.silentLoginNotSupported ? SilentLoginStatus.Skipped : SilentLoginStatus.Started;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.userContext && !this.props.userContext.isLoginInProgress && !this.props.loading) {\r\n this.loadConversation();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: RootViewProps) {\r\n if (prevProps.loading && !this.props.loading) {\r\n document.title = localizer.getString('hdr_launch_title');\r\n }\r\n\r\n if (prevProps && !!prevProps.userContext &&\r\n prevProps.userContext.isLoginInProgress && !this.props.userContext.isLoginInProgress) {\r\n this._silentLoginStatus = SilentLoginStatus.Ended;\r\n }\r\n\r\n if (prevProps.loading && !this.props.loading) {\r\n this._preRequisitesLoadCompleted = true;\r\n }\r\n\r\n if ((this._silentLoginStatus === SilentLoginStatus.Skipped || this._silentLoginStatus === SilentLoginStatus.Ended) &&\r\n this._preRequisitesLoadCompleted &&\r\n !this.state.meetingContext &&\r\n !this.state.error) {\r\n this.loadConversation();\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n const conversation = this.state.meetingContext ? this.state.meetingContext.conversation : undefined;\r\n const isLoading = this.props.loading || this.state.loadingConversation;\r\n return \r\n { !!this.state.launcherKey && conversation && }\r\n { (ariaContext) => {\r\n if (isLoading) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n }\r\n }\r\n ;\r\n }\r\n\r\n private getLoginView = () => {\r\n const useUnifiedView = this.determineIsItUnifiedView(this.props.ecsSettings.useUnifiedView);\r\n const meetNowSettings = getMeetNowSettings();\r\n if (useUnifiedView) {\r\n return ;\r\n }\r\n\r\n const threadId = this.state.meetingContext && this.state.meetingContext.conversation ? this.state.meetingContext.conversation.resource : undefined;\r\n if (deviceType !== DeviceTypes.Mobile || threadId === undefined) {\r\n return ;\r\n } else {\r\n const legacyMobileFlowView =\r\n ;\r\n if (canJoinOnWeb && !!this.props.ecsSettings.useNewMobileJoinFlow) {\r\n try {\r\n if (meetNowSettings) {\r\n // For supported mobile browsers, attempt to go straight to a call if we didn't deep-link into the app already\r\n // (since most likely, the app is not installed on the device, or the user pasted the link in the browser)\r\n handleJoin(meetNowSettings, {\r\n action: 'joinmeetnow',\r\n flowId: logger.getCorrelationId(),\r\n id: '',\r\n resource: threadId,\r\n shortId: this._getShortIdFromUrl(),\r\n }, this.props.userContext?.skypetoken, true).catch((err) => {\r\n logger.error(err);\r\n this.setState({\r\n error: err,\r\n });\r\n });\r\n return null;\r\n } else {\r\n return legacyMobileFlowView;\r\n }\r\n } catch (err) {\r\n logger.error(err);\r\n return legacyMobileFlowView;\r\n }\r\n } else {\r\n // For unsupported mobile browsers, fallback to old mobile join page allowing users to \"Download Skype\"\r\n return legacyMobileFlowView;\r\n }\r\n }\r\n }\r\n\r\n private determineIsItUnifiedView(unifiedViewEcsSettings: boolean) {\r\n return (unifiedViewEcsSettings && deviceType === DeviceTypes.Desktop);\r\n }\r\n\r\n private loadConversation = () => {\r\n const shortId = this._getShortIdFromUrl();\r\n\r\n if (this.props.userContext) {\r\n if (this.props.ecsSettings.useMeetingsApi) {\r\n this.loadConversationFromMeetingsApi(shortId);\r\n } else {\r\n this.loadConversationFromHuddleApi(shortId);\r\n }\r\n }\r\n }\r\n\r\n private loadConversationFromHuddleApi(shortId: string) {\r\n HuddleApiClient.getConversation({\r\n shortId,\r\n type: AppIds.Meetings,\r\n }).then((conversation) => {\r\n this.setState({\r\n loadingConversation: false,\r\n meetingContext: {\r\n conversation,\r\n shortId,\r\n },\r\n });\r\n logger.initCommonProperty({ key: CommonProperty.ThreadId, value: conversation.resource, piiKind: AWTPiiKind.GenericData });\r\n }).catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.ShortIdFromUrl, response, 'Get conversation details');\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n private loadConversationFromMeetingsApi(shortId: string) {\r\n MeetingsApiClient.getConversation({\r\n shortId,\r\n type: AppIds.Meetings,\r\n }, this.props.ecsSettings.maxRetries).then((conversation) => {\r\n this.setState({\r\n loadingConversation: false,\r\n meetingContext: {\r\n conversation,\r\n shortId,\r\n },\r\n });\r\n logger.initCommonProperty({ key: CommonProperty.ThreadId, value: conversation.resource, piiKind: AWTPiiKind.GenericData });\r\n }).catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.ShortIdFromUrl, response, 'Get conversation details');\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n private _getShortIdFromUrl(): string {\r\n return UrlHelper.getShortIdFromUrl();\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n logger.sessionFinished({completionType: 'LaunchSkypeNowButton'});\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","import { AWTEventPriority, AWTPiiKind, AWTPropertyType } from '@aria/webjs-sdk';\r\nimport config from 'config';\r\nimport curry from 'lodash/curry';\r\nimport { CookieHelper } from '../helpers/CookieHelper';\r\nimport { CommonProperty, logger } from '../helpers/LoggerHelper';\r\nimport { doPostRedirect } from '../helpers/RedirectHelper';\r\nimport { SilentLoginResult } from '../helpers/SilentLoginHelper';\r\nimport { getMsaCidHexFromSkypeToken, getSkypeIdFromSkypeToken } from '../helpers/SkypeTokenHelper';\r\nimport { UrlHelper } from '../helpers/UrlHelper';\r\nimport { ConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport {\r\n CreateMeetingServiceModel,\r\n MeetnowGuestServiceModel,\r\n WebClientRedirectParams,\r\n} from '../models/GuestUserServiceModel';\r\nimport { AppIds } from '../models/SharedTypes';\r\nimport MeetingsApiClient from '../rest/MeetingsApiClient';\r\nimport { triggerFallbackFlow } from './FallbackFlow';\r\nimport { IMeetNowSettings } from './MeetNowSettings';\r\n\r\nexport const getShortIdFromJoinLink = (joinLink: string): string => joinLink.split('/').pop() || '';\r\n\r\nexport const getSource = () => {\r\n const source = UrlHelper.getQueryParameter('source');\r\n return source ? `${source}` : undefined;\r\n};\r\n\r\nexport const logShortIdAndThreadId = (meeting: CreateMeetingServiceModel): CreateMeetingServiceModel => {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ShortId,\r\n value: getShortIdFromJoinLink(meeting.joinLink),\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n logger.initCommonProperty({\r\n key: CommonProperty.ThreadId,\r\n value: meeting.threadId,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n\r\n return meeting;\r\n};\r\n\r\nexport const logUserId = (meeting: MeetnowGuestServiceModel): MeetnowGuestServiceModel => {\r\n logger.addSkypeIdAndMsaCidHexCommonProperties(meeting.skypetoken, true);\r\n\r\n return meeting;\r\n};\r\n\r\nexport const createConversationServiceModel = (meeting: CreateMeetingServiceModel): ConversationServiceModel => {\r\n return {\r\n shortId: getShortIdFromJoinLink(meeting.joinLink),\r\n resource: meeting.threadId,\r\n id: '',\r\n flowId: '',\r\n action: '',\r\n };\r\n};\r\n\r\nexport const createGuestMeeting = (settings: IMeetNowSettings, source?: string) => {\r\n return MeetingsApiClient.createGuestMeeting({ title: settings.DefaultMeetingTitle, source }, settings.MeetNowEdgeNumberOfFetchRetries);\r\n};\r\n\r\nexport const createMeetnowGuest = (settings: IMeetNowSettings, source?: string) => {\r\n const localizedGuestDefaultName = document.getElementById('meetnowContainer')?.getAttribute('data-guest-user-localized-text') ?? 'Guest user';\r\n return MeetingsApiClient.meetnowGuest({\r\n displayName: localizedGuestDefaultName,\r\n source,\r\n }, settings.MeetNowEdgeNumberOfFetchRetries);\r\n};\r\n\r\nexport const createAuthenticatedMeeting = (settings: IMeetNowSettings, loginResult: SilentLoginResult, source?: string) => {\r\n return MeetingsApiClient\r\n .createAuthenticatedMeeting({ title: settings.DefaultMeetingTitle, SkypeToken: loginResult.skypetoken, source }, settings.MeetNowEdgeNumberOfFetchRetries);\r\n};\r\n\r\nexport const getThreadId = curry((settings: IMeetNowSettings, shortId: string) => {\r\n const params = {\r\n shortId,\r\n type: AppIds.Meetings,\r\n };\r\n\r\n return MeetingsApiClient\r\n .getConversation(params, settings.MeetNowEdgeNumberOfFetchRetries)\r\n .then((conversion) => {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ThreadId,\r\n value: conversion.resource,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n return conversion;\r\n })\r\n .then((conversion) => ({ shortId, ...conversion }));\r\n});\r\n\r\nexport const buildWebClientRedirectParamsForAuthenticatedFlow =\r\n curry((loginResult: SilentLoginResult, conversationServiceModel: ConversationServiceModel): WebClientRedirectParams => {\r\n return {\r\n threadId: conversationServiceModel.resource,\r\n shortId: conversationServiceModel.shortId,\r\n skypetoken: loginResult.skypetoken,\r\n skypeId: getSkypeIdFromSkypeToken(loginResult.skypetoken) || '',\r\n };\r\n });\r\n\r\nexport const buildWebClientRedirectParamsFromMeetnowGuestServiceModel = (meetnowGuestServiceModel: MeetnowGuestServiceModel): WebClientRedirectParams => {\r\n return {\r\n skypetoken: meetnowGuestServiceModel.skypetoken,\r\n skypeId: meetnowGuestServiceModel.skypeId,\r\n threadId: meetnowGuestServiceModel.threadId,\r\n shortId: getShortIdFromJoinLink(meetnowGuestServiceModel.joinLink),\r\n };\r\n};\r\nexport const redirectToSkypeClient = curry((\r\n settings: IMeetNowSettings,\r\n completionType: string,\r\n action: string,\r\n isNewJoinFlowFromJoinLink: boolean,\r\n webClientRedirectParams: WebClientRedirectParams): void => {\r\n const params = {\r\n skypetoken: webClientRedirectParams.skypetoken,\r\n expires_in: 24 * 3600,\r\n skypeid: webClientRedirectParams.skypeId,\r\n state: CookieHelper.getCookie(config.cookies.csrf).singleValue,\r\n msacidhex: getMsaCidHexFromSkypeToken(webClientRedirectParams.skypetoken) || '',\r\n };\r\n\r\n logger.sessionFinished({ completionType }, AWTEventPriority.High);\r\n\r\n const queryParams = `action=${action}&${buildRedirectQueryParameters(settings.MeetNowEdgeAllowedQueryParameters, logger.getCorrelationId(), isNewJoinFlowFromJoinLink)}`;\r\n doPostRedirect(`${UrlHelper.getWebClientUrl({ threadId: webClientRedirectParams.threadId })}?${queryParams}`, params);\r\n});\r\n\r\nexport const buildRedirectQueryParameters = (allowedParameters: string[], fallbackCorrelationId: string, isNewJoinFlowFromJoinLink = false): string => {\r\n const params = UrlHelper.getAllowedQueryParameters(allowedParameters);\r\n\r\n if (!params.find((param) => param.key === 'correlationId')) {\r\n params.push({ key: 'correlationId', value: fallbackCorrelationId });\r\n }\r\n\r\n if (isNewJoinFlowFromJoinLink) {\r\n params.push({ key: 'source', value: 'NewJoinLinkFlow' });\r\n }\r\n\r\n return params\r\n .map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`)\r\n .join('&');\r\n};\r\n\r\nexport const processMeetNowEdgeGuestRequest = (settings: IMeetNowSettings): void => {\r\n createMeetnowGuest(settings, getSource())\r\n .then(logShortIdAndThreadId)\r\n .then(logUserId)\r\n .then(buildWebClientRedirectParamsFromMeetnowGuestServiceModel)\r\n .then(redirectToSkypeClient(settings, 'MeetNowEdgeIntegration', 'createmeetnow', false))\r\n .catch((error) => triggerFallbackFlow(error, 'processMeetNowEdgeGuestRequest failure'));\r\n};\r\n\r\nexport const processMeetNowEdgeAuthenticatedRequest = (settings: IMeetNowSettings, loginResult: SilentLoginResult): void => {\r\n createAuthenticatedMeeting(settings, loginResult, getSource())\r\n .then(logShortIdAndThreadId)\r\n .then(createConversationServiceModel)\r\n .then(buildWebClientRedirectParamsForAuthenticatedFlow(loginResult))\r\n .then(redirectToSkypeClient(settings, 'MeetNowEdgeIntegration', 'createmeetnow', false))\r\n .catch((error) => triggerFallbackFlow(error, 'processMeetNowEdgeAuthenticatedRequest failure'));\r\n};\r\n","import Config from 'config';\r\nimport { logger } from '../helpers/LoggerHelper';\r\n\r\nexport const triggerFallbackFlow = (error: Error, reason: string) => {\r\n logger.init(Config.logging.ariaTenant, 'meetnow_edge_');\r\n logger.meetNowFallbackFlow({ message: error.message, reason });\r\n\r\n showErrorMessage();\r\n handleReloadButton();\r\n handleNavigateToWebClientButton();\r\n};\r\n\r\nconst showErrorMessage = () => {\r\n const pageTitle = document.querySelector('.splashScreen');\r\n if (pageTitle) {\r\n pageTitle.style.display = 'none';\r\n }\r\n\r\n const fallbackSection = document.getElementById('fallbackSection');\r\n if (fallbackSection) {\r\n fallbackSection.style.display = 'block';\r\n }\r\n};\r\n\r\nconst handleReloadButton = () => {\r\n const reloadPageButton = document.getElementById('reloadPageButton');\r\n if (reloadPageButton) {\r\n reloadPageButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n logger.action({ name: 'reloadFallback' });\r\n window.location.reload();\r\n });\r\n }\r\n};\r\n\r\nconst handleNavigateToWebClientButton = () => {\r\n const goToSkypeButton = document.getElementById('goToSkypeButton');\r\n if (goToSkypeButton) {\r\n goToSkypeButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n logger.action({ name: 'goToSkypeFallback' });\r\n window.location.href = Config.urls.app.s4lWeb({});\r\n });\r\n }\r\n};\r\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","import * as React from 'react';\r\n\r\nexport interface AriaMessage {\r\n assertive: boolean;\r\n text: string;\r\n}\r\n\r\nexport interface AriaContext {\r\n message: AriaMessage;\r\n announce: (message: AriaMessage) => void;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as AriaContext);\r\n\r\nexport const AriaContextProvider = context.Provider;\r\n\r\nexport const AriaContextConsumer = context.Consumer;\r\n","import * as React from 'react';\r\nimport { BotInfoServiceModel } from '../../models/BotServiceModel';\r\n\r\nexport interface BotsContext {\r\n botInfo: BotInfoServiceModel;\r\n botId: string;\r\n isAddedAsContact: boolean;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const BotsContextProvider = context.Provider;\r\n\r\nexport const BotsContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Icon, Layout, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { ConfigContext, ConfigContextConsumer } from 'src/ts/contexts/ConfigContext';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { MeetingContext, MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../../contexts/StackNavigationContext';\r\nimport { UserContextConsumer } from '../../../contexts/UserContext';\r\nimport { CookieHelper } from '../../../helpers/CookieHelper';\r\nimport { UserProfile } from '../../../models/ProfileServiceModel';\r\nimport { GuestLogin } from './GuestLogin';\r\n\r\nconst secondaryButtonTransparentStyle = { backgroundColor: 'transparent', color: 'white' };\r\nexport class LoginMethod extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n { this._renderTitle() }\r\n { this._renderActions() }\r\n
;\r\n }\r\n\r\n private _renderTitle() {\r\n return { (userContext) =>\r\n \r\n { userContext.profile ?\r\n localizer.getString('Login.txt_sign_in_with_title')\r\n :\r\n localizer.getString('hdr_welcome') }\r\n \r\n };\r\n }\r\n\r\n private _renderActions() {\r\n return { (userContext) =>\r\n
\r\n { userContext.profile ?\r\n this._renderAuthenticatedActions(userContext.profile) :\r\n this._renderUnauthenticatedActions() }\r\n
\r\n }
;\r\n }\r\n\r\n private _renderAuthenticatedActions(userProfile: UserProfile) {\r\n return { (meetingContext) => meetingContext &&\r\n <>\r\n { (configContext) =>\r\n this._renderAccounts(userProfile, meetingContext, configContext) }\r\n \r\n { this._renderWhatsThis() }\r\n \r\n };\r\n }\r\n\r\n private _renderAccounts(userProfile: UserProfile, meetingContext: MeetingContext, configContext: ConfigContext) {\r\n const email: string | undefined = userProfile.emails && userProfile.emails.length ?\r\n userProfile.emails[0] : undefined;\r\n const name: string = userProfile.firstname && userProfile.lastname ?\r\n `${ userProfile.firstname } ${ userProfile.lastname }` : userProfile.username;\r\n const avatarImage = {\r\n src: userProfile.avatarUrl || `${ configContext.basePath }/images/avatar.jpg`,\r\n styles: { width: '100%', height: '100%', objectFit: 'cover' },\r\n };\r\n\r\n const currentAccountAvatar = ;\r\n const currentAccountText = { name } }\r\n end={ { email } } />;\r\n const currentAccount = ;\r\n\r\n const otherAccountIcon = ;\r\n const otherAccountText = { localizer.getString('Login.btn_use_other_account') } } />;\r\n const otherAccount = ;\r\n\r\n return
\r\n \r\n
;\r\n }\r\n\r\n private _joinOnWebAsGuest = (stackNavigationContext: StackNavigationContext) => {\r\n return () => {\r\n logger.action({ name: 'join-as-guest' });\r\n logger.sessionIntermediateStep({eventType: 'JoinOnWebAsGuestSecondClickOldView'});\r\n stackNavigationContext.push(, { eventViewName: 'guest-login' });\r\n };\r\n }\r\n\r\n private _joinOnWebOtherAccount = (meetingContext: MeetingContext) => {\r\n return () => {\r\n logger.action({ name: 'join-logout' });\r\n logger.sessionFinished({completionType: 'JoinOnWebOtherAccount'});\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource });\r\n window.location.href = config.urls.app.logout(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n };\r\n }\r\n\r\n private _joinOnWeb = (meetingContext: MeetingContext) => {\r\n return () => {\r\n logger.action({ name: 'join-login' });\r\n logger.sessionFinished({completionType: 'JoinOnWeb'});\r\n window.location.assign(UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }));\r\n };\r\n }\r\n\r\n private _renderUnauthenticatedActions() {\r\n return <>\r\n { (stackNavigationContext) =>\r\n \r\n }\r\n { (meetingContext) => meetingContext &&\r\n <>\r\n \r\n { this._renderWhatsThis() }\r\n \r\n }\r\n ;\r\n }\r\n\r\n private _renderWhatsThis() {\r\n return \r\n { localizer.getString('Login.txt_use_ms_account') }\r\n  \r\n logger.action({ name: 'what-is-msa' }) }\r\n target='_blank'\r\n aria-label={ localizer.getString('Login.lnk_a11y_what_is_ms_account') } >\r\n { localizer.getString('Login.lnk_what_is_ms_account') }\r\n \r\n ;\r\n }\r\n}\r\n","export interface SkypeTokenContentHeader {\r\n alg: string;\r\n kid: string;\r\n typ: string;\r\n}\r\n\r\nexport interface SkypeTokenContentPayload {\r\n aat: number;\r\n cid: string;\r\n csi: string;\r\n exp: number;\r\n iat: number;\r\n scp: number;\r\n skypeid: string;\r\n}\r\n\r\nexport interface SkypeTokenContent {\r\n header: SkypeTokenContentHeader;\r\n payload: SkypeTokenContentPayload;\r\n signature: string;\r\n}\r\n\r\nexport function parseSkypeToken(token: string | undefined): SkypeTokenContent | undefined {\r\n if (!token) {\r\n return;\r\n }\r\n\r\n const parts = token.split('.');\r\n if (parts.length !== 3) {\r\n return;\r\n }\r\n\r\n try {\r\n const header: SkypeTokenContentHeader = JSON.parse(atob(parts[0]));\r\n const payload: SkypeTokenContentPayload = JSON.parse(atob(parts[1]));\r\n const signature = parts[2];\r\n\r\n if (!payload.skypeid) {\r\n return;\r\n }\r\n\r\n return { header, payload, signature };\r\n } catch (e) {\r\n return;\r\n }\r\n}\r\n\r\nexport function getSkypeIdFromSkypeToken(token: string | undefined): string | undefined {\r\n const tokenContent = parseSkypeToken(token);\r\n if (tokenContent) {\r\n return tokenContent.payload.skypeid;\r\n }\r\n\r\n return;\r\n}\r\n\r\nexport function getMsaCidHexFromSkypeToken(token: string | undefined): string | undefined {\r\n const tokenContent = parseSkypeToken(token);\r\n if (tokenContent && tokenContent.payload && tokenContent.payload.cid) {\r\n return tokenContent.payload.cid.toUpperCase();\r\n }\r\n\r\n return;\r\n}\r\n","import * as React from 'react';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { ProfilesContext, ProfilesContextProvider } from '../../contexts/profiles/ProfilesContext';\r\nimport { displayableErrors } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { Launcher } from './Launcher';\r\nimport { ProfileView } from './ProfileView';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n profilesContext: ProfilesContext;\r\n error?: Error | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n static getSkypeIdFromUrl() {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n\r\n return pathParts.pop();\r\n }\r\n\r\n constructor(props: ARootViewProps) {\r\n super(props);\r\n\r\n const skypeId = RootView.getSkypeIdFromUrl();\r\n if (!skypeId) {\r\n throw displayableErrors.Generic;\r\n }\r\n\r\n logger.initCommonProperty({\r\n key: CommonProperty.Profile,\r\n value: skypeId,\r\n });\r\n\r\n this.state = {\r\n launcherKey: 0,\r\n profilesContext: { skypeId },\r\n };\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n return \r\n { !!this.state.launcherKey && }\r\n { (ariaContext) =>\r\n }\r\n initialViewProps={ { eventViewName: 'profile-view' } } />\r\n }\r\n ;\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","import { AWTEventPriority } from '@aria/webjs-sdk';\r\nimport * as React from 'react';\r\nimport { AriaMessage } from './AriaContext';\r\n\r\nexport interface StackNavigationContext {\r\n views: StackView[];\r\n animating: boolean;\r\n push: (view: React.ReactNode, properties?: Partial) => void;\r\n pop: () => void;\r\n pushRoot: (view: React.ReactNode, properties?: Partial) => void;\r\n popRoot: () => void;\r\n pushParent: (view: React.ReactNode, properties?: Partial) => void;\r\n popParent: () => void;\r\n}\r\n\r\nexport interface StackView {\r\n view: React.ReactNode;\r\n properties: StackViewProperties;\r\n}\r\n\r\nexport interface StackAnimation {\r\n type: AnimationType;\r\n duration: number;\r\n}\r\n\r\nexport interface StackViewProperties {\r\n type: ViewType;\r\n animation: StackAnimation;\r\n ariaMessage?: AriaMessage;\r\n eventViewName?: string;\r\n eventPriority?: AWTEventPriority;\r\n}\r\n\r\nexport enum ViewType {\r\n Fullscreen, Overlay,\r\n}\r\n\r\nexport enum AnimationType {\r\n None = 'none',\r\n Fade = 'fade',\r\n FadeOut = 'fadeOut',\r\n Left = 'left',\r\n LeftOut = 'leftOut',\r\n Slide = 'slide',\r\n SlideOut = 'slideOut',\r\n}\r\n\r\nexport const defaultSlideAnimation: StackAnimation = { type: AnimationType.Slide, duration: 0.2 };\r\nexport const defaultFadeAnimation: StackAnimation = { type: AnimationType.Fade, duration: 0.5 };\r\n\r\nexport const defaultStackViewProperties: StackViewProperties = {\r\n type: ViewType.Fullscreen,\r\n animation: { type: AnimationType.None, duration: 0 },\r\n};\r\n\r\n// tslint:disable-next-line:no-empty\r\nconst noop = () => { };\r\nconst context = React.createContext({\r\n animating: false,\r\n views: [],\r\n push: noop,\r\n pop: noop,\r\n pushRoot: noop,\r\n popRoot: noop,\r\n pushParent: noop,\r\n popParent: noop,\r\n});\r\nexport const StackNavigationContextProvider = context.Provider;\r\n\r\nexport const StackNavigationContextConsumer = context.Consumer;\r\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","\"use strict\";\r\n/**\r\n* Config.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS global configuration\r\n*/\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Config = /** @class */ (function () {\r\n function Config() {\r\n }\r\n Config.prototype.initialize = function (config) {\r\n if (this._config) {\r\n throw 'ECS Configuration already initialized';\r\n }\r\n this._config = config;\r\n };\r\n Config.prototype.getConfig = function () {\r\n if (!this._config) {\r\n throw 'ECS Configuration not yet initialized';\r\n }\r\n return this._config;\r\n };\r\n Config.prototype.setConfigsToFetch = function (configsToFetch) {\r\n // Create a new config object since it's fully read-only\r\n if (!this._config) {\r\n throw 'ECS Configuration not yet initialized';\r\n }\r\n this._config = __assign({}, this._config, { configsToFetch: configsToFetch });\r\n };\r\n Config.prototype.setFetchTimeout = function (fetchTimeout) {\r\n // Create a new config object since it's fully read-only\r\n if (!this._config) {\r\n throw 'ECS Configuration not yet initialized';\r\n }\r\n this._config = __assign({}, this._config, { fetchTimeout: fetchTimeout });\r\n };\r\n return Config;\r\n}());\r\nexports.default = Config;\r\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","\"use strict\";\r\n/**\r\n* RestClient.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Client helper for accessing ECS.\r\n*/\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar simplerestclients_1 = require(\"simplerestclients\");\r\nvar SyncTasks = require(\"synctasks\");\r\nvar Models_1 = require(\"./Models\");\r\nvar TelemetryEvents = require(\"./TelemetryEvents\");\r\nvar ForceFetchTimeout = (48 * 60 * 60 * 1000); // Fetch every 48 hours at a minimum\r\nvar EcsExpirationFallbackDuration = 30 * 60 * 1000; // 30 minutes\r\nvar EcsFetchDurationLimit = (365 * 24 * 60 * 60 * 1000); // fetch duration beyond 1 year is considered invalid\r\nvar EcsMinFetchTimeout = (30 * 1000); // Fail-safe lower bound for the fetchTimeout config parameter\r\nvar lastResponseTime;\r\nvar currentRequestTime;\r\n// Fetches the ECS configuration from a specific ECS endpoint and project\r\nvar EcsFetcher = /** @class */ (function (_super) {\r\n __extends(EcsFetcher, _super);\r\n function EcsFetcher(url, _config, _skypeTokenData, _appActiveData, _allowBackgroundFetchData, _etag, _getUserConfig, parameters) {\r\n var _this = _super.call(this, url) || this;\r\n _this._config = _config;\r\n _this._skypeTokenData = _skypeTokenData;\r\n _this._appActiveData = _appActiveData;\r\n _this._allowBackgroundFetchData = _allowBackgroundFetchData;\r\n _this._etag = _etag;\r\n _this._getUserConfig = _getUserConfig;\r\n _this._apiPath = '/config/v1/' + _this._config.getConfig().clientName + '/' + _this._config.getConfig().clientVersion;\r\n if (parameters) {\r\n var paramList = Object.keys(parameters).map(function (key) {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(parameters[key].toString());\r\n });\r\n if (paramList) {\r\n _this._apiPath += '?' + paramList.join('&');\r\n }\r\n }\r\n return _this;\r\n }\r\n EcsFetcher.prototype._blockRequestUntil = function (options) {\r\n var _this = this;\r\n if (this._getUserConfig && !this._skypeTokenData.isSkypeTokenValid()) {\r\n console.log('ECS - Delaying User config fetch until we have a valid SkypeToken');\r\n }\r\n if (!this._appActiveData.isAppActive() && !this._allowBackgroundFetchData.isBackgroundFetchAllowed()) {\r\n var configType = this._getUserConfig ? 'User config' : 'config';\r\n console.log(\"ECS - Delaying \" + configType + \" fetch until the app is active (or background fetch is allowed)\");\r\n }\r\n return SyncTasks.race([\r\n this._appActiveData.waitForAppActive(),\r\n this._allowBackgroundFetchData.waitForBackgroundFetchAllowed()\r\n ]).then(function () {\r\n if (_this._getUserConfig) {\r\n return _this._skypeTokenData.waitForValidSkypeToken();\r\n }\r\n }).then(function () {\r\n currentRequestTime = Date.now();\r\n });\r\n };\r\n EcsFetcher.prototype._getHeaders = function () {\r\n var headers = {};\r\n if (this._etag) {\r\n headers['If-None-Match'] = this._etag;\r\n }\r\n if (this._getUserConfig) {\r\n headers['Authorization'] = this._skypeTokenData.getSkypeToken();\r\n }\r\n return headers;\r\n };\r\n EcsFetcher.prototype.getConfig = function () {\r\n // Make sure the timeout is undefined, 0, or at least EcsMinFetchTimeout\r\n var timeout = this._config.getConfig().fetchTimeout;\r\n if (timeout !== undefined) {\r\n if (timeout < 0) {\r\n timeout = 0;\r\n }\r\n else if (timeout > 0 && timeout < EcsMinFetchTimeout) {\r\n timeout = EcsMinFetchTimeout;\r\n }\r\n }\r\n return _super.prototype.performApiGetDetailed.call(this, this._apiPath, { timeout: timeout });\r\n };\r\n return EcsFetcher;\r\n}(simplerestclients_1.GenericRestClient));\r\n// Main ECS client. Supports alternate ECS backend URLs and configuration fetch retries.\r\nvar EcsClient = /** @class */ (function () {\r\n function EcsClient(_config, _skypeTokenData, _appActiveData, _allowBackgroundFetchData, _telemetryManager) {\r\n this._config = _config;\r\n this._skypeTokenData = _skypeTokenData;\r\n this._appActiveData = _appActiveData;\r\n this._allowBackgroundFetchData = _allowBackgroundFetchData;\r\n this._telemetryManager = _telemetryManager;\r\n this._ecsFailureBackoffTimer = new simplerestclients_1.ExponentialTime(1000, 300000);\r\n this._cacheMaxAgeRegex = /.*max-age=(\\d+).*/ig;\r\n this._serverIndex = NaN;\r\n }\r\n EcsClient.prototype.getConfig = function (oldConfig, userConfig, parameters) {\r\n var _this = this;\r\n var urls = this._config.getConfig().hosts;\r\n // Randomly select the ECS server url to issue the first request against and store the index\r\n if (isNaN(this._serverIndex) || this._serverIndex > urls.length - 1) {\r\n this._serverIndex = Math.floor(Math.random() * urls.length);\r\n }\r\n if (!urls || !urls.length) {\r\n return SyncTasks.Rejected(new Error('no configuration service endpoint'));\r\n }\r\n var deferred = SyncTasks.Defer();\r\n var fetchAttempts = 0;\r\n // Keep trying to fetch config (w/ Exponential Backoff) until it's fetched succesfully\r\n var callConfigServer = function () {\r\n var etag = oldConfig && oldConfig.eTag ? oldConfig.eTag : undefined;\r\n var fetcher = new EcsFetcher(urls[_this._serverIndex], _this._config, _this._skypeTokenData, _this._appActiveData, _this._allowBackgroundFetchData, etag, userConfig, parameters);\r\n fetchAttempts++;\r\n fetcher.getConfig().then(function (res) {\r\n var eTagHeader = res.headers['etag'];\r\n var expirationHeader = res.headers['expires'];\r\n if (res.body && res.body.Headers) {\r\n // If the service headers are missing, try to get them from the response body\r\n if (!eTagHeader) {\r\n eTagHeader = res.body.Headers.ETag;\r\n }\r\n if (!expirationHeader) {\r\n expirationHeader = res.body.Headers.Expires;\r\n }\r\n }\r\n lastResponseTime = Date.now();\r\n // As per ECS guidance, if ETag or expiration are missing, treat as a failure.\r\n if (!eTagHeader || !expirationHeader) {\r\n console.warn('ECS - Service returned an empty ETag or Expiration header: ' +\r\n JSON.stringify(res));\r\n return SyncTasks.Rejected();\r\n }\r\n // Override to deal with client clock skew.\r\n var updatedExpiration = new Date(_this._calculateExpirationDate(res.headers)).getTime();\r\n var ecsData;\r\n if (res.statusCode === 304 && oldConfig) {\r\n // Etag matched, so no change. Use old config values and continue as normal.\r\n // Use a shallow clone since we don't need to make a full clone of the config data.\r\n ecsData = __assign({}, oldConfig);\r\n ecsData.eTag = eTagHeader;\r\n ecsData.expiration = updatedExpiration;\r\n ecsData.cacheUpdateTime = lastResponseTime;\r\n ecsData.lastFetchTokenHash = _this._skypeTokenData.getSkypeTokenHash(res.requestHeaders['Authorization']);\r\n }\r\n else {\r\n if (typeof res.body !== 'object') {\r\n console.warn('ECS - Service returned invalid response ' + JSON.stringify(res));\r\n return SyncTasks.Rejected();\r\n }\r\n // Take from response\r\n ecsData = {\r\n config: res.body,\r\n configType: userConfig ? Models_1.EcsConfigType.User : Models_1.EcsConfigType.Default,\r\n eTag: eTagHeader,\r\n expiration: updatedExpiration,\r\n cacheUpdateTime: currentRequestTime,\r\n lastFetchTokenHash: _this._skypeTokenData.getSkypeTokenHash(res.requestHeaders['Authorization']),\r\n appVersion: _this._config.getConfig().clientVersion\r\n };\r\n }\r\n var fetchDelayMs = lastResponseTime - currentRequestTime;\r\n var fetchDurationValid = (fetchDelayMs < 0 || fetchDelayMs > EcsFetchDurationLimit) ? false : true;\r\n var cacheAge = oldConfig ? (Date.now() - oldConfig.cacheUpdateTime) : 0;\r\n _this._telemetryManager.sendTelemetryEvent(new TelemetryEvents.EcsConfigFetchResponse(fetchDelayMs, res.statusCode, fetchAttempts, _this._skypeTokenData.isSkypeTokenValid(), urls[_this._serverIndex], eTagHeader, fetchDurationValid, etag ? true : false, JSON.stringify(res).length, cacheAge, (oldConfig && oldConfig.expiration - Date.now() > 0) ? false : true, currentRequestTime, lastResponseTime));\r\n _this._ecsFailureBackoffTimer.reset();\r\n deferred.resolve(ecsData);\r\n }).catch(function () {\r\n // Backoff and Switch ECS servers if possible.\r\n _this._serverIndex = (_this._serverIndex + 1) % (urls.length);\r\n setTimeout(function () {\r\n callConfigServer();\r\n }, _this._ecsFailureBackoffTimer.getTimeAndCalculateNext());\r\n });\r\n };\r\n callConfigServer();\r\n return deferred.promise();\r\n };\r\n EcsClient.prototype._calculateExpirationDate = function (headers) {\r\n var forceFetchTime = Date.now() + ForceFetchTimeout;\r\n if (headers['date'] && headers['expires']) {\r\n // Calculate client clock skew\r\n var responseDate = new Date(headers['date']).getTime();\r\n var clockSkew = Date.now() - responseDate;\r\n // Ensure we don't do Math.min(forceFetchTime, NaN) => NaN\r\n var headerExpirationTime = new Date(headers['expires']).getTime();\r\n if (isNaN(headerExpirationTime)) {\r\n return forceFetchTime;\r\n }\r\n return Math.min(forceFetchTime, headerExpirationTime + clockSkew);\r\n }\r\n // This is a fix for browsers that don't implement Access-Control-Expose-Headers header properly\r\n // and Date header is not propagated (IE, Edge). We take the value from the cache-control\r\n // header (seconds) and add it to the client's current time.\r\n var match = this._cacheMaxAgeRegex.exec(headers['cache-control']);\r\n this._cacheMaxAgeRegex.lastIndex = 0;\r\n if (match && match.length === 2) {\r\n return Math.min(forceFetchTime, Date.now() + (Number(match[1]) * 1000));\r\n }\r\n // Backup - send next request in 30 minutes.\r\n return Date.now() + EcsExpirationFallbackDuration;\r\n };\r\n return EcsClient;\r\n}());\r\nexports.default = EcsClient;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Header, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { InviteContext, InviteContextConsumer } from 'src/ts/contexts/invites/InviteContext';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { CookieHelper } from '../../helpers/CookieHelper';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Header as PageHeader } from '../common/Header';\r\nimport { Padder } from '../common/Padder';\r\n\r\ninterface InviteViewProps {\r\n onLaunchClick: () => void;\r\n}\r\n\r\nexport class InviteView extends React.PureComponent {\r\n\r\n renderAvatar() {\r\n return { (inviteContext) => inviteContext &&\r\n \r\n };\r\n }\r\n\r\n renderTitle() {\r\n return { (inviteContext) => inviteContext &&\r\n
{ localizer.getString('txt_off_skype_invites_join_skype', { user_name: inviteContext.invite.inviterName }) }
\r\n }
;\r\n }\r\n\r\n renderDesktopBody() {\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n return null;\r\n }\r\n\r\n return \r\n { localizer.getString('Meetings.txt_join_meeting_description') } \r\n { { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n }\r\n ;\r\n }\r\n\r\n renderControls() {\r\n if (deviceType === DeviceTypes.Mobile) {\r\n return ;\r\n }\r\n\r\n return { (inviteContext) => inviteContext &&\r\n <>\r\n { canJoinOnWeb && }\r\n\r\n \r\n \r\n };\r\n }\r\n\r\n renderMobileBody() {\r\n if (deviceType !== DeviceTypes.Mobile) {\r\n return null;\r\n }\r\n\r\n return <>\r\n \r\n { localizer.getString('txt_launch_first_time_device') }\r\n \r\n \r\n { localizer.get('txt_launch_please_download', {\r\n download_skype: \r\n { localizer.getString('btn_launch_download_skype') }\r\n ,\r\n }) }\r\n \r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n \r\n
\r\n { this.renderAvatar() }\r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderMobileBody() }\r\n { this.renderDesktopBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _joinOnWeb = (inviteContext: InviteContext) => {\r\n return () => {\r\n logger.action({ name: 'join-login' });\r\n\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({\r\n inviteId: inviteContext.invite.longId,\r\n skypeId: inviteContext.invite.inviterSkypeId,\r\n });\r\n window.location.href = config.urls.app.login(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n };\r\n }\r\n\r\n private _downloadSkype = () => {\r\n return () => {\r\n logger.action({ name: 'download' });\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n };\r\n }\r\n}\r\n","export interface OffSkypeInviteServiceModel {\r\n readonly clientSource: string;\r\n readonly inviterName: string;\r\n readonly inviterSkypeId: string;\r\n readonly longId: string;\r\n}\r\n\r\nexport interface RawOffSkypeInviteServiceModel {\r\n readonly ClientSource: string;\r\n readonly InviterName: string;\r\n readonly InviterSkypeId: string;\r\n readonly LongId: string;\r\n}\r\n\r\nexport function transform(model: RawOffSkypeInviteServiceModel): OffSkypeInviteServiceModel {\r\n return {\r\n clientSource: model.ClientSource,\r\n inviterName: model.InviterName,\r\n inviterSkypeId: model.InviterSkypeId,\r\n longId: model.LongId,\r\n };\r\n}\r\n","import * as React from 'react';\r\nimport { Actions } from 'src/ts/models/SharedTypes';\r\n\r\nexport interface DoContext {\r\n action: Actions;\r\n skypeId: string;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const DoContextProvider = context.Provider;\r\n\r\nexport const DoContextConsumer = context.Consumer;\r\n","import { ThemeInput } from '@stardust-ui/react';\r\n\r\n// https://github.com/stardust-ui/react/blob/master/src/themes/teams/colors.ts\r\nconst colors = {\r\n 50: '#E7F2FB',\r\n 100: '#B9DAF3',\r\n 200: '#8BC1EB',\r\n 300: '#5CA9E3',\r\n 400: '#2E90DB',\r\n 500: '#0078d4',\r\n 600: '#0063AE',\r\n 700: '#004D87',\r\n 800: '#003761',\r\n 900: '#00213A',\r\n};\r\n\r\n// tslint:disable:object-literal-key-quotes\r\nconst theme: ThemeInput = {\r\n siteVariables: { // https://github.com/stardust-ui/react/tree/master/src/themes/teams/siteVariables.ts\r\n brand: colors[500],\r\n brand02: colors[900],\r\n brand04: colors[700],\r\n brand06: colors[500],\r\n brand08: colors[300],\r\n brand12: colors[200],\r\n brand14: colors[100],\r\n brand16: colors[50],\r\n brandIcon: '/images/icons/skype-logo-blue-new.png',\r\n },\r\n componentStyles: {\r\n Button: {\r\n root: {\r\n borderRadius: '6rem',\r\n ':focus': {\r\n '::after': {\r\n // tslint:disable-next-line:max-line-length\r\n borderRadius: '6rem !important', // borderRadius 3px is hardCoded in stardust https://github.com/stardust-ui/react/blob/86e896e8b21ecd22c0fdfc151e6e2562af0d6cfe/src/themes/teams/components/Button/buttonStyles.ts#L115\r\n },\r\n },\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport default theme;\r\n","import { AWTEventPriority } from '@aria/webjs-sdk';\r\nimport { ApiCallOptions as BaseApiCallOptions, GenericRestClient, WebResponse } from 'simplerestclients';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { logger } from '../helpers/LoggerHelper';\r\n\r\nexport interface EventProperties {\r\n priority?: AWTEventPriority;\r\n genericEventPath?: string; // Override default path for telemtry if it contains sensitive information\r\n customPropertiesProvider?: ((response: WebResponse) => any); // Append any custom field from response to the event\r\n}\r\n\r\nexport interface ApiCallOptions extends BaseApiCallOptions {\r\n eventProperties?: EventProperties;\r\n}\r\n\r\nconst unwrap: (resp: WebResponse) => T = (resp) => resp.body;\r\nexport class BaseRestClient extends GenericRestClient {\r\n protected _defaultOptions: ApiCallOptions = {\r\n contentType: 'application/json',\r\n acceptType: 'application/json',\r\n };\r\n\r\n performApiGet(apiPath: string, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiGetDetailed(apiPath, options).then(unwrap);\r\n }\r\n\r\n performApiGetDetailed(apiPath: string, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiGetDetailed(apiPath, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiPost(apiPath: string, objToPost: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiPostDetailed(apiPath, objToPost, options).then(unwrap);\r\n }\r\n\r\n performApiPostDetailed(apiPath: string, objToPost: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiPostDetailed(apiPath, objToPost, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiPatch(apiPath: string, objToPatch: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiPatchDetailed(apiPath, objToPatch, options).then(unwrap);\r\n }\r\n\r\n performApiPatchDetailed(apiPath: string, objToPatch: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiPatchDetailed(apiPath, objToPatch, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiPut(apiPath: string, objToPut: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiPutDetailed(apiPath, objToPut, options).then(unwrap);\r\n }\r\n\r\n performApiPutDetailed(apiPath: string, objToPut: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiPutDetailed(apiPath, objToPut, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiDelete(apiPath: string, objToDelete?: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiDeleteDetailed(apiPath, objToDelete, options).then(unwrap);\r\n }\r\n\r\n performApiDeleteDetailed(apiPath: string, objToDelete: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiDeleteDetailed(apiPath, objToDelete, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n protected networkCallback = (startTime: number, options?: ApiCallOptions): ((response: WebResponse) => void) => {\r\n const eventProperties = options && options.eventProperties;\r\n const genericEventPath = eventProperties && eventProperties.genericEventPath;\r\n const customPropertiesProvider = eventProperties && eventProperties.customPropertiesProvider;\r\n const eventPriority = eventProperties && eventProperties.priority;\r\n return (response: WebResponse) => {\r\n const endTime = new Date().getTime();\r\n const responseUrl = genericEventPath ? this._endpointUrl + genericEventPath : response.url;\r\n const eventUrl = responseUrl ? responseUrl.split('?', 1).join('') : responseUrl;\r\n const path = eventUrl ? eventUrl.replace(this._endpointUrl, '') : eventUrl;\r\n logger.network({\r\n method: response.method,\r\n responseTime: endTime - startTime,\r\n statusCode: response.statusCode,\r\n statusText: response.statusText,\r\n url: eventUrl,\r\n host: this._endpointUrl,\r\n path,\r\n custom: customPropertiesProvider ? customPropertiesProvider(response) : undefined,\r\n }, eventPriority);\r\n };\r\n }\r\n}\r\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","\"use strict\";\r\n/**\r\n* AllowBackgroundFetchData.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holder for information if background fetch is allowed\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SyncTasks = require(\"synctasks\");\r\nvar AllowBackgroundFetchData = /** @class */ (function () {\r\n function AllowBackgroundFetchData() {\r\n this._isAllowed = false;\r\n }\r\n AllowBackgroundFetchData.prototype.putBackgroundFetchAllowed = function (isAllowed) {\r\n this._isAllowed = isAllowed;\r\n if (this.isBackgroundFetchAllowed() && this._isAllowedDeferral) {\r\n var deferral = this._isAllowedDeferral;\r\n this._isAllowedDeferral = undefined;\r\n deferral.resolve(void 0);\r\n }\r\n };\r\n AllowBackgroundFetchData.prototype.isBackgroundFetchAllowed = function () {\r\n return this._isAllowed;\r\n };\r\n AllowBackgroundFetchData.prototype.waitForBackgroundFetchAllowed = function () {\r\n if (this.isBackgroundFetchAllowed()) {\r\n return SyncTasks.Resolved();\r\n }\r\n // Set up deferral to wait until background fetch is allowed\r\n if (!this._isAllowedDeferral) {\r\n this._isAllowedDeferral = SyncTasks.Defer();\r\n }\r\n return this._isAllowedDeferral.promise();\r\n };\r\n return AllowBackgroundFetchData;\r\n}());\r\nexports.default = AllowBackgroundFetchData;\r\n","import * as React from 'react';\r\n\r\nexport class LoadingView extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","import { CookieConfig } from 'config';\r\nimport { Dictionary } from '../models/SharedTypes';\r\n\r\nconst defaultValueSeparator = ':';\r\n\r\nexport class CookieHelper {\r\n\r\n /**\r\n * Get the cookie\r\n *\r\n * param {string} name\r\n *\r\n * @return {object}\r\n */\r\n static getCookie(config: CookieConfig) {\r\n return (CookieHelper.hasCookie(config) === true) ? CookieHelper.parse()[config.name] : {};\r\n }\r\n\r\n /**\r\n * Set the cookie\r\n *\r\n * @param {string}\r\n *\r\n * @return void\r\n */\r\n static setCookie(config: CookieConfig, cookieValuesObject: object ) {\r\n const now = Math.round(Date.now() / 1000); // seconds\r\n let value = cookieValuesObject as any;\r\n\r\n // We have to add TS if cookie does not exist\r\n if (CookieHelper.hasCookie(config) === false) {\r\n value.TS = now;\r\n }\r\n\r\n // we need to add modification timestamp\r\n value.TM = now;\r\n\r\n value = CookieHelper.cookieObjectToString(value);\r\n\r\n const options = [];\r\n if (config.domain) {\r\n options.push('domain=' + config.domain);\r\n }\r\n if (config.path) {\r\n options.push('path=' + config.path);\r\n }\r\n if (config.maxAge) {\r\n options.push('expires=' + CookieHelper.getExpirationDate(config.maxAge).toUTCString());\r\n }\r\n\r\n const optionsString = options.length ? ';' + options.join(';') : '';\r\n\r\n document.cookie = config.name + '=' + value + optionsString;\r\n }\r\n\r\n /**\r\n * If cookie is present\r\n *\r\n * @return boolean\r\n */\r\n static hasCookie(config: CookieConfig) {\r\n return CookieHelper.parse().hasOwnProperty(config.name);\r\n }\r\n\r\n /**\r\n * Get cookie value\r\n *\r\n * @param {string} key\r\n *\r\n * @return {string} key value\r\n */\r\n static getCookieValue(config: CookieConfig, key: string = 'singleValue') {\r\n const params = CookieHelper.getCookie(config);\r\n\r\n return params && params[key] ? params[key] : undefined;\r\n }\r\n\r\n /**\r\n * Set cookie value\r\n *\r\n * @param {string} key\r\n * @param {string} value\r\n *\r\n */\r\n static setCookieValue(config: CookieConfig, value: string, key = 'singleValue') {\r\n const params = CookieHelper.getCookie(config);\r\n params[config.key || key] = value;\r\n\r\n CookieHelper.setCookie(config, params);\r\n }\r\n\r\n /**\r\n *\r\n */\r\n static removeCookie(config: CookieConfig) {\r\n if (!CookieHelper.hasCookie(config)) {\r\n return;\r\n }\r\n\r\n CookieHelper.setCookie({ name: config.name }, {});\r\n }\r\n\r\n /**\r\n * Parse document.cookie to JSON\r\n *\r\n * @example {'SC': 'LC=en:CCY=EUR', 'SWA':'webapp'}\r\n *\r\n *\r\n * @return {object}\r\n */\r\n static parse() {\r\n if (!document.cookie) {\r\n return {};\r\n }\r\n\r\n const cookies: any = {};\r\n document.cookie.split(';').forEach((cookie) => {\r\n const separatorPos = cookie.indexOf('=');\r\n\r\n const key = cookie.substring(0, separatorPos).trim();\r\n const value = cookie.substring(separatorPos + 1).trim();\r\n cookies[key] = CookieHelper.parseCookieValues(value);\r\n });\r\n\r\n return cookies;\r\n }\r\n /**\r\n * Turns object to string\r\n *\r\n * @param {object} cookieObject\r\n * @param {string} cookieSeparator\r\n *\r\n * @return {string}\r\n */\r\n private static cookieObjectToString(cookieObject: object, cookieSeparator = defaultValueSeparator) {\r\n const cookieObjectKeys = Object.keys(cookieObject);\r\n const cookieValue: string[] = [];\r\n\r\n if (cookieObject.hasOwnProperty('singleValue')) {\r\n return (cookieObject as any).singleValue;\r\n }\r\n\r\n cookieObjectKeys.forEach((cookieObjectKey) => {\r\n cookieValue.push(cookieObjectKey + '=' + (cookieObject as any)[cookieObjectKey]);\r\n });\r\n\r\n return cookieValue.join(cookieSeparator);\r\n }\r\n\r\n /**\r\n * Parse cookie values into JSON\r\n *\r\n * @example {'LC':'en','CCY':'EUR'}\r\n *\r\n * @param {string} cookieSeparator\r\n *\r\n * @return {object}\r\n */\r\n private static parseCookieValues(cookieValue: string, cookieSeparator = defaultValueSeparator) {\r\n const params: Dictionary = {};\r\n\r\n cookieValue.split(cookieSeparator).forEach((splitCookieValue) => {\r\n let splitParams: string[];\r\n if (splitCookieValue.indexOf('=') !== -1) {\r\n splitParams = splitCookieValue.split('=');\r\n } else {\r\n splitParams = ['singleValue', splitCookieValue];\r\n }\r\n\r\n params[splitParams[0].trim()] = splitParams[1].trim();\r\n });\r\n return params;\r\n }\r\n\r\n /**\r\n * Get the date object for expiration\r\n *\r\n * @param {int} seconds Number of seconds to add\r\n *\r\n * @return {Date}\r\n */\r\n private static getExpirationDate(seconds: number) {\r\n return new Date((seconds * 1000) + Date.now());\r\n }\r\n}\r\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { CaptchaSolution } from '../components/common/Captcha';\r\nimport { logger } from '../helpers/LoggerHelper';\r\nimport { ConversationPayload, ConversationServiceModel, RawConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport {\r\n CreateAuthenticatedMeetingPayloadMeetingsApi,\r\n CreateMeetingPayloadMeetingsApi,\r\n CreateMeetingServiceModel,\r\n GuestJoinPayloadMeetingsApi,\r\n GuestUserServiceModel,\r\n MeetnowGuestServiceModel,\r\n} from '../models/GuestUserServiceModel';\r\nimport { BaseRestClient } from './BaseRestClient';\r\nimport { customErrorHandler, transformWrapper } from './MeetingsApiClientUtils';\r\n\r\nconst SessionIdHeaderKey = 'x-sessionId';\r\nconst SupportsCaptchaHeader = 'X-Skype-SupportsCaptcha';\r\nconst CaptchaSolutionHeader = 'X-Skype-CaptchaSolution';\r\nconst CaptchaChallengeIdHeader = 'X-Skype-CaptchaChallengeId';\r\nconst CaptchaAzureRegionHeader = 'X-Skype-CaptchaAzureRegion';\r\n\r\nclass MeetingsApiClient extends BaseRestClient {\r\n joinAsGuest(\r\n payload: T,\r\n retries: number = 0,\r\n joinThread: boolean = false,\r\n captcha?: CaptchaSolution | undefined,\r\n customPropertiesProvider?: () => object): SyncTasks.Promise {\r\n const genericEventPath = joinThread ?\r\n `/v1/threads/{threadId}/members` : `/v1/meetings/{shortId}/members`;\r\n const apiPath = joinThread ?\r\n `/v1/threads/${payload.threadId}/members` : `/v1/meetings/${payload.shortId}/members`;\r\n const headers: { [key: string]: string } = {};\r\n headers[SessionIdHeaderKey] = logger.getCorrelationId();\r\n if (captcha?.solution) {\r\n headers[SupportsCaptchaHeader] = 'yes';\r\n headers[CaptchaSolutionHeader] = captcha.solution;\r\n headers[CaptchaChallengeIdHeader] = captcha.challengeId;\r\n headers[CaptchaAzureRegionHeader] = captcha.azureRegion;\r\n }\r\n\r\n return this.performApiPost(\r\n apiPath,\r\n {\r\n displayName: payload.displayName,\r\n },\r\n {\r\n customErrorHandler,\r\n eventProperties: {\r\n genericEventPath,\r\n customPropertiesProvider,\r\n },\r\n retries,\r\n headers,\r\n });\r\n }\r\n\r\n getConversation(payload: ConversationPayload, retries: number = 0): SyncTasks.Promise {\r\n const shortId = payload.shortId;\r\n const headers: { [key: string]: string } = {};\r\n headers[SessionIdHeaderKey] = logger.getCorrelationId();\r\n\r\n return this.performApiGet(\r\n `/v1/meetings/${ shortId }`,\r\n {\r\n customErrorHandler,\r\n eventProperties: {\r\n genericEventPath: '/v1/meetings/{shortId}',\r\n },\r\n retries,\r\n headers,\r\n },\r\n ).then(transformWrapper(shortId));\r\n }\r\n\r\n createGuestMeeting(payload: CreateMeetingPayloadMeetingsApi, retries: number = 0): SyncTasks.Promise {\r\n return this.createMeeting('/v1/meetnow/createjoinlinkguest', payload, retries);\r\n }\r\n\r\n createAuthenticatedMeeting(payload: CreateAuthenticatedMeetingPayloadMeetingsApi, retries: number = 0): SyncTasks.Promise {\r\n return this.createMeeting('/v1/meetnow/createjoinlink', payload, retries);\r\n }\r\n\r\n meetnowGuest(payload: CreateMeetingPayloadMeetingsApi, retries: number = 0): SyncTasks.Promise {\r\n return this.createMeeting('/v1/meetnow/guest', payload, retries);\r\n }\r\n\r\n private createMeeting(path: string, payload: CreateMeetingPayloadMeetingsApi, retries: number): SyncTasks.Promise {\r\n const headers: { [key: string]: string } = {};\r\n headers[SessionIdHeaderKey] = logger.getCorrelationId();\r\n\r\n return this.performApiPost(\r\n path,\r\n payload,\r\n {\r\n customErrorHandler,\r\n eventProperties: {\r\n genericEventPath: path,\r\n },\r\n retries,\r\n headers,\r\n },\r\n );\r\n }\r\n}\r\n\r\nexport default new MeetingsApiClient(config.urls.api.meetings);\r\n","\"use strict\";\r\n/**\r\n* Scheduler.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Scheduling module for fetching ECS config\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Models_1 = require(\"./Models\");\r\nvar RestClient_1 = require(\"./RestClient\");\r\nvar Scheduler = /** @class */ (function () {\r\n function Scheduler(_config, _skypeTokenData, _cache, appActiveData, allowBackgroundFetchData, telemetryManager) {\r\n var _this = this;\r\n this._config = _config;\r\n this._skypeTokenData = _skypeTokenData;\r\n this._cache = _cache;\r\n this._isFetchingSettings = {};\r\n this._pendingFetch = {};\r\n this._paused = false;\r\n this._fetchEcsSettingsIfNeeded = function (configType) {\r\n var config = _this._config.getConfig();\r\n var cachedConfig = _this._cache.getEcsConfigByType(configType);\r\n // If we don't care about this config, abort\r\n if (config.configsToFetch.indexOf(configType) === -1) {\r\n return;\r\n }\r\n // Don't refresh if we're already fetching.\r\n if (_this._isFetchingSettings[configType]) {\r\n return;\r\n }\r\n if (!cachedConfig && _this._pendingFetch[configType]) {\r\n _this._fetchSkypeEcsSettings(configType);\r\n return;\r\n }\r\n // Get time until expiration, negative if we have no config.\r\n var configExpirationMs = cachedConfig ? cachedConfig.expiration - Date.now() : -1;\r\n // If config expired, fetch now.\r\n if (configExpirationMs <= 0) {\r\n _this._fetchSkypeEcsSettings(configType);\r\n return;\r\n }\r\n // If SkypeToken used to fetch has changed, fetchNow\r\n if (cachedConfig && configType === Models_1.EcsConfigType.User && _this._skypeTokenData.isSkypeTokenValid() &&\r\n cachedConfig.lastFetchTokenHash !== _this._skypeTokenData.getSkypeTokenHash(_this._skypeTokenData.getSkypeToken())) {\r\n _this._fetchSkypeEcsSettings(configType);\r\n return;\r\n }\r\n // Schedule another check.\r\n setTimeout(function () { return _this._fetchEcsSettingsIfNeeded(configType); }, configExpirationMs);\r\n };\r\n this._fetchSkypeEcsSettings = function (configType, bypassPause) {\r\n if (bypassPause === void 0) { bypassPause = false; }\r\n if (_this._isFetchingSettings[configType] || (_this._paused && !bypassPause)) {\r\n _this._pendingFetch[configType] = true;\r\n return;\r\n }\r\n _this._pendingFetch[configType] = false;\r\n _this._isFetchingSettings[configType] = true;\r\n var config = _this._config.getConfig();\r\n // will never fail. We'll keep trying to fetch with exponential backoff until the end of time.\r\n config.getEcsParameters()\r\n .catch(function () {\r\n // If we fail to get parameters, continue with none\r\n console.warn('ECS - Failed to fetch ECS fetching parameters');\r\n return {};\r\n })\r\n .then(function (parameters) {\r\n return _this._ecsClient\r\n .getConfig(_this._cache.getEcsConfig(), configType === Models_1.EcsConfigType.User, parameters);\r\n })\r\n .then(function (ecsConfig) {\r\n console.log('ECS - Config fetch complete');\r\n _this._isFetchingSettings[configType] = false;\r\n _this._cache.putConfig(ecsConfig);\r\n // Queue a refresh\r\n _this._fetchEcsSettingsIfNeeded(configType);\r\n });\r\n };\r\n this._ecsClient = new RestClient_1.default(this._config, this._skypeTokenData, appActiveData, allowBackgroundFetchData, telemetryManager);\r\n }\r\n Scheduler.prototype.initialize = function () {\r\n var _this = this;\r\n this.updateConfigsToFetch();\r\n // Re-fetch user settings when skype token changes\r\n this._skypeTokenData.skypeTokenChanged.subscribe(function () { return _this._fetchEcsSettingsIfNeeded(Models_1.EcsConfigType.User); });\r\n };\r\n Scheduler.prototype.updateConfigsToFetch = function () {\r\n var config = this._config.getConfig();\r\n for (var _i = 0, _a = config.configsToFetch; _i < _a.length; _i++) {\r\n var configType = _a[_i];\r\n if (!(configType in this._isFetchingSettings)) {\r\n this._isFetchingSettings[configType] = false;\r\n }\r\n if (!(configType in this._isFetchingSettings)) {\r\n this._pendingFetch[configType] = false;\r\n }\r\n }\r\n // If we haven't downloaded a config yet (which should happen only on\r\n // first run), download it immediately so we have the settings by the time\r\n // the UI loads, and we can enable or disable specific UI features.\r\n for (var _b = 0, _c = config.configsToFetch; _b < _c.length; _b++) {\r\n var configType = _c[_b];\r\n var cachedData = this._cache.getEcsConfigByType(configType);\r\n if (!cachedData || (cachedData.appVersion && cachedData.appVersion !== config.clientVersion)) {\r\n this._fetchSkypeEcsSettings(configType, true);\r\n }\r\n else {\r\n this._fetchEcsSettingsIfNeeded(configType);\r\n }\r\n }\r\n };\r\n Scheduler.prototype.requestUpdate = function () {\r\n var config = this._config.getConfig();\r\n for (var _i = 0, _a = config.configsToFetch; _i < _a.length; _i++) {\r\n var configType = _a[_i];\r\n this._fetchSkypeEcsSettings(configType);\r\n }\r\n };\r\n Scheduler.prototype.pause = function () {\r\n this._paused = true;\r\n };\r\n Scheduler.prototype.resume = function () {\r\n this._paused = false;\r\n var config = this._config.getConfig();\r\n for (var _i = 0, _a = config.configsToFetch; _i < _a.length; _i++) {\r\n var configType = _a[_i];\r\n this._fetchEcsSettingsIfNeeded(configType);\r\n }\r\n };\r\n return Scheduler;\r\n}());\r\nexports.default = Scheduler;\r\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","export interface IMeetNowSettings {\r\n MeetNowEdgeJoinApiHost: string;\r\n MeetNowEdgeNumberOfFetchRetries: number;\r\n MeetNowEdgeAriaTenantId: string;\r\n MeetNowEdgeAllowedQueryParameters: string[];\r\n DefaultMeetingTitle: string;\r\n}\r\n\r\nconst rootElementId = 'meetnowContainer';\r\nconst settingsDataAttributeName = 'meetnowEdgeSettings';\r\nconst allowedQueryParameters = ['source', 'exp', 'correlationId', 'call', 'video', 'mic'];\r\nconst defaultMeetingTitle = 'Meet Now';\r\n\r\nlet settings: MeetNowSettings;\r\n\r\nconst init = () => {\r\n const rootElement = document.getElementById(rootElementId);\r\n if (rootElement) {\r\n const data = rootElement.dataset[settingsDataAttributeName] || '';\r\n const parsedSettings = JSON.parse(data) as IMeetNowSettings;\r\n settings = new MeetNowSettings(parsedSettings);\r\n } else {\r\n throw new Error('Config not found.');\r\n }\r\n};\r\n\r\nclass MeetNowSettings implements IMeetNowSettings {\r\n private readonly settings: IMeetNowSettings;\r\n\r\n constructor(currentSettings: IMeetNowSettings) {\r\n this.settings = currentSettings;\r\n }\r\n\r\n get MeetNowEdgeAriaTenantId() {\r\n return this.settings.MeetNowEdgeAriaTenantId;\r\n }\r\n get MeetNowEdgeJoinApiHost() {\r\n return this.settings.MeetNowEdgeJoinApiHost;\r\n }\r\n get MeetNowEdgeNumberOfFetchRetries() {\r\n return this.settings.MeetNowEdgeNumberOfFetchRetries;\r\n }\r\n get MeetNowEdgeAllowedQueryParameters() {\r\n return allowedQueryParameters;\r\n }\r\n get DefaultMeetingTitle() {\r\n return defaultMeetingTitle;\r\n }\r\n}\r\n\r\nconst getMeetNowSettings = (): MeetNowSettings => {\r\n if (settings) {\r\n return settings;\r\n }\r\n\r\n init();\r\n return settings;\r\n};\r\n\r\nexport default getMeetNowSettings;\r\n","import * as React from 'react';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../contexts/StackNavigationContext';\r\nimport { StackNavigationProps, StackNavigationView } from './StackNavigationView';\r\n\r\nexport class NestedStackNavigationView extends React.PureComponent {\r\n\r\n render() {\r\n return { (parentContext) => this._renderNested(parentContext) };\r\n }\r\n private _renderNested = (parentContext: StackNavigationContext) => {\r\n const childProps = { ...this.props, parentContext };\r\n return React.createElement(StackNavigationView, childProps);\r\n }\r\n}\r\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","import { Image, ProviderConsumer, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { IMeetNowSettings } from 'src/ts/meetnow/MeetNowSettings';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { Footer } from '../common/Footer';\r\nimport { NestedStackNavigationView } from '../common/NestedStackNavigationView';\r\nimport { UnifiedLoginMethod } from './login/UnifiedLoginMethod';\r\n\r\ninterface UnifiedViewProps {\r\n onLaunchClick: () => void;\r\n allowDesktopSafariGuestFlow: boolean;\r\n meetNowSettings: IMeetNowSettings;\r\n}\r\n\r\nexport class UnifiedView extends React.PureComponent {\r\n\r\n renderThemeAware = (_: ThemePrepared) => {\r\n return
\r\n\r\n
\r\n { (configContext) =>\r\n \r\n }\r\n { (ariaContext) =>\r\n \r\n }\r\n initialViewProps={\r\n { eventViewName: 'login-method' }\r\n }\r\n />\r\n }\r\n
\r\n\r\n
\r\n
;\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import config from 'config';\r\nimport { DoContext } from 'src/ts/contexts/do/DoContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n do: DoContext;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.doLauncher.intentUri(this.props.do.action, this.props.do.skypeId, logger.getCorrelationId(), 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.doLauncher.skypeUri(this.props.do.action, this.props.do.skypeId, logger.getCorrelationId(), 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join-do';\r\n }\r\n}\r\n","import * as clipboard from 'clipboard-polyfill';\r\n\r\nclass ClipboardHelper {\r\n public copyToClipboard(text: string) {\r\n clipboard.writeText(text);\r\n }\r\n}\r\n\r\nexport const clipboardHelper = new ClipboardHelper();\r\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","\"use strict\";\r\n/**\r\n* TelemetryManager.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Record new telemtry events and fires update\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar subscribableevent_1 = require(\"subscribableevent\");\r\nvar TelemetryManager = /** @class */ (function () {\r\n function TelemetryManager(_cache) {\r\n this._cache = _cache;\r\n this.telemetryEventAdded = new subscribableevent_1.default();\r\n //noop\r\n }\r\n TelemetryManager.prototype.sendTelemetryEvent = function (event) {\r\n var eventName = event.getEventName();\r\n var eventData = event.getAttributes();\r\n var telemetryEnabled = false;\r\n var clientTelemetryConfig = this._cache.getEcsConfig();\r\n if (clientTelemetryConfig && TelemetryManager._containsEcsClientTelemetryConfig(clientTelemetryConfig.config)) {\r\n var ecsConfig = clientTelemetryConfig.config.ECSCONFIG;\r\n if (ecsConfig && ecsConfig.ecsClientTelemetry) {\r\n telemetryEnabled = !!ecsConfig.ecsClientTelemetry[eventName];\r\n }\r\n }\r\n if (telemetryEnabled) {\r\n this.telemetryEventAdded.fire(eventName, eventData);\r\n }\r\n };\r\n TelemetryManager._containsEcsClientTelemetryConfig = function (config) {\r\n return !!config && !!config.ECSCONFIG && !!config.ECSCONFIG.ecsClientTelemetry;\r\n };\r\n return TelemetryManager;\r\n}());\r\nexports.default = TelemetryManager;\r\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","import * as React from 'react';\r\n\r\nexport class DomHelper {\r\n\r\n public static fakeButtonAccessibilityKey = (e: React.KeyboardEvent, callback?: (e: React.SyntheticEvent) => void) => {\r\n if (e.key === ' ' || e.key === 'Enter') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!!callback) {\r\n callback(e);\r\n } else {\r\n e.currentTarget.click();\r\n }\r\n }\r\n }\r\n\r\n public static setFocus = (element: HTMLElement | null) => {\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n}\r\n","import { AWTPiiKind } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport { Button, Portal, Provider, ThemeInput, themes } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport merge from 'lodash/merge';\r\nimport noop from 'lodash/noop';\r\nimport * as React from 'react';\r\nimport * as SyncTasks from 'synctasks';\r\nimport '../../vendor/silentLogin';\r\nimport { RootView as BotsRootView } from './components/bots/RootView';\r\nimport { AriaLive } from './components/common/AriaLive';\r\nimport { ErrorBoundary } from './components/common/ErrorBoundary';\r\nimport { ErrorDetails } from './components/common/ErrorDetails';\r\nimport { RootView as DoRootView } from './components/do/RootView';\r\nimport { RootView as InvitesRootView } from './components/invites/RootView';\r\nimport { RootView as MeetingsRootView } from './components/meetings/RootView';\r\nimport { RootView as ProfilesRootView } from './components/profiles/RootView';\r\nimport { AriaContext, AriaContextProvider, AriaMessage } from './contexts/AriaContext';\r\nimport { ConfigContext, ConfigContextProvider } from './contexts/ConfigContext';\r\nimport { EcsConfigFallback, EcsContext, EcsContextProvider } from './contexts/EcsContext';\r\nimport { ErrorContext, ErrorContextProvider } from './contexts/ErrorContext';\r\nimport { UserContext, UserContextProvider } from './contexts/UserContext';\r\nimport { CookieHelper } from './helpers/CookieHelper';\r\nimport { ecsHelper } from './helpers/EcsHelper';\r\nimport { browser, Browsers, canJoinOnWeb, deviceType, DeviceTypes, EnvironmentHelper } from './helpers/EnvironmentHelper';\r\nimport { DisplayableError } from './helpers/ErrorHelper';\r\nimport { loadTranslation } from './helpers/LocalizerHelper';\r\nimport { CommonProperty, logger } from './helpers/LoggerHelper';\r\nimport { silentLoginAsync, SilentLoginResult } from './helpers/SilentLoginHelper';\r\nimport { mainContentId, Themes } from './models/SharedTypes';\r\nimport ProfileRestClient from './rest/ProfileRestClient';\r\nimport * as localThemes from './themes';\r\n\r\nexport enum EntryPoint {\r\n Meetings = 'meetings',\r\n Invites = 'invites',\r\n Bots = 'bots',\r\n Do = 'do',\r\n Profiles = 'profiles',\r\n}\r\n\r\nexport interface AppProps {\r\n readonly language: string;\r\n readonly basePath: string;\r\n readonly entryPoint: EntryPoint;\r\n readonly skypetoken?: string;\r\n readonly theme?: Themes;\r\n}\r\n\r\nexport interface AppState {\r\n loadingTranslations: boolean;\r\n loadingEcs: boolean;\r\n theme: ThemeInput;\r\n userContext: UserContext;\r\n configContext: ConfigContext;\r\n errorContext: ErrorContext;\r\n ariaContext: AriaContext;\r\n ecsContext: EcsContext;\r\n}\r\n\r\nconst SilentLoginTimeout = 8000;\r\n\r\nexport class App extends React.Component {\r\n\r\n constructor(props: AppProps) {\r\n super(props);\r\n this.state = {\r\n loadingTranslations: true,\r\n loadingEcs: true,\r\n configContext: {\r\n ...config,\r\n basePath: this.props.basePath,\r\n language: props.language,\r\n switchLanguage: this._switchLanguage,\r\n },\r\n theme: merge({}, localThemes.common, props.theme === Themes.Teams ? localThemes.teams : localThemes.light),\r\n userContext: {\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n profile: undefined,\r\n isLoginInProgress: this._canUseSilentLogin(),\r\n silentLoginNotSupported: !this._canUseSilentLogin(),\r\n },\r\n errorContext: {\r\n error: undefined,\r\n setError: this._setErrorContext,\r\n clear: this._clearErrorContext,\r\n },\r\n ariaContext: {\r\n message: { assertive: false, text: '' },\r\n announce: this._announce,\r\n },\r\n ecsContext: {\r\n settings: EcsConfigFallback,\r\n },\r\n };\r\n\r\n logger.initCommonProperty({ key: CommonProperty.EntryPoint, value: props.entryPoint });\r\n }\r\n\r\n componentDidMount() {\r\n // Injecting browser specific styles in \r\n const style = document.createElement('style');\r\n if (browser === Browsers.Safari && deviceType === DeviceTypes.Mobile && document.head) {\r\n style.innerHTML = `.meetings .ui-button, .bots .ui-button, .invites .ui-button { display: block; }`;\r\n document.head.appendChild(style);\r\n }\r\n\r\n loadTranslation(this.props.language);\r\n this.setState({ loadingTranslations: false });\r\n\r\n if (this._canUseSilentLogin()) {\r\n const silentLoginPromise = silentLoginAsync()\r\n .then(this._getProfileAsync)\r\n .then((userContext) => {\r\n this.setState({ userContext });\r\n })\r\n .catch((error) => {\r\n logger.error(error);\r\n this.setState({\r\n userContext: {\r\n profile: undefined,\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n isLoginInProgress: false,\r\n },\r\n });\r\n }); // it's ok if the user is not logged in\r\n\r\n SyncTasks.raceTimer(silentLoginPromise, SilentLoginTimeout).then((result) => {\r\n if (result.timedOut) {\r\n logger.error(new Error('Silent Login TimeOut'));\r\n silentLoginPromise.cancel();\r\n this._startLoadingEcs();\r\n this.setState({\r\n userContext: {\r\n profile: undefined,\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n isLoginInProgress: false,\r\n },\r\n });\r\n }\r\n });\r\n } else {\r\n this._startLoadingEcs();\r\n }\r\n }\r\n\r\n componentDidUpdate(_: AppProps, prevState: AppState) {\r\n if (prevState.userContext.isLoginInProgress && !this.state.userContext.isLoginInProgress) {\r\n this._startLoadingEcs();\r\n }\r\n }\r\n\r\n render() {\r\n return <>\r\n { !this.state.loadingTranslations && { localizer.getString('Common.a11y_lnk_skip_content') } }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this._getRootView() }\r\n { this._renderErrorPortal() }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n }\r\n\r\n private _renderErrorPortal() {\r\n const error = this.state.errorContext && this.state.errorContext.error;\r\n if (!error) {\r\n return;\r\n }\r\n return ;\r\n }\r\n\r\n private _renderErrorPortalContent(error: DisplayableError) {\r\n return
\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _startLoadingEcs() {\r\n ecsHelper.loadConfig(this.state.userContext.skypetoken, this.state.userContext.expiration, (settings) => {\r\n const wasPreLoggedin = Boolean(this.props && this.state.userContext && this.state.userContext.skypetoken);\r\n const useUnifiedView = this._determineIsItUnifiedView(settings.useUnifiedView);\r\n const quickJoinFlowSupportedBrowsers = settings.quickJoinFlowSupportedBrowsers ?? EcsConfigFallback.quickJoinFlowSupportedBrowsers;\r\n EnvironmentHelper.updateEnvironmentSettings(quickJoinFlowSupportedBrowsers);\r\n logger.sessionStarted({useUnifiedView, wasPreLoggedin});\r\n this.setState({\r\n loadingEcs: false,\r\n ecsContext: {\r\n settings: {\r\n useUnifiedView,\r\n quickJoinFlowSupportedBrowsers,\r\n useMeetingsApi: settings.useMeetingsApi ?? EcsConfigFallback.useMeetingsApi,\r\n maxRetries: settings.maxRetries ?? EcsConfigFallback.maxRetries,\r\n useNewMobileJoinFlow: settings.useMeetingsApi ?? EcsConfigFallback.useNewMobileJoinFlow,\r\n allowDesktopSafariGuestFlow: settings.allowDesktopSafariGuestFlow ?? EcsConfigFallback.allowDesktopSafariGuestFlow,\r\n useJoinThread: settings.useJoinThread ?? EcsConfigFallback.useJoinThread,\r\n },\r\n },\r\n });\r\n }, EcsConfigFallback);\r\n }\r\n\r\n private _determineIsItUnifiedView(unifiedViewEcsSettings: boolean) {\r\n return (unifiedViewEcsSettings && deviceType === DeviceTypes.Desktop);\r\n }\r\n\r\n private _canUseSilentLogin() {\r\n if (this.props.entryPoint === EntryPoint.Meetings && !canJoinOnWeb) {\r\n return false;\r\n }\r\n\r\n return this.props.entryPoint !== EntryPoint.Bots;\r\n }\r\n\r\n private _getRootView() {\r\n switch (this.props.entryPoint) {\r\n case EntryPoint.Meetings:\r\n return ;\r\n case EntryPoint.Invites:\r\n return ;\r\n case EntryPoint.Bots:\r\n return ;\r\n case EntryPoint.Do:\r\n return ;\r\n case EntryPoint.Profiles:\r\n return ;\r\n }\r\n }\r\n\r\n private _switchLanguage = (language: string) => {\r\n CookieHelper.setCookieValue(this.state.configContext.cookies.skype, language, 'LC');\r\n window.location.reload();\r\n }\r\n\r\n private _announce = (message: AriaMessage) => {\r\n this.setState((prevState) => {\r\n const { ariaContext } = prevState;\r\n ariaContext.message = message;\r\n return { ariaContext };\r\n });\r\n }\r\n\r\n private _setErrorContext = (error: DisplayableError) => {\r\n this.setState((prevState) => {\r\n const { errorContext } = prevState;\r\n errorContext.error = error;\r\n return {\r\n errorContext,\r\n };\r\n });\r\n }\r\n\r\n private _clearErrorContext = () => {\r\n this.setState((prevState) => {\r\n const { errorContext } = prevState;\r\n errorContext.error = undefined;\r\n return {\r\n errorContext,\r\n };\r\n });\r\n }\r\n\r\n private _getProfileAsync = (loginResult: SilentLoginResult | undefined): SyncTasks.Promise => {\r\n if (!loginResult || !loginResult.skypetoken) {\r\n return SyncTasks.Resolved({\r\n profile: undefined,\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n isLoginInProgress: false,\r\n });\r\n }\r\n\r\n return ProfileRestClient.getUserProfileInfo(loginResult.skypetoken)\r\n .then((profile) => {\r\n const userContext: UserContext = {\r\n profile,\r\n skypetoken: loginResult.skypetoken,\r\n expiration: loginResult.expiration,\r\n isLoginInProgress: false,\r\n };\r\n\r\n logger.initCommonProperty({ key: CommonProperty.SkypeId, value: profile.username, piiKind: AWTPiiKind.Identity });\r\n return userContext;\r\n });\r\n }\r\n}\r\n","import { ThemeInput } from '@stardust-ui/react';\r\n\r\nconst theme: ThemeInput = {\r\n siteVariables: {\r\n brandIcon: '/images/icons/teams-96x96.png',\r\n },\r\n};\r\n\r\nexport default theme;\r\n","import config from 'config';\r\nimport { OffSkypeInviteServiceModel } from 'src/ts/models/OffSkypeInviteServiceModel';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n invite: OffSkypeInviteServiceModel;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n const invite = this.props.invite;\r\n const sessionId = logger.getCorrelationId();\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.inviteLauncher.intentUri(invite.inviterSkypeId, sessionId, invite.longId, 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.inviteLauncher.skypeUri(invite.inviterSkypeId, sessionId, invite.longId, 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join-invite';\r\n }\r\n}\r\n","\"use strict\";\r\n/**\r\n* Models.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS models\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EcsConfigType;\r\n(function (EcsConfigType) {\r\n EcsConfigType[EcsConfigType[\"Default\"] = 0] = \"Default\";\r\n EcsConfigType[EcsConfigType[\"User\"] = 1] = \"User\";\r\n})(EcsConfigType = exports.EcsConfigType || (exports.EcsConfigType = {}));\r\n","import { Animation, Provider, ProviderConsumer, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\n\r\nconst spinner = {\r\n keyframe: {\r\n from: {\r\n transform: 'rotate(0deg)',\r\n },\r\n to: {\r\n transform: 'rotate(360deg)',\r\n },\r\n },\r\n duration: '5s',\r\n iterationCount: 'infinite',\r\n};\r\n\r\nexport interface SpinnerProps {\r\n style?: React.CSSProperties;\r\n}\r\n\r\n// tslint:disable:max-line-length\r\nexport class Spinner extends React.PureComponent {\r\n\r\n renderThemeAware = (theme: ThemePrepared) => {\r\n return
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
;\r\n }\r\n\r\n render() {\r\n const theme = {\r\n animations: {\r\n spinner,\r\n },\r\n };\r\n\r\n return \r\n \r\n ;\r\n }\r\n}\r\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { CaptchaSolution } from '../components/common/Captcha';\r\nimport { ConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport { GuestUserServiceModel } from '../models/GuestUserServiceModel';\r\nimport { OffSkypeInviteServiceModel, RawOffSkypeInviteServiceModel, transform as transformOffNetwork } from '../models/OffSkypeInviteServiceModel';\r\nimport { BaseRestClient } from './BaseRestClient';\r\n\r\nexport interface GuestJoinPayloadHuddleApi {\r\n captcha?: CaptchaSolution;\r\n flowId: string;\r\n name: string;\r\n threadId: string;\r\n}\r\n\r\nexport interface ConversationPayload {\r\n shortId: string;\r\n type: string;\r\n}\r\n\r\nexport interface OffSkypeInvitePayload {\r\n shortId: string;\r\n type: string;\r\n}\r\n\r\nexport interface RawConversationServiceModel {\r\n readonly FlowId: string;\r\n readonly Id: string;\r\n readonly Resource: string;\r\n readonly Action: string;\r\n}\r\n\r\nfunction transform(model: RawConversationServiceModel): ConversationServiceModel {\r\n return {\r\n action: model.Action,\r\n flowId: model.FlowId,\r\n id: model.Id,\r\n resource: model.Resource,\r\n };\r\n}\r\n\r\nclass HuddleApiClient extends BaseRestClient {\r\n joinAsGuest(payload: GuestJoinPayloadHuddleApi): SyncTasks.Promise {\r\n return this.performApiPost(\r\n '/v1/users/guests',\r\n payload,\r\n {\r\n eventProperties: {\r\n customPropertiesProvider: () => {\r\n return {\r\n includesCaptcha: !!payload.captcha,\r\n };\r\n },\r\n },\r\n });\r\n }\r\n\r\n getConversation(payload: ConversationPayload): SyncTasks.Promise {\r\n return this.performApiPost('/v2/conversation/', payload).then(transform);\r\n }\r\n\r\n getOffSkypeInvite(payload: OffSkypeInvitePayload): SyncTasks.Promise {\r\n return this.performApiPost('/v2/offskypeinvites', payload).then(transformOffNetwork);\r\n }\r\n}\r\n\r\nexport default new HuddleApiClient(config.urls.api.huddle);\r\n","import * as React from 'react';\r\nimport { OffSkypeInviteServiceModel } from '../../models/OffSkypeInviteServiceModel';\r\n\r\nexport interface InviteContext {\r\n invite: OffSkypeInviteServiceModel;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const InviteContextProvider = context.Provider;\r\n\r\nexport const InviteContextConsumer = context.Consumer;\r\n","import * as React from 'react';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\n\r\n// AriaLive need to re-render when its context is being updated. This does not make it candidate for PureComponent\r\nexport class AriaLive extends React.Component {\r\n render() {\r\n // ariaLive refs should stay unchanged for the lifecycle of the application\r\n // It means that conditional rendering of div[role=region] won't work, but its content will\r\n return { (ariaContext) =>\r\n <>\r\n
\r\n { ariaContext.message.assertive && ariaContext.message.text }\r\n
\r\n
\r\n { !ariaContext.message.assertive && ariaContext.message.text }\r\n
\r\n \r\n }
;\r\n\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport uniq from 'lodash/uniq';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\nimport { OperatingSystems, os } from 'src/ts/helpers/EnvironmentHelper';\r\nimport { displayableErrors, ErrorHelper } from 'src/ts/helpers/ErrorHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport BotsRestClient from 'src/ts/rest/BotsRestClient';\r\nimport { BotsContext, BotsContextConsumer } from '../../contexts/bots/BotsContext';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Padder } from '../common/Padder';\r\nimport { BotInfo } from './BotInfo';\r\nimport { BotLauncher } from './BotLauncher';\r\n\r\ninterface AddBotViewProps {\r\n skypetoken?: string;\r\n onProgress: () => void;\r\n onAdd: () => void;\r\n onError: (error: Error) => void;\r\n}\r\n\r\nexport class AddBotView extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n
\r\n
\r\n \r\n { (botsContext) => botsContext &&\r\n (botsContext.isAddedAsContact ? this._renderBotAddedContent(botsContext) : this._renderBotAddPromptContent(botsContext))\r\n }\r\n
\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _renderBotAddPromptContent(botContext: BotsContext) {\r\n return <>\r\n { botContext.botInfo.addAsContactAllowed && this._renderAddButton(botContext) }\r\n { this._renderBotDetails(botContext) }\r\n ;\r\n }\r\n\r\n private _renderBotAddedContent(botContext: BotsContext) {\r\n return { (ariaContext) =>\r\n
ariaContext.announce({ assertive: true, text: localizer.getString('bot_added') })}>\r\n \r\n \r\n \r\n
\r\n }
;\r\n }\r\n\r\n private _renderAddButton(botContext: BotsContext) {\r\n return ;\r\n }\r\n\r\n private _renderBotDetails(botContext: BotsContext) {\r\n const privacyAndTos = botContext.botInfo.privacyStatement && botContext.botInfo.tos ?\r\n localizer.get('privacy_and_terms', {\r\n linkPrivacy: { type: 'a', href: botContext.botInfo.privacyStatement},\r\n linkTerms: { type: 'a', href: botContext.botInfo.tos},\r\n }) : undefined;\r\n return
\r\n \r\n { this._renderCapabilities(botContext.botInfo.capabilities) }\r\n \r\n
\r\n { privacyAndTos }\r\n
\r\n
;\r\n }\r\n\r\n private _renderCapabilities(botCapabilities: string[]) {\r\n\r\n const capabilitiestoLocStringMap: { [key: string]: string; } = {\r\n 'im.sendReceive': 'capability_im_send_receive',\r\n 'im.send': 'capability_im_send_receive',\r\n 'im.receive': 'capability_im_send_receive',\r\n 'audio.send': 'capability_audio_send',\r\n };\r\n\r\n const uniqueLocalizedCapabilities = uniq(botCapabilities\r\n .filter((cap) => !!capabilitiestoLocStringMap[cap])\r\n .map((cap) => localizer.getString(capabilitiestoLocStringMap[cap])));\r\n\r\n return
\r\n
\r\n
    \r\n { uniqueLocalizedCapabilities.map((cap, index) =>
  • ) }\r\n
\r\n
;\r\n }\r\n\r\n private _addBotToContacts(botContext: BotsContext) {\r\n return () => {\r\n logger.action({name: 'bot-add-contact'});\r\n const { skypetoken } = this.props;\r\n if (!skypetoken) {\r\n this._redirectToLogin(botContext.botId);\r\n return;\r\n }\r\n\r\n this.props.onProgress();\r\n BotsRestClient.addBotToContacts(botContext.botId, skypetoken)\r\n .then(() => this.props.onAdd())\r\n .catch((response: WebErrorResponse) => {\r\n const error = response && response.statusCode === 412 ?\r\n ErrorHelper.enrichErrorFromWebResponse(displayableErrors.BotTooManyContacts, response, 'Add bot request') :\r\n ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, 'Add bot request');\r\n this.props.onError(error);\r\n });\r\n };\r\n }\r\n\r\n private _redirectToLogin(botId: string) {\r\n const useBotsLauncherQueryParam = !!UrlHelper.getQueryParameter('botsLauncher');\r\n window.location.href = config.urls.app.botLogin(botId, useBotsLauncherQueryParam);\r\n }\r\n\r\n private _downloadSkype = () => {\r\n logger.action({ name: 'download' });\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header, Image, ProviderConsumer, Text, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { defaultFadeAnimation, StackNavigationContextConsumer } from '../../contexts/StackNavigationContext';\r\nimport { downloadSkype } from '../../helpers/DownloadSkypeHelper';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, isIOSInAppBrowserFlow } from '../../helpers/EnvironmentHelper';\r\nimport { UrlHelper } from '../../helpers/UrlHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Header as PageHeader } from '../common/Header';\r\nimport { Padder } from '../common/Padder';\r\nimport { JoinLink, JoinLinkProps } from './JoinLink';\r\nimport { LoginView } from './LoginView';\r\n\r\ninterface JoinViewProps extends JoinLinkProps {\r\n onLaunchClick: () => void;\r\n threadId?: string;\r\n}\r\n\r\nexport class JoinView extends React.PureComponent {\r\n\r\n renderLogo(theme: ThemePrepared) {\r\n return (\r\n \r\n { (configContext) => }\r\n \r\n );\r\n }\r\n\r\n renderTitle() {\r\n return <>\r\n
{ localizer.getString('Meetings.txt_join_meeting_title') }
\r\n ;\r\n }\r\n\r\n renderDesktopBody() {\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n return null;\r\n }\r\n\r\n return \r\n { localizer.getString('Meetings.txt_join_meeting_description') } \r\n { { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n }\r\n ;\r\n }\r\n\r\n renderControls() {\r\n if (deviceType === DeviceTypes.Mobile) {\r\n return ;\r\n }\r\n\r\n return <>\r\n { canJoinOnWeb && { (stackNavigationContext) =>\r\n \r\n } }\r\n \r\n ;\r\n }\r\n\r\n renderMobileBody() {\r\n if (deviceType !== DeviceTypes.Mobile) {\r\n return null;\r\n }\r\n\r\n const joinMeeting = this._isFallbackFlow() ?\r\n :\r\n \r\n \r\n { localizer.getString('btn_launch_join') }\r\n \r\n ;\r\n\r\n return <>\r\n \r\n { localizer.getString('Meetings.txt_join_meeting_description') }\r\n \r\n\r\n { joinMeeting }\r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n \r\n
\r\n \r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderMobileBody() }\r\n { this.renderDesktopBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _isFallbackFlow = (): boolean => isIOSInAppBrowserFlow && undefined !== UrlHelper.getQueryParameter('fallback');\r\n}\r\n","import { WebErrorResponse } from 'simplerestclients';\r\n\r\nexport interface DisplayableError extends Error {\r\n headerLocString: string;\r\n descriptionLocString: string;\r\n pageTitleLocString: string;\r\n emoticonPath?: string;\r\n}\r\n\r\nexport const displayableErrors = {\r\n ShortIdFromUrl: {\r\n name: 'ShortIdFromUrl',\r\n message: 'Cannot retrieve the shortId from url.',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'txt_not_found_page_redirect',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n InviteIdFromUrl: {\r\n name: 'InviteIdFromUrl',\r\n message: 'Cannot retrieve the inviteId from url.',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'txt_not_found_page_redirect',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n TooManyUsers: {\r\n name: 'TooManyUsers',\r\n message: 'TooManyUsers',\r\n headerLocString: 'hdr_toomanyusers_page_oops',\r\n descriptionLocString: 'txt_toomanyusers_page_explanation',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n pageTitleLocString: 'hdr_toomanyusers_page_title',\r\n } as DisplayableError,\r\n Busy: {\r\n name: 'Busy',\r\n message: 'Busy',\r\n headerLocString: 'hdr_busy_page_oops',\r\n descriptionLocString: 'txt_busy_page_explanation',\r\n pageTitleLocString: 'hdr_busy_page_title',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n } as DisplayableError,\r\n InviteNotFound: {\r\n name: 'InviteNotFound',\r\n message: 'InviteNotFound',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'txt_not_found_offskypeinvite_page_redirect',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n } as DisplayableError,\r\n JoinDisabled: {\r\n name: 'JoinDisabled',\r\n message: 'JoinDisabled',\r\n headerLocString: 'hdr_joindisabled_page_oops',\r\n descriptionLocString: 'txt_joindisabled_page_explanation',\r\n pageTitleLocString: 'hdr_joindisabled_page_title',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n } as DisplayableError,\r\n Generic: {\r\n name: 'Generic',\r\n message: 'Generic error',\r\n headerLocString: 'hdr_error_page_oops',\r\n descriptionLocString: 'txt_error_page_explanation',\r\n pageTitleLocString: 'hdr_error_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n BotNotFound: {\r\n name: 'BotIdFromUrl',\r\n message: 'Cannot retrieve the bot id from url.',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'bot_not_found',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n BotTooManyContacts: {\r\n name: 'BotTooManyContacts',\r\n message: 'BotTooManyContacts',\r\n headerLocString: 'bot_problem_page_oops',\r\n descriptionLocString: 'bot_too_many_contacts_page_redirect',\r\n pageTitleLocString: 'bot_too_many_contacts_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n};\r\n\r\nexport class ErrorHelper {\r\n\r\n static convertToGenericDisplayableError(error: Error): DisplayableError {\r\n return {\r\n ...error,\r\n headerLocString: 'hdr_error_page_oops',\r\n descriptionLocString: 'txt_error_page_explanation',\r\n pageTitleLocString: 'hdr_error_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n };\r\n }\r\n\r\n static isDisplayableError(arg: any): arg is DisplayableError {\r\n return (arg as DisplayableError).headerLocString !== undefined && (arg as DisplayableError).descriptionLocString !== undefined;\r\n }\r\n\r\n static enrichErrorFromWebResponse(displayableError: DisplayableError, webResponse: WebErrorResponse, description?: string): DisplayableError {\r\n return {\r\n ...displayableError,\r\n ...ErrorHelper.getErrorFromWebErrorResponse(webResponse, description),\r\n };\r\n }\r\n\r\n private static getErrorFromWebErrorResponse(response: WebErrorResponse, description?: string): Error {\r\n return {\r\n name: description || `Request failed`,\r\n message: `${response.method} request failed: ${response.statusCode} ${response.statusText}`,\r\n };\r\n }\r\n}\r\n","import { AWTPiiKind, AWTPropertyType } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport curry from 'lodash/curry';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport * as SyncTasks from 'synctasks';\r\nimport config from '../config/BaseConfig';\r\nimport { canJoinOnWeb } from '../helpers/EnvironmentHelper';\r\nimport { DisplayableError, displayableErrors, ErrorHelper } from '../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../helpers/LoggerHelper';\r\nimport { getSkypeIdFromSkypeToken } from '../helpers/SkypeTokenHelper';\r\nimport { buildRedirectQueryParameters, getShortIdFromJoinLink, getThreadId, redirectToSkypeClient } from '../meetnow/MeetNowEdgeHandler';\r\nimport { IMeetNowSettings } from '../meetnow/MeetNowSettings';\r\nimport { ConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport { GuestJoinPayloadMeetingsApi, GuestUserServiceModel, WebClientRedirectParams } from '../models/GuestUserServiceModel';\r\nimport MeetingsApiClient from '../rest/MeetingsApiClient';\r\n\r\nconst joinLinkRegex = /^https:\\/\\/join\\.skype\\.com\\/[a-zA-Z0-9]{7,20}$/;\r\n\r\nexport const handleJoin = (\r\n settings: IMeetNowSettings,\r\n conversationServiceModel: ConversationServiceModel,\r\n skypeToken?: string,\r\n isNewJoinFlowFromJoinLink = false) => {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ThreadId,\r\n value: conversationServiceModel.resource,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n\r\n if (conversationServiceModel.shortId) {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ShortId,\r\n value: conversationServiceModel.shortId,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n }\r\n\r\n // For unsupported devices we navigate users to regular join flow where they an an opportunity to launch a desktop client or download it\r\n if (!canJoinOnWeb) {\r\n logger.action({ name: 'redirectToJoinPageUnsupportedDevice' });\r\n window.location.href =\r\n `/${ conversationServiceModel.shortId }?${\r\n buildRedirectQueryParameters(\r\n settings.MeetNowEdgeAllowedQueryParameters,\r\n logger.getCorrelationId(),\r\n isNewJoinFlowFromJoinLink)\r\n }`;\r\n return SyncTasks.Resolved();\r\n }\r\n\r\n if (skypeToken) {\r\n const redirectParams: WebClientRedirectParams = {\r\n threadId: conversationServiceModel.resource,\r\n skypetoken: skypeToken,\r\n shortId: conversationServiceModel.shortId,\r\n skypeId: getSkypeIdFromSkypeToken(skypeToken) || '',\r\n };\r\n\r\n redirectToSkypeClient(settings, 'MeetNowJoin', 'joinmeetnow', isNewJoinFlowFromJoinLink, redirectParams);\r\n return SyncTasks.Resolved();\r\n } else {\r\n return addUserToMeeting(settings, conversationServiceModel)\r\n .then(redirectToSkypeClient(settings, 'MeetNowJoin', 'joinmeetnow', isNewJoinFlowFromJoinLink));\r\n }\r\n};\r\n\r\nexport const addUserToMeeting = curry((settings: IMeetNowSettings, conversationServiceModel: ConversationServiceModel) => {\r\n if (!conversationServiceModel.shortId) {\r\n throw new Error('ShortId not provided to addUserToMeeting function');\r\n }\r\n\r\n const localizedGuestDefaultName = localizer.getString('Meetings.txt_guest_user_name') ?? 'Guest user';\r\n const params: GuestJoinPayloadMeetingsApi = {\r\n displayName: localizedGuestDefaultName,\r\n threadId: conversationServiceModel.resource,\r\n flowId: conversationServiceModel.flowId,\r\n shortId: conversationServiceModel.shortId,\r\n };\r\n\r\n return MeetingsApiClient\r\n .joinAsGuest(params, settings.MeetNowEdgeNumberOfFetchRetries, true)\r\n .then((guestUserServiceModel: GuestUserServiceModel) => ({\r\n threadId: conversationServiceModel.resource,\r\n shortId: conversationServiceModel.shortId,\r\n ...guestUserServiceModel,\r\n }))\r\n .catch((response: WebErrorResponse) => {\r\n let error: DisplayableError | undefined;\r\n const createGuestRequest = 'Create guest user';\r\n switch (response.statusCode) {\r\n case 403:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.JoinDisabled, response, createGuestRequest);\r\n break;\r\n case 404:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.InviteNotFound, response, createGuestRequest);\r\n break;\r\n case 412:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 429:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 500:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, createGuestRequest);\r\n break;\r\n default:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Busy, response, createGuestRequest);\r\n break;\r\n }\r\n\r\n throw error;\r\n });\r\n});\r\n\r\nexport const validateJoinLinkOrCode = async (settings: IMeetNowSettings, joinLink: string) => {\r\n const normalizedJoinLink = normalizeJoinLink(config.urls.app.join, joinLink);\r\n\r\n if (!normalizedJoinLink.match(joinLinkRegex)) {\r\n return false;\r\n }\r\n\r\n const conversationServiceModel: ConversationServiceModel = await getThreadId(settings, getShortIdFromJoinLink(normalizedJoinLink));\r\n if (conversationServiceModel && conversationServiceModel.resource) {\r\n return conversationServiceModel;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const normalizeJoinLink = (joinLinkDomain: string, joinLink: string) => {\r\n const trimmedJoinLink = joinLink.replace(/(^\\s*)|(\\s*\\.*\\s*$)/g, '');\r\n\r\n if (!trimmedJoinLink.startsWith(joinLinkDomain)) {\r\n return `${ joinLinkDomain }/${ trimmedJoinLink }`;\r\n }\r\n return trimmedJoinLink;\r\n};\r\n","export const getDiffInMS = (startDate: Date, endDate = new Date()): number => endDate.valueOf() - startDate.valueOf();\r\n","import * as React from 'react';\r\nimport { UserProfile } from '../models/ProfileServiceModel';\r\n\r\nexport interface UserContext {\r\n skypetoken: string | undefined;\r\n expiration: number | undefined;\r\n profile: UserProfile | undefined;\r\n isLoginInProgress: boolean;\r\n silentLoginNotSupported?: boolean;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as UserContext);\r\n\r\nexport const UserContextProvider = context.Provider;\r\n\r\nexport const UserContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header, Image, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { ConfigContextConsumer } from 'src/ts/contexts/ConfigContext';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Padder } from '../common/Padder';\r\n\r\ninterface DoViewProps {\r\n onLaunchClick: () => void;\r\n}\r\n\r\nexport class DoView extends React.PureComponent {\r\n\r\n renderLogo() {\r\n return \r\n { (configContext) => ;\r\n }\r\n\r\n renderTitle() {\r\n return
{ localizer.getString('hdr_launch_joining_conversation') }
;\r\n }\r\n\r\n renderControls() {\r\n return <>\r\n \r\n ;\r\n }\r\n\r\n renderBody() {\r\n return <>\r\n \r\n { localizer.getString('txt_launch_first_time_device') }\r\n \r\n \r\n { localizer.get('txt_launch_please_download', {\r\n download_skype: \r\n { localizer.getString('btn_launch_download_skype') }\r\n ,\r\n }) }\r\n \r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n { this.renderLogo() }\r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _downloadSkype = () => {\r\n logger.action({ name: 'download' });\r\n\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { DomHelper } from 'src/ts/helpers/DomHelper';\r\n\r\nexport interface SelectProps {\r\n options: OptionProps[];\r\n value?: OptionProps;\r\n disabled?: boolean;\r\n onChange: (value: string) => void;\r\n ariaLabel: string;\r\n autoFocus?: boolean;\r\n}\r\n\r\nexport interface SelectState {\r\n selected: OptionProps;\r\n focused: boolean;\r\n}\r\n\r\nexport interface OptionProps {\r\n value: string;\r\n text: string;\r\n}\r\n\r\nconst defaultEmptyOption = { value: 'NOT', text: '' };\r\n\r\nexport class Select extends React.Component {\r\n private _domReference: HTMLSelectElement | null;\r\n\r\n constructor(props: SelectProps) {\r\n super(props);\r\n this.state = {\r\n selected: props.value || defaultEmptyOption,\r\n focused: props.autoFocus || false,\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps: SelectProps) {\r\n if (this.props.value !== nextProps.value) {\r\n this.setState({\r\n selected: nextProps.value || this.state.selected,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let wrapperAdditionalClass = '';\r\n if (this.props.options.length <= 1) {\r\n wrapperAdditionalClass += ' noOptions';\r\n }\r\n if (this.state.focused) {\r\n wrapperAdditionalClass += ' focused';\r\n }\r\n return (\r\n
\r\n \r\n { this.props.options.length > 1 && \r\n { this.renderOptions() }\r\n }\r\n
\r\n );\r\n }\r\n\r\n private renderOptions = () => {\r\n return this.props.options.map((option: OptionProps) => {\r\n return ;\r\n }).concat();\r\n }\r\n\r\n private _onChange = (event: React.ChangeEvent) => {\r\n const selectedCountry = event.target.value;\r\n const searchOption = this.props.options.filter((option) => option.value === event.target.value);\r\n this.setState({\r\n selected: searchOption.length ? searchOption[0] : defaultEmptyOption,\r\n }, () => this.props.onChange(selectedCountry));\r\n }\r\n\r\n private _onFocus = () => {\r\n if (this.state.focused) {\r\n return;\r\n }\r\n this.setState({\r\n focused: true,\r\n });\r\n }\r\n\r\n private _onBlur = () => {\r\n if (!this.state.focused) {\r\n return;\r\n }\r\n this.setState({\r\n focused: false,\r\n });\r\n }\r\n\r\n private _autoFocus = (el: HTMLSelectElement | null) => {\r\n if (this.props.autoFocus && el && !this._domReference) {\r\n this._domReference = el;\r\n window.setTimeout(() => DomHelper.setFocus(this._domReference), 200);\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\n\r\ninterface LauncherState {\r\n launchUrl: string;\r\n}\r\n\r\nexport abstract class ALauncher

extends React.PureComponent {\r\n\r\n constructor(props: P) {\r\n super(props);\r\n this.state = {\r\n launchUrl: this._getLauncherUrl(),\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n logger.action({ name: this._getLoggerAction() });\r\n }\r\n\r\n componentDidMount() {\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n window.location.href = this.state.launchUrl;\r\n }\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n\r\n protected abstract _getLauncherUrl(): string;\r\n protected abstract _getLoggerAction(): string;\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Header, Image, Text } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { DisplayableError, ErrorHelper } from '../../helpers/ErrorHelper';\r\n\r\nexport interface ErrorDetailsProps {\r\n error: Error;\r\n showSkype?: boolean;\r\n assetsBasePath?: string;\r\n}\r\n\r\nexport class ErrorDetails extends React.PureComponent {\r\n constructor(props: ErrorDetailsProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const displayableError: DisplayableError = ErrorHelper.isDisplayableError(this.props.error)\r\n ? this.props.error\r\n : ErrorHelper.convertToGenericDisplayableError(this.props.error);\r\n\r\n return

\r\n { this.props.showSkype &&
}\r\n \r\n { (configContext) => displayableError.emoticonPath &&\r\n \r\n }\r\n \r\n
\r\n \r\n { localizer.getString(displayableError.descriptionLocString) }\r\n \r\n
;\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nexport interface ProfilesContext {\r\n skypeId: string;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as ProfilesContext);\r\n\r\nexport const ProfilesContextProvider = context.Provider;\r\n\r\nexport const ProfilesContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Image, Text } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { defaultDimension, Dimension } from '../../models/SharedTypes';\r\n\r\ninterface HeaderState {\r\n browserSupportDimension: Dimension;\r\n}\r\n\r\nexport class Header extends React.PureComponent<{}, HeaderState> {\r\n\r\n private _browserSupportElement?: HTMLDivElement;\r\n private _debounce: number;\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n browserSupportDimension: defaultDimension,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('resize', this._updateDimensionDebouncer);\r\n this._updateDimension();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this._updateDimensionDebouncer);\r\n delete this._browserSupportElement;\r\n }\r\n\r\n renderJoinOnWebDisclaimer(): React.ReactNode {\r\n // Join on web only available in desktop\r\n if (deviceType !== DeviceTypes.Desktop || canJoinOnWeb) {\r\n return null;\r\n }\r\n\r\n let param;\r\n switch (os) {\r\n case OperatingSystems.MacOS:\r\n param = { list_supported_browser: localizer.getString('Meetings.txt_list_supported_browser_macos') };\r\n break;\r\n\r\n case OperatingSystems.Win:\r\n case OperatingSystems.WinRT:\r\n param = { list_supported_browser: localizer.getString('Meetings.txt_list_supported_browser_win') };\r\n break;\r\n\r\n case OperatingSystems.Linux:\r\n default:\r\n param = { list_supported_browser: localizer.getString('Meetings.txt_list_supported_browser_linux') };\r\n break;\r\n }\r\n\r\n return
\r\n
\r\n { (configContext) =>\r\n \r\n }\r\n \r\n { localizer.getString('Meetings.txt_banner_unsupported_browser', param) }\r\n \r\n
\r\n
;\r\n }\r\n\r\n render() {\r\n return <>\r\n { this.renderJoinOnWebDisclaimer() }\r\n ;\r\n }\r\n\r\n private _updateDimensionDebouncer = () => {\r\n if (this._debounce) {\r\n window.clearTimeout(this._debounce);\r\n }\r\n\r\n this._debounce = window.setTimeout(() => {\r\n this._updateDimension();\r\n }, 100);\r\n }\r\n\r\n private _updateDimension = () => {\r\n this.setState(() => {\r\n let browserSupportDimension: Dimension = defaultDimension;\r\n if (this._browserSupportElement) {\r\n browserSupportDimension = {\r\n height: this._browserSupportElement.clientHeight,\r\n width: this._browserSupportElement.clientWidth,\r\n };\r\n }\r\n return {\r\n browserSupportDimension,\r\n };\r\n });\r\n }\r\n\r\n private _setBrowserSupport = (element?: HTMLDivElement | null) => {\r\n if (element) {\r\n this._browserSupportElement = element;\r\n }\r\n }\r\n}\r\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","\"use strict\";\r\n/**\r\n* SkypeTokenData.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holder for SkypeToken information\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar subscribableevent_1 = require(\"subscribableevent\");\r\nvar SyncTasks = require(\"synctasks\");\r\nvar SkypeTokenData = /** @class */ (function () {\r\n function SkypeTokenData() {\r\n this.skypeTokenChanged = new subscribableevent_1.default();\r\n }\r\n SkypeTokenData.prototype.putSkypeTokenData = function (initialData) {\r\n this._data = initialData;\r\n if (this.isSkypeTokenValid()) {\r\n this.skypeTokenChanged.fire();\r\n }\r\n if (this.isSkypeTokenValid() && this._validSkypeTokenDeferral) {\r\n var deferral = this._validSkypeTokenDeferral;\r\n this._validSkypeTokenDeferral = undefined;\r\n deferral.resolve(void 0);\r\n }\r\n };\r\n SkypeTokenData.prototype.isSkypeTokenValid = function () {\r\n var tokenData = this._data;\r\n return !!tokenData && !!tokenData.skypeToken && tokenData.skypeTokenExpiration > Date.now();\r\n };\r\n SkypeTokenData.prototype.getSkypeToken = function () {\r\n var tokenData = this._data;\r\n if (!tokenData || !tokenData.skypeToken) {\r\n throw 'No Skype Token provided';\r\n }\r\n return tokenData.skypeToken;\r\n };\r\n SkypeTokenData.prototype.getSkypeTokenHash = function (token) {\r\n if (token === undefined) {\r\n return 0;\r\n }\r\n return token.split('').reduce(function (mem, next) { return (mem * 101 + next.charCodeAt(0)) % 999727999; }, token.length);\r\n };\r\n SkypeTokenData.prototype.waitForValidSkypeToken = function () {\r\n if (this.isSkypeTokenValid()) {\r\n return SyncTasks.Resolved();\r\n }\r\n // Need to wait for a new one to be poked in\r\n if (!this._validSkypeTokenDeferral) {\r\n this._validSkypeTokenDeferral = SyncTasks.Defer();\r\n }\r\n return this._validSkypeTokenDeferral.promise();\r\n };\r\n return SkypeTokenData;\r\n}());\r\nexports.default = SkypeTokenData;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { ConfigContext, ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { defaultDimension, Dimension } from '../../models/SharedTypes';\r\nimport { OptionProps, Select } from './Select';\r\n\r\nconst languages: OptionProps[] = [\r\n { value: 'en', text: 'English' },\r\n { value: 'ar', text: 'عربي' },\r\n { value: 'bg', text: 'Български' },\r\n { value: 'cs', text: 'Česky' },\r\n { value: 'da', text: 'Dansk' },\r\n { value: 'de', text: 'Deutsch' },\r\n { value: 'el', text: 'Ελληνικά' },\r\n { value: 'es', text: 'Español' },\r\n { value: 'et', text: 'Eesti' },\r\n { value: 'fi', text: 'Suomi' },\r\n { value: 'fr', text: 'Français' },\r\n { value: 'he', text: 'עברית' },\r\n { value: 'hi', text: 'हिन्दी' },\r\n { value: 'hu', text: 'Magyar' },\r\n { value: 'id', text: 'Bahasa Indonesia' },\r\n { value: 'it', text: 'Italiano' },\r\n { value: 'ja', text: '日本語' },\r\n { value: 'ko', text: '한국어' },\r\n { value: 'nl', text: 'Nederlands' },\r\n { value: 'no', text: 'Norsk' },\r\n { value: 'pl', text: 'Polski' },\r\n { value: 'pt', text: 'Português' },\r\n { value: 'pt-br', text: 'Português (Brasileiro)' },\r\n { value: 'ro', text: 'Română' },\r\n { value: 'ru', text: 'Русский' },\r\n { value: 'sv', text: 'Svenska' },\r\n { value: 'tr', text: 'Türkçe' },\r\n { value: 'uk', text: 'Українська' },\r\n { value: 'zh-Hans', text: '中文(简体)' },\r\n { value: 'zh-Hant', text: '中文 (繁體)' },\r\n];\r\n\r\ninterface FooterState {\r\n language: string;\r\n footerDimension: Dimension;\r\n}\r\n\r\ninterface FooterProps {\r\n dark?: boolean;\r\n showOnlyLegalInfo?: boolean;\r\n}\r\n\r\nexport class Footer extends React.PureComponent {\r\n private _footerElement?: HTMLDivElement;\r\n private _debounce: number;\r\n\r\n constructor(props: FooterProps) {\r\n super(props);\r\n\r\n const matchingLanguage = languages.filter((language) => language.value === localizer.getLocale());\r\n this.state = {\r\n language: matchingLanguage[0].value || 'en',\r\n footerDimension: defaultDimension,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('resize', this._updateDimensionDebouncer);\r\n this._updateDimension();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this._updateDimensionDebouncer);\r\n delete this._footerElement;\r\n }\r\n\r\n render() {\r\n const separator =
·
;\r\n return { (configContext) =>\r\n
\r\n
\r\n
\r\n { !this.props.showOnlyLegalInfo && <>\r\n logger.action({ name: 'faq' }) }>\r\n { localizer.getString('footer_btn_FAQ') }\r\n \r\n { separator }\r\n
\r\n \r\n \r\n }\r\n
\r\n
\r\n logger.action({ name: 'terms' }) }>\r\n { localizer.getString('footer_btn_terms') }\r\n \r\n { separator }\r\n logger.action({ name: 'privacy' }) }>\r\n { localizer.getString('footer_btn_privacy') }\r\n \r\n { separator }\r\n { localizer.getString('footer_btn_copyright', { YEAR: new Date().getFullYear().toString() }) }\r\n
\r\n
\r\n
\r\n }
;\r\n }\r\n\r\n private _selectedLanguage = () => {\r\n const matchingLanguage = languages.filter((language) => language.value === this.state.language);\r\n return matchingLanguage ? matchingLanguage[0] : undefined;\r\n }\r\n\r\n private _setElement = (element?: HTMLDivElement | null) => {\r\n if (element) {\r\n this._footerElement = element;\r\n }\r\n }\r\n\r\n private _updateDimensionDebouncer = () => {\r\n if (this._debounce) {\r\n window.clearTimeout(this._debounce);\r\n }\r\n\r\n this._debounce = window.setTimeout(() => {\r\n this._updateDimension();\r\n }, 100);\r\n }\r\n\r\n private _updateDimension = () => {\r\n this.setState(() => {\r\n let footerDimension: Dimension = defaultDimension;\r\n if (this._footerElement) {\r\n footerDimension = {\r\n height: this._footerElement.clientHeight,\r\n width: this._footerElement.clientWidth,\r\n };\r\n }\r\n return { footerDimension };\r\n });\r\n }\r\n\r\n private _changeLanguage = (configContext: ConfigContext) => {\r\n return (value: string) => {\r\n configContext.switchLanguage(value);\r\n };\r\n }\r\n}\r\n","import { AWTPiiKind } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\nimport { InviteContext, InviteContextProvider } from 'src/ts/contexts/invites/InviteContext';\r\nimport { AppIds } from 'src/ts/models/SharedTypes';\r\nimport HuddleApiClient from 'src/ts/rest/HuddleApiClient';\r\nimport { deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { displayableErrors, ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { InviteView } from './InviteView';\r\nimport { Launcher } from './Launcher';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n inviteContext?: InviteContext;\r\n error?: Error | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n constructor(props: ARootViewProps) {\r\n super(props);\r\n this.state = {\r\n launcherKey: deviceType === DeviceTypes.Desktop ? 1 : 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const shortId = this._getShortIdFromUrl();\r\n if (!shortId) {\r\n throw displayableErrors.InviteIdFromUrl;\r\n }\r\n\r\n HuddleApiClient.getOffSkypeInvite({\r\n shortId,\r\n type: AppIds.OffSkypeInvites,\r\n }).then((invite) => {\r\n this.setState({\r\n inviteContext: { invite },\r\n });\r\n logger.initCommonProperty({ key: CommonProperty.InviteSkypeId, value: invite.inviterSkypeId, piiKind: AWTPiiKind.Identity });\r\n }).catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.InviteNotFound, response, 'Get invite details');\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: ARootViewProps) {\r\n if (prevProps.loading && !this.props.loading) {\r\n document.title = localizer.getString('hdr_launch_title');\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n const invite = this.state.inviteContext ? this.state.inviteContext.invite : undefined;\r\n return \r\n { !!this.state.launcherKey && invite && }\r\n { (ariaContext) =>\r\n }\r\n initialViewProps={ { eventViewName: 'invite-view' } } />\r\n }\r\n ;\r\n }\r\n\r\n private _getShortIdFromUrl() {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n\r\n return pathParts.pop();\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","import UAParser from 'ua-parser-js';\r\nimport { QuickJoinFlowSupportedBrowsers } from '../contexts/EcsContext';\r\nimport { Dictionary } from '../models/SharedTypes';\r\n\r\nexport enum OperatingSystems {\r\n WinPhone = 'Windows Phone',\r\n WinRT = 'Windows RT',\r\n Win = 'Windows',\r\n iOS = 'iOS',\r\n MacOS = 'Mac OS',\r\n Android = 'Android',\r\n AndroidX86 = 'Android -x86',\r\n ChromeOS = 'ChromeOS',\r\n Linux = 'Linux',\r\n Tizen = 'Tizen',\r\n Ubuntu = 'Ubuntu',\r\n WebOS = 'WebOS',\r\n Unknown = 'Unknown',\r\n}\r\n\r\nexport enum Browsers {\r\n AndroidBrowser = 'Android Browser',\r\n Avast = 'Avast',\r\n AVG = 'AVG',\r\n Bolt = 'Bolt',\r\n ChromeWebView = 'Chrome WebView',\r\n Chrome = 'Chrome',\r\n Chromium = 'Chromium',\r\n Dolphin = 'Dolphin',\r\n EdgeOld = 'EdgeOld',\r\n Edge = 'Edge',\r\n Electron = 'Electron',\r\n Facebook = 'Facebook',\r\n Firefox = 'Firefox',\r\n Instagram = 'Instagram',\r\n Kindle = 'Kindle',\r\n Opera = 'Opera',\r\n OperaMini = 'Opera Mini',\r\n OperaMobile = 'Opera Mobile',\r\n MSIE = 'IE',\r\n Mozilla = 'Mozilla',\r\n Safari = 'Safari',\r\n SafariMobile = 'Mobile Safari',\r\n PhantomJS = 'PhantomJS',\r\n SamsungBrowser = 'Samsung Browser',\r\n SkypeShell = 'SkypeShell',\r\n Tesla = 'Tesla',\r\n Tizen = 'Tizen Browser',\r\n Yandex = 'Yandex',\r\n WeChat = 'WeChat',\r\n Baidu = 'baidu',\r\n Unknown = 'Unknown',\r\n}\r\n\r\nconst osRegExps: Dictionary = {};\r\nosRegExps[OperatingSystems.WinPhone] = /windows\\sphone/i;\r\nosRegExps[OperatingSystems.WinRT] = /arm;/i;\r\nosRegExps[OperatingSystems.Win] = /(windows|win32)/i;\r\nosRegExps[OperatingSystems.iOS] = /(iPad|iPhone|iPod)/i;\r\nosRegExps[OperatingSystems.MacOS] = /(macintosh|mac os x)/i;\r\nosRegExps[OperatingSystems.Android] = /android/i;\r\nosRegExps[OperatingSystems.ChromeOS] = /CrOS/i;\r\nosRegExps[OperatingSystems.Linux] = /(linux|x11)/i;\r\n\r\nconst browserRegExps: Dictionary = {};\r\nbrowserRegExps[Browsers.Opera] = /(OPR\\/|Opera)/i;\r\nbrowserRegExps[Browsers.EdgeOld] = /Edge/i;\r\nbrowserRegExps[Browsers.Edge] = /Edg/i;\r\nbrowserRegExps[Browsers.MSIE] = /Trident/i;\r\nbrowserRegExps[Browsers.Chrome] = /Chrome/i;\r\nbrowserRegExps[Browsers.Firefox] = /Firefox/i;\r\nbrowserRegExps[Browsers.Safari] = /Safari/i;\r\nbrowserRegExps[Browsers.Facebook] = /(FBAN|FBAV)/i;\r\n\r\nexport interface IBrowserVersion {\r\n major: number;\r\n minor: number;\r\n bugfix?: number;\r\n}\r\n\r\nexport enum DeviceTypes {\r\n Desktop = 'desktop',\r\n Mobile = 'mobile',\r\n Other = 'other',\r\n}\r\n\r\nexport class EnvironmentHelper {\r\n\r\n /**\r\n * Returns the Operating System the code is executed in\r\n *\r\n * @return {string}\r\n */\r\n static getOS = (): OperatingSystems => {\r\n const osInformation = EnvironmentHelper._uaParser.getOS();\r\n const detectedOs = osInformation?.name as OperatingSystems ?? EnvironmentHelper._getOsFallback(EnvironmentHelper._uaParser.getUA() || window.navigator.userAgent);\r\n // iPads send by default MacOS user agent to so correctly detect iPad we use this trick\r\n if (detectedOs === OperatingSystems.MacOS && (navigator?.maxTouchPoints ?? 0) > 1) {\r\n return OperatingSystems.iOS;\r\n }\r\n\r\n return detectedOs;\r\n }\r\n\r\n /**\r\n * Returns the browser name\r\n *\r\n * @return {string}\r\n */\r\n static getBrowserName = (): Browsers => {\r\n const browserName = EnvironmentHelper._uaParser.getBrowser();\r\n return browserName?.name as Browsers ?? EnvironmentHelper._getBrowserNameFallback(EnvironmentHelper._uaParser.getUA() || window.navigator.userAgent);\r\n }\r\n\r\n static getSafariBrowserVersion = (): IBrowserVersion | undefined => {\r\n const version = EnvironmentHelper._uaParser.getUA().match(/version\\/(\\d+)\\.(\\d+)(\\.(\\d+))?/i);\r\n\r\n if (!version) {\r\n return;\r\n }\r\n\r\n return {\r\n major: parseInt(version[1], 10),\r\n minor: parseInt(version[2], 10),\r\n bugfix: parseInt(version[4], 10) || undefined,\r\n };\r\n }\r\n\r\n static isSafariBrowserVersionAtLeast(minimumVersion: IBrowserVersion): boolean {\r\n if (EnvironmentHelper.getBrowserName() !== Browsers.Safari) {\r\n return false;\r\n }\r\n\r\n const version = EnvironmentHelper.getSafariBrowserVersion();\r\n\r\n if (!version) {\r\n return false;\r\n }\r\n\r\n return version.major > minimumVersion.major\r\n || (version.major === minimumVersion.major && version.minor >= minimumVersion.minor);\r\n }\r\n\r\n static isSafariBrowserEligibleForMeetingGuestFlow = (): boolean => {\r\n return EnvironmentHelper.isSafariBrowserVersionAtLeast({\r\n major: 13,\r\n minor: 1,\r\n });\r\n }\r\n\r\n /**\r\n * Returns the device type\r\n *\r\n * @return {string}\r\n */\r\n static getDeviceType = (): DeviceTypes => {\r\n switch (EnvironmentHelper.getOS()) {\r\n case OperatingSystems.Win:\r\n case OperatingSystems.MacOS:\r\n case OperatingSystems.WinRT:\r\n case OperatingSystems.ChromeOS:\r\n case OperatingSystems.Linux:\r\n case OperatingSystems.Ubuntu:\r\n return DeviceTypes.Desktop;\r\n\r\n case OperatingSystems.WinPhone:\r\n case OperatingSystems.iOS:\r\n case OperatingSystems.Android:\r\n case OperatingSystems.AndroidX86:\r\n return DeviceTypes.Mobile;\r\n\r\n case OperatingSystems.Unknown:\r\n case OperatingSystems.WebOS:\r\n case OperatingSystems.Tizen:\r\n default:\r\n return DeviceTypes.Other;\r\n }\r\n }\r\n\r\n static isQuickWebJoinSupported = (): boolean => {\r\n return EnvironmentHelper._currentBrowserSupportsQuickJoinOnWeb();\r\n }\r\n\r\n /**\r\n * Returns current screen resolution\r\n *\r\n * @return {string}\r\n */\r\n static getScreenResolution = (_screen = window.screen) => {\r\n if (_screen.width == null || typeof _screen.width === 'undefined' ||\r\n _screen.height == null || typeof _screen.height === 'undefined') {\r\n\r\n return 'Unknown';\r\n }\r\n\r\n return _screen.width + 'x' + _screen.height;\r\n }\r\n\r\n /**\r\n * Returns language from the browser\r\n *\r\n * @return {string}\r\n */\r\n static getLanguage = (_navigator = window.navigator) => {\r\n const lang = _navigator.language || (_navigator as any).userLanguage;\r\n\r\n if (lang !== undefined && lang.length > 2) {\r\n return lang.substr(0, 2);\r\n }\r\n\r\n return lang;\r\n }\r\n\r\n /**\r\n * Returns the iOS version\r\n * Based on detectDevice can returns iPhone/iPad or just version number\r\n *\r\n * @return {string}\r\n */\r\n static getIOSVersion() {\r\n\r\n const iOSVersionMatches = EnvironmentHelper._uaParser.getUA().match(\r\n new RegExp('(iPhone OS|CPU OS)' + ' ([\\\\d_]+)'),\r\n );\r\n\r\n if (iOSVersionMatches) {\r\n return iOSVersionMatches[2].replace(/_/g, '.');\r\n }\r\n\r\n return 'Unknown';\r\n }\r\n\r\n static isIOSInAppBrowserFlow = (_os: OperatingSystems = os, _browser: Browsers = browser): boolean => {\r\n const knownInAppBrowsers = [\r\n Browsers.Facebook,\r\n ];\r\n\r\n return _os === OperatingSystems.iOS && knownInAppBrowsers.indexOf(browser) > -1;\r\n }\r\n\r\n static getSupportedBrowsersDefault = (): QuickJoinFlowSupportedBrowsers => {\r\n return {\r\n android: [Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n ios: [Browsers.Safari, Browsers.SafariMobile, Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n mac: [Browsers.Safari, Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n windows: [Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.EdgeOld, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n others: [Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n };\r\n }\r\n\r\n static updateEnvironmentSettings = (quickJoinFlowSupportedBrowsers?: QuickJoinFlowSupportedBrowsers, customUaParser?: UAParser) => {\r\n EnvironmentHelper._quickJoinFlowSupportedBrowsers = quickJoinFlowSupportedBrowsers ?? EnvironmentHelper._quickJoinFlowSupportedBrowsers;\r\n if (customUaParser) {\r\n EnvironmentHelper._uaParser = customUaParser;\r\n }\r\n }\r\n\r\n private static _uaParser = new UAParser();\r\n private static _quickJoinFlowSupportedBrowsers = EnvironmentHelper.getSupportedBrowsersDefault();\r\n\r\n private static _currentBrowserSupportsQuickJoinOnWeb = (): boolean => {\r\n const currentBrowser = EnvironmentHelper.getBrowserName();\r\n const currentOs = EnvironmentHelper.getOS();\r\n const supportedBrowsers = EnvironmentHelper._quickJoinFlowSupportedBrowsers;\r\n switch (currentOs) {\r\n case OperatingSystems.Android:\r\n case OperatingSystems.AndroidX86:\r\n case OperatingSystems.ChromeOS:\r\n return supportedBrowsers.android.includes(currentBrowser);\r\n\r\n case OperatingSystems.iOS:\r\n return supportedBrowsers.ios.includes(currentBrowser);\r\n\r\n case OperatingSystems.MacOS:\r\n return supportedBrowsers.mac.includes(currentBrowser);\r\n\r\n case OperatingSystems.Win:\r\n case OperatingSystems.WinRT:\r\n return supportedBrowsers.windows.includes(currentBrowser);\r\n\r\n default:\r\n return supportedBrowsers.others.includes(currentBrowser);\r\n }\r\n }\r\n\r\n private static _getOsFallback = (userAgent: string): OperatingSystems => {\r\n for (const osKey in osRegExps) {\r\n if (userAgent.match(osRegExps[osKey])) {\r\n // iPads send by default MacOS user agent to so correctly detect iPad we use this trick\r\n if (osKey === OperatingSystems.MacOS && (navigator?.maxTouchPoints ?? 0) > 1) {\r\n return OperatingSystems.iOS;\r\n }\r\n\r\n return osKey as OperatingSystems;\r\n }\r\n }\r\n\r\n return OperatingSystems.Unknown;\r\n }\r\n\r\n private static _getBrowserNameFallback = (userAgent: string): Browsers => {\r\n for (const browserKey in browserRegExps) {\r\n if (userAgent.match(browserRegExps[browserKey])) {\r\n return browserKey as Browsers;\r\n }\r\n }\r\n\r\n return Browsers.Unknown;\r\n }\r\n}\r\n\r\n// PlatformVersion: Helpers.Environment.pureOSVersion,\r\n// Platform: Helpers.Environment.platform,\r\n// Language: Helpers.Environment.language,\r\n// ScreenResolution: Helpers.Environment.screenResolution\r\n\r\nexport const os = EnvironmentHelper.getOS();\r\nexport const browser = EnvironmentHelper.getBrowserName();\r\nexport const deviceType = EnvironmentHelper.getDeviceType();\r\nexport const canJoinOnWeb = EnvironmentHelper.isQuickWebJoinSupported();\r\nexport const screenResolution = EnvironmentHelper.getScreenResolution();\r\nexport const deviceLanguage = EnvironmentHelper.getLanguage();\r\nexport const platform = window.navigator.platform;\r\nexport const isIOSInAppBrowserFlow = EnvironmentHelper.isIOSInAppBrowserFlow();\r\nexport const isSafariBrowserEligibleForMeetingGuestFlow = EnvironmentHelper.isSafariBrowserEligibleForMeetingGuestFlow();\r\nexport const getSupportedBrowsersDefault = EnvironmentHelper.getSupportedBrowsersDefault();\r\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","import * as React from 'react';\r\nimport { getSupportedBrowsersDefault } from './../helpers/EnvironmentHelper';\r\n\r\nexport interface EcsSettings {\r\n useMeetingsApi: boolean;\r\n useUnifiedView: boolean;\r\n useJoinThread?: boolean;\r\n maxRetries?: number;\r\n allowDesktopSafariGuestFlow?: boolean;\r\n webSubdomainForRedirect?: string;\r\n useNewMobileJoinFlow?: boolean;\r\n quickJoinFlowSupportedBrowsers?: QuickJoinFlowSupportedBrowsers;\r\n}\r\n\r\nexport interface QuickJoinFlowSupportedBrowsers {\r\n windows: string[];\r\n mac: string[];\r\n ios: string[];\r\n android: string[];\r\n others: string[];\r\n}\r\n\r\nexport interface EcsContext {\r\n settings: EcsSettings;\r\n}\r\n\r\nconst context = React.createContext({} as EcsContext);\r\n\r\nconst ecsDefaults: EcsSettings = {\r\n useMeetingsApi: true,\r\n useUnifiedView: true,\r\n useJoinThread: true,\r\n maxRetries: 0,\r\n useNewMobileJoinFlow: true,\r\n allowDesktopSafariGuestFlow: true,\r\n quickJoinFlowSupportedBrowsers: getSupportedBrowsersDefault,\r\n};\r\n\r\nexport const EcsContextProvider = context.Provider;\r\n\r\nexport const EcsContextConsumer = context.Consumer;\r\n\r\nexport const EcsConfigFallback = ecsDefaults;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Header, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { ProfilesContextConsumer } from '../../contexts/profiles/ProfilesContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Padder } from '../common/Padder';\r\n\r\ninterface ProfileViewProps {\r\n onLaunchClick: () => void;\r\n}\r\n\r\nexport class ProfileView extends React.PureComponent {\r\n\r\n renderAvatar() {\r\n return { (profilesContext) =>\r\n \r\n };\r\n }\r\n\r\n renderTitle() {\r\n return { (profilesContext) =>\r\n
{ localizer.get('add_to_contacts_user', {\r\n user_name: { profilesContext.skypeId },\r\n }) }
\r\n }
;\r\n }\r\n\r\n renderControls() {\r\n return <>\r\n \r\n ;\r\n }\r\n\r\n renderBody() {\r\n return <>\r\n \r\n { localizer.getString('txt_launch_first_time_device') }\r\n \r\n \r\n { localizer.get('txt_launch_please_download', {\r\n download_skype: \r\n { localizer.getString('btn_launch_download_skype') }\r\n ,\r\n }) }\r\n \r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n { this.renderAvatar() }\r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _downloadSkype = () => {\r\n logger.action({ name: 'download' });\r\n\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n }\r\n}\r\n","\nvar content = require(\"!!../../node_modules/css-loader/index.js??ref--6-1!../../node_modules/postcss-loader/lib/index.js??ref--6-2!../../node_modules/less-loader/dist/cjs.js!./app.less\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js??ref--6-1!../../node_modules/postcss-loader/lib/index.js??ref--6-2!../../node_modules/less-loader/dist/cjs.js!./app.less\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js??ref--6-1!../../node_modules/postcss-loader/lib/index.js??ref--6-2!../../node_modules/less-loader/dist/cjs.js!./app.less\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\r\n * @copyright © Microsoft. All rights reserved.\r\n *\r\n * Skype Silent Login SDK\r\n */\r\n(function() {\r\n \"use strict\";\r\n\r\n if (typeof window.SKYPE === \"undefined\") {\r\n window.SKYPE = {};\r\n }\r\n window.SKYPE.login = window.SKYPE.login || {};\r\n\r\n window.SKYPE.login.Silent = (function() {\r\n var loginDomains = {\r\n qa: \"https://a.qa.lw.skype.net\",\r\n live: \"https://a.lw.skype.com\"\r\n },\r\n ssoLoginDomains = {\r\n qa: \"https://a.qalogin.skype.net\",\r\n live: \"https://a.login.skype.com\"\r\n },\r\n originCheckMap = {\r\n qa: [\"https://a.qa.lw.skype.net\", \"https://a.qalogin.skype.net\"],\r\n live: [\"https://a.lw.skype.com\", \"https://a.login.skype.com\"]\r\n },\r\n endpoint = \"/login/silent\", // Silent login endpoint uri\r\n endpointVersion = \"1.0\", // Endpoint version\r\n iFrameReference = null, // iFrame object reference\r\n ancestorElement, // iFrame's ancestor\r\n callback, // Callback function\r\n response = {}, // Response object\r\n timeout = 5000, // Timeout for the call in ms\r\n timeoutObj = null, // Timeout reference\r\n host = null, // Selected login hostname\r\n originCheckHosts = null, // Array of hosts for postmessage origin check\r\n state = \"\", // State passed through the silent login\r\n eventRegistered = false, // Post message event listener registered\r\n processing = false, // Processing the Silent login request\r\n logEnabled = null; // Debug logging enabled\r\n\r\n /**\r\n * Settings object. will be overriden by init()\r\n */\r\n var settings = {\r\n env: \"live\",\r\n client_id: null,\r\n redirect_uri: null,\r\n isSsoCompatible: false\r\n };\r\n\r\n /**\r\n * Simple debug logger\r\n *\r\n * @param string message Logged message\r\n * @param Object debug Optional debug data\r\n *\r\n * @return void\r\n */\r\n var _log = function(message, debug) {\r\n if (logEnabled === null) {\r\n logEnabled = (window.location.host.match(/^(pre|dev|qa).*\\.net$/) || document.cookie.indexOf(\"debug\") > -1 || window.location.search.indexOf(\"debug\") > -1);\r\n }\r\n if (!logEnabled) {\r\n return;\r\n }\r\n try {\r\n if (typeof debug === \"object\") {\r\n var tokens = [];\r\n\r\n for (var prop in debug) {\r\n if (prop === \"skypetoken\") {\r\n // Hide the skypetoken from console\r\n tokens.push(prop + \": \" + \"\");\r\n } else {\r\n tokens.push(prop + \": \" + JSON.stringify(debug[prop]));\r\n }\r\n }\r\n\r\n message += \" - \" + tokens.join(\", \");\r\n } else if (typeof debug === \"string\") {\r\n message += \" - \" + debug;\r\n }\r\n message = \"[silentlogin.js] - \" + message;\r\n console.log(message);\r\n } catch (e) {}\r\n };\r\n\r\n /**\r\n * Post message event listener\r\n *\r\n * @return void\r\n */\r\n var _messageListener = function(e) {\r\n _log(\"Received message from \" + e.origin);\r\n\r\n // Verify the message origin\r\n var originCheckPassed = false;\r\n\r\n if (!originCheckHosts) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < originCheckHosts.length; i++) {\r\n if (e.origin === originCheckHosts[i]) {\r\n originCheckPassed = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!originCheckPassed) {\r\n return;\r\n }\r\n\r\n var data = e.data;\r\n\r\n // If the postMessage sends just a string, try to JSON parse it\r\n if (typeof e.data === \"string\") {\r\n try {\r\n data = JSON.parse(e.data);\r\n } catch (ex) {}\r\n }\r\n _log(\"Message data\", data);\r\n\r\n // Verify the message state\r\n var receivedState = data.state || null;\r\n if (state !== receivedState) {\r\n _log(\"State \" + receivedState + \" doesn't match the last submitted state \" + state);\r\n return;\r\n }\r\n // Response is trusted\r\n window.clearTimeout(timeoutObj);\r\n // Clone the response data\r\n response = {};\r\n for (var attr in data) {\r\n if (data.hasOwnProperty(attr)) {\r\n response[attr] = data[attr];\r\n }\r\n }\r\n\r\n _callCallback();\r\n };\r\n\r\n /**\r\n * Create the silent login iframe and start loading\r\n *\r\n * @return void\r\n */\r\n var _createSilentLogin = function(source) {\r\n _destroySilentLogin();\r\n if (typeof ancestorElement === \"undefined\") {\r\n // Use body as the ancestor, but when it's not available yet, use head instead.\r\n // document.head is not available in IE8, so fallback is to get it by tag name.\r\n ancestorElement = document.body || document.head || document.getElementsByTagName('head')[0];\r\n }\r\n iFrameReference = document.createElement(\"iframe\");\r\n iFrameReference.frameBorder = 0;\r\n iFrameReference.width = \"1px\";\r\n iFrameReference.height = \"1px\";\r\n iFrameReference.style.display = \"none\";\r\n iFrameReference.style.visibility = \"hidden\";\r\n iFrameReference.id = \"silentLoginFrame\" + Math.floor((Math.random() * 10) + 1);\r\n iFrameReference.setAttribute(\"src\", source);\r\n ancestorElement.appendChild(iFrameReference);\r\n _log(\"Created iFrame: \" + source);\r\n };\r\n\r\n /**\r\n * Destroy the silent login iframe\r\n *\r\n * @return void\r\n */\r\n var _destroySilentLogin = function() {\r\n if (iFrameReference) {\r\n ancestorElement.removeChild(iFrameReference);\r\n iFrameReference = null;\r\n }\r\n };\r\n\r\n /**\r\n * Verify if the provided settings are valid. Initialize the redirect uri if missing.\r\n *\r\n * @return void\r\n */\r\n var _validateSettings = function() {\r\n if (!settings.client_id) {\r\n throw \"[silentlogin.js] client_id not initialized. Call init() first.\";\r\n }\r\n\r\n if (!settings.redirect_uri) {\r\n // If redirect_uri not set, use the page location (without parameters)\r\n settings.redirect_uri = window.location.protocol + \"//\" + window.location.host + window.location.pathname;\r\n }\r\n };\r\n\r\n /**\r\n * Check if the browser supports postMessage and JSON.parse\r\n *\r\n * @return boolean\r\n */\r\n var _isSupportedBrowser = function() {\r\n return (\"postMessage\" in window) && (typeof JSON === \"object\" && JSON.parse);\r\n };\r\n\r\n /**\r\n * Call the callback function and pass the response object to it.\r\n *\r\n * @return void\r\n */\r\n var _callCallback = function() {\r\n _log(\"Calling callback function\", response);\r\n\r\n // No longer processing request. Unlock.\r\n processing = false;\r\n\r\n if (typeof callback === \"function\") {\r\n callback(response);\r\n }\r\n };\r\n\r\n /**\r\n * Handle timeout event and call the callback function.\r\n *\r\n * @return void\r\n */\r\n var _handleTimeout = function() {\r\n _destroySilentLogin();\r\n response = {};\r\n response.error = \"timeout\";\r\n _callCallback();\r\n };\r\n\r\n /**\r\n * Serialize object into query parameters\r\n *\r\n * @param Object query Object holding the parameters to serialize\r\n * @return string Serialized query string\r\n */\r\n var _createQuery = function(query) {\r\n var str = [];\r\n for (var k in query) {\r\n if (query.hasOwnProperty(k)) {\r\n str.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(query[k]));\r\n }\r\n }\r\n return str.join(\"&\");\r\n };\r\n\r\n /**\r\n * Get the iFrame source url\r\n *\r\n * @return string Frame url\r\n */\r\n var _getFrameSource = function() {\r\n var timestamp = new Date().getTime(),\r\n domainMap = settings.isSsoCompatible ? ssoLoginDomains : loginDomains;\r\n\r\n state = \"silentloginsdk_\" + timestamp;\r\n var query = {\r\n response_type: \"postmessage\",\r\n client_id: settings.client_id,\r\n partner: \"999\",\r\n redirect_uri: settings.redirect_uri,\r\n state: state,\r\n _accept: endpointVersion,\r\n _nc: timestamp\r\n };\r\n\r\n originCheckHosts = originCheckMap[settings.env] || originCheckMap.live;\r\n host = domainMap[settings.env] || domainMap.live;\r\n return host + endpoint + \"?\" + _createQuery(query);\r\n };\r\n\r\n /**\r\n * Initialize the Silent login before using it\r\n *\r\n * Pass in the settings object:\r\n *
\r\n         * {\r\n         *  env: \"\", // Skype environment to be used: Live (default), QA. Optional.\r\n         *  client_id: , // Client id of your application. Mandatory.\r\n         *  redirect_uri: , // Redirect uri of your application. If left empty, will be autodetected from current location. (Optional, recommended)\r\n         * }\r\n         * 
\r\n *\r\n * @param Object options Silent login options\r\n * @return SKYPE.login.Silent\r\n */\r\n var init = function(options) {\r\n if (typeof options === \"object\") {\r\n options = options || {};\r\n // If callback function passed into init method, set it correctly\r\n if (options.hasOwnProperty(\"callback\")) {\r\n setCallback(options.callback);\r\n }\r\n // Copy overrides to settings\r\n for (var k in settings) {\r\n if (options.hasOwnProperty(k)) {\r\n settings[k] = options[k];\r\n }\r\n }\r\n }\r\n // Register the message listener\r\n if (!eventRegistered) {\r\n eventRegistered = true;\r\n if (!window.addEventListener) {\r\n window.attachEvent(\"onmessage\", _messageListener);\r\n } else {\r\n window.addEventListener(\"message\", _messageListener, false);\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Set the callback function, which will be called once we get the result.\r\n * Note the function parameter will contain the response object.\r\n *\r\n * @param function callbackFunction Callback function\r\n * @return SKYPE.login.Silent\r\n */\r\n var setCallback = function(callbackFunction) {\r\n if (typeof callbackFunction === \"function\") {\r\n callback = callbackFunction;\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Trigger loading the Silent login iFrame. Registered callback will be called once finished.\r\n *\r\n * @return void\r\n */\r\n var load = function() {\r\n // Prevent multiple simultaneous calls\r\n if (processing) {\r\n return;\r\n }\r\n _validateSettings();\r\n processing = true;\r\n // If this browser doesn't support postMessage, we're done.\r\n if (!_isSupportedBrowser()) {\r\n response = {error: \"unsupported_browser\"};\r\n _callCallback();\r\n return;\r\n }\r\n // Initialize timer\r\n window.clearTimeout(timeoutObj);\r\n timeoutObj = window.setTimeout(_handleTimeout, timeout);\r\n // Start loading the iFrame\r\n _createSilentLogin(_getFrameSource());\r\n };\r\n\r\n /**\r\n * Get the Skypetoken from response or null if not provided\r\n *\r\n * @return string|null Skypetoken or null\r\n */\r\n var getSkypetoken = function() {\r\n return response.skypetoken || null;\r\n };\r\n\r\n /**\r\n * Get the full response object\r\n *\r\n * @return Object Response object\r\n */\r\n var getFullResponse = function() {\r\n return response;\r\n };\r\n\r\n return {\r\n init: init,\r\n setCallback: setCallback,\r\n load: load,\r\n getSkypetoken: getSkypetoken,\r\n getFullResponse: getFullResponse\r\n };\r\n }());\r\n}());\r\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".footer{position:absolute;left:0;right:0;bottom:0;background-color:#f2f2f2;color:#2b2c33;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-justify-content:space-between;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:9.6px;font-size:.6rem;font-weight:700;min-height:19.2px;min-height:1.2rem;padding:5px 10px}@media only screen and (max-width:600px){.footer{text-align:center}}.footer.dark{background-color:transparent;color:#fff}.footer .link{color:#000;opacity:.8;text-decoration:none}.footer.dark .link{opacity:1;color:#fff}.footer .link:focus,.footer .link:hover{color:#000}.footer_link:focus{color:#000;text-decoration:underline}.footer .separator{display:inline-block;margin:0;padding:0 3px}@media only screen and (max-width:600px){.footer .app{width:100%}}@media only screen and (max-width:600px){.footer .legal{opacity:.5;width:100%}}@media only screen and (max-width:412px){.footer .legal .footer .separator:last-of-type{display:none}}.rtl .footer .app{margin-left:20px;margin-right:0}@media only screen and (max-width:412px){.copyright{display:block;width:100%}}.language-selector{display:inline-block;position:relative}.language-selector .selected{line-height:15px;display:inline-block}.language-selector .select{border:none;cursor:pointer;height:100%;left:0;font-size:11px;opacity:0;position:absolute;top:0;width:100%;z-index:20}.rtl .language-selector .select{left:auto;right:0}.header{position:absolute;left:0;right:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header.dark{background-color:#2b2c33;color:#fff}.header-flex{-ms-flex-item-align:start;align-self:flex-start}.header a.light{text-decoration:none;color:#0078d4}.stack.fullscreen,.stack.fullscreen>div{height:100%;width:100%;position:absolute}.stack.nested{height:100%;width:100%}.stack>div{box-sizing:border-box;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-ms-justify-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.stack.prev{z-index:0;overflow:hidden}.stack.current{z-index:1;overflow:hidden}@-webkit-keyframes stackFade{0%{opacity:0}to{opacity:1}}@keyframes stackFade{0%{opacity:0}to{opacity:1}}@-webkit-keyframes stackFadeOut{0%{opacity:1}to{opacity:0}}@keyframes stackFadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes stackLeft{0%{left:100%}to{left:0}}@keyframes stackLeft{0%{left:100%}to{left:0}}@-webkit-keyframes stackLeftOut{0%{left:0}to{left:100%}}@keyframes stackLeftOut{0%{left:0}to{left:100%}}@-webkit-keyframes stackRight{0%{right:100%}to{right:0}}@keyframes stackRight{0%{right:100%}to{right:0}}@-webkit-keyframes stackRightOut{0%{right:0}to{right:100%}}@keyframes stackRightOut{0%{right:0}to{right:100%}}.meetings.joinView{padding:0 1rem}.meetings.joinView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.meetings.joinView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.meetings.joinView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.meetings.joinView .body{margin:1rem 0;text-align:center}@font-face{font-family:SkypeAssetsLight;src:url(https://meetnow.azureedge.net/assets/v2/SkypeAssets-Light.woff) format(\\\"woff\\\")}.meetings.joinView .joinLinkContainer{font-size:16px;font-size:1rem;text-align:center;width:100%}.meetings.joinView .joinLinkContainer .joinLink{background-color:#f1f1f4;border-radius:11px;box-sizing:border-box;color:#2b2c33;font-size:18px;height:50px;line-height:50px;margin:10px 0;overflow:hidden;padding:0 45px;position:relative;text-align:left;text-overflow:ellipsis;width:100%}[dir=rtl] .meetings.joinView .joinLinkContainer .joinLink{text-align:right}.meetings.joinView .joinLinkContainer .joinLink:after,.meetings.joinView .joinLinkContainer .joinLink:before{cursor:pointer;font-family:SkypeAssetsLight;font-size:20px;position:absolute;top:0;width:20px}.meetings.joinView .joinLinkContainer .joinLink:before{color:#7b7b7b;content:\\\"\\\\E612\\\"}.meetings.joinView .joinLinkContainer .joinLink:after{content:\\\"\\\\E941\\\"}.meetings.joinView .joinLinkContainer .joinLink.copied:after{color:green;content:\\\"\\\\E412\\\"}[dir=ltr] .meetings.joinView .joinLinkContainer .joinLink:before,[dir=rtl] .meetings.joinView .joinLinkContainer .joinLink:after{left:15px}[dir=ltr] .meetings.joinView .joinLinkContainer .joinLink:after,[dir=rtl] .meetings.joinView .joinLinkContainer .joinLink:before{right:15px}.guestLogin .ui-input input{background:transparent;border-bottom:1px solid #fff;border-radius:0;color:#fff;text-align:center;line-height:normal}.guestLogin .ui-input input::-webkit-input-placeholder{color:#fff}.guestLogin .ui-input input:-ms-input-placeholder{color:#fff}.guestLogin .ui-input input::placeholder{color:#fff}.loginView .body{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.loginView .body a{color:#fff;text-decoration:underline}.loginView .actions>.ui-button{margin:1rem 0 0;width:100%;min-width:192px;min-width:12rem;height:48px;height:3rem}.loginView .body .actions{padding:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.loginView .body .actions .help{font-size:small;margin-top:1rem}.loginView .body .actions .active{background:#fff;color:#000;border-radius:10px;cursor:pointer}.loginView .body .actions .active .ui-button{width:100%;height:auto;border-radius:0;margin:0;color:#000;min-width:0}.loginView .body .actions .active .login-option{width:100%}.loginView .body .actions .active .login-option>.ui-layout__main{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;padding-left:1rem}.loginView .body .actions .active .ui-button:focus,.loginView .body .actions .active .ui-button:hover{background-color:#f1f1f4}.loginView .body .actions .active .ui-layout__start>.ui-button:focus,.loginView .body .actions .active .ui-layout__start>.ui-button:hover{border-top-left-radius:10px;border-top-right-radius:10px}.loginView .body .actions .active .ui-layout__end>.ui-button:focus,.loginView .body .actions .active .ui-layout__end>.ui-button:hover{border-bottom-left-radius:10px;border-bottom-right-radius:10px}.loginView .captcha-container :focus{outline-color:#fff}.unifiedView .body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.unifiedView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.unifiedView .actions-container{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;width:100%}.unifiedView .actions-container,.unifiedView .text-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.unifiedView .text-body{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.unifiedView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.unifiedView .margin-top{margin-top:1rem}.unifiedView .actions>.ui-button{margin:1rem 0 0;width:100%;min-width:192px;min-width:12rem;height:48px;height:3rem}.unifiedView .body .actions{padding:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;margin-bottom:20px}.unifiedView .body .actions .help{font-size:small;margin-top:1rem}.unifiedView .body .actions .active{background:#fff;color:#000;border-radius:10px;cursor:pointer}.unifiedView .body .actions .active .ui-button{width:100%;height:auto;border-radius:0;margin:0;color:#000;min-width:0}.unifiedView .body .actions .active .login-option{width:100%}.unifiedView .body .actions .active .login-option>.ui-layout__main{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;padding-left:1rem}.unifiedView .body .actions .active .ui-button:focus,.unifiedView .body .actions .active .ui-button:hover{background-color:#f1f1f4}.unifiedView .body .actions .active .ui-layout__start>.ui-button:focus,.unifiedView .body .actions .active .ui-layout__start>.ui-button:hover{border-top-left-radius:10px;border-top-right-radius:10px}.unifiedView .body .actions .active .ui-layout__end>.ui-button:focus,.unifiedView .body .actions .active .ui-layout__end>.ui-button:hover{border-bottom-left-radius:10px;border-bottom-right-radius:10px}.unifiedView .body a{color:#000}.unifiedView .guestLogin .ui-input input{background:transparent;border-bottom:1px solid #0078ca;border-radius:0;text-align:center;color:#000;line-height:normal}.unifiedView .guestLogin .ui-input input:focus{box-shadow:none}.unifiedView .guestLogin .ui-input input::-webkit-input-placeholder{color:#a8abad}.unifiedView .guestLogin .ui-input input:-ms-input-placeholder{color:#a8abad}.unifiedView .guestLogin .ui-input input::placeholder{color:#a8abad}.unifiedView .footer{background-color:transparent}.unifiedView div.selectWrapper,.unifiedView span.copyright{color:#000;opacity:.8}.unifiedView .captcha-container input.solution{background:transparent;border-width:1px!important;border-bottom:1px solid #a8abad;color:#a8abad;text-align:center!important;line-height:normal}.unifiedView .captcha-container :focus{outline-color:#000}.unifiedView .guestLogin button:first-of-type{background-color:#0078ca;color:#fff}.unifiedView .guestLogin button:first-of-type[disabled]{background-color:#d5d9de}.unifiedView .guestLogin button:last-of-type .ui-text{color:#000}.unifiedView .guestLogin .spinnerContainer{width:16px;width:1rem;height:16px;height:1rem;line-height:16px;line-height:1rem;margin:0 .5rem 0 -1.5rem}[dir=rtl] .unifiedView .guestLogin .spinnerContainer{margin:0 -1.5rem 0 .5rem}.unifiedView .guestLogin .spinnerContainer .ui-animation g[stroke]{stroke:#fff}.invites.inviteView{padding:0 1rem}.invites.inviteView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.invites.inviteView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.invites.inviteView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.invites.inviteView .body{margin:1rem 0;text-align:center}.captcha-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.captcha-container table{border-collapse:collapse;border-spacing:0}.captcha-container td,.captcha-container th{border:none}.captcha-container input.solution{padding:.375rem .75rem!important;outline:0;overflow:visible;font-family:inherit;font-size:16px;font-size:1rem;margin:0!important;width:222px!important;background:transparent;border-width:1px!important;border:none;border-bottom:1px solid #fff;color:#fff;text-align:center!important;line-height:normal}.captcha-container a.link{font-size:16px;font-size:1rem}.captcha-container .menu{text-align:center}.captcha-container img{padding-left:10px}.errorDetails{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.5rem}.errorDetails .title{text-align:center;font-weight:100}@media only screen and (max-width:767px){.errorDetails h2{font-size:1.5rem}}.errorDetails .description{text-align:center;max-width:400px;margin:0 auto}.errorBoundary{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:0 4%;overflow:auto}.errorBoundary,.errorBoundary .alternatives{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.errorBoundary .alternatives{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;padding-top:100px}@media only screen and (max-width:767px){.errorBoundary .alternatives{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}}.errorBoundary .alternatives .item{max-width:250px;padding:30px 20px}@media only screen and (max-width:767px){.errorBoundary .alternatives .item{max-width:none;padding:1rem}}.errorBoundary .alternatives .item .ui-button{margin:0;padding:0}.errorBoundary .alternatives .item .ui-header{font-weight:100}@media only screen and (max-width:767px){.errorBoundary .alternatives .item .ui-header{margin-top:1rem;font-size:1.5rem}}.errorBoundary .alternatives .item .ui-header__description{font-size:16px;font-size:1rem;margin-bottom:0}.bots.addBotView{text-align:center;padding:0 1rem}.bots.addBotView .body{max-width:815px}.bots.addBotView h1{margin:1rem;font-weight:100}.bots.addBotView .ui-button{min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin-bottom:1rem}@media only screen and (max-width:767px){.bots.addBotView .ui-button{min-width:10rem;min-height:3rem;margin:2rem 0}}.botDetails{text-align:justify;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:815px}.botDetails .capabilities{margin:2rem 0}.botDetails .capabilities ul{list-style:none;margin:0;padding:0 0 0 .1rem}.botDetails .capabilities li{text-indent:-1.6px;text-indent:-.1rem;line-height:16px;line-height:1rem}.botDetails .capabilities li span{display:inline;display:initial}.botDetails .capabilities li:before{content:\\\"- \\\"}.botDetails .capabilities h3{margin:0;font-size:16px;font-size:1rem}.botDetails .disclaimer{text-align:justify}.botDetails .privacy{text-align:center;font-size:16px;font-size:1rem;margin:2rem 0}.botDetails .privacy a{text-decoration:none}.botDetails .privacy a:hover{text-decoration:underline}.botInfoContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #eff5f8;border-top:1px solid #eff5f8;margin:1.5rem 0;padding:1.5rem 0;width:100%}@media only screen and (max-width:767px){.botInfoContainer{margin:0;padding:0;border:0}}.botInfoContainer .certified{margin-bottom:.5rem;margin-right:.5rem}.botInfoContainer h2{margin:0;font-size:32px;font-size:2rem;font-weight:100}.botInfoContainer h3{margin:0;font-size:16px;font-size:1rem;font-weight:100}.botInfoContainer .ui-avatar{height:120px;height:7.5rem;width:120px;width:7.5rem}.botInfoContainer .avatarMask{height:100%;left:0;position:absolute;top:0;width:100%}.do.doView{padding:0 1rem}.do.doView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.do.doView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.do.doView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.do.doView .body{margin:1rem 0;text-align:center}.profiles.profileView{padding:0 1rem}.profiles.profileView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.profiles.profileView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.profiles.profileView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.profiles.profileView .body{margin:1rem 0;text-align:center}body[data-platform=macIos],body[data-platform=macIos] button,body[data-platform=macIos] input,body[data-platform=macIos] select,body[data-platform=macIos] textarea{font-family:-apple-system,BlinkMacSystemFont,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif!important}body[data-platform=android],body[data-platform=android] button,body[data-platform=android] input,body[data-platform=android] select,body[data-platform=android] textarea{font-family:Roboto,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif!important}html[lang=bg] body,html[lang=bg] button,html[lang=bg] input,html[lang=bg] select,html[lang=bg] textarea,html[lang=ru] body,html[lang=ru] button,html[lang=ru] input,html[lang=ru] select,html[lang=ru] textarea,html[lang=uk] body,html[lang=uk] button,html[lang=uk] input,html[lang=uk] select,html[lang=uk] textarea{font-family:Segoe UI,Segoe WP,Segoe UI Cyrillic Web,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=el] body,html[lang=el] button,html[lang=el] input,html[lang=el] select,html[lang=el] textarea{font-family:Segoe UI,Segoe WP,Segoe UI Greek Web,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=he] body,html[lang=he] button,html[lang=he] input,html[lang=he] select textarea{font-family:Segoe UI,Segoe WP,Segoe UI Hebrew Web,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=hi] body,html[lang=hi] button,html[lang=hi] input,html[lang=hi] select,html[lang=hi] textarea{font-family:Local Hindi,Segoe UI,Segoe WP,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=ja] body,html[lang=ja] button,html[lang=ja] input,html[lang=ja] select,html[lang=ja] textarea{font-family:Meiryo,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}html[lang=ko] body,html[lang=ko] button,html[lang=ko] input,html[lang=ko] select,html[lang=ko] textarea{font-family:Malgun Gothic,Gulim,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}html[lang=zh-Hant] body,html[lang=zh-Hant] button,html[lang=zh-Hant] input,html[lang=zh-Hant] select,html[lang=zh-Hant] textarea{font-family:微軟正黑體Microsoft JhengHei,微軟正黑體 Microsoft JhengHei,Microsoft JhengHei,微軟正黑體,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}html[lang=zh_CN] body,html[lang=zh_CN] button,html[lang=zh_CN] input,html[lang=zh_CN] select,html[lang=zh_CN] textarea{font-family:Microsoft yahei,微软雅黑,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}b,strong{font-weight:600}.fontSizeH1{font-size:4em;margin-bottom:.48387em}.fontSizeH1,.fontSizeH2{font-weight:100;letter-spacing:normal;line-height:1.16129em}.fontSizeH2{font-size:60px;margin:0;font-size:2.5em}@media only screen and (max-width:600px){.fontSizeH2{font-size:40px}}.fontSizeH3{font-size:1.7em;font-weight:300;letter-spacing:.013em;line-height:1.4em;margin-bottom:.48387em;margin-top:0}@media only screen and (max-width:600px){.fontSizeH3{margin:0 auto;font-size:1.2em}}.fontSizeH4{font-size:1em;font-weight:400;letter-spacing:normal;line-height:1.33333em;margin-bottom:.83333em}.button{background-color:#008cc0;border:1px solid transparent;border-radius:50px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-size:18px;line-height:24px;margin:0;max-width:440px;min-width:150px;padding:5px 0 8px;text-align:center;text-decoration:none;vertical-align:middle;width:100%;word-wrap:break-word}@media only screen and (min-width:767px){.button{font-size:20px;padding:7px 0 10px;width:auto}}.button:focus{outline:1px dotted #333534}.button:focus,.button:hover{text-decoration:none;background-color:#0c7daf}.button--disabled{background-color:#a3d0ed!important;cursor:not-allowed}.buttonBlue,.buttonSimple,.buttonWhite,.newButton,.portalContent .closeButton{box-sizing:border-box;border:1px solid transparent;border-radius:100px;cursor:pointer;display:inline-block;font-size:18px;font-weight:400;margin:0 7px 10px;position:relative;text-align:center;text-decoration:none;word-wrap:break-word;padding:19px 30px;min-width:260px;-webkit-transition:background-color .1s ease-in-out;transition:background-color .1s ease-in-out}.newButton .button__text{padding:0}@media only screen and (max-width:600px){.buttonBlue,.buttonSimple,.buttonWhite,.newButton,.portalContent .closeButton{padding:9px 30px;min-width:190px;font-size:14px}}.buttonBlue{color:#fff;background-color:#0078ca}.buttonBlue:active,.buttonBlue:hover{background-color:#0b64a4}.buttonWhite{color:#2b2c33;border:1px solid #2b2c33}.buttonWhite:active,.buttonWhite:hover{background-color:#2b2c33;color:#fff}.buttonSimple,.portalContent .closeButton{color:#0078ca;border:none}.buttonSimple:active,.buttonSimple:hover{color:#0b64a4}.portalContainer{position:absolute;top:0;bottom:0;right:0;left:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;background-color:rgba(0,0,0,.5)}.portalContainer,.portalContent{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.portalContent{background-color:#fff;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:15px;box-shadow:0 5px 10px rgba(0,0,0,.3);border:1px solid rgba(0,0,0,.3);border-radius:5px;max-width:450px}.portalContent .logo{width:96px;width:6rem;height:96px;height:6rem;-ms-flex-negative:0;flex-shrink:0}.portalContent .title{font-weight:400;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;max-width:100%;margin:1rem 0}.portalContent .closeButton{margin-top:20px;color:#000;background-color:#e5e4e8}.portalContent .closeButton:active,.portalContent .closeButton:hover{background-color:#cecdd0}img.logo{width:96px;width:6rem;height:96px;height:6rem;-ms-flex-negative:0;flex-shrink:0}.hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.rtl .hidden{left:auto;right:-1000px}.scrollable-y{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto;padding:1rem;-webkit-overflow-scrolling:touch;width:100%}.focused{outline:1px solid;outline:auto}.ariaLive{width:0!important;height:0!important;overflow:hidden!important}\", \"\"]);\n\n// exports\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { UserProfile } from '../models/ProfileServiceModel';\r\nimport { ApiCallOptions, BaseRestClient } from './BaseRestClient';\r\n\r\nclass ProfileRestClient extends BaseRestClient {\r\n getUserProfileInfo(skypetoken: string): SyncTasks.Promise {\r\n const uri = '/v1/users/self/profile';\r\n const options: ApiCallOptions = {\r\n headers: {\r\n 'X-Skypetoken': skypetoken,\r\n },\r\n };\r\n\r\n return this.performApiGet(uri, options);\r\n }\r\n}\r\n\r\nexport default new ProfileRestClient(config.urls.api.profile);\r\n"],"sourceRoot":""}