{"version":3,"sources":["libs/animations-lib.js","libs/team-lib.js","libs/notifications-lib.js","libs/error-lib.js","components/workshops/WorkshopProgressLabel.js","components/CollapsableSection.js","components/questions/QuestionAnswerItem.js","components/questions/QuestionBigCard.js","components/icons/StyledSVGBase.js","components/icons/AsteriskIcon.js","components/icons/CheckMark.js","components/icons/CollapseIcon.js","components/icons/CreateIcon.js","components/icons/CurveArrow.js","components/icons/DiscordIcon.js","components/icons/ExpandIcon.js","components/icons/InviteOnlyIcon.js","components/icons/LeftArrowHide.js","components/icons/LeftArrowShow.js","components/icons/RegularFrown.js","components/icons/RegularLaughBeam.js","components/icons/RegularMeh.js","components/icons/RegularSadTear.js","components/icons/RegularSmile.js","components/icons/RegularStar.js","components/icons/RightArrowHide.js","components/icons/RightArrowShow.js","components/icons/ShareIcon.js","components/icons/SolidFrown.js","components/icons/SolidLaughBeam.js","components/icons/SolidMeh.js","components/icons/SolidSadTear.js","components/icons/SolidSmile.js","components/icons/SolidStar.js","components/icons/SplunkIcon.js","components/icons/TimerIcon.js","components/icons/TopArrow.js","components/icons/WarningIcon.js","components/icons/WorkshopIcon.js","components/CountDown.js","components/teams/PointsCard.js","config.js","libs/context-lib.js","components/workshops/WorkshopVideoProgress.js","components/teams/AccessibilityToggle.js","components/cards/CardBody.js","components/cards/CardIconContainer.js","components/cards/CardDescription.js","components/cards/CardDate.js","components/cards/CardTitle.js","components/BossLabel.js","components/cards/BigCard.js","components/cards/BigCardSkeleton.js","components/nav/BreadcrumbNav.js","components/cards/CardImage.js","components/EventLabel.js","components/cards/CardLabel.js","components/cards/Card.js","components/cards/CardSkeleton.js","components/CollapsableSideMenu.js","components/DirectPointConceiver.js","components/ErrorBoundary.js","components/ScrolleableContainer.js","components/Text.js","components/workshops/WorkshopContent.js","components/TermsConditions.js","components/event/EventDetails.js","components/FloatingMessage.js","components/event/EventHome.js","components/event/EventMenu.js","components/Footer/styles.js","components/Footer/index.js","components/forms/FormInput.js","components/HistoryDetails.js","components/HovereableFlex.js","components/cards/LandscapeCard.js","components/ListHeader.js","components/notifications/NotificationsHandler.js","components/RadioButton.js","components/RestrictedEvents.js","components/ScrollTopButton.js","components/MemberState.js","components/SearchUsers.js","components/nav/SideMenu.js","libs/survey-lib.js","components/Survey/SurveyIntroduction/styles.js","components/Survey/SurveyIntroduction/index.js","components/Survey/questiontypes/NominalScaleQuestion.js","components/Survey/questiontypes/MixScaleQuestion.js","components/Survey/questiontypes/OpenQuestion.js","components/Survey/questiontypes/NumericScaleQuestion.js","components/Survey/questiontypes/StarQuestion.js","components/Survey/questiontypes/SmileQuestion.js","components/Survey/QuestionContainer/styles.js","components/Survey/QuestionContainer/index.js","components/Survey/styles.js","components/Survey/index.js","components/teams/TeamMembersState.js","components/teams/TeamListItem.js","components/teams/TeamListItemSkeleton.js","components/teams/TeamMembersTable.js","components/teams/TeamNameBadge.js","components/teams/TeamWizardModal.js","components/ToastContainerNotification.js","components/ToggleButton.js","components/teams/VisibilityToggle.js","components/workshops/WorkshopAdditionalInfoMenu.js","components/workshops/WorkshopContentMenu.js","components/workshops/WorkshopTabs.js","components/ContainerEvtPlayerMobile.js","components/event/EventFloatingBox.js","components/MalloryMessage.js","components/questions/QuestionAnswer.js","components/questions/QuestionState.js","components/questions/QuestionHistoryModal.js","components/questions/QuestionPointsTable.js","components/ResourcesTable.js","components/scenario/ScenarioStatusTable.js","components/questions/QuestionsGrid.js","components/questions/QuestionsList.js","components/questions/ScenarioQuestionsDisplaySelector.js","components/questions/ScenarioQuestions.js","components/hints/TimeBasedHint.js","components/hints/BuyBasedHint.js","components/hints/HintsTable.js","libs/utils-lib.js","../../../packages/boss-ui/src/hooks.js","../../../packages/boss-ui/src/components/AuthenticatedRoute/index.js","../../../packages/boss-ui/src/components/Breadcrumb/index.js","../../../packages/boss-ui/src/components/Button/index.js","../../../packages/boss-ui/src/icons/StyledSVGBase.js","../../../packages/boss-ui/src/icons/CheckMark/index.js","../../../packages/boss-ui/src/icons/SpinnerIcon/index.js","../../../packages/boss-ui/src/components/common/CenteredFlex.js","../../../packages/boss-ui/src/components/common/Space.js","../../../packages/boss-ui/src/components/Can/index.js","../../../packages/boss-ui/src/constants.js","../../../packages/boss-ui/src/components/Checkbox/index.js","../../../packages/boss-ui/src/components/Modal/index.js","../../../packages/boss-ui/src/components/ConfirmationModal/index.js","../../../packages/boss-ui/src/components/ContextMenu/index.js","../../../packages/boss-ui/src/components/ContextMenuItem/index.js","../../../packages/boss-ui/src/components/RegularText/index.js","../../../packages/boss-ui/src/components/Tooltip/index.js","../../../packages/boss-ui/src/icons/CopyClipboardIcon/index.js","../../../packages/boss-ui/src/components/CopyToClipboard/index.js","../../../packages/boss-ui/src/components/FormLeyend/index.js","../../../packages/boss-ui/src/components/LinkedText/index.js","../../../packages/boss-ui/src/components/Select/index.js","../../../packages/boss-ui/src/icons/UploadIcon/index.js","../../../packages/boss-ui/src/icons/FileIcon/index.js","../../../packages/boss-ui/src/components/DragDrop/index.js","../../../packages/boss-ui/src/icons/InfoIcon/index.js","../../../packages/boss-ui/src/components/CsvImportModal/index.js","../../../packages/boss-ui/src/components/Input/index.js","../../../packages/boss-ui/src/icons/CancelIcon/index.js","../../../packages/boss-ui/src/icons/CheckIcon/index.js","../../../packages/boss-ui/src/components/EditableInput/index.js","../../../packages/boss-ui/src/components/TableData/index.js","../../../packages/boss-ui/src/components/TableRow/index.js","../../../packages/boss-ui/src/icons/PencilIcon/index.js","../../../packages/boss-ui/src/icons/TrashCanIcon/index.js","../../../packages/boss-ui/src/components/TableItemSkeleton/index.js","../../../packages/boss-ui/src/components/EditableTableData/index.js","../../../packages/boss-ui/src/components/EventCredits/index.js","../../../packages/boss-ui/src/components/FloatingMenu/index.js","../../../packages/boss-ui/src/components/FloatingPanel/index.js","../../../packages/boss-ui/src/components/Form/index.js","../../../packages/boss-ui/src/components/FormLabel/index.js","../../../packages/boss-ui/src/components/common/HovereableFlex.js","../../../packages/boss-ui/src/components/Item/index.js","../../../packages/boss-ui/src/components/ListItem/index.js","../../../packages/boss-ui/src/components/ListTable/index.js","../../../packages/boss-ui/src/icons/BooIcon/index.js","../../../packages/boss-ui/src/icons/BotsIcon/index.js","../../../packages/boss-ui/src/components/LoaderIcon/index.js","../../../packages/boss-ui/src/components/Markdown/index.js","../../../packages/boss-ui/src/icons/ExpandIcon/index.js","../../../packages/boss-ui/src/icons/CollapseIcon/index.js","../../../packages/boss-ui/src/components/Menu/SubMenu.js","../../../packages/boss-ui/src/icons/TreeDotsIcon/index.js","../../../packages/boss-ui/src/components/Menu/index.js","../../../packages/boss-ui/src/icons/ProfileIcon/index.js","../../../packages/boss-ui/src/icons/NotificationIcon/index.js","../../../packages/boss-ui/src/components/Nav/NavContainer.js","../../../packages/boss-ui/src/components/Nav/NavGroup.js","../../../packages/boss-ui/src/components/Nav/NavTitle.js","../../../packages/boss-ui/src/icons/LogOutIcon/index.js","../../../packages/boss-ui/src/icons/AccountSettingsIcon/index.js","../../../packages/boss-ui/src/components/StyledText/index.js","../../../packages/boss-ui/src/utils.js","../../../packages/boss-ui/src/components/Nav/ProfileSection.js","../../../packages/boss-ui/src/components/UnregularButton/index.js","../../../packages/boss-ui/src/icons/CrossIcon/index.js","../../../packages/boss-ui/src/components/Nav/NotificationCard.js","../../../packages/boss-ui/src/components/Nav/NotificationList.js","../../../packages/boss-ui/src/components/Nav/index.js","../../../packages/boss-ui/src/icons/PrevIcon/index.js","../../../packages/boss-ui/src/icons/NextIcon/index.js","../../../packages/boss-ui/src/components/Paginator/index.js","../../../packages/boss-ui/src/icons/QuestionIcon/index.js","../../../packages/boss-ui/src/components/QuestionCard/QuestionState.js","../../../packages/boss-ui/src/components/QuestionCard/index.js","../../../packages/boss-ui/src/components/QuestionCardSkeleton/index.js","../../../packages/boss-ui/src/components/QuestionInLine/constants.js","../../../packages/boss-ui/src/components/QuestionInLine/index.js","../../../packages/boss-ui/src/components/QuestionInlineSkeleton/index.js","../../../packages/boss-ui/src/components/ResourcesList/index.js","../../../packages/boss-ui/src/components/ShakeContent/index.js","../../../packages/boss-ui/src/components/SwitchButton/index.js","../../../packages/boss-ui/src/components/TableHead/index.js","../../../packages/boss-ui/src/components/TableBody/index.js","../../../packages/boss-ui/src/components/Table/index.js","../../../packages/boss-ui/src/components/TableHeader/index.js","../../../packages/boss-ui/src/components/Tabs/index.js","../../../packages/boss-ui/src/components/TabScreen/index.js","../../../packages/boss-ui/src/components/TextArea/index.js","../../../packages/boss-ui/src/components/UnauthenticatedRoute/index.js","../../../packages/boss-ui/src/icons/AddIcon/index.js","../../../packages/boss-ui/src/icons/BlockIcon/index.js","../../../packages/boss-ui/src/icons/ClearIcon/index.js","../../../packages/boss-ui/src/icons/CloseIcon/index.js","../../../packages/boss-ui/src/icons/EnrollIcon/index.js","../../../packages/boss-ui/src/icons/ExportIcon/index.js","../../../packages/boss-ui/src/icons/GameIcon/index.js","../../../packages/boss-ui/src/icons/GridIcon/index.js","../../../packages/boss-ui/src/icons/ImportIcon/index.js","../../../packages/boss-ui/src/icons/LinkIcon/index.js","../../../packages/boss-ui/src/icons/ListIcon/index.js","../../../packages/boss-ui/src/icons/MinusIcon/index.js","../../../packages/boss-ui/src/icons/OpenIcon/index.js","../../../packages/boss-ui/src/icons/PrivateIcon/index.js","../../../packages/boss-ui/src/icons/PublicIcon/index.js","../../../packages/boss-ui/src/icons/QuestionCircleIcon/index.js","../../../packages/boss-ui/src/icons/RefreshIcon/index.js","../../../packages/boss-ui/src/icons/SandTimeIcon/index.js","../../../packages/boss-ui/src/icons/SearchIcon/index.js","../../../packages/boss-ui/src/icons/SpyIcon/index.js","../../../packages/boss-ui/src/icons/TeamIcon/index.js","../../../packages/boss-ui/src/icons/UnlockIcon/index.js","../../../packages/boss-ui/src/icons/UserSlashIcon/index.js","libs/roles-lib.js","libs/hooks-lib.js","components/scenario/Scenario.js","api.js","libs/dates-lib.js","libs/event-lib.js","libs/resource-lib.js","libs/scenario-lib.js","libs/constants.js","libs/cognito-lib.js","theme.js","containers/FirstSignIn/index.js","components/VerifyEmailForm.js","containers/Login/index.js","containers/Signup/index.js","containers/LoginSuccess/index.js","containers/Account/index.js","containers/NotFound.js","containers/PasswordRecovery/index.js","containers/History/index.js","containers/Home/index.js","../../../packages/boss-ui/src/FeatureFlagApiClient.js","containers/Event/index.js","containers/Logout/index.js","containers/EventDetails/index.js","containers/HistoryDetails/index.js","containers/WorkshopDetails/index.js","containers/Survey/index.js","containers/DiscordJoinRedirection/index.js","libs/user-lib.js","Routes.js","App.js","index.js","rum.js","components/websocket/index.js","libs/question-lib.js"],"names":["fadeIn","keyframes","heightEffect","VISIBILITY_RAW","PUBLIC","PRIVATE","VISIBILITY_VALUE","true","false","ACCESSIBILITY_RAW","OPEN","CLOSED","ACCESSIBILITY_VALUE","defineTeamMembers","team","maxNumberOfParticipants","full","numberOfParticipants","getTeamChanges","baseTeam","newTeam","changes","changedParticipants","name","match","TEAM_NAME_REGEXP","Error","validateChanges","participants","forEach","editedParticipant","dirty","originalParticipant","find","p","userId","state","push","omit","length","visibility","accessibility","getUserRoleInTeam","userInTeam","USER_INVITE_STATE","ACCEPTED","role","getContainerStyleMedia","matches","style","mx","width","s","getStyleMedia","boxWidth","boxPx","formWidth","flexWidth","flexPx","teamNameMobile","joinTeamFlexDirection","joinTeamWidth","joinTeamHeight","joinTeamInputWidth","joinTeamInputPX","joinTeamInputPY","joinTeamInputHeight","teamInvitationsWidth","switchButtonsFlex","switchButtonsWidth","btnSetJoinWidth","btnSetLeaveWidth","btnNewTeam","pointAdjustFlexDir","pointAdjustAlign","pointAdjustPy","pointAdjustAssignBtnWitdh","pointAdjustAssignReasonWitdh","l","m","xs","ALERTABLE_NOTIFICATIONS","ACTIONABLE_NOTIFICATIONS","NOTIFICATION_MESSAGE_BY_NAME","TEAM_INVITE_RECEIVED","TEAM_INVITE_REMOVED","TEAM_INVITE_ACCEPTED","n","get","TEAM_INVITE_REJECTED","TEAM_INVITE_CANCELLED","TEAM_INVITE_DISBAND","DEFAULT","formatNotificationMessage","notification","message","notificationType","onError","error","toString","ERROR_NAMES","ABORTED_REQUEST","response","errors","e","toast","getMessageError","SESSION_EXPIRED","ProgressLabel","styled","Flex","props","completed","css","theme","margin","displayName","WorkshopProgressLabel","stats","forceProgress","isWorkshopCompleted","progressPercentage","padding","backgroundColor","color","marginLeft","CollapsableSection","children","justify","expanded","showLabel","hideLabel","useState","visible","setVisible","flexDirection","mt","justifyContent","onClick","QuestionAnswerItem","text","createdAt","username","whiteSpace","mb","alignItems","mediumWeight","fontSize","format","Date","minWidth","wordBreak","Container","question_card","background","inactive","border","pending","correct","incorrect","getGridColumnsOnExpanded","media","gridColumnStart","gridColumnEnd","xl","API","Api","QuestionBigCard","question","onCloseCard","answer","points","gridNavigation","phrasing","base_point_value","question_id","external","required_resources","isPrev","isNext","goNext","goPrev","useScenarioContext","currentScenario","setScenarioQuestions","scenarioQuestions","useAppContext","event","user","history","useHistory","submittingAnswer","setSubmittingAnswer","showHistoryModal","setShowHistoryModal","questionPoints","setQuestionPoints","questionHistory","setQuestionHistory","lastQuestionAnswer","setLastAnswer","closing","setClosing","shaking","setShaking","questionRef","useRef","isQuestionCorrect","EVENT_QUESTION_STATUS","CORRECT","isQuestionIncorrect","INCORRECT","includeBackground","question_phrasing","externalURL","useMemo","resources","resourceId","first","resource_id","userResource","r","instance_url","useLayoutEffect","questionBoxPosition","current","getBoundingClientRect","window","scrollTo","top","pageYOffset","MENU_BAR_HEIGHT","useEffect","a","eventId","scenarioId","historyRequest","total","updateQuestionBy","getQuestion","abortCurrentRequest","isEmpty","answers","concat","submitAnswer","answerInput","post","body","phrasing_id","answerRequest","updateQuestionsWithAnswer","status","setTimeout","buyHint","hintId","hint_id","rq","questionRequest","hint","refreshHints","ref","minHeight","shake","answer_guidance","localStorageId","isExternal","onSubmitAnswer","isSubmittingAnswer","hints","hintsStrategy","hintScoring","totalHints","hints_count","onBuyHint","onRefreshHintsList","active","query","score","shakeTotal","ml","noPadding","disabled","className","DEFAULT_BOX_BORDER_STYLE","hide","secondary","Math","round","DEFAULT_BONUS_MULTIPLIER","onClose","questionId","svg","attrs","version","xmlns","xmlnsXlink","AsteriskSVG","svgBase","size","hover","AsteriskIcon","viewBox","fill","d","CheckIcon","Base","CheckMark","height","CollapsableIcon","transform","TopArrow","stroke","strokeLinecap","strokeWidth","strokeLinejoin","LeftArrow","CurveArrow","direction","DiscordSVG","DiscordIcon","ExpandIcon","InviteOnlyIcon","SIZE","Arrow","LeftArrowHide","LeftArrowShow","RegularFrown","RegularLaughBeam","RegularMeh","RegularSadTear","RegularSmile","RegularStar","RightArrowHide","RightArrowShow","SolidFrown","SolidLaughBeam","SolidMeh","SolidSadTear","SolidSmile","SolidStar","SplunkIcon","Timer","WarningSVG","WarningIcon","WorkshopIcon","CountDownBox","nav","startCountDownInterval","endCountDownInterval","padZeroStart","number","nroDigits","slice","getCountDownTime","hours","minutes","seconds","CountDown","endDate","startDate","allowStartingPreview","isAdminView","mobile","eventEndCountDown","setEndCountDown","eventStartCountDown","setStartCountDown","isEventHappening","isTodayBetween","isEndingEvent","Number","months","days","startEventCountDown","setInterval","intervalToDuration","start","end","clearInterval","endCountDownInDays","differenceInDays","display","light","startCountDownInDays","Box","$refreshing","BoxMobile","wsClient","WebSocketClient","PointsCard","teamPoints","loading","onRefresh","isOnDemandEvent","showRefresh","sessionId","theScore","setTheScore","useRefreshScore","refreshHover","setRefreshHover","getLastUpdatedLabel","resetLastUpdate","scoreUpdateHandler","useCallback","update","addListener","clearListener","medium","pr","cursor","onMouseEnter","onMouseLeave","rotate","my","borderBottom","envConfig","stringToBoolean","value","def","process","REACT_APP_ENABLE_LEGACY_RESOURCES","location","hostname","appType","termsConditionsUrl","enableLegacyResources","rum","deploymentEnvironment","apiGateway","REGION","URL","webSocket","cognito","SAML_LOGIN","MANDATORY_SIGN_IN","saml","IDP_NAME","IDP_RESPONSE_TYPE","IDP_LOGIN_URL","IDP_SCOPE","DOMAIN","USER_POOL_ID","APP_CLIENT_ID","IDENTITY_POOL_ID","SCOPE","REDIRECT_SIGN_IN","REDIRECT_SIGN_OUT","discord","REDIRECT_URI","merge","MAX_ATTACHMENT_SIZE","DISCORD_API_URL","GET_DISCORD_USER_PATH","DISCORD_OAUTH_URL","applicationName","beaconUrl","rumAccessToken","AppContext","createContext","useContext","TeamContext","useTeamContext","WorkshopContext","useWorkshopContext","ScenarioContext","WorkshopVideoProgress","fontFamily","textAlign","fontWeight","py","px","AccessibilityToggle","fieldValue","handleFieldChange","position","checked","handleToggle","id","onIcon","offIcon","onText","offText","data-tip","data-for","right","place","BodyContainer","card","classic","restricted","inprogress","CardIcon","div","CardDescription","description","climpAfterLine","animate","withTheme","date","dateObject","getDateComponents","stringMonth","toUpperCase","day","year","CardTitle","title","BOO_STYLE","BOTS_STYLE","BossLabel","type","rest","BOTS_TYPE","NOC","Image","img","MenuContainer","withRouter","crumbs","CardImage","EventLabel","enrolled","EnrolledLabel","TimeLeftLabel","timeLeft","CardLabel","eventType","isEventRunning","delivery","showProgressLabel","joinDate","duration","showEnrolledLabel","EVENT_TYPE","WORKSHOP","marginTop","EVENT_DELIVERY","ON_DEMAND","inProgressStartDate","inProgressEndDate","getTime","isOnDemandEventInsidePlayWindow","getDurationLabel","durationFormated","formatMinutes","hour","Card","activeEndDate","activeStartDate","imageURL","isScenario","onCardClick","registrationClosedDate","registrationOpenDate","registrationStatus","scenarioIdx","scenarioLabel","showDate","NORMAL","isNormalEventInsideActiveWindow","imgSize","imageSrc","getImageURLSized","titleRef","descriptionLines","setdescriptionLines","GAME","titleHeight","offsetHeight","CARD_MARGIN","maxWidth","src","alt","target","getNoImageUrl","CardBody","capitalize","removePlural","CardIconContainer","pl","CollapsableDescription","CardSkeletonBlock","SKELTELON_STYLE","COLOR","highlightColor","EFFECT","borderColor","CardSkeletonLandscapeBlock","paddingTop","marginBottom","CardSkeleton","landscape","queries","flexWrap","WorkshopMenuContent","form","CollapsableMenu","side","expandedWidth","collapsed","menuVisible","setMenuVisible","menuWidth","expectedWidth","getMenuWidth","toggleMenu","ErrorBoundary","hasError","errorMsg","errorMessage","errorInfo","console","this","ignoreMessage","React","Component","ScrolleableContainer","topMargin","setScrolled","maxHeight","onScroll","scrollHeight","scrollTop","clientHeight","overflowX","Text","WorkshopTopic","subTopics","progress","onTitleClick","v","map","st","TopicChildren","isDone","isCompleted","TopicTitle","showProgress","breadcrumb","WorkshopContent","content","c","TermsAndConditions","loadingTerms","setLoadingTerms","termsAndConditionsMD","setTermsAndConditionsMD","fetch","config","headers","ok","fetchTerms","md","EnrollComponent","onEnrollEvent","disableEnroll","requireConfirmationNumber","confirmationNumber","setConfirmationNumber","ackVisible","setAckVisible","shareInformationAccepted","setShareInformationAccepted","mr","onChange","placeholder","CONFIRMATION_NUMBER_REGEXP","onBackgroundClick","EnterEventComponent","eventDelivery","participantJoinDate","eventDuration","onPlayAgainEvent","validOnDemand","label","EventDetails","confirmationNumberRequired","inviteCode","details","setDetails","userInEvent","setUserInEvent","loadingDetails","setLoadingDetails","enrollingEvent","setEnrollingEvent","enrollForbiden","setEnrollForbidden","closedRegistrationMessage","setClosedRegistrationMessage","setEvent","getDetails","participant","workshop","isTodayAfterThan","acceptShareInformation","dynamoUser","email","attributes","inviteCodeId","isRestrictedEvent","accessType","EVENT_ACCESS_TYPE","RESTRICTED","userEnrolled","marginLop","paddingBottom","termsUrl","terms","labels","onTabChange","FloaitngMessage","left","colors","useTheme","floatingMessage","addScenarioIndex","scenarios","idx","getGridConfiguration","QUESTION_CARD_DEFAULT_WIDTH","EventHome","eventScenarios","isOnDemand","isUserWithOutTeam","eventDescription","eventRules","setScenarios","loadingScenarios","setLoadingScenarios","EVENT_WORDING","SCENARIO","getEventScenarios","scenariosWithIdx","eventIcon","SOC","getEventShortName","bottom","gridTemplateColumns","gridGap","gridAutoFlow","key","EventMenu","onLeaveEvent","onShowCredits","hideScoring","userWithoutTeam","menuItems","items","path","exact","rootPath","pathname","split","includes","calculateCompoundTeamPath","isEventStarted","subMenu","getMenuItems","auxiliaryItems","dangerTheme","eventCreditsMd","getAuxiliaryItems","FooterContainer","font","family","regular","Link","UnorderedList","ul","CopyrightText","span","FOOTER_LINKS","url","Footer","links","link","href","getCurrentYear","InputIcon","remove","InputValidation","valid","input","success","FormInput","search","available","validMessage","unavailableMessage","validate","validating","pattern","invalidPatternMessage","styleBox","inputType","DEFAULT_FORM_INPUT_TYPE","patternFulfilled","setPatternFulfilled","inputChange","undefined","INPUT_FORM_TYPE_TEXTAREA","transformEventStats","scenariosScores","transformedStats","scenario","totalScore","baseScore","base","bonusScore","bonus","penalty","average","median","scenarioStat","count","toFixed","max","min","HistoryDetails","globalTeamsCount","loadingData","setLoadingData","scenarioData","setScenarioData","setStats","workshopContentWithStats","setWorkshopContentWithStats","userTeamName","setUserTeamName","statsRq","getScenarioDetails","rank","pb","paddingLeft","borderRight","row","disable","MainContainer","ContainerBottom","calculateDescriptionLines","schema3Boxes","schema4Boxes","schema5Boxes","getWidthSchema","schema2Boxes","LandscapeCard","activeEvent","imageType","NotificationsHandler","userSession","setNotifications","eventRouteMatch","useRouteMatch","performNotificationAction","notificationEventId","pathEventId","u","wsMessageHandler","data","notif","notificationsRq","alertableNotifications","notifications","WEB_SOCKET_STATUS","RECONNECTING","getNotifications","open","authenticateRq","JSON","stringify","on","removeListener","RestrictedEvents","restrictedEvents","loadingRestrictedEvents","schemaSmall","schema1Boxes","re","justifySelf","ArrowBox","show","ScrollTopButton","showScroll","setShowScroll","insideBox","setInsideBox","checkScrollTop","addEventListener","removeEventListener","behavior","MemberState","center","invited","unavailable","public","SeatAvailables","seats","SearchUsers","addParticipants","screenWidthSchema","setSearch","setLoading","debounceSearching","setDebounceSearching","useDynamoPaginator","pages","currentPage","paginate","searchList","setSearchList","inviteUser","recentlyAdded","inviteState","USER_TEAM_STATE","INVITED","getUserState","hasTeam","AVAILABLE","prepareUserList","users","filterList","searchUser","q","page","lastEvaluatedKey","nextPagePointer","lastPagePointer","queryStringParameters","pageSize","result","pagination","boxShadow","debounce","refreshing","item","noBorder","button","TEAM_MEMBER_ROLE","CAPTAIN","REGULAR","onNext","onPrev","paginating","MenuLink","options","align","opt","to","route","isEmptyQuestion","required","SURVEY_QUESTIONS_TYPE","OPTIONS_AND_TEXT","option","SURVEY_QUESTION_OPTION_OTHER","checkIsPendingQuestions","x","scrolled","ContentContainer","Name","Description","RegularText","RequiredContainer","Star","Required","ActionsContainer","showOnDismiss","ButtonWrapper","Button","SurveyIntroduction","onDismiss","NominalScaleQuestion","letterSpacing","MixScaleQuestion","resize","OpenQuestion","DEFAULT_NUMERIC_SCALE","NumberCircle","filled","NumericScaleQuestion","o","DEFAULT_RANGE_OPTIONS","1","2","3","4","5","StarQuestion","initialState","Object","keys","k","calculateInitialState","stars","setStars","optionKey","clickedValue","prevStars","newStars","starKey","hoverEnterValue","regularIcon","solidIcon","getFace","SmileQuestion","opacity","SecondaryContainer","LineSep","QuestionCount","showQuestionWarning","QuestionTitle","NumericScaleQuestionContainer","StarQuestionContainer","SmileQuestionContainer","NominalScaleQuestionContainer","MixScaleQuestionContainer","OpenQuestionContainer","WarningIconWrapper","QuestionContainer","onAnswerQuestion","onQuestionChange","change","NUMERIC_SCALE","STAR_SCALE","SMILE_SCALE","JUST_OPTIONS","JUST_TEXT","TextIntroContainer","SubmitedSucess","PrevButton","SubmitButton","NextButton","prepareAnswers","tmpAnswers","setOpacity","currentIndex","Survey","campaignId","questions","showTextIntro","setAnswers","setCurrentIndex","showIntro","setShowIntro","submitSuccess","setSubmitSuccess","isPendingQuestions","setIsPendingQuestions","onSubmitSurvey","setShowQuestionWarning","handleClickNext","handleClickSubmit","setAnswerQuestion","TeamMembersState","teamMembersState","TEAM_VISIBILITY","icon","inverted","invertedColor","tooltipMessage","teamId","TeamAccessibility","onJoinTeam","isAnInvite","TEAM_ACCESSIBILITY","getAccessibility","TeamListItem","onTeamClicked","transparentBackground","themeColors","truncate","omission","TeamListItemSkeleton","TeamMembersTable","setParticipants","initialNroCaptains","loadingParticipants","contextAction","handleModal","isJoinView","addUserModalVisible","setAddUserModalVisible","filteredParticipants","setFilterdParticipants","nroCaptains","setNroCaptains","canEditTeam","removeTeamMember","member","teamMembers","cloneDeep","teamMember","filter","PENDING","REJECTED","CANCELLED","changeMemberRole","disableChangeMember","creator","disableRemoveMember","yes","perform","rules","numberOfCells","isCaptain","captain","toLower","onRemoveMemberClick","onChangeRoleMemberClick","newMember","members","TeamNameBadge","editionActive","activateEdition","saveHover","mouseHoverSave","cancelHover","mouseHoverCancel","editionAllowed","onNameChange","onNameReset","onNameChanged","validName","autoFocus","paddingRight","zIndex","ToastContainerNotification","ToastContainer","toastNotification","progressBar","Label","Input","ToggleButton","isOn","onToggle","htmlFor","VisibilityToggle","TABS_LABELS","classTranscript","classLinks","currentTabIdx","setCurrentTabIdx","transcript","setTranscript","tabsContent","0","server","credentials","getTabsContent","workshopAdditionalInfo","getClassTranscript","isVisibleSlug","activeClassSlug","slug","indexOf","WorkshopContentMenu","classesProgress","done","pt","borderTop","ceil","classesDone","innerLevel","menuPadding","classDone","isActive","PURPLE_COLOR","GREEN_COLOR","BLUE_COLOR","getTabsNames","arrNames","linksList","list","workshopLinks","WorkshopTabs","tabs","ContainerEvtPlayerMobile","navigationMenu","nowDate","EventFloatingBox","isAdmin","setTeamPoints","loadingTeamPoints","setLoadingTeamPoints","countDownStartDate","countDownEndDate","ONE_MINUTE_MS","DEFAULT_ON_DEMAND_EVENT_DURATION","getPoints","shouldRenderPointsBox","eventRunningTimeout","endDateInMs","MAX_INT32","log","isEventEnded","clearTimeout","startEventInterval","startDateInMs","NAV_MOBILE_MAXWIDTH","mobileScreen","messageCard","Message","MalloryMessage","AnswerCorrect","QuestionAnswer","useLocalStorage","setAnswerInput","incorrectAnswer","setIncorrectAnswer","isWebSocketAnswer","onKeyDown","trim","dangerBorder","isLoading","QuestionState","iconSize","table","Hint","QuestionHistoryModal","overflowY","Row","tr","Cell","td","TableHead","thead","ScoreTable","header","EMPTY_ANSWER_SCORE","PointsTable","ResourcesTable","ignoreTooltip","SKELETON_STYLE","skeleton","resourceBlock","resource","res","showCredentialsInTable","password","RESOURCES_COLORS","Table","IconInLine","LoadingPoint","circle","unanswered","QuestionsGrid","onQuestionCardClick","onQuestionCardClosed","onQuestionRemoved","focusedQuestionId","removingQuestionId","questionNavigation","isEditionView","isSelected","isQuestionBeingRemoving","Fragment","selectedCard","onSelectCard","onRemoveQuestion","removingQuestion","ScenarioQuestions","ScenarioQuestionsDisplaySelector","onSelected","selected","listHover","setListHover","gridHover","setGridHover","DISPLAY_QUESTIONS_MODE","LIST","onMouseOver","GRID","customMessageEvents","SELECT_FILTER_OPTIONS","filterQuestionsByState","loadingScenario","setFocusedQuestionId","filterQuestionValue","setFilterQuestionsValue","filterdScenarioQuestions","setFilteredScenarioQuestions","displayMode","setDisplayMode","getQuestionNavigation","questionIndex","intersectionBy","answerUpdateHandler","updatedQuestion","updateQuestionByWS","TimeBasedHint","releaseTimeOut","firstHintToRelease","reduce","selectedCandidate","candidate","closest","activation","closestCandidate","now","distanceToReleace","differenceInMilliseconds","releaseTime","getHourMinuteDifference","BuyBasedHint","hintBuyInformation","setHintBuyInformation","numberVisibleHints","sum","onAccept","onCancel","acceptLabel","hint_cost","HintsTable","SCENARIO_HINTS_STRATEGIES","TIME","DOMAINS","domain","getAppType","setUserHeaders","loggedUser","userName","deleteUserHeaders","string","endsWith","substr","NUMBERS","ZERO","ONE","reloadPage","reload","sendWarning","reloadpage","warn","parseJwt","token","base64","replace","jsonPayload","decodeURIComponent","atob","charCodeAt","join","parse","getHashObjectInURL","paramMap","hash","scrollToHash","element","document","getElementById","scroll","offsetTop","signRequest","params","Auth","currentCredentials","essentialCredentials","secret_key","secretAccessKey","access_key","accessKeyId","session_token","sessionToken","Signer","signUrl","formDataBody","json","prop","encodeURIComponent","getNewDate","args","MD_DEFAULT_OPTIONS","skipSanitize","markedOptions","sanitizeOptions","allowedTags","disallowedTagsMode","allowedAttributes","selfClosing","allowedSchemes","allowedSchemesByTag","allowedSchemesAppliedToAttributes","allowProtocolRelative","useQuery","URLSearchParams","useLocation","useMarked","markdown","html","setHtml","marked","setOptions","tokens","lexer","parser","sanitizeHTML","useCopyToClipboard","resetTimeOut","isCopied","setCopied","textCopied","setText","handleCopy","textField","createElement","innerText","appendChild","select","execCommand","timeout","AuthenticatedRoute","validateSession","fallbackRoute","skipRedirect","internalRedirect","Crumb","CrumbSpace","CrumbLine","Breadcrumb","last","staticFather","action","accept","default","reject","danger","SpinnerIcon","cx","cy","strokeDasharray","attributeName","repeatCount","dur","values","keyTimes","Can","permissions","toLowerCase","staticPermissions","static","dynamicPermissions","dynamic","permissionCondition","checkPermission","no","defaultProps","RESOURCE_STATE","RESOURCE_TYPE","CHECKBOX_STATUS","HiddenCheckbox","Icon","StyledCheckbox","checkbox","CheckboxContainer","Checkbox","Background","hideScroll","Modal","stopPropagation","ConfirmationModal","cancelLabel","dangerDialog","Menu","ButtonMenu","unregular","ContextMenu","setMenuVisibility","menuTop","setMenuTop","rect","currentTarget","err","pageY","preventDefault","Item","breakAll","weight","Tooltip","textColor","tooltip","arrowColor","ClipBoardSVG","CopyClipboardIcon","CopiedLabel","hidden","CopyToClipboard","copiedText","indexCopied","setIndexCopied","FormLeyend","legend","LinkedText","hoverColor","StyledSelect","ReactSelect","components","IndicatorSeparator","marginRight","Select","getStyles","control","provided","borderRadius","menu","singleValue","valueContainer","indicatorsContainer","indicatorContainer","styles","UploadSVG","FileSVG","dragDrop","draggedOn","draggedOff","InfoSVG","InfoIcon","modal","placeholderColor","focused","CrossIcon","SquareIcon","CancelIcon","Check","TableData","colSpan","colspan","nowrap","TableRow","borderIncorrect","borderTransparent","mouseOver","PencilSVG","fillHover","PencilIcon","TrashIcon","TrashCanIcon","TableItemSkeleton","CreditsContainer","Title","h1","CreditsLine","StartLabel","TitleContent","Credits","contentUrl","creditsMd","setCreditsMd","containerWidth","setContainerWidth","fetchCredits","innerWidth","creditsText","dangerouslySetInnerHTML","__html","profile","FloatingMenu","parentRef","floatingLeftMargin","documentElement","clientWidth","FloatingPanel","Form","main","FormLabel","HovereableFlex","ListBody","tbody","List","ListContainer","ListTable","BooIcon","gradientUnits","x1","y1","x2","y2","offset","stopColor","rx","ry","BotsIcon","animBOTSLogo","animBOOLogo","IconFrameBOTS","IconFrameBOO","LoaderIcon","Markdown","eventRulesHtml","NavLink","isHover","LabelIcon","isOpen","iconColor","SubMenu","optionsVisible","setOptionsVisible","setHover","matchRoute","closeMenu","sm","DotsSVG","TreeDots","NavHashLink","menuHeight","scrollLimit","mobileMaxWidth","handleScroll","scrollOffset","scrollY","screenSize","i","elementId","el","dispatchEvent","Event","menuItem","isLinkActive","TreeDotsIcon","auxItem","ContextMenuItem","ProfileSVG","ProfileIcon","NotificationIcon","showDot","NavContainer","NavGroup","NavTitle","navTitle","DoorIcon","LogOutIcon","AccountSVG","AccountSettingsIcon","StyledText","truncateString","str","num","ProfileSection","hideSettings","onLogOut","onAccountGo","UnregularButton","saw","NotificationCard","notificationBody","onRemoveNotification","lastItem","navigateTo","read","isRemoving","setRemoving","notificationList","container","NotificationsList","onHideList","onRemoveAllNotifications","onNavigation","HomeLink","iconType","blockNavigation","Nav","breadcrumbs","userDisplayName","userEmail","loggedIn","hideUserSettings","hideUserNotifications","userNotifications","onOpenNotifications","onCloseNotifications","profileVisible","setProfileVisible","notificationsVisible","setNotificationsVisible","areNewNotifications","setNewNotificationsMark","profileRef","notififcationRef","some","hideSections","onNotificationIconClick","onCloseNotificationsClick","PrevSVG","PrevIcon","NextSVG","NextIcon","small","Paginator","QuestionMark","highLigted","QuestionCard","isCardHover","setIsCardHover","isCorrect","isIncorrect","textOverflow","textDecoration","overflowWrap","QuestionCardBlock","QuestionCardSkeleton","QuestionInLine","overflow","QuestionInLineBlock","containerRef","skeletonWidth","setSkeletonWidth","QuestionInLineCardSkeleton","UNASSIGNED_GROUP_KEY","ResourcesGroup","dependencyObj","showFinishedLabel","colorIdx","styleFlexDirection","extraSmall","stateMessage","resourcesLines","resourceSpecSrn","ResourcesList","resourcesGroupedByDependency","groupBy","isDependency","groupedResources","groupKey","resourceCollection","filteredGeneralItems","generalResources","generalDependency","getGeneralItems","resourceObj","ShakeContent","SwitchBackgorund","SwitchIcon","SwitchButton","aria-hidden","TableBody","fixed","noDataPadding","dataPadding","oddBackground","TableHeader","noWrap","xpadding","ypadding","Tab","TabContainer","Tabs","TabButton","fontColor","TabScreen","activeScreenIdx","setActiveScreen","hashMatchIdx","findIndex","t","Textarea","textarea","UnauthenticatedRoute","redirectRoute","AddSVG","AddIcon","BlockSVG","CloseIcon","EnrollSVG","Export","GameIcon","fillColor","Grid","GridIcon","Import","ListIcon","MinusSVG","MinusIcon","OpenIcon","access","highlight","PrivateIcon","EyeSVG","PublicIcon","QuestionMarkSVG","QuestionCircleIcon","rotate360","SVG","$hover","$rotate","RefreshIcon","SandTimeSVG","SandTimeIcon","data-name","SearchIcon","SpyIcon","TeamIcon","UnlockSVG","UserSlashIcon","isolation","player","admin","superadmin","useFormFields","fields","setValues","setPages","setCurrentPage","paginationResponse","targetPage","newPage","pagesCopy","more","LastEvaluatedKey","nextPage","useBreadcrumb","setBc","routes","force","param","lastUpdate","setLastUpdate","initialValue","localStorage","getItem","storedValue","setStoredValue","valueToStore","Function","setItem","Scenario","scenarioResources","answersStatus","setAnswersStatus","userResources","setUserResources","loadingResources","setLoadingResources","showResources","setShowResources","getAnswersStatus","getSpecs","groupId","getSrnGroupId","Promise","all","specs","allocations","joinSpecsAndAllocationsData","scenarioUserResources","filteredResources","getUserScenarioResources","scenarioError","apiRequestPendingPromises","method","promiseIdx","splice","isCancel","statusCode","pushState","apiRequest","requestPromise","cancel","isDate","today","compareAsc","myDate","getDate","month","getMonth","getFullYear","minutesDiff","floor","differenceInMinutes","registrationCloseDate","EVENT_REGISTRATION_STATUS","allocs","tmpArr","requiredSpec","srn","tmpObj","resourceDependencyId","specSrn","slot","getScenariosNavigation","nextScenarioId","prevScenarioId","isScenarioPartOfEvent","getResourceAndDependency","matchedResources","matchedResource","USER_ACKSTATEMENT","SERVER","CREDENTIALS","DISPLAY_NAME_REGEXP","PURCHASE","USER_ROLES","ADMIN","SUPERADMIN","PLAYER","MAXLEN_BIGCARD_TEXT_COLLAPSE","WS_SCENARIO_MESSAGES_TYPES","ACTIVATE","DEACTIVATE","formatLoggedInUser","cognitoUser","parsedToken","signInUserSession","idToken","payload","bodyObject","grant_type","client_id","refresh_token","tokenRq","id_token","expires_in","expires_at","Theme","dark","warning","guidance","boards","activeLight","FirstSignIn","ack","setIsLoading","ackScrolled","setAckScrolled","availableName","setNameAvailable","searchLoading","setSearchLoading","checkDisplayName","delayedSearch","handleUserAttributesSubmit","ackStatement","handleAcceptACK","VerifyEmailForm","confirmationCode","confirmSignUp","signIn","code","resendSignUp","onSubmit","Login","showVerifyEmail","setShowVerifyEmail","labelName","setDynamoUser","registeredUser","SplunkRum","setGlobalAttributes","handleSubmit","assign","FederatedLogin","Signup","confirmPassword","newUser","setNewUser","signUp","redirect_uri","LoginSuccess","validateUserSession","authCode","tokensRq","federatedSignIn","currentAuthenticatedUser","setUserSession","Account","currentName","confirmationModalVisible","setConfirmationModalVisible","patch","editedUser","deleteAccount","del","NotFound","PasswordRecovery","verificationCode","newPassword","newPasswordConfirmation","setFields","codeSent","setCodeSent","handleSendRecoveryCode","forgotPassword","handleResetPassword","forgotPasswordSubmit","History","setLoadingHistory","historyEvents","setHistoryEvents","getUserEvents","events","w","model","alignSelf","index","workshopId","EMPTY_LIST_MESSAGE","MENU_ITEMS","Home","loadingEvents","setLoadingEvents","setLoadingRestrictedEvents","loadingOnDemandEvents","setLoadingOnDemandEvents","onDemandEvents","setOnDemandEvents","loadingWorkshops","setLoadingWorkshops","filteredWorkshops","setFilteredWorkshops","filteredEvents","setFilteredEvents","filteredRestrictedEvents","setFilteredRestrictedEvents","ignoreType","setIgnoreType","hasUserScrolled","setHasUserScrolled","inviteCodeModalVisible","setInviteCodeModalVisible","inviteCodeValue","setInviteCodeValue","loadingInviteCodeEvent","setLoadingInviteCodeEvent","eventsWithType","getOnDemandEvents","getRestrictedEvents","getEvents","workshopsWithType","workshops","getWorkshops","onCardClicked","onInviteCodeSubmit","onUserScrolled","prev","assertFeatureFlagIdIsNotEmpty","featureFlagId","getFeatureFlag","api","shouldHideScoringForEventId","resp","eventIdsToHide","hiddenForEventIds","EventPlayer","lazy","catch","setNavTitle","creditsModalVisible","setCreditsModalVisible","loadingUserInEvent","setLoadingUser","loadingEvent","setLoadingEvent","routeMatch","setHideScoring","then","getUserInEvent","userInSession","getEventByPathId","leaveEvent","fallback","Logout","signOut","close","handleLogout","Details","inviteCodeFromQuery","isRestricted","setBreadcrumbs","getEvent","workshopRouteMatch","historyRouteMatch","linkType","itemId","SurveyContainer","loadingSurvey","setLoadingSurvey","showSurvey","setShowSurvey","survey","setSurvey","surveyRouteMatch","viewMode","getSurvey","surveyId","DiscordJoinRedirection","interval","setCallInterval","loadingText","setLoadingText","getDiscordUser","access_token","withCredentials","Authorization","discordUser","redirectPath","inviteUrl","discordUserId","discordAccessToken","isUndefined","isNull","validateCognitoUserExists","validateDynamoUserExists","Workshop","Routes","isUserSessionValid","isCognitoUserValid","App","isAuthenticating","setIsAuthenticating","setLoggedInUser","hideUserProfileActions","notificationsPromises","readedNotifications","notificationsBase","removeNotificationsPromises","autoClose","hideProgressBar","newestOnTop","closeOnClick","pauseOnFocusLoss","draggable","pauseOnHover","Provider","require","NO_HEADER_VALUE","init","customHeaders","Amplify","configure","mandatorySignIn","region","oauth","scope","redirectSignIn","redirectSignOut","responseType","RESPONSE_TYPE","userPoolId","identityPoolId","userPoolWebClientId","refreshHandlers","endpoints","endpoint","custom_header","ReactDOM","render","autoReconnectInterval","instance","autoReconnectIntervalBase","retryCount","channelsSubscriptions","channels","connectionRequest","WebSocket","onopen","subscriptionMessage","channelKey","subscribe","onmessage","flags","emit","onclose","reconnect","onerror","listener","messageEvent","resolve","currentAttempt","SEND_REINTENT_MAX_ATTEMPTS","waitForOpenConnection","send","channel","unsubscriptionMessage","that","EventEmitter","answerResponse","helper","newQuestionArray","updated","previousQuestion"],"mappings":"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","file":"static/js/main.b4ef43cd.chunk.js","sourcesContent":["import { keyframes } from 'styled-components';\n\nexport const fadeIn = keyframes`\n0% {\n  opacity: 0;\n}\n100% {\n  opacity: 0.5;\n}\n`;\n\nexport const animBOTSLogo = keyframes`\n0% {\n  box-shadow: 0 0 red;\n}\n100% {\n  box-shadow: 0 0 100px 80px transparent;\n  border-width: 2px;\n}\n`;\n\nexport const animBOOLogo = keyframes`\n0% {\n  box-shadow: 0 0 #e9a000;\n}\n100% {\n  box-shadow: 0 0 90px 90px transparent;\n  border-width: 2px;\n}\n`;\n\nexport const heightEffect = keyframes`\n from {height: 0; color: #1D1D1D;}\n  to {height: 100%;}\n`;\n\nexport const rotate360 = keyframes`\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\n  5% {\n\t\ttransform: rotate(0deg);\n\t}\n\n  50% {\n\t\ttransform: rotate(180deg);\n\t}\n\n  55% {\n\t\ttransform: rotate(180deg);\n\t}\n\n\t100% {\n\t\ttransform: rotate(360deg);\n\t}\n`;\n","import omit from 'lodash/omit';\nimport find from 'lodash/find';\nimport { TEAM_NAME_REGEXP, USER_INVITE_STATE } from './constants';\n\nconst VISIBILITY_RAW = {\n  PUBLIC: true,\n  PRIVATE: false,\n};\nexport const VISIBILITY_VALUE = {\n  true: 'PUBLIC',\n  false: 'PRIVATE',\n};\nconst ACCESSIBILITY_RAW = { OPEN: true, CLOSED: false };\nexport const ACCESSIBILITY_VALUE = { true: 'OPEN', false: 'CLOSED' };\n\nexport const defineTeamMembers = (team, maxNumberOfParticipants) => ({\n  ...team,\n  full: maxNumberOfParticipants === team.numberOfParticipants,\n});\n\nconst validateChanges = (team) => {\n  if (!team.name.match(TEAM_NAME_REGEXP)) {\n    throw new Error('Check on your team name!');\n  }\n};\n\nexport const getTeamChanges = (baseTeam, newTeam) => {\n  const changes = {};\n  const changedParticipants = [];\n  validateChanges(newTeam);\n  newTeam.participants.forEach((editedParticipant) => {\n    if (editedParticipant.dirty) {\n      const originalParticipant = find(\n        baseTeam.participants,\n        (p) => p.userId === editedParticipant.userId\n      );\n      if (originalParticipant && originalParticipant.state === editedParticipant.state) {\n        changedParticipants.push(omit(editedParticipant, 'state'));\n        return;\n      }\n      changedParticipants.push(editedParticipant);\n    }\n  });\n  if (changedParticipants.length > 0) {\n    changes.participants = changedParticipants;\n  }\n  if (newTeam.name !== baseTeam.name) {\n    changes.name = newTeam.name;\n  }\n  if (newTeam.visibility !== VISIBILITY_RAW[baseTeam.visibility]) {\n    changes.visibility = VISIBILITY_VALUE[newTeam.visibility];\n  }\n  if (newTeam.accessibility !== ACCESSIBILITY_RAW[baseTeam.accessibility]) {\n    changes.accessibility = ACCESSIBILITY_VALUE[newTeam.accessibility];\n  }\n  return changes;\n};\n\nexport const getUserRoleInTeam = (participants = [], userId) => {\n  const userInTeam = participants.find((p) => p.userId === userId && p.state === USER_INVITE_STATE.ACCEPTED);\n  if (userInTeam) {\n    return userInTeam.role;\n  }\n  throw new Error('User is not in the team');\n};\n\nexport const getContainerStyleMedia = (matches) => {\n  const style = { mx: '10%', width: '' };\n  if (matches.s) {\n    style.mx = '0px';\n    style.width = '100%';\n  }\n  return style;\n};\n\nexport const getStyleMedia = (matches) => {\n  const style = {\n    boxWidth: '766px',\n    boxPx: '60px',\n    formWidth: '',\n    flexWidth: '',\n    flexPx: '',\n    teamNameMobile: false,\n    joinTeamFlexDirection: 'column',\n    joinTeamWidth: '750px',\n    joinTeamHeight: '530px',\n    joinTeamInputWidth: '66%',\n    joinTeamInputPX: '45px',\n    joinTeamInputPY: '40px',\n    joinTeamInputHeight: '130px',\n    teamInvitationsWidth: '300px',\n    switchButtonsFlex: 'row',\n    switchButtonsWidth: '67%',\n    btnSetJoinWidth: '25%',\n    btnSetLeaveWidth: '50%',\n    btnNewTeam: '50%',\n    pointAdjustFlexDir: 'row',\n    pointAdjustAlign: 'center',\n    pointAdjustPy: '',\n    pointAdjustAssignBtnWitdh: '25%',\n    pointAdjustAssignReasonWitdh: '400px',\n  };\n\n  if (matches && matches.l) {\n    style.joinTeamWidth = '100%';\n    style.joinTeamHeight = '100%';\n    style.joinTeamInputWidth = '100%';\n    style.joinTeamInputPX = '20px';\n    style.joinTeamInputPY = '10px';\n    style.joinTeamInputHeight = '90px';\n    style.teamInvitationsWidth = '100%';\n  }\n  if (matches && matches.m) {\n    style.flexPx = '10px';\n    style.flexWidth = '100%';\n    style.formWidth = '100%';\n    style.boxWidth = '100%';\n    style.boxPx = '20px';\n    style.btnSetJoinWidth = '100%';\n    style.btnSetLeaveWidth = '100%';\n    style.joinTeamWidth = '100%';\n    style.joinTeamHeight = '100%';\n    style.joinTeamInputWidth = '100%';\n    style.joinTeamInputPX = '20px';\n    style.joinTeamInputPY = '10px';\n    style.joinTeamInputHeight = '90px';\n    style.teamInvitationsWidth = '100%';\n  }\n\n  if (matches && matches.s) {\n    style.teamNameMobile = true;\n    style.boxWidth = '100%';\n    style.switchButtonsFlex = 'column';\n    style.switchButtonsWidth = '170px';\n    style.btnNewTeam = '100%';\n    style.pointAdjustFlexDir = 'column';\n    style.pointAdjustAlign = 'flex-start';\n    style.pointAdjustPy = '5px';\n    style.pointAdjustAssignBtnWitdh = '100%';\n    style.pointAdjustAssignReasonWitdh = '100%';\n    style.joinTeamWidth = '100%';\n    style.joinTeamHeight = '100%';\n    style.joinTeamInputWidth = '100%';\n    style.joinTeamInputPX = '20px';\n    style.joinTeamInputPY = '10px';\n    style.joinTeamInputHeight = '90px';\n    style.teamInvitationsWidth = '100%';\n  }\n  if (matches && matches.xs) {\n    style.boxWidth = '100%';\n  }\n  return style;\n};\n","import { get } from 'lodash';\n\nexport const ALERTABLE_NOTIFICATIONS = [\n  'TEAM_INVITE_RECEIVED',\n  'TEAM_INVITE_REMOVED',\n  'TEAM_INVITE_ACCEPTED',\n  'TEAM_INVITE_REJECTED',\n  'TEAM_INVITE_CANCELLED',\n  'TEAM_INVITE_DISBAND',\n];\n\nexport const ACTIONABLE_NOTIFICATIONS = [\n  'TEAM_INVITE_REMOVED',\n  'TEAM_INVITE_DISBAND',\n];\n\nconst NOTIFICATION_MESSAGE_BY_NAME = {\n  TEAM_INVITE_RECEIVED: () => 'You received a team invitation',\n  TEAM_INVITE_REMOVED: () => 'You were removed from your team',\n  TEAM_INVITE_ACCEPTED: (n) => `${get(n, 'notification.name', 'Someone')} joined the team`,\n  TEAM_INVITE_REJECTED: () => 'Your team invite was rejected',\n  TEAM_INVITE_CANCELLED: (n) => `${get(n, 'notification.name', 'Someone')} left the team`,\n  TEAM_INVITE_DISBAND: () => 'Your team was disbanded',\n  DEFAULT: () => 'New notification received',\n};\n\nexport function formatNotificationMessage(notification) {\n  const message = NOTIFICATION_MESSAGE_BY_NAME[notification.notificationType](notification);\n  if (message) {\n    return message;\n  }\n  return NOTIFICATION_MESSAGE_BY_NAME.DEFAULT;\n}\n","import get from 'lodash/get';\nimport { toast } from 'react-toastify';\n\nexport function onError(error = {}) {\n  let message = error.toString();\n  if (error.message === ERROR_NAMES.ABORTED_REQUEST) {\n    return;\n  }\n  if (error.message) {\n    message = error.message;\n  }\n  if (error && error.response) {\n    const errors = get(error, 'response.data.errors', []);\n    if (errors.length > 0) {\n      errors.forEach((e) => toast(e.message));\n      return;\n    }\n    message = get(error, 'response.data.message');\n  }\n  toast(message);\n}\n\nexport function getMessageError(error) {\n  let message = error.toString();\n\n  if (error.message) {\n    message = error.message;\n  }\n  if (error && error.response) {\n    const errors = get(error, 'response.data.errors', []);\n    if (errors.length > 0) {\n      message = '';\n      errors.forEach((e) => {\n        message += e.message;\n      });\n      return message;\n    }\n    message = get(error, 'response.data.message');\n  }\n  return message;\n}\n\nexport const ERROR_NAMES = {\n  ABORTED_REQUEST: 'Request aborted',\n  SESSION_EXPIRED: 'Session expired',\n};\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { SandTimeIcon } from 'boss-ui';\n\nconst ProgressLabel = styled(Flex)`\n  font-family: 'Roboto Mono';\n  font-weight: normal;\n  font-size: 16px;\n  position: absolute;\n  padding: 0px;\n  width: 205px;\n  background-color: #45a647;\n  ${(props) =>\n    props.completed &&\n    css`\n      padding: ${props.theme.margin.xs};\n      width: 115px;\n      background-color: #a088a4;\n    `};\n`;\nProgressLabel.displayName = 'WorkshopProgressLabel-ProgressLabel';\n\nfunction WorkshopProgressLabel({ stats = {}, style = {}, forceProgress = false }) {\n  if (\n    stats &&\n    (stats.isWorkshopCompleted || stats.progressPercentage || stats.progressPercentage === 0)\n  ) {\n    return (\n      <>\n        {stats.isWorkshopCompleted && !forceProgress ? (\n          <ProgressLabel style={style} completed>\n            Completed\n          </ProgressLabel>\n        ) : (\n          <ProgressLabel style={style}>\n            <Flex style={{ padding: '6px', backgroundColor: 'black' }}>\n              <SandTimeIcon color=\"#d0d0d0\" />\n            </Flex>\n            <Flex style={{ padding: '6px', marginLeft: '6px' }}>\n              {stats.progressPercentage}% completed\n            </Flex>\n          </ProgressLabel>\n        )}\n      </>\n    );\n  }\n  return null;\n}\n\nexport default WorkshopProgressLabel;\n","import React, { useState } from 'react';\nimport { UnregularButton } from 'boss-ui';\nimport { Flex } from 'reflexbox';\n\nexport default function CollapsableSection({\n  children,\n  justify = 'left',\n  expanded = true,\n  showLabel = 'Show more',\n  hideLabel = 'Show less',\n}) {\n  const [visible, setVisible] = useState(expanded);\n  return (\n    <Flex flexDirection=\"column\" width={1}>\n      {visible && <>{children}</>}\n      <Flex mt=\"12px\" justifyContent={justify} width={1}>\n        <UnregularButton onClick={() => setVisible((visible) => !visible)}>\n          {visible ? hideLabel : showLabel}\n        </UnregularButton>\n      </Flex>\n    </Flex>\n  );\n}\n","import React from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport format from 'date-fns/format';\nimport { RegularText } from 'boss-ui';\n\nexport default function QuestionAnswerItem({ text, createdAt, state, username }) {\n  return (\n    <Box p=\"4px\" style={{ whiteSpace: 'break-spaces' }}>\n      <Flex mb=\"6px\" alignItems=\"center\">\n        <RegularText mediumWeight fontSize=\"13px\">\n          Time:{' '}\n        </RegularText>\n        <RegularText fontSize=\"12px\">{format(new Date(createdAt), 'PPpp')}</RegularText>\n      </Flex>\n      <Flex mb=\"6px\" alignItems=\"center\">\n        <RegularText mediumWeight fontSize=\"13px\">\n          User:{' '}\n        </RegularText>\n        <RegularText fontSize=\"12px\">{username}</RegularText>\n      </Flex>\n      <Flex mb=\"6px\" alignItems=\"start\">\n        <RegularText mediumWeight fontSize=\"13px\" minWidth=\"68px\">\n          Answer:{' '}\n        </RegularText>\n        <RegularText fontSize=\"12px\" style={{ wordBreak: 'break-all' }}>\n          {text}\n        </RegularText>\n      </Flex>\n      <Flex mb=\"6px\" alignItems=\"center\">\n        <RegularText mediumWeight fontSize=\"13px\">\n          Result:{' '}\n        </RegularText>\n        <RegularText fontSize=\"12px\">{state}</RegularText>\n      </Flex>\n    </Box>\n  );\n}\n","import React, { useState, useLayoutEffect, useRef, useEffect, useMemo } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled, { css } from 'styled-components';\nimport { Flex, Box } from 'reflexbox';\nimport isEmpty from 'lodash/isEmpty';\nimport get from 'lodash/get';\nimport first from 'lodash/first';\nimport Media from 'react-media';\nimport {\n  Button,\n  RegularText,\n  UnregularButton,\n  PrevIcon,\n  NextIcon,\n  EVENT_QUESTION_STATUS,\n  ShakeContent,\n} from 'boss-ui';\nimport Api from '../../api';\nimport QuestionState from './QuestionState';\nimport HintsTable from '../hints/HintsTable';\nimport QuestionAnswer from './QuestionAnswer';\nimport QuestionAnswerItem from './QuestionAnswerItem';\nimport QuestionHistoryModal from './QuestionHistoryModal';\nimport QuestionPointsTable from './QuestionPointsTable';\nimport {\n  DEFAULT_BOX_BORDER_STYLE,\n  DEFAULT_BONUS_MULTIPLIER,\n  MENU_BAR_HEIGHT,\n} from '../../libs/constants';\nimport { useScenarioContext, useAppContext } from '../../libs/context-lib';\nimport { updateQuestionBy, updateQuestionsWithAnswer } from '../../libs/question-lib';\nimport { onError } from '../../libs/error-lib';\n\nconst Container = styled(Flex)`\n  background-color: ${(props) => props.theme.color.question_card.background.inactive};\n  padding: ${(props) => props.theme.margin.s};\n  border: 2px solid;\n  margin: ${(props) => props.theme.margin.s} 0 ${(props) => props.theme.margin.s} 0;\n  border-color: ${(props) => props.theme.color.question_card.border.pending};\n  box-shadow: 0px 12px 16px #0000004d;\n  width: 100%;\n  max-width: 1000px;\n  ${(props) =>\n    props.correct &&\n    css`\n      border-color: ${props.theme.color.question_card.border.correct};\n    `}\n  ${(props) =>\n    props.incorrect &&\n    css`\n      border-color: ${props.theme.color.question_card.border.incorrect};\n    `}\n`;\nContainer.displayName = 'QuestionBigCard-Container';\n\nconst getGridColumnsOnExpanded = (media) => {\n  if (media.s) {\n    return { gridColumnStart: 1, gridColumnEnd: 2 };\n  }\n  if (media.xl) {\n    return { gridColumnStart: 1, gridColumnEnd: 4 };\n  }\n  return { gridColumnStart: 1, gridColumnEnd: 3 };\n};\n\nconst API = new Api();\n\nexport default function QuestionBigCard({\n  question,\n  media = {},\n  onCloseCard,\n  answer = {},\n  points,\n  gridNavigation = {},\n}) {\n  const { phrasing, base_point_value, question_id, external, required_resources, background } =\n    question;\n  const { isPrev, isNext, goNext, goPrev } = gridNavigation;\n  const { currentScenario, setScenarioQuestions, scenarioQuestions } = useScenarioContext();\n  const { event, user } = useAppContext();\n  const history = useHistory();\n  const [submittingAnswer, setSubmittingAnswer] = useState(false);\n  const [showHistoryModal, setShowHistoryModal] = useState(false);\n  const [questionPoints, setQuestionPoints] = useState(points);\n  const [questionHistory, setQuestionHistory] = useState([]);\n  const [lastQuestionAnswer, setLastAnswer] = useState(answer);\n  const [closing, setClosing] = useState(false);\n  const [shaking, setShaking] = useState(false);\n  const questionRef = useRef(null);\n  const isQuestionCorrect = lastQuestionAnswer.state === EVENT_QUESTION_STATUS.CORRECT;\n  const isQuestionIncorrect = lastQuestionAnswer.state === EVENT_QUESTION_STATUS.INCORRECT;\n  const includeBackground = background !== phrasing.question_phrasing;\n  /**\n   * Provides the external url of the required resource to answer the question\n   */\n  const externalURL = useMemo(() => {\n    if (!required_resources || !required_resources.length || !user.userInTeam.resources) {\n      return null;\n    }\n    const resourceId = first(required_resources).resource_id;\n    if (resourceId && user.userInTeam.resources && user.userInTeam.resources.length) {\n      const userResource = user.userInTeam.resources.find((r) => r.name === resourceId);\n      return userResource ? userResource.instance_url : null;\n    }\n    return null;\n  }, [required_resources, user.userInTeam]);\n\n  useLayoutEffect(() => {\n    const questionBoxPosition = questionRef.current.getBoundingClientRect();\n    window.scrollTo(0, questionBoxPosition.top + window.pageYOffset - MENU_BAR_HEIGHT);\n  }, []);\n\n  useEffect(() => {\n    const getQuestion = async () => {\n      try {\n        const historyRequest = await API.get(\n          'users',\n          `/user/events/${currentScenario.eventId}/scenarios/${currentScenario.scenarioId}/questions/${question_id}`\n        );\n        setQuestionHistory(get(historyRequest, 'question.activity', []));\n        setQuestionPoints(historyRequest.question.total);\n        setLastAnswer(historyRequest.question.answer);\n        setScenarioQuestions((scenarioQuestions) =>\n          updateQuestionBy(\n            scenarioQuestions,\n            {\n              question: historyRequest.question.question,\n              total: historyRequest.question.total,\n              answer: historyRequest.question.answer,\n            },\n            question_id\n          )\n        );\n      } catch (e) {\n        onError(e);\n      }\n    };\n\n    getQuestion();\n    return () => API.abortCurrentRequest();\n  }, []);\n\n  // update answer and points state variables if there is a prop change\n  useEffect(() => {\n    setLastAnswer(answer);\n    setQuestionPoints(points);\n  }, [answer, points]);\n\n  // update questionHistory state if there is a new answer\n  useEffect(() => {\n    // prevent modifications in history for lastQuestionAnswer default value\n    if (isEmpty(lastQuestionAnswer)) {\n      return;\n    }\n    if (!questionHistory[0]) {\n      setQuestionHistory([lastQuestionAnswer]);\n      return;\n    }\n    // update history if history is empty (first condition) or history is not empty and last item is different than lastQuestionAnswer\n    if (questionHistory[0] && questionHistory[0].createdAt !== lastQuestionAnswer.createdAt) {\n      setQuestionHistory((answers) => [lastQuestionAnswer].concat(answers));\n    }\n  }, [lastQuestionAnswer]);\n\n  const onClose = () => {\n    if (!submittingAnswer) {\n      setClosing(true);\n      window.scrollTo(0, window.pageYOffset - 720);\n      onCloseCard();\n    }\n  };\n\n  const shakeComponents = () => {\n    setShaking(true);\n    setTimeout(() => setShaking(false), 1000);\n  };\n\n  const submitAnswer = async (answerInput) => {\n    setSubmittingAnswer(true);\n    try {\n      const answerRequest = await API.post(\n        'users',\n        `/user/events/${currentScenario.eventId}/scenarios/${currentScenario.scenarioId}/questions/${question_id}/answer`,\n        {\n          body: {\n            answer: answerInput,\n            phrasing_id: phrasing.phrasing_id,\n          },\n        }\n      );\n      setQuestionPoints(answerRequest.total);\n      setLastAnswer(answerRequest.answer);\n      setScenarioQuestions(\n        updateQuestionBy(scenarioQuestions, answerRequest, question_id, updateQuestionsWithAnswer)\n      );\n    } catch (e) {\n      onError(e);\n      if (e.response && e.response.status === 403) {\n        history.push('/');\n      }\n    } finally {\n      setSubmittingAnswer(false);\n      shakeComponents();\n    }\n  };\n\n  const buyHint = async (hintId) => {\n    try {\n      const rq = await API.post(\n        'events',\n        `/user/events/${currentScenario.eventId}/scenarios/${currentScenario.scenarioId}/questions/${question_id}/hints`,\n        {\n          body: {\n            hint_id: hintId,\n            phrasing_id: phrasing.phrasing_id,\n          },\n        }\n      );\n      const questionRequest = await API.get(\n        'users',\n        `/user/events/${currentScenario.eventId}/scenarios/${currentScenario.scenarioId}/questions/${question_id}`\n      );\n      // update question in question list\n      setScenarioQuestions(\n        updateQuestionBy(scenarioQuestions, questionRequest.question, question_id)\n      );\n      // update question points\n      setQuestionPoints(rq.total);\n      // update question history with the hint\n      setQuestionHistory((answers) => [{ ...rq.hint }, ...answers]);\n    } catch (e) {\n      onError(e);\n    }\n  };\n\n  const refreshHints = async () => {\n    try {\n      const questionRequest = await API.get(\n        'users',\n        `/user/events/${currentScenario.eventId}/scenarios/${currentScenario.scenarioId}/questions/${question_id}`\n      );\n      // update question in question list\n      setScenarioQuestions(\n        updateQuestionBy(scenarioQuestions, questionRequest.question, question_id)\n      );\n    } catch (e) {\n      onError(e);\n    }\n  };\n\n  return (\n    <Flex\n      justifyContent=\"center\"\n      width={1}\n      style={getGridColumnsOnExpanded(media)}\n      ref={questionRef}\n    >\n      <Container\n        minHeight=\"620px\"\n        closing={closing}\n        correct={isQuestionCorrect}\n        incorrect={isQuestionIncorrect}\n      >\n        <Flex flexDirection=\"column\" width=\"100%\">\n          <Flex alignItems=\"center\" justifyContent=\"space-between\">\n            <RegularText fontSize=\"24px\" mediumWeight>\n              #{question_id}\n            </RegularText>\n            <ShakeContent shake={shaking}>\n              <QuestionState status={lastQuestionAnswer.state} />\n            </ShakeContent>\n            <Flex>\n              <UnregularButton onClick={onClose}>Close</UnregularButton>\n            </Flex>\n          </Flex>\n          {includeBackground && (\n            <Flex mt=\"10px\">\n              <RegularText color=\"#979797\" fontSize=\"14px\">\n                {background}\n              </RegularText>\n            </Flex>\n          )}\n          <Box mt=\"10px\">\n            <RegularText fontSize=\"18px\" mediumWeight>\n              Question:\n            </RegularText>\n            <RegularText fontSize=\"18px\" mediumWeight>\n              {phrasing.question_phrasing}\n            </RegularText>\n            {phrasing.answer_guidance && (\n              <Flex mt=\"6px\">\n                <RegularText color=\"#81A2BE\" style={{ wordBreak: 'break-word' }}>\n                  Answer guidance: {phrasing.answer_guidance}\n                </RegularText>\n              </Flex>\n            )}\n          </Box>\n          <QuestionAnswer\n            localStorageId={`${currentScenario.eventId}${currentScenario.scenarioId}${question_id}`}\n            isExternal={external}\n            externalURL={externalURL}\n            lastQuestionAnswer={lastQuestionAnswer}\n            onSubmitAnswer={submitAnswer}\n            isQuestionCorrect={isQuestionCorrect}\n            isSubmittingAnswer={submittingAnswer}\n          />\n          <Flex mt=\"40px\" flexDirection=\"column\">\n            <HintsTable\n              hints={phrasing.hints}\n              hintsStrategy={event.hintScoring}\n              totalHints={phrasing.hints_count}\n              onBuyHint={buyHint}\n              onRefreshHintsList={refreshHints}\n              active={!isQuestionCorrect}\n            />\n          </Flex>\n          <Media query=\"(max-width: 750px)\">\n            {(matches) => (\n              <Flex mt=\"40px\" mb=\"20px\">\n                <Box minWidth=\"200px\">\n                  <Flex mb=\"4px\">\n                    <RegularText mediumWeight fontSize=\"14px\">\n                      Points earned\n                    </RegularText>\n                  </Flex>\n                  <QuestionPointsTable score={questionPoints} shakeTotal={shaking} />\n                </Box>\n                {matches ? (\n                  <Flex ml=\"auto\">\n                    <UnregularButton\n                      noPadding\n                      onClick={() => setShowHistoryModal(true)}\n                      disabled={isEmpty(lastQuestionAnswer)}\n                      className=\"QuestionBigCard-openActivity\"\n                    >\n                      View Details\n                    </UnregularButton>\n                  </Flex>\n                ) : (\n                  <Box width={1} ml=\"12px\">\n                    <Flex mb=\"4px\">\n                      <RegularText mediumWeight fontSize=\"14px\">\n                        Submission history\n                      </RegularText>\n                      <Flex ml=\"auto\">\n                        <UnregularButton\n                          noPadding\n                          onClick={() => setShowHistoryModal(true)}\n                          disabled={isEmpty(lastQuestionAnswer)}\n                          className=\"QuestionBigCard-openActivity\"\n                        >\n                          View Details\n                        </UnregularButton>\n                      </Flex>\n                    </Flex>\n                    <Box p=\"6px\" style={DEFAULT_BOX_BORDER_STYLE} minHeight=\"126px\">\n                      {isEmpty(lastQuestionAnswer) ? (\n                        <RegularText fontSize=\"12px\">No answer so far</RegularText>\n                      ) : (\n                        <QuestionAnswerItem {...lastQuestionAnswer} />\n                      )}\n                    </Box>\n                  </Box>\n                )}\n              </Flex>\n            )}\n          </Media>\n          <Flex mt=\"auto\" justifyContent=\"space-between\" alignItems=\"center\">\n            <Box>\n              <Button\n                hide={!isPrev}\n                disabled={submittingAnswer}\n                onClick={goPrev}\n                className=\"QuestionBigCard-PrevQuestionButton\"\n                secondary\n              >\n                <PrevIcon />\n              </Button>\n            </Box>\n            {isQuestionCorrect ? (\n              <RegularText fontSize=\"20px\" mediumWeight style={{ whiteSpace: 'break-spaces' }}>\n                Points Earned:{' '}\n                <RegularText fontSize=\"20px\" mediumWeight color=\"#81C784\">\n                  {questionPoints.total}{' '}\n                </RegularText>\n                / {Math.round(base_point_value * DEFAULT_BONUS_MULTIPLIER)}\n              </RegularText>\n            ) : (\n              <RegularText fontSize=\"20px\" mediumWeight>\n                Base Points: {base_point_value}\n              </RegularText>\n            )}\n            <Box>\n              <Button\n                hide={!isNext}\n                disabled={submittingAnswer}\n                onClick={goNext}\n                className=\"QuestionBigCard-NextQuestionButton\"\n                secondary\n              >\n                <NextIcon />\n              </Button>\n            </Box>\n          </Flex>\n        </Flex>\n      </Container>\n      {showHistoryModal && (\n        <QuestionHistoryModal\n          onClose={() => setShowHistoryModal(false)}\n          answers={questionHistory}\n          questionId={question_id}\n        />\n      )}\n    </Flex>\n  );\n}\n","import styled from 'styled-components';\n\nexport default styled.svg.attrs({\n  version: '1.1',\n  xmlns: 'http://www.w3.org/2000/svg',\n  xmlnsXlink: 'http://www.w3.org/1999/xlink',\n})``;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst AsteriskSVG = styled(svgBase)`\n  width: ${(props) => props.size || '14px'};\n  height: ${(props) => props.size || '14px'};\n  fill: #898989;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `};\n`;\nAsteriskSVG.displayName = 'AsteriskSVG';\n\nexport default function AsteriskIcon(props) {\n  return (\n    <AsteriskSVG viewBox=\"0 0 512 512\" {...props}>\n      <path\n        fill={props.color ? props.color : '#898989'}\n        d=\"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"\n      />\n    </AsteriskSVG>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport Base from './StyledSVGBase';\n\nconst CheckIcon = styled(Base)`\n  fill: #81c784;\n  &:hover {\n    fill: #2ab800;\n  }\n`;\n\nCheckIcon.displayName = 'CheckMark-CheckIcon';\n\nexport default function CheckMark(props) {\n  return (\n    <CheckIcon {...props} width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path d=\"M10,15.172l9.192-9.193,1.415,1.414L10,18,3.636,11.636,5.05,10.222Z\" />\n    </CheckIcon>\n  );\n}\n","import React from 'react';\n\nexport default function CollapsableIcon(props) {\n  return (\n    <svg width={props.size || 12} height={props.size || 20} viewBox=\"0 0 12 20\">\n      <g transform=\"translate(0)\">\n        <rect fill=\"none\" width=\"12\" height=\"20\" />\n        <path\n          fill={props.color || '#de935f'}\n          d=\"M10.666,11.636,15.333,16.3,14,17.636l-6-6,6-6,1.333,1.333Z\"\n          transform=\"translate(17.636 -2) rotate(90)\"\n        />\n      </g>\n    </svg>\n  );\n}\n","import React from 'react';\n\nconst SIZE = '24px';\n\nconst CreateIcon = (props) => (\n  <svg width={props.size || SIZE} height={props.size || SIZE} viewBox=\"0 0 24 24\">\n    <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n    <path\n      fill=\"#898989\"\n      d=\"M4,3H20a1,1,0,0,1,1,1V20a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V4A1,1,0,0,1,4,3Zm7,8H7v2h4v4h2V13h4V11H13V7H11Z\"\n    />\n  </svg>\n);\n\nexport default CreateIcon;\n","import React from 'react';\n\nconst TopArrow = ({ color }) => (\n  <svg width=\"45.884\" height=\"48.271\" viewBox=\"0 0 45.884 48.271\">\n    <g transform=\"translate(1.489 1.518)\">\n      <g transform=\"matrix(0.891, -0.454, 0.454, 0.891, -405.631, -151.72)\">\n        <path\n          fill=\"none\"\n          stroke={color}\n          strokeLinecap=\"round\"\n          strokeWidth=\"2px\"\n          d=\"M8245.836-1287.49c21.407-8.244,27.031-23.4,26.964-33.679\"\n          transform=\"translate(-7960 1653.93)\"\n        />\n        <path\n          fill=\"none\"\n          stroke={color}\n          strokeLinecap=\"round\"\n          strokeWidth=\"2px\"\n          strokeLinejoin=\"round\"\n          d=\"M8268.6-1316.858l9-4.648,5.514,8.608\"\n          transform=\"translate(-7964.738 1654)\"\n        />\n      </g>\n    </g>\n  </svg>\n);\n\nconst LeftArrow = ({ color }) => (\n  <svg width=\"103.292\" height=\"113.602\" viewBox=\"0 0 103.292 113.602\">\n    <g transform=\"translate(1.68 1.532)\">\n      <path\n        fill=\"none\"\n        stroke={color}\n        strokeLinecap=\"round\"\n        strokeWidth=\"2px\"\n        d=\"M-13.436,96.138C33.916,84.041,41.93,16.413,41.823,0\"\n        transform=\"matrix(-0.899, -0.438, 0.438, -0.899, 45.765, 104.743)\"\n      />\n      <path\n        fill=\"none\"\n        stroke={color}\n        strokeLinecap=\"round\"\n        strokeWidth=\"2px\"\n        strokeLinejoin=\"round\"\n        d=\"M0,7.422,14.364,0l8.8,13.746\"\n        transform=\"matrix(-0.899, -0.438, 0.438, -0.899, 20.824, 93.051)\"\n      />\n    </g>\n  </svg>\n);\n\nfunction CurveArrow({ color = '#535353', direction = 'top' }) {\n  switch (direction) {\n    case 'top':\n      return <TopArrow color={color} />;\n    case 'left':\n      return <LeftArrow color={color} />;\n    default:\n      return <TopArrow color={color} />;\n  }\n}\nexport default CurveArrow;\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst DiscordSVG = styled(svgBase)`\n  width: ${(props) => props.size || '120px'};\n  height: ${(props) => props.size || '40px'};\n  fill: #7289da;\n  opacity: 0.6;\n  &:hover {\n    opacity: 1;\n    cursor: pointer;\n  }\n`;\n\nexport default function DiscordIcon(props) {\n  return (\n    <DiscordSVG viewBox=\"0 0 727 200\" {...props}>\n      <path d=\"M106.8,84.1 C101.1,84.1 96.6,89 96.6,95.1 C96.6,101.2 101.2,106.1 106.8,106.1 C112.5,106.1 117,101.2 117,95.1 C117,89 112.4,84.1 106.8,84.1 Z M70.3,84.1 C64.6,84.1 60.1,89 60.1,95.1 C60.1,101.2 64.7,106.1 70.3,106.1 C76,106.1 80.5,101.2 80.5,95.1 C80.6,89 76,84.1 70.3,84.1 Z\" />\n      <path d=\"M155.4,0.9 L21.4,0.9 C10.1,0.9 0.9,10.1 0.9,21.4 L0.9,155.4 C0.9,166.7 10.1,175.9 21.4,175.9 L134.8,175.9 L129.5,157.6 L142.3,169.4 L154.4,180.5 L176,199.2 L176,21.4 C175.9,10.1 166.7,0.9 155.4,0.9 Z M116.8,130.4 C116.8,130.4 113.2,126.1 110.2,122.4 C123.3,118.7 128.3,110.6 128.3,110.6 C124.2,113.3 120.3,115.2 116.8,116.5 C111.8,118.6 107,119.9 102.3,120.8 C92.7,122.6 83.9,122.1 76.4,120.7 C70.7,119.6 65.8,118.1 61.7,116.4 C59.4,115.5 56.9,114.4 54.4,113 C54.1,112.8 53.8,112.7 53.5,112.5 C53.3,112.4 53.2,112.3 53.1,112.3 C51.3,111.3 50.3,110.6 50.3,110.6 C50.3,110.6 55.1,118.5 67.8,122.3 C64.8,126.1 61.1,130.5 61.1,130.5 C39,129.8 30.6,115.4 30.6,115.4 C30.6,83.5 45,57.6 45,57.6 C59.4,46.9 73,47.2 73,47.2 L74,48.4 C56,53.5 47.8,61.4 47.8,61.4 C47.8,61.4 50,60.2 53.7,58.6 C64.4,53.9 72.9,52.7 76.4,52.3 C77,52.2 77.5,52.1 78.1,52.1 C84.2,51.3 91.1,51.1 98.3,51.9 C107.8,53 118,55.8 128.4,61.4 C128.4,61.4 120.5,53.9 103.5,48.8 L104.9,47.2 C104.9,47.2 118.6,46.9 132.9,57.6 C132.9,57.6 147.3,83.5 147.3,115.4 C147.3,115.3 138.9,129.7 116.8,130.4 L116.8,130.4 Z M267.8,43.7 L234.6,43.7 L234.6,81 L256.7,100.9 L256.7,64.7 L268.5,64.7 C276,64.7 279.7,68.3 279.7,74.1 L279.7,101.8 C279.7,107.6 276.2,111.5 268.5,111.5 L234.5,111.5 L234.5,132.6 L267.7,132.6 C285.5,132.7 302.2,123.8 302.2,103.4 L302.2,73.6 C302.3,52.8 285.6,43.7 267.8,43.7 L267.8,43.7 Z M441.8,103.4 L441.8,72.8 C441.8,61.8 461.6,59.3 467.6,70.3 L485.9,62.9 C478.7,47.1 465.6,42.5 454.7,42.5 C436.9,42.5 419.3,52.8 419.3,72.8 L419.3,103.4 C419.3,123.6 436.9,133.7 454.3,133.7 C465.5,133.7 478.9,128.2 486.3,113.8 L466.7,104.8 C461.9,117.1 441.8,114.1 441.8,103.4 Z M381.3,77 C374.4,75.5 369.8,73 369.5,68.7 C369.9,58.4 385.8,58 395.1,67.9 L409.8,56.6 C400.6,45.4 390.2,42.4 379.5,42.4 C363.2,42.4 347.4,51.6 347.4,69 C347.4,85.9 360.4,95 374.7,97.2 C382,98.2 390.1,101.1 389.9,106.1 C389.3,115.6 369.7,115.1 360.8,104.3 L346.6,117.6 C354.9,128.3 366.2,133.7 376.8,133.7 C393.1,133.7 411.2,124.3 411.9,107.1 C412.9,85.4 397.1,79.9 381.3,77 Z M314.3,132.5 L336.7,132.5 L336.7,43.7 L314.3,43.7 L314.3,132.5 Z M692,43.7 L658.8,43.7 L658.8,81 L680.9,100.9 L680.9,64.7 L692.7,64.7 C700.2,64.7 703.9,68.3 703.9,74.1 L703.9,101.8 C703.9,107.6 700.4,111.5 692.7,111.5 L658.7,111.5 L658.7,132.6 L692,132.6 C709.8,132.7 726.5,123.8 726.5,103.4 L726.5,73.6 C726.5,52.8 709.8,43.7 692,43.7 Z M529.1,42.5 C510.7,42.5 492.4,52.5 492.4,73 L492.4,103.3 C492.4,123.6 510.8,133.8 529.3,133.8 C547.7,133.8 566,123.6 566,103.3 L566,73 C566,52.6 547.5,42.5 529.1,42.5 Z M543.5,103.3 C543.5,109.7 536.3,113 529.2,113 C522,113 514.8,109.9 514.8,103.3 L514.8,73 C514.8,66.5 521.8,63 528.8,63 C536.1,63 543.5,66.1 543.5,73 L543.5,103.3 L543.5,103.3 Z M646.4,73 C645.9,52.2 631.7,43.8 613.4,43.8 L577.9,43.8 L577.9,132.6 L600.6,132.6 L600.6,104.4 L604.6,104.4 L625.2,132.6 L653.2,132.6 L629,102.1 C639.7,98.7 646.4,89.4 646.4,73 Z M613.8,85 L600.6,85 L600.6,64.7 L613.8,64.7 C627.9,64.7 627.9,85 613.8,85 Z\" />\n    </DiscordSVG>\n  );\n}\n","import React from 'react';\n\nexport default function ExpandIcon(props) {\n  return (\n    <svg width={props.size || 12} height={props.size || 20} viewBox=\"0 0 12 20\">\n      <rect fill=\"none\" width=\"12\" height=\"20\" />\n      <path\n        fill={props.color || '#de935f'}\n        d=\"M10.666,11.636,15.333,16.3,14,17.636l-6-6,6-6,1.333,1.333Z\"\n        transform=\"translate(-5.636 21.333) rotate(-90)\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function InviteOnlyIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} {...props} viewBox=\"0 0 24 24\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path\n        fill=\"#fff\"\n        d=\"M3.783,2.826,12,1l8.217,1.826A1,1,0,0,1,21,3.8v9.987a6,6,0,0,1-2.672,4.992L12,23,5.672,18.781A6,6,0,0,1,3,13.79V3.8a1,1,0,0,1,.783-.976ZM12,13.5l2.939,1.545-.561-3.272,2.377-2.318-3.286-.478L12,6,10.53,8.977l-3.285.478,2.377,2.318-.56,3.272Z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst SIZE = '40px';\n\nconst Arrow = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #1d1d1d;\n  &:hover {\n    fill: #2c2c2c;\n    cursor: pointer;\n  }\n`;\n\nexport default function LeftArrowHide() {\n  return (\n    <Arrow viewBox=\"0 0 40 40\">\n      <rect width=\"40\" height=\"40\" />\n      <g transform=\"translate(8 8)\">\n        <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n        <path fill=\"#535353\" d=\"M12,14v6L4,12l8-8v6h8v4Z\" transform=\"translate(3)\" />\n        <rect fill=\"#535353\" width=\"4\" height=\"24\" />\n      </g>\n    </Arrow>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst SIZE = '40px';\n\nconst Arrow = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #1d1d1d;\n  &:hover {\n    fill: #2c2c2c;\n    cursor: pointer;\n  }\n`;\n\nexport default function LeftArrowShow() {\n  return (\n    <Arrow viewBox=\"0 0 40 40\">\n      <rect width=\"40\" height=\"40\" />\n      <g transform=\"translate(8 8)\">\n        <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n        <path fill=\"#535353\" d=\"M12,14H4V10h8V4l8,8-8,8Z\" transform=\"translate(3)\" />\n        <rect fill=\"#535353\" width=\"4\" height=\"24\" />\n      </g>\n    </Arrow>\n  );\n}\n","import React from 'react';\n\nexport default function RegularFrown(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#535353\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function RegularLaughBeam(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#535353\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function RegularMeh(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#535353\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function RegularSadTear(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#535353\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function RegularSmile(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#535353\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function RegularStar(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 576 512\">\n      <path\n        fill=\"#535353\"\n        d=\"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst SIZE = '40px';\n\nconst Arrow = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #1d1d1d;\n  &:hover {\n    fill: #2c2c2c;\n    cursor: pointer;\n  }\n`;\n\nexport default function RightArrowHide() {\n  return (\n    <Arrow viewBox=\"0 0 40 40\">\n      <rect width=\"40\" height=\"40\" />\n      <g transform=\"translate(8 8)\">\n        <path fill=\"none\" d=\"M24,0H0V24H24Z\" />\n        <path fill=\"#535353\" d=\"M12,14v6l8-8L12,4v6H4v4Z\" transform=\"translate(-3)\" />\n        <rect fill=\"#535353\" width=\"4\" height=\"24\" transform=\"translate(20)\" />\n      </g>\n    </Arrow>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst SIZE = '40px';\n\nconst Arrow = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #1d1d1d;\n  &:hover {\n    fill: #2c2c2c;\n    cursor: pointer;\n  }\n`;\n\nexport default function RightArrowShow() {\n  return (\n    <Arrow viewBox=\"0 0 40 40\">\n      <rect width=\"40\" height=\"40\" />\n      <g transform=\"translate(8 8)\">\n        <path fill=\"none\" d=\"M24,0H0V24H24Z\" />\n        <path fill=\"#535353\" d=\"M12,14h8V10H12V4L4,12l8,8Z\" transform=\"translate(-3)\" />\n        <rect fill=\"#535353\" width=\"4\" height=\"24\" transform=\"translate(20)\" />\n      </g>\n    </Arrow>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst ShareSVG = styled(svgBase)`\n  width: ${(props) => props.size || '20px'};\n  height: ${(props) => props.size || '20px'};\n  fill: #898989;\n  &:hover {\n    fill: #66bb6a;\n  }\n`;\n\nexport default function ShareIcon(props) {\n  return (\n    <ShareSVG viewBox=\"0 0 515.556 515.556\" {...props}>\n      <path d=\"m354.445 161.111v64.444h32.222v225.556h-257.778v-225.555h32.222v-64.444h-96.667v354.445h386.667v-354.446z\" />\n      <path d=\"m225.556 123.351v166.649h64.444v-166.65l41.662 41.662 45.564-45.564-119.448-119.448-119.449 119.449 45.564 45.564z\" />\n    </ShareSVG>\n  );\n}\n","import React from 'react';\n\nexport default function SolidFrown(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#66bb6a\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function SolidLaughBeam(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#66bb6a\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function SolidMeh(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#66bb6a\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function SolidSadTear(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#66bb6a\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function SolidSmile(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 496 512\">\n      <path\n        fill=\"#66bb6a\"\n        d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function SolidStar(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 576 512\">\n      <path\n        fill=\"#66BB6A\"\n        d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nconst WIDTH = 100;\nconst HEIGHT = 25;\nfunction SplunkIcon(props) {\n  return (\n    <svg width={props.size || WIDTH} height={props.size || HEIGHT} viewBox=\"0 0 100 30\">\n      <g fill={props.color || '#d0d0d0'}>\n        <path d=\"M9.981 16.96a3.955 3.955 0 01-.353 1.767 3.3 3.3 0 01-1.148 1.325 6.108 6.108 0 01-1.68.882 8.867 8.867 0 01-2.12.353 7.62 7.62 0 01-2.473-.353A5.686 5.686 0 010 19.609l1.237-2.032a8.3 8.3 0 001.59 1.06 1.9 1.9 0 001.413.353 2.978 2.978 0 001.5-.442 1.448 1.448 0 00.53-1.237 1.5 1.5 0 00-.088-.618 1.424 1.424 0 00-.353-.618c-.265-.265-.53-.442-.795-.707-.353-.265-.707-.53-1.237-.883-.353-.265-.795-.618-1.148-.883a4.63 4.63 0 01-.972-.883 7.368 7.368 0 01-.707-1.06 3.662 3.662 0 01-.265-1.413A3.234 3.234 0 011.06 8.66a4.648 4.648 0 011.06-1.24 4.91 4.91 0 011.5-.795 7.357 7.357 0 011.945-.265 9.433 9.433 0 012.208.265 7.732 7.732 0 011.943.883L8.568 9.275a3.876 3.876 0 00-2.385-.795 2.028 2.028 0 00-1.237.353 1.221 1.221 0 00-.53.972 1.63 1.63 0 00.442 1.06 10.168 10.168 0 001.5 1.237 17.553 17.553 0 011.767 1.413 7.06 7.06 0 011.149 1.145 2.985 2.985 0 01.53 1.06 2.118 2.118 0 01.177 1.237M22.612 13.603a6.176 6.176 0 00-.972-3.71 2.713 2.713 0 00-2.562-1.325 3.39 3.39 0 00-2.737 1.415 6.724 6.724 0 00-.972 3.886 6.447 6.447 0 00.972 3.8 3 3 0 002.738 1.325 2.718 2.718 0 001.678-.53 3.911 3.911 0 001.06-1.325 10.391 10.391 0 00.618-1.767 11.971 11.971 0 00.177-1.767m3.975-.177a9.1 9.1 0 01-.53 3.091 8.572 8.572 0 01-1.409 2.472 6.443 6.443 0 01-4.858 2.208 5.831 5.831 0 01-1.237-.088 4.98 4.98 0 01-1.06-.353 3.922 3.922 0 01-.972-.707l-1.06-1.06V28h-3.713V6.625h3.71v2.032a6.369 6.369 0 012.208-1.855 5.918 5.918 0 012.738-.619 6.336 6.336 0 012.562.53 6.471 6.471 0 012.032 1.413 5.425 5.425 0 011.325 2.3c.088 1.06.265 2.032.265 3M28.265 0h3.71v20.934h-3.71zM44.248 20.934v-1.943a8.461 8.461 0 01-2.2 1.766 6.759 6.759 0 01-2.65.53 5.383 5.383 0 01-2.826-.707 3.994 3.994 0 01-1.678-1.943 1.638 1.638 0 01-.177-.618c-.088-.265-.088-.53-.177-.795 0-.353-.088-.707-.088-.972V6.625h3.71v8.126a10.69 10.69 0 00.086 1.674 4.98 4.98 0 00.353 1.06 2.482 2.482 0 002.3 1.237 2.91 2.91 0 002.915-1.767 2.3 2.3 0 00.265-.972 9.6 9.6 0 00.088-1.59V6.625h3.71v14.309h-3.631zM60.505 20.933v-8.214a10.69 10.69 0 00-.093-1.678 4.98 4.98 0 00-.353-1.06 2.482 2.482 0 00-2.3-1.237 4.747 4.747 0 00-1.855.442 2.811 2.811 0 00-1.148 1.325 2.352 2.352 0 00-.258 1.06 9.6 9.6 0 00-.088 1.59v7.685h-3.798V6.624h3.8v1.947a8.461 8.461 0 012.206-1.77 6.759 6.759 0 012.65-.53 5.383 5.383 0 012.826.707 3.994 3.994 0 011.678 1.943 1.638 1.638 0 01.177.618c.088.265.088.53.177.795 0 .353.088.707.088.972v9.539zM76.315 21.2l-5.651-7.862v7.6h-3.8V0h3.8v12.278h.353l5.035-5.83 2.826 1.237-4.77 5.123 5.656 7.154zM83.028 20.492v-2.473l8.833-4.328-8.833-4.328V6.801l11.394 5.741v2.3zM84.177 3.091a1.282 1.282 0 11-.088 2.562 1.208 1.208 0 01-1.237-1.237 1.3 1.3 0 011.325-1.325zm0 .177a1.074 1.074 0 00-1.06 1.06 1.06 1.06 0 002.12 0 1.218 1.218 0 00-1.06-1.06zm-.265 1.855h-.265V3.709h.442a.8.8 0 01.442.088c.088.088.177.177.088.265 0 .177-.088.353-.265.353.177 0 .265.177.265.353a.531.531 0 00.088.353h-.265a.531.531 0 01-.088-.353.234.234 0 00-.265-.265h-.177zm0-.795h.177c.177 0 .353-.088.353-.265s-.088-.177-.353-.177h-.177v.442z\" />\n      </g>\n    </svg>\n  );\n}\n\nexport default SplunkIcon;\n","import React from 'react';\n\nconst SIZE = '24px';\n\nexport const Timer = (props) => (\n  <svg viewBox=\"0 0 24 24\" width={props.size || SIZE} height={props.size || SIZE}>\n    <path\n      fill=\"#81a2be\"\n      d=\"M14.063,0H.938A.937.937,0,0,0,0,.938v.625A.937.937,0,0,0,.938,2.5c0,3.553,1.993,6.552,4.72,7.5-2.728.948-4.72,3.947-4.72,7.5A.937.937,0,0,0,0,18.438v.625A.937.937,0,0,0,.938,20H14.063A.937.937,0,0,0,15,19.063v-.625a.937.937,0,0,0-.937-.937c0-3.553-1.993-6.552-4.72-7.5,2.728-.948,4.72-3.947,4.72-7.5A.937.937,0,0,0,15,1.563V.938A.937.937,0,0,0,14.063,0ZM11.13,15H3.87c.666-1.828,2.035-3.125,3.63-3.125S10.463,13.172,11.13,15Zm0-10H3.87a7.329,7.329,0,0,1-.433-2.5h8.125A7.329,7.329,0,0,1,11.131,5Z\"\n      transform=\"translate(5 2)\"\n    />\n    <rect fill=\"none\" width=\"24\" height=\"24\" />\n  </svg>\n);\n\nexport default Timer;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst SIZE = '24px';\n\nconst Arrow = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #535353;\n  ${(props) =>\n    props.hover &&\n    css`\n      fill: #81c784;\n      cursor: pointer;\n    `}\n`;\n\nexport default function TopArrow(props) {\n  return (\n    <Arrow viewBox=\"0 0 24 24\" {...props}>\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path d=\"M13,7.828V20H11V7.828L5.636,13.192,4.222,11.778,12,4l7.778,7.778-1.414,1.414Z\" />\n    </Arrow>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from './StyledSVGBase';\n\nconst WarningSVG = styled(svgBase)`\n  width: ${(props) => props.size || '24px'};\n  height: ${(props) => props.size || '24px'};\n  fill: #898989;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `};\n`;\nWarningSVG.displayName = 'WarningSVG';\n\nexport default function WarningIcon(props) {\n  return (\n    <WarningSVG viewBox=\"0 0 24 24\" {...props}>\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path\n        fill={props.color ? props.color : '#e06c75'}\n        d=\"M12.866,3l9.526,16.5a1,1,0,0,1-.866,1.5H2.474a1,1,0,0,1-.866-1.5L11.134,3a1,1,0,0,1,1.732,0ZM11,16v2h2V16Zm0-7v5h2V9Z\"\n      />\n    </WarningSVG>\n  );\n}\n","import React from 'react';\n\nexport default function WorkshopIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path fill=\"#d0d0d0\" d=\"M5,13.18v4L12,21l7-3.82v-4L12,17ZM12,3,1,9l11,6,9-4.91V17h2V9Z\" />\n    </svg>\n  );\n}\n","import React, { useMemo, useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport intervalToDuration from 'date-fns/intervalToDuration';\nimport { Flex } from 'reflexbox';\nimport { differenceInDays } from 'date-fns';\nimport { isTodayBetween } from '../libs/dates-lib';\nimport { fadeIn } from '../libs/animations-lib';\nimport { RegularText, ShakeContent, SandTimeIcon } from 'boss-ui';\n\nconst FIVE_MINUTES = 500;\n\nconst CountDownBox = styled(Flex)`\n  height: ${(props) => (props.height ? props.height : '84px')};\n  width: 210px;\n  justify-content: flex-start;\n  padding: 8px;\n  z-index: 100;\n  cursor: default;\n  display: flex;\n  flex-direction: column;\n  animation: ${fadeIn} 0.3s;\n  border: 1px solid #1d1d1d;\n  box-shadow: -3px 3px 3px #00000029;\n  background-color: ${(props) => props.theme.color.nav.background};\n`;\nCountDownBox.displayName = 'CountDownBox';\n\nconst padZeroStart = (number, nroDigits = 2) => `0${number}`.slice(-nroDigits);\nconst getCountDownTime = (event) => {\n  return (\n    <>\n      {padZeroStart(event.hours)}:{padZeroStart(event.minutes)}:{padZeroStart(event.seconds)}\n    </>\n  );\n};\n\nlet startCountDownInterval;\nlet endCountDownInterval;\nexport default function CountDown({\n  endDate,\n  startDate,\n  allowStartingPreview = false,\n  isAdminView = false,\n  mobile = false,\n}) {\n  const [eventEndCountDown, setEndCountDown] = useState();\n  const [eventStartCountDown, setStartCountDown] = useState();\n  const isEventHappening = useMemo(\n    () => isTodayBetween(startDate, endDate),\n    [startDate, endDate, eventEndCountDown]\n  );\n\n  const isEndingEvent = useMemo(() => {\n    if (eventEndCountDown) {\n      return (\n        Number(\n          `${padZeroStart(eventEndCountDown.months)}${padZeroStart(\n            eventEndCountDown.days\n          )}${padZeroStart(eventEndCountDown.hours)}${padZeroStart(\n            eventEndCountDown.minutes\n          )}${padZeroStart(eventEndCountDown.seconds)}`\n        ) < FIVE_MINUTES\n      );\n    }\n    return false;\n  }, [eventEndCountDown]);\n\n  const startEventCountDown = () =>\n    setInterval(() => {\n      setEndCountDown(\n        intervalToDuration({\n          start: new Date(),\n          end: new Date(endDate),\n        })\n      );\n    }, 1000);\n\n  // eslint-disable-next-line consistent-return\n  useEffect(() => {\n    if (!endDate) {\n      return;\n    }\n    // event is happening: set end count down interval\n    if (isEventHappening) {\n      clearInterval(endCountDownInterval);\n      endCountDownInterval = startEventCountDown();\n      return;\n    }\n    // event is not happening: disable end count down interval and set start count down interval\n    clearInterval(endCountDownInterval);\n    setEndCountDown(null);\n    clearInterval(startCountDownInterval);\n    startCountDownInterval = setInterval(() => {\n      setStartCountDown(\n        intervalToDuration({\n          start: new Date(),\n          end: new Date(startDate),\n        })\n      );\n    }, 1000);\n  }, [startDate, endDate, isEventHappening]);\n\n  // unmount function\n  useEffect(\n    () => () => {\n      clearInterval(endCountDownInterval);\n      clearInterval(startCountDownInterval);\n    },\n    []\n  );\n\n  // check if event starts\n  useEffect(() => {\n    // clear start count down interval and set end count down interval\n    if (new Date() > new Date(startDate) && endDate) {\n      clearInterval(startCountDownInterval);\n      setStartCountDown(null);\n      clearInterval(endCountDownInterval);\n      endCountDownInterval = startEventCountDown();\n    }\n  }, [eventStartCountDown]);\n\n  if (eventEndCountDown) {\n    const endCountDownInDays = differenceInDays(new Date(endDate), new Date());\n    if (isEventHappening) {\n      return mobile ? (\n        <div className=\"CountDown-mobileContainer\" style={{ display: 'flex' }}>\n          <SandTimeIcon />\n          <RegularText light style={{ marginLeft: '8px' }}>\n            {getCountDownTime(eventEndCountDown)}\n          </RegularText>\n        </div>\n      ) : (\n        <CountDownBox>\n          <Flex mb=\"4px\" className=\"CountDown-finishingLabel\">\n            <RegularText fontSize=\"14px\">Finishing in:</RegularText>\n          </Flex>\n          {isEndingEvent ? (\n            <ShakeContent shake>\n              <RegularText fontSize=\"28px\" mediumWeight color=\"#E06C75\">\n                {getCountDownTime(eventEndCountDown)}\n              </RegularText>\n            </ShakeContent>\n          ) : endCountDownInDays > 0 ? (\n            <RegularText\n              fontSize=\"28px\"\n              mediumWeight\n              {...(isAdminView ? { color: '#66bb6a' } : { light: true })}\n            >{`${endCountDownInDays} ${endCountDownInDays > 1 ? 'days' : 'day'}`}</RegularText>\n          ) : (\n            <RegularText\n              fontSize=\"28px\"\n              mediumWeight\n              {...(isAdminView ? { color: '#66bb6a' } : { light: true })}\n            >\n              {getCountDownTime(eventEndCountDown)}\n            </RegularText>\n          )}\n        </CountDownBox>\n      );\n    }\n    return (\n      <CountDownBox height=\"40px\">\n        <Flex mb=\"4px\" className=\"CountDown-endedLabel\">\n          <RegularText fontSize=\"14px\">Event has ended</RegularText>\n        </Flex>\n      </CountDownBox>\n    );\n  }\n\n  if (eventStartCountDown && (allowStartingPreview || isAdminView)) {\n    const startCountDownInDays = differenceInDays(new Date(startDate), new Date());\n    return (\n      <CountDownBox>\n        <Flex mb=\"4px\" className=\"CountDown-startingLabel\">\n          <RegularText fontSize=\"14px\">Starting in:</RegularText>\n        </Flex>\n        <Flex>\n          {startCountDownInDays > 0 ? (\n            <RegularText fontSize=\"28px\" mediumWeight light>{`${startCountDownInDays} ${\n              startCountDownInDays > 1 ? 'days' : 'day'\n            }`}</RegularText>\n          ) : (\n            <RegularText fontSize=\"28px\" mediumWeight light>\n              {getCountDownTime(eventStartCountDown)}\n            </RegularText>\n          )}\n        </Flex>\n      </CountDownBox>\n    );\n  }\n\n  return null;\n}\n","import React, { useEffect, useState, useCallback } from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { RegularText, RefreshIcon } from 'boss-ui';\nimport { fadeIn } from '../../libs/animations-lib';\nimport { useRefreshScore } from '../../libs/hooks-lib';\nimport WebSocketClient from '../websocket';\n\nconst Box = styled(Flex)`\n  width: 210px;\n  justify-content: flex-start;\n  padding: 8px;\n  z-index: 100;\n  cursor: default;\n  display: flex;\n  flex-direction: column;\n  animation: ${fadeIn} 0.3s;\n  border: 1px solid #1d1d1d;\n  box-shadow: -3px 3px 3px #00000029;\n  background-color: #121212;\n  filter: ${(props) => (props.$refreshing ? 'blur(1px)' : 'none')};\n  white-space: break-spaces;\n`;\nBox.displayName = 'PointsCardBox';\n\nconst BoxMobile = styled(Flex)`\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  width: 100%;\n`;\nBoxMobile.displayName = 'PointsCardBoxMobile';\n\nconst wsClient = new WebSocketClient();\n\nexport default function PointsCard({\n  teamPoints = 0,\n  loading = false,\n  mobile = false,\n  onRefresh = () => {},\n  isOnDemandEvent = false,\n  showRefresh = true,\n  sessionId,\n}) {\n  const [theScore, setTheScore] = useState(teamPoints);\n  const [refreshHover, setRefreshHover, getLastUpdatedLabel, resetLastUpdate] =\n    useRefreshScore(loading);\n\n  const scoreUpdateHandler = useCallback((update) => {\n    if (isOnDemandEvent && update.sessionId !== sessionId) {\n      return;\n    }\n    setTheScore(update.total);\n    resetLastUpdate();\n  }, []);\n\n  useEffect(() => {\n    if (isOnDemandEvent) {\n      wsClient.addListener('USER_SCORE_UPDATE', scoreUpdateHandler);\n    } else {\n      wsClient.addListener('TEAM_SCORE_UPDATE', scoreUpdateHandler);\n    }\n    return () => {\n      if (isOnDemandEvent) {\n        wsClient.clearListener('USER_SCORE_UPDATE', scoreUpdateHandler);\n      } else {\n        wsClient.clearListener('TEAM_SCORE_UPDATE', scoreUpdateHandler);\n      }\n    };\n  }, [scoreUpdateHandler, isOnDemandEvent]);\n\n  useEffect(() => {\n    setTheScore(teamPoints);\n  }, [teamPoints]);\n\n  return (\n    <>\n      {mobile ? (\n        <BoxMobile>\n          <Flex>\n            <RegularText medium fontSize=\"13px\">\n              Team score:\n            </RegularText>\n            <RegularText light fontSize=\"13px\" ml=\"6px\">\n              {theScore}\n            </RegularText>\n          </Flex>\n          {showRefresh && (\n            <Flex\n              pr=\"12px\"\n              alignItems=\"center\"\n              onClick={() => onRefresh()}\n              style={{ cursor: 'pointer' }}\n              onMouseEnter={() => setRefreshHover(true)}\n              onMouseLeave={() => setRefreshHover(false)}\n            >\n              <RefreshIcon rotate={loading} hover={refreshHover} />\n            </Flex>\n          )}\n        </BoxMobile>\n      ) : (\n        <Box $refreshing={loading}>\n          <RegularText fontSize=\"12px\" color=\"#D0D0D0\">\n            {isOnDemandEvent ? 'Your score: ' : 'Your team score: '}\n            <Flex ml=\"auto\">\n              <RegularText fontSize=\"12px\" color=\"#D0D0D0\" mediumWeight>\n                {theScore}\n              </RegularText>\n            </Flex>\n          </RegularText>\n          {showRefresh && (\n            <>\n              <Flex my=\"4px\" style={{ borderBottom: '0.3px solid #2C2C2C' }} />\n              <Flex\n                alignItems=\"center\"\n                onClick={() => onRefresh()}\n                style={{ cursor: 'pointer' }}\n                onMouseEnter={() => setRefreshHover(true)}\n                onMouseLeave={() => setRefreshHover(false)}\n              >\n                <RefreshIcon rotate={loading} hover={refreshHover} />\n                <RegularText fontSize=\"12px\" marginLeft=\"3px\">\n                  {refreshHover ? (\n                    <RegularText fontSize=\"12px\" color=\"#66bb6a\">\n                      Refresh score\n                    </RegularText>\n                  ) : (\n                    getLastUpdatedLabel()\n                  )}\n                </RegularText>\n              </Flex>\n            </>\n          )}\n        </Box>\n      )}\n    </>\n  );\n}\n","import merge from 'lodash/merge';\n// env variables are set as String\nconst stringToBoolean = (value, def) => (value ? value === 'true' : def);\n\nconst common = {\n  MAX_ATTACHMENT_SIZE: 5000000,\n  discord: {\n    DISCORD_API_URL: 'https://discord.com/api',\n    GET_DISCORD_USER_PATH: 'users/@me',\n    DISCORD_OAUTH_URL: 'https://discord.com/oauth2/authorize',\n  },\n  rum: {\n    version: '0.9.1.869a8372', // metadata env variable replaced by sed on build\n    applicationName: 'boss-client',\n    beaconUrl: 'https://rum-ingest.us1.signalfx.com/v1/rum',\n    rumAccessToken: 'rrUwCjYZvdjw07-NE-zKMQ',\n  },\n};\n\nconst local = {\n  appType: 'boo', // metadata env variable replaced by sed on build\n  termsConditionsUrl:\n    'https://d1zkmo2j4fq30f.cloudfront.net/botstermsandconditions/termsandconditions.md',\n  enableLegacyResources: false,\n  rum: {\n    deploymentEnvironment: 'local',\n  },\n  apiGateway: {\n    REGION: 'us-east-1',\n    URL: 'https://2idxhrkpmb.execute-api.us-east-1.amazonaws.com/develop',\n  },\n  webSocket: {\n    REGION: 'us-east-1',\n    URL: 'wss://42reyy8t14.execute-api.us-east-1.amazonaws.com/develop',\n  },\n  cognito: {\n    SAML_LOGIN: false,\n    MANDATORY_SIGN_IN: true,\n    REGION: 'us-east-1',\n    saml: {\n      IDP_NAME: 'CustomerIdentity',\n      IDP_RESPONSE_TYPE: 'code',\n      IDP_LOGIN_URL: 'https://boss-api-develop.auth.us-east-1.amazoncognito.com/oauth2/authorize',\n      IDP_SCOPE: 'phone+email+profile+openid',\n      DOMAIN: 'boss-api-develop.auth.us-east-1.amazoncognito.com',\n      USER_POOL_ID: 'us-east-1_rh3cfaJbC',\n      APP_CLIENT_ID: '3hqhb85a85kbsc3l8idj0o26r',\n      IDENTITY_POOL_ID: 'us-east-1:743db18d-2c5e-4323-a63f-1abfefa88c12',\n      SCOPE: ['phone', 'email', 'profile', 'openid'],\n      REDIRECT_SIGN_IN: 'http://localhost:3000/successLogin',\n      REDIRECT_SIGN_OUT: 'http://localhost:3000/logout',\n    },\n    USER_POOL_ID: 'us-east-1_shYX7ir2r',\n    APP_CLIENT_ID: '4eucr0h58r0j822or0ms18rai0',\n    IDENTITY_POOL_ID: 'us-east-1:0e4bf22f-2058-4182-91cc-4b4e1cca2704',\n  },\n  discord: {\n    APP_CLIENT_ID: '788401823337152545',\n    REDIRECT_URI: 'http://localhost:3000/discordJoin',\n  },\n};\n\nconst dev = {\n  appType: 'boo', // metadata env variable replaced by sed on build\n  termsConditionsUrl:\n    'https://d1zkmo2j4fq30f.cloudfront.net/botstermsandconditions/termsandconditions.md',\n  enableLegacyResources: stringToBoolean(process.env.REACT_APP_ENABLE_LEGACY_RESOURCES, false),\n  rum: {\n    deploymentEnvironment: 'development',\n  },\n  apiGateway: {\n    REGION: 'us-east-1',\n    URL: 'https://2idxhrkpmb.execute-api.us-east-1.amazonaws.com/develop',\n  },\n  webSocket: {\n    REGION: 'us-east-1',\n    URL: 'wss://42reyy8t14.execute-api.us-east-1.amazonaws.com/develop',\n  },\n  cognito: {\n    SAML_LOGIN: stringToBoolean(process.env.REACT_APP_SAML_LOGIN, false),\n    MANDATORY_SIGN_IN: true,\n    REGION: 'us-east-1',\n    saml: {\n      IDP_NAME: 'CustomerIdentity',\n      IDP_RESPONSE_TYPE: 'code',\n      IDP_LOGIN_URL: 'https://boss-api-develop.auth.us-east-1.amazoncognito.com/oauth2/authorize',\n      IDP_SCOPE: 'phone+email+profile+openid',\n      DOMAIN: 'boss-api-develop.auth.us-east-1.amazoncognito.com',\n      USER_POOL_ID: 'us-east-1_rh3cfaJbC',\n      APP_CLIENT_ID: '3hqhb85a85kbsc3l8idj0o26r',\n      IDENTITY_POOL_ID: 'us-east-1:743db18d-2c5e-4323-a63f-1abfefa88c12',\n      SCOPE: ['phone', 'email', 'profile', 'openid'],\n      REDIRECT_SIGN_IN: `https://${window.location.hostname}/successLogin`,\n      REDIRECT_SIGN_OUT: `https://${window.location.hostname}/logout`,\n    },\n    USER_POOL_ID: 'us-east-1_shYX7ir2r',\n    APP_CLIENT_ID: '4eucr0h58r0j822or0ms18rai0',\n    IDENTITY_POOL_ID: 'us-east-1:0e4bf22f-2058-4182-91cc-4b4e1cca2704',\n  },\n  discord: {\n    APP_CLIENT_ID: '788401823337152545',\n    REDIRECT_URI: `https://${window.location.hostname}/discordJoin`,\n  },\n};\n\nconst staging = {\n  appType: 'boo', // metadata env variable replaced by sed on build\n  termsConditionsUrl:\n    'https://d16kbpb7pfvyj.cloudfront.net/botstermsandconditions/termsandconditions.md',\n  enableLegacyResources: stringToBoolean(\n    process.env.REACT_APP_ENABLE_LEGACY_RESOURCES,\n    false\n  ),\n  rum: {\n    deploymentEnvironment: 'staging',\n  },\n  apiGateway: {\n    REGION: 'us-east-1',\n    URL: 'https://kmj2q119td.execute-api.us-east-1.amazonaws.com/staging',\n  },\n  webSocket: {\n    REGION: 'us-east-1',\n    URL: 'wss://mjcr2ltev5.execute-api.us-east-1.amazonaws.com/staging',\n  },\n  cognito: {\n    SAML_LOGIN: stringToBoolean(process.env.REACT_APP_SAML_LOGIN, false),\n    MANDATORY_SIGN_IN: true,\n    REGION: 'us-east-1',\n    saml: {\n      IDP_NAME: 'CustomerIdentity',\n      IDP_RESPONSE_TYPE: 'code',\n      IDP_LOGIN_URL: 'https://boss-staging.auth.us-east-1.amazoncognito.com/oauth2/authorize',\n      IDP_SCOPE: 'phone+email+profile+openid',\n      DOMAIN: 'boss-staging.auth.us-east-1.amazoncognito.com',\n      USER_POOL_ID: 'us-east-1_0WkinfHRM',\n      APP_CLIENT_ID: '3p4g690821jo030d8tbe5eon9t',\n      IDENTITY_POOL_ID: 'us-east-1:b86cf4f8-cc9e-4289-b23d-568483a565af',\n      SCOPE: ['phone', 'email', 'profile', 'openid'],\n      REDIRECT_SIGN_IN: `https://${window.location.hostname}/successLogin`,\n      REDIRECT_SIGN_OUT: `https://${window.location.hostname}/logout`,\n    },\n    USER_POOL_ID: 'us-east-1_ITabwycJx',\n    APP_CLIENT_ID: '1ferfi9h7roogvdgcjrrd6glv5',\n    IDENTITY_POOL_ID: 'us-east-1:d4d93b6b-c9d0-4519-99a8-1876e2821e82',\n  },\n  discord: {\n    APP_CLIENT_ID: '788401823337152545',\n    REDIRECT_URI: `https://${window.location.hostname}/discordJoin`,\n  },\n};\n\nconst prod = {\n  appType: 'boo', // metadata env variable replaced by sed on build\n  termsConditionsUrl:\n    'https://dzetsalzmzpda.cloudfront.net/botstermsandconditions/termsandconditions.md',\n  enableLegacyResources: stringToBoolean(process.env.REACT_APP_ENABLE_LEGACY_RESOURCES, false),\n  rum: {\n    deploymentEnvironment: 'production',\n  },\n  apiGateway: {\n    REGION: 'us-east-1',\n    URL: 'https://bxqghv1wo2.execute-api.us-east-1.amazonaws.com/prod',\n  },\n  webSocket: {\n    REGION: 'us-east-1',\n    URL: 'wss://v6du3la6n5.execute-api.us-east-1.amazonaws.com/prod',\n  },\n  cognito: {\n    SAML_LOGIN: stringToBoolean(process.env.REACT_APP_SAML_LOGIN, false),\n    MANDATORY_SIGN_IN: true,\n    REGION: 'us-east-1',\n    saml: {\n      IDP_NAME: 'CustomerIdentity',\n      IDP_RESPONSE_TYPE: 'code',\n      IDP_LOGIN_URL: 'https://boss-prod.auth.us-east-1.amazoncognito.com/oauth2/authorize',\n      IDP_SCOPE: 'phone+email+profile+openid',\n      DOMAIN: 'boss-prod.auth.us-east-1.amazoncognito.com',\n      USER_POOL_ID: 'us-east-1_UWJXZZ769',\n      APP_CLIENT_ID: '3qrbmuielqsdls85jojnvjpp4p',\n      IDENTITY_POOL_ID: 'us-east-1:ae09d2ef-1a1a-4dd3-9918-9e2decabe130',\n      SCOPE: ['phone', 'email', 'profile', 'openid'],\n      REDIRECT_SIGN_IN: `https://${window.location.hostname}/successLogin`,\n      REDIRECT_SIGN_OUT: `https://${window.location.hostname}/logout`,\n    },\n    USER_POOL_ID: 'us-east-1_UOCAR2JT0',\n    APP_CLIENT_ID: '1hsik0vuvsusg9iunipekheekq',\n    IDENTITY_POOL_ID: 'us-east-1:9a4a7263-d922-4c96-a115-d5213d381ad5',\n  },\n  discord: {\n    APP_CLIENT_ID: '801446750190567440',\n    REDIRECT_URI: `https://${window.location.hostname}/discordJoin`,\n  },\n};\nlet envConfig;\n\n// Default to dev if not set\nif (process.env.REACT_APP_STAGE === 'prod') {\n  envConfig = prod;\n} else if (process.env.REACT_APP_STAGE === 'staging') {\n  envConfig = staging;\n} else if (process.env.REACT_APP_STAGE === 'dev') {\n  envConfig = dev;\n} else {\n  envConfig = local;\n}\n\nexport default merge(common, envConfig);\n","import { useContext, createContext } from 'react';\n\nexport const AppContext = createContext(null);\n\nexport function useAppContext() {\n  return useContext(AppContext);\n}\n\nexport const TeamContext = createContext(null);\nexport function useTeamContext() {\n  return useContext(TeamContext);\n}\n\nexport const HomeContext = createContext(null);\nexport function useHomeContext() {\n  return useContext(HomeContext);\n}\n\nexport const WorkshopContext = createContext(null);\nexport function useWorkshopContext() {\n  return useContext(WorkshopContext);\n}\n\nexport const ScenarioContext = createContext(null);\nexport function useScenarioContext() {\n  return useContext(ScenarioContext);\n}\nexport const AdminQuestionContext = createContext(null);\nexport function useAdminQuestionContext() {\n  return useContext(AdminQuestionContext);\n}\n","import React from 'react';\nimport { Box } from 'reflexbox';\n\nconst GREEN_COLOR = '#61ADA1';\nconst ORANGE_COLOR = '#DE935F';\n\nfunction WorkshopVideoProgress({ stats = {}, style }) {\n  if (stats && stats.completed && stats.total) {\n    return (\n      <Box\n        style={{\n          border: '1px solid #2C2C2C',\n          color: '#D0D0D0',\n          fontFamily: 'Roboto Mono',\n          fontSize: '14px',\n          textAlign: 'left',\n          fontWeight: 400,\n          ...style,\n        }}\n        py=\"12px\"\n        px=\"22px\"\n        className=\"WorkshopVideoProgress-Box\"\n      >\n        <p className=\"WorkshopVideoProgress-VideosSeen\">\n          Videos seen: <span style={{ color: GREEN_COLOR }}>{stats.completed}</span>\n        </p>\n        <p className=\"WorkshopVideoProgress-RemainingVideos\">\n          Remaining videos:{' '}\n          <span style={{ color: ORANGE_COLOR }}>{stats.total - stats.completed}</span>\n        </p>\n      </Box>\n    );\n  }\n  return null;\n}\n\nexport default WorkshopVideoProgress;\n","import React from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { FormLabel, Tooltip, OpenIcon, CloseIcon, SwitchButton, QuestionCircleIcon } from 'boss-ui';\n\nexport default function AccessibilityToggle(props) {\n  const { fieldValue, handleFieldChange } = props;\n  return (\n    <Box style={{ position: 'relative' }}>\n      <FormLabel>Team Access</FormLabel>\n      <SwitchButton\n        checked={fieldValue}\n        handleToggle={handleFieldChange}\n        id=\"accessibility\"\n        onIcon={<OpenIcon />}\n        offIcon={<CloseIcon />}\n        onText=\"Open\"\n        offText=\"Closed\"\n      />\n      <Flex\n        data-tip\n        data-for=\"open_question\"\n        style={{\n          position: 'absolute',\n          right: '-30px',\n          top: '26px',\n        }}\n      >\n        <QuestionCircleIcon />\n      </Flex>\n      <Tooltip id=\"open_question\" place=\"right\">\n        Open: Allow others to join your team without approval. Closed: You must invite others to\n        join your team.\n      </Tooltip>\n    </Box>\n  );\n}\n","import styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst BodyContainer = styled(Flex)`\n  padding: ${(props) => props.theme.margin.s};\n  font-family: 'Roboto Mono';\n  font-weight: normal;\n  border: 1px solid\n    ${(props) =>\n      props.active\n        ? props.theme.color.card.classic.border.active\n        : props.theme.color.card.classic.border.inactive};\n  ${(props) =>\n    props.restricted &&\n    css`\n      border: 1px solid ${props.theme.color.card.restricted.border};\n    `};\n  ${(props) =>\n    props.inprogress &&\n    css`\n      border: 1px solid ${props.theme.color.card.classic.border.inprogress};\n    `};\n  ${(props) =>\n    props.completed &&\n    css`\n      border: 1px solid ${props.theme.color.card.classic.border.completed};\n    `};\n  ${(props) =>\n    props.history &&\n    css`\n      border: 1px solid ${props.theme.color.card.classic.border.history};\n    `};\n  border-top-color: transparent;\n`;\n\nBodyContainer.displayName = 'CardBody';\nexport default BodyContainer;\n","import styled from 'styled-components';\n\nconst CardIcon = styled.div`\n  background-color: ${(props) => props.theme.color.background};\n  align-items: center;\n  width: 26px;\n  height: 26px;\n`;\n\nCardIcon.displayName = 'CardIconContainer';\nexport default CardIcon;\n","import styled, { css } from 'styled-components';\nimport { heightEffect } from '../../libs/animations-lib';\n\nconst CardDescription = styled.div`\n  font-size: 16px;\n  color: ${(props) => props.theme.color.card.classic.description};\n  text-align: left;\n  overflow: hidden;\n  font-weight: 300;\n  font-size: 14px;\n  font-family: 'Roboto Mono';\n  word-break: break-word;\n  ${(props) =>\n    props.climpAfterLine &&\n    css`\n      -webkit-line-clamp: ${props.climpAfterLine};\n      -webkit-box-orient: vertical;\n      display: -webkit-box;\n    `}\n  ${(props) =>\n    props.animate &&\n    css`\n      animation: ${heightEffect} 2s ease-out;\n      -moz-animation: ${heightEffect} 2s ease-out;\n      -webkit-animation: ${heightEffect} 2s ease-out;\n    `};\n  ${(props) =>\n    props.minHeight &&\n    css`\n      min-height: ${props.minHeight};\n    `};\n  ${(props) =>\n    props.restricted &&\n    css`\n      color: ${props.theme.color.card.restricted.description};\n    `};\n`;\n\nCardDescription.displayName = 'CardDescription';\nexport default CardDescription;\n","import React from 'react';\nimport { withTheme } from 'styled-components';\nimport { getDateComponents } from '../../libs/dates-lib';\nimport { RegularText } from 'boss-ui';\n\nfunction CardDate({ date, theme, style }) {\n  const dateObject = getDateComponents(date);\n  return (\n    <RegularText color={theme.color.text.light.color} {...style} mediumWeight>\n      {`${dateObject.stringMonth.toUpperCase()}${dateObject.day},${dateObject.year}`}\n    </RegularText>\n  );\n}\n\nexport default withTheme(CardDate);\n","import styled, { css } from 'styled-components';\n\nconst CardTitle = styled.div`\n  color: ${(props) =>\n    props.active\n      ? props.theme.color.card.classic.title.active\n      : props.theme.color.card.classic.title.inactive};\n  font-size: 20px;\n  text-align: left;\n  height: ${(props) => props.height};\n  margin-top: ${(props) => props.theme.margin.s};\n  margin-bottom: ${(props) => props.theme.margin.s};\n  ${(props) =>\n    props.restricted &&\n    css`\n      color: ${props.theme.color.card.restricted.title};\n    `};\n  ${(props) =>\n    props.inprogress &&\n    css`\n      color: ${props.theme.color.card.classic.title.inprogress};\n    `};\n  ${(props) =>\n    props.completed &&\n    css`\n      color: ${props.theme.color.card.classic.title.completed};\n    `};\n  ${(props) =>\n    props.history &&\n    css`\n      color: ${props.theme.color.card.classic.title.history};\n    `};\n`;\n\nCardTitle.displayName = 'CardTitle';\nexport default CardTitle;\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport { BOTS_TYPE } from '../libs/constants';\n\nconst BOO_STYLE = {\n  color: '#81A2BE',\n};\n\nconst BOTS_STYLE = {\n  color: '#A5D6A7',\n};\n\nexport default function BossLabel({ type, ...rest }) {\n  if (type === BOTS_TYPE.NOC) {\n    return (\n      <Flex {...rest} style={BOO_STYLE}>\n        BOO\n      </Flex>\n    );\n  }\n  return (\n    <Flex {...rest} style={BOTS_STYLE}>\n      BOTS\n    </Flex>\n  );\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport { Button, UnregularButton, GameIcon } from 'boss-ui';\nimport { getImageURLSized } from '../../libs/utils-lib';\nimport CardBody from './CardBody';\nimport CardIconContainer from './CardIconContainer';\nimport CardDescription from './CardDescription';\nimport CardDate from './CardDate';\nimport CardTitle from './CardTitle';\nimport BossLabel from '../BossLabel';\nimport { WorkshopIcon } from '../icons';\nimport { EVENT_TYPE, MAXLEN_BIGCARD_TEXT_COLLAPSE, EVENT_DELIVERY } from '../../libs/constants';\nimport { useAppContext } from '../../libs/context-lib';\nimport { isTodayBetween } from '../../libs/dates-lib';\nimport { getNoImageUrl } from '../../libs/event-lib';\n\nconst Image = styled.img`\n  object-fit: cover;\n  width: 100%;\n  height: 310px;\n`;\nImage.displayName = 'BigCardImage';\n\nconst Container = styled(Flex)`\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  height: fit-content;\n`;\nContainer.displayName = 'BigCardContainer';\n\nconst CollapsableDescription = ({ children = [] }) => {\n  const [visible, setVisible] = useState(children.length < MAXLEN_BIGCARD_TEXT_COLLAPSE);\n  return (\n    <>\n      {visible ? (\n        <CardDescription animate minHeight=\"38px\">\n          {children}\n        </CardDescription>\n      ) : (\n        <CardDescription climpAfterLine={2} minHeight=\"38px\">\n          {children}\n        </CardDescription>\n      )}\n      {children.length > MAXLEN_BIGCARD_TEXT_COLLAPSE && (\n        <Flex mt=\"12px\" justifyContent=\"center\" width={1}>\n          <UnregularButton onClick={() => setVisible((visible) => !visible)}>\n            {visible ? 'Show less' : 'Show more'}\n          </UnregularButton>\n        </Flex>\n      )}\n    </>\n  );\n};\n\nexport default function BigCard({ event, mobile }) {\n  const {\n    imageURL,\n    type,\n    eventType,\n    name,\n    description,\n    startDate,\n    activeStartDate,\n    activeEndDate,\n    delivery,\n  } = event;\n  const { setEvent } = useAppContext();\n  const imgSize = 'medium';\n  const imageSrc = getImageURLSized(imageURL, imgSize);\n  const history = useHistory();\n  const activeEvent = isTodayBetween(new Date(activeStartDate), new Date(activeEndDate));\n  const showDate = delivery === EVENT_DELIVERY.NORMAL;\n\n  const onEnter = () => {\n    setEvent(event);\n    if (eventType === EVENT_TYPE.WORKSHOP) {\n      history.push(`/workshop/${event.workshopId}`);\n      return;\n    }\n    history.push(`/event/${event.eventId}`);\n  };\n\n  return (\n    <Container width=\"550px\" flexDirection=\"column\" mb=\"20px\">\n      <Image\n        src={imageSrc}\n        alt=\"event image\"\n        onError={(e) => {\n          e.target.src = getNoImageUrl(type, imgSize);\n        }}\n      />\n      <CardBody\n        active={activeEvent}\n        alignItems=\"start\"\n        flexDirection=\"column\"\n        py={mobile ? '10px' : '25px'}\n        px={mobile ? '15px' : '40px'}\n        minHeight=\"317px\"\n      >\n        <Flex alignItems=\"center\" width={1}>\n          <CardIconContainer>\n            {eventType === EVENT_TYPE.WORKSHOP ? <WorkshopIcon /> : <GameIcon />}\n          </CardIconContainer>\n          <BossLabel type={type} ml=\"6px\" />\n          {showDate && startDate && (\n            <Flex ml=\"auto\">\n              <CardDate date={startDate} />\n            </Flex>\n          )}\n        </Flex>\n        <CardTitle height=\"52px\" active={activeEvent}>\n          {name}\n        </CardTitle>\n        <CollapsableDescription>{description}</CollapsableDescription>\n        <Flex mt=\"40px\" ml=\"auto\" minWidth=\"100px\">\n          <Button onClick={onEnter} disabled={!activeEvent}>\n            ENTER\n          </Button>\n        </Flex>\n      </CardBody>\n    </Container>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { Button, UnregularButton } from 'boss-ui';\nimport CardBody from './CardBody';\nimport CardTitle from './CardTitle';\nimport { SKELTELON_STYLE } from '../../libs/constants';\n\nconst Container = styled(Flex)`\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  box-shadow: '0px 3px 6px #00000029';\n  height: 627px;\n`;\nContainer.displayName = 'BigCardSkeletonContainer';\n\nconst CollapsableDescription = () => {\n  return (\n    <>\n      <UnregularButton disabled>\n        <Skeleton width={100} />\n      </UnregularButton>\n    </>\n  );\n};\n\nexport default function BigCardSkeleton({ mobile }) {\n  return (\n    <Container width=\"100%\" maxWidth=\"550px\" flexDirection=\"column\" mb=\"20px\">\n      <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n        <Skeleton height=\"320px\" width=\"100%\" />\n      </SkeletonTheme>\n      <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n        <CardBody\n          alignItems=\"start\"\n          flexDirection=\"column\"\n          height=\"100%\"\n          py=\"45px\"\n          px=\"60px\"\n          style={{\n            borderColor: 'transparent',\n          }}\n        >\n          <CardTitle>\n            <Skeleton width={mobile ? '200px' : '400px'} />\n          </CardTitle>\n          <CollapsableDescription />\n          <Flex mt=\"66px\" ml=\"auto\" minWidth=\"100px\">\n            <Button disabled>ENTER</Button>\n          </Flex>\n        </CardBody>\n      </SkeletonTheme>\n    </Container>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { withRouter } from 'react-router-dom';\nimport { Breadcrumb } from 'boss-ui';\n\nconst MenuContainer = styled.div`\n  display: flex;\n  align-items: center;\n  overflow-x: auto;\n  padding: 0 0 0 20px;\n  white-space: nowrap;\n  height: 50px;\n  background-color: #1d1d1d;\n  box-shadow: 0px 3px 6px #00000029;\n`;\n\nfunction Menu(props) {\n  const { crumbs } = props;\n  return (\n    <MenuContainer>\n      <Breadcrumb crumbs={crumbs} />\n    </MenuContainer>\n  );\n}\n\nexport default withRouter(Menu);\n","import styled from 'styled-components';\n\nconst CardImage = styled.img`\n  object-fit: cover;\n  width: 100%;\n  height: 186px;\n`;\nCardImage.displayName = 'CardImageImg';\n\nexport default CardImage;\n","import styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst EventLabel = styled(Flex)`\n  font-family: 'Roboto Mono';\n  font-weight: normal;\n  font-size: 16px;\n  width: 160px;\n  height: 36px;\n  background-color: #ffffff;\n  padding-left: 10px;\n  padding-top: 7px;\n  padding-bottom: 8px;\n  ${(props) =>\n    props.enrolled &&\n    props.active &&\n    css`\n      background-color: ${props.theme.color.card.restricted.active};\n    `};\n  ${(props) =>\n    props.enrolled &&\n    !props.active &&\n    css`\n      background-color: ${props.theme.color.card.restricted.inactive};\n    `};\n`;\nEventLabel.displayName = 'EventLabel';\n\nexport default EventLabel;\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport intervalToDuration from 'date-fns/intervalToDuration';\nimport styled, { css } from 'styled-components';\nimport { SandTimeIcon } from 'boss-ui';\nimport WorkshopProgressLabel from '../workshops/WorkshopProgressLabel';\nimport { EVENT_TYPE, EVENT_DELIVERY } from '../../libs/constants';\nimport { isOnDemandEventInsidePlayWindow } from '../../libs/event-lib';\nimport EventLabel from '../EventLabel';\n\nconst EnrolledLabel = styled(Flex)`\n  font-family: 'Roboto Mono';\n  font-weight: normal;\n  font-size: 16px;\n  position: absolute;\n  margin-top: -18px;\n  background-color: ${(props) => props.theme.color.card.classic.border.inactive};\n  ${(props) =>\n    props.active &&\n    css`\n      background-color: ${props.theme.color.card.classic.border.active};\n    `};\n  ${(props) =>\n    props.inprogress &&\n    css`\n      background-color: ${props.theme.color.card.classic.border.inprogress};\n    `};\n  ${(props) =>\n    props.completed &&\n    css`\n      background-color: ${props.theme.color.card.classic.border.completed};\n    `};\n`;\nEnrolledLabel.displayName = 'Card-EnrolledLabel';\n\nconst padZeroStart = (number, nroDigits = 2) => `0${number}`.slice(-nroDigits);\n\nconst TimeLeftLabel = ({ timeLeft = {} }) => {\n  return (\n    <EnrolledLabel inprogress>\n      <Flex style={{ backgroundColor: 'black' }} p=\"6px\">\n        <SandTimeIcon color=\"#d0d0d0\" />\n      </Flex>\n      <Flex ml=\"6px\" p=\"6px\">\n        {padZeroStart(timeLeft.hours)}h {padZeroStart(timeLeft.minutes)}m left\n      </Flex>\n    </EnrolledLabel>\n  );\n};\n\n/**\n * @param  {String} eventType WORKSHOP / GAME for icons\n * @param  {boolean} history\n * @param  {object} stats workshop progress stats\n * @param  {boolean} isEventRunning\n * @param  {String} delivery NORMAL / ON_DEMAND\n * @param  {boolean} showProgressLabel\n * @param  {Boolean} enrolled\n * @param  {String} joinDate date of joining to the event\n * @param  {String} duration event duration in minutes\n * @param  {Boolean} showEnrolledLabel\n * @param  {Boolean} restricted\n */\nexport default function CardLabel({\n  eventType,\n  history,\n  stats,\n  isEventRunning,\n  delivery,\n  showProgressLabel,\n  enrolled,\n  joinDate,\n  duration,\n  showEnrolledLabel,\n  restricted = false,\n}) {\n  if (!history) {\n    if (eventType === EVENT_TYPE.WORKSHOP) {\n      return stats.progressPercentage ? (\n        <WorkshopProgressLabel stats={stats} style={{ marginTop: '-18px' }} />\n      ) : (\n        enrolled && (\n          <EnrolledLabel active={isEventRunning} p=\"6px\">\n            Enrolled\n          </EnrolledLabel>\n        )\n      );\n    }\n    if (delivery === EVENT_DELIVERY.ON_DEMAND) {\n      if (showProgressLabel) {\n        const inProgressStartDate = new Date(joinDate);\n        const inProgressEndDate = new Date(inProgressStartDate.getTime() + duration * 60000);\n        return (\n          <TimeLeftLabel\n            timeLeft={intervalToDuration({ start: new Date(), end: inProgressEndDate })}\n          />\n        );\n      }\n      if (enrolled && !isOnDemandEventInsidePlayWindow(joinDate, duration)) {\n        return (\n          <EnrolledLabel completed p=\"6px\">\n            Play Again\n          </EnrolledLabel>\n        );\n      }\n      return (\n        <EnrolledLabel active p=\"6px\">\n          Play Now\n        </EnrolledLabel>\n      );\n    }\n    if (restricted) {\n      return (\n        <EventLabel enrolled={enrolled} active={isEventRunning}>\n          {enrolled ? 'Enrolled' : 'Private Event'}\n        </EventLabel>\n      );\n    }\n    return showEnrolledLabel ? (\n      <EnrolledLabel active={isEventRunning} p=\"6px\">\n        Enrolled\n      </EnrolledLabel>\n    ) : null;\n  }\n  return null;\n}\n","import React, { useRef, useLayoutEffect, useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport capitalize from 'lodash/capitalize';\nimport { RegularText, Tooltip, GameIcon } from 'boss-ui';\nimport { WorkshopIcon, InviteOnlyIcon } from '../icons';\nimport { getImageURLSized, removePlural } from '../../libs/utils-lib';\nimport CardBody from './CardBody';\nimport CardDescription from './CardDescription';\nimport CardIconContainer from './CardIconContainer';\nimport CardTitle from './CardTitle';\nimport CardImage from './CardImage';\nimport CardDate from './CardDate';\nimport CardLabel from './CardLabel';\nimport BossLabel from '../BossLabel';\nimport { isTodayBetween, formatMinutes } from '../../libs/dates-lib';\nimport {\n  isOnDemandEventInsidePlayWindow,\n  getNoImageUrl,\n  isNormalEventInsideActiveWindow,\n} from '../../libs/event-lib';\nimport { EVENT_TYPE, EVENT_DELIVERY } from '../../libs/constants';\n\nconst ICON_SIZE = 26;\nconst CARD_MARGIN = 20;\nconst DESCRIPTION_LINE_HEIGHT = 23;\n\nconst Container = styled(Flex)`\n  width: 330px;\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  &:hover {\n    background-color: ${(props) => props.theme.color.card.classic.background.hover};\n    cursor: pointer;\n  }\n`;\nContainer.displayName = 'Card-Container';\n\nconst calculateDescriptionLines = (titleHeight) => {\n  return Math.round((300 - titleHeight - ICON_SIZE - CARD_MARGIN * 2) / DESCRIPTION_LINE_HEIGHT);\n};\n\nconst getDurationLabel = (duration) => {\n  const durationFormated = formatMinutes(duration);\n  return (\n    <RegularText light fontSize=\"14px\" className=\"Card-DurationLabel\">\n      {`Duration: ${durationFormated.hour}h ${durationFormated.minutes}m `}\n    </RegularText>\n  );\n};\n\n/**\n * @param  {String} activeEndDate event active end date\n * @param  {String} activeStartDate event active start date\n * @param  {String} delivery NORMAL / ON_DEMAND\n * @param  {String} description card description\n * @param  {String} duration event duration in minutes\n * @param  {Boolean} enrolled\n * @param  {String} eventType WORKSHOP / GAME for icons\n * @param  {boolean} history\n * @param  {String} id event id\n * @param  {String} imageURL image url of card\n * @param  {boolean} isScenario\n * @param  {String} joinDate date of joining to the event\n * @param  {function} onCardClick on click function\n * @param  {String} registrationClosedDate event registration end date\n * @param  {String} registrationOpenDate event registration start date\n * @param  {String} registrationStatus OPEN / CLOSED\n * @param  {Boolean} restricted\n * @param  {String} scenarioIdx scenario idx to use with label\n * @param  {String} scenarioLabel scenario label\n * @param  {boolean} showDate\n * @param  {String} startDate event start date\n * @param  {object} stats workshop progress stats\n * @param  {String} title card title\n * @param  {String} type SOC/NOC for labels\n */\nexport default function Card({\n  activeEndDate,\n  activeStartDate,\n  delivery,\n  description,\n  duration = 90,\n  enrolled = false,\n  eventType,\n  history = false,\n  id,\n  imageURL,\n  isScenario = false,\n  joinDate,\n  onCardClick,\n  registrationClosedDate,\n  registrationOpenDate,\n  registrationStatus,\n  restricted,\n  scenarioIdx,\n  scenarioLabel,\n  showDate,\n  startDate,\n  stats = {},\n  title,\n  type,\n}) {\n  const isEventRunning =\n    eventType === EVENT_TYPE.WORKSHOP\n      ? isTodayBetween(new Date(activeStartDate), new Date(activeEndDate))\n      : delivery === EVENT_DELIVERY.NORMAL\n      ? isNormalEventInsideActiveWindow(\n          activeStartDate,\n          activeEndDate,\n          registrationOpenDate,\n          registrationClosedDate,\n          registrationStatus\n        )\n      : isOnDemandEventInsidePlayWindow(joinDate, duration);\n  const imgSize = 'small';\n  const imageSrc = getImageURLSized(imageURL, imgSize);\n  const titleRef = useRef(title);\n  const [descriptionLines, setdescriptionLines] = useState(0);\n  const showEnrolledLabel = enrolled && !isScenario;\n  const isWorkshopCompleted =\n    eventType === EVENT_TYPE.WORKSHOP && stats && stats.isWorkshopCompleted;\n\n  const showProgressLabel =\n    (eventType === EVENT_TYPE.WORKSHOP && stats.progressPercentage) ||\n    (isEventRunning &&\n      eventType === EVENT_TYPE.GAME &&\n      delivery === EVENT_DELIVERY.ON_DEMAND &&\n      enrolled);\n\n  useLayoutEffect(() => {\n    if (titleRef.current) {\n      setdescriptionLines(calculateDescriptionLines(titleRef.current.offsetHeight));\n    }\n  }, []);\n\n  useEffect(() => {\n    if (!title && !description) {\n      throw new Error('missing title/description');\n    }\n  }, []);\n\n  return (\n    <Container\n      maxWidth=\"330px\"\n      flexDirection=\"column\"\n      onClick={onCardClick}\n      className=\"Card-Container\"\n    >\n      <CardImage\n        src={imageSrc}\n        alt=\"card image\"\n        onError={(e) => {\n          e.target.src = getNoImageUrl(type, imgSize);\n        }}\n      />\n      <Flex justifyContent=\"flex-end\" width={1}>\n        <CardLabel\n          eventType={eventType}\n          history={history}\n          stats={stats}\n          isEventRunning={isEventRunning}\n          delivery={delivery}\n          showProgressLabel={showProgressLabel}\n          enrolled={enrolled}\n          joinDate={joinDate}\n          duration={duration}\n          showEnrolledLabel={showEnrolledLabel}\n          restricted={restricted}\n        />\n      </Flex>\n      <CardBody\n        active={\n          isEventRunning || (!enrolled && delivery === EVENT_DELIVERY.ON_DEMAND) || isScenario\n        }\n        alignItems=\"start\"\n        flexDirection=\"column\"\n        height=\"300px\"\n        restricted={restricted}\n        completed={\n          isWorkshopCompleted ||\n          (!isEventRunning && delivery === EVENT_DELIVERY.ON_DEMAND && enrolled)\n        }\n        inprogress={showProgressLabel}\n        history={history}\n      >\n        <Flex alignItems=\"center\" width={1}>\n          {isScenario ? (\n            <RegularText light mediumWeight fontSize=\"14px\" className=\"Card-ScenarioLabel\">\n              {capitalize(removePlural(scenarioLabel))} {scenarioIdx}\n            </RegularText>\n          ) : (\n            <>\n              <CardIconContainer>\n                {eventType === EVENT_TYPE.WORKSHOP ? <WorkshopIcon /> : <GameIcon />}\n              </CardIconContainer>\n              {restricted && (\n                <>\n                  <Flex data-tip data-for=\"inviteOnlyIcon\" pl=\"8px\" pr=\"4px\">\n                    <InviteOnlyIcon />\n                  </Flex>\n                  <Tooltip id=\"inviteOnlyIcon\">INVITE ONLY</Tooltip>\n                </>\n              )}\n              <BossLabel type={type} ml=\"6px\" />\n              <Flex ml=\"auto\">\n                {delivery === EVENT_DELIVERY.ON_DEMAND\n                  ? getDurationLabel(duration)\n                  : showDate && startDate && <CardDate date={startDate} />}\n              </Flex>\n            </>\n          )}\n        </Flex>\n        <div ref={titleRef} style={{ display: 'content' }}>\n          <CardTitle\n            active={\n              isEventRunning || (!enrolled && delivery === EVENT_DELIVERY.ON_DEMAND) || isScenario\n            }\n            id={id}\n            restricted={restricted}\n            completed={\n              isWorkshopCompleted ||\n              (!isEventRunning && delivery === EVENT_DELIVERY.ON_DEMAND && enrolled)\n            }\n            history={history}\n            inprogress={showProgressLabel}\n          >\n            {title}\n          </CardTitle>\n        </div>\n        <Flex mt=\"auto\">\n          <CardDescription climpAfterLine={descriptionLines}>{description}</CardDescription>\n        </Flex>\n      </CardBody>\n    </Container>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport Media from 'react-media';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { Button, UnregularButton } from 'boss-ui';\nimport CardBody from './CardBody';\nimport CardTitle from './CardTitle';\nimport { SKELTELON_STYLE } from '../../libs/constants';\n\nconst Container = styled(Flex)`\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  box-shadow: '0px 3px 6px #00000029';\n`;\nContainer.displayName = 'CardSkeletonContainer';\n\nconst CollapsableDescription = () => {\n  return (\n    <>\n      <UnregularButton disabled>\n        <Skeleton width={100} />\n      </UnregularButton>\n    </>\n  );\n};\n\nfunction CardSkeletonBlock() {\n  return (\n    <Container width=\"330px\" flexDirection=\"column\" margin=\"15px 30px 15px 0\">\n      <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n        <Skeleton height=\"186px\" width=\"100%\" />\n      </SkeletonTheme>\n      <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n        <CardBody\n          alignItems=\"start\"\n          flexDirection=\"column\"\n          height=\"100%\"\n          py=\"45px\"\n          px=\"60px\"\n          width=\"330px\"\n          style={{\n            borderColor: 'transparent',\n          }}\n        >\n          <CardTitle>\n            <Skeleton width=\"285px\" />\n          </CardTitle>\n          <CollapsableDescription />\n          <Flex mt=\"66px\" ml=\"auto\" minWidth=\"100px\">\n            <Button disabled>ENTER</Button>\n          </Flex>\n        </CardBody>\n      </SkeletonTheme>\n    </Container>\n  );\n}\n\nfunction CardSkeletonLandscapeBlock() {\n  return (\n    <Container flexDirection=\"column\" margin=\"15px 30px 15px 0\">\n      <Flex width={1} flexDirection=\"row\">\n        <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n          <Skeleton height=\"186px\" width=\"330px\" />\n        </SkeletonTheme>\n        <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n          <CardBody\n            alignItems=\"start\"\n            flexDirection=\"column\"\n            height=\"100%\"\n            px=\"60px\"\n            style={{\n              borderColor: 'transparent',\n              width: '600px',\n              paddingTop: '2px',\n            }}\n          >\n            <CardTitle>\n              <Skeleton width=\"300px\" />\n            </CardTitle>\n          </CardBody>\n        </SkeletonTheme>\n      </Flex>\n      <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n        <Skeleton height=\"25px\" width=\"100%\" style={{ marginTop: '20px', marginBottom: '20px' }} />\n      </SkeletonTheme>\n    </Container>\n  );\n}\n\nexport default function CardSkeleton({ landscape, style }) {\n  return (\n    <Media\n      queries={{\n        s: '(min-width: 760px)',\n        m: '(min-width: 1350px)',\n        l: '(min-width: 1800px)',\n      }}\n    >\n      {(matches) => (\n        <Flex style={style}>\n          {landscape ? (\n            <CardSkeletonLandscapeBlock />\n          ) : (\n            <Flex flexDirection=\"row\" alignItems=\"flex-start\" flexWrap=\"wrap\">\n              <CardSkeletonBlock />\n              {matches.s && <CardSkeletonBlock />}\n              {matches.m && <CardSkeletonBlock />}\n              {matches.l && <CardSkeletonBlock />}\n            </Flex>\n          )}\n        </Flex>\n      )}\n    </Media>\n  );\n}\n","import React, { useState } from 'react';\nimport { Box } from 'reflexbox';\nimport styled, { css } from 'styled-components';\nimport { RightArrowHide, RightArrowShow, LeftArrowHide, LeftArrowShow } from './icons';\n\nconst COLLAPSED_WIDTH = '20px';\nconst MenuContainer = styled.div`\n  display: flex;\n  z-index: 10;\n  ${(props) =>\n    props.mobile && props.visible\n      ? css`\n          width: 100%;\n          position: absolute;\n          z-index: 11;\n        `\n      : css`\n          max-width: 500px;\n        `}\n`;\n\nconst WorkshopMenuContent = styled(Box)`\n  color: transparent;\n  background-color: ${(props) => props.theme.color.form.background};\n  text-align: left;\n`;\n\nexport default function CollapsableMenu({\n  side = 'left',\n  expandedWidth = '300px',\n  children,\n  collapsed = false,\n  mobile,\n}) {\n  const [menuVisible, setMenuVisible] = useState(!collapsed);\n  const getMenuWidth = (expectedWidth, mobile, menuVisible) => {\n    if (mobile) {\n      return menuVisible ? '100%' : '0';\n    }\n    return menuVisible ? expectedWidth : COLLAPSED_WIDTH;\n  };\n  const menuWidth = getMenuWidth(expandedWidth, mobile, menuVisible);\n\n  return (\n    <MenuContainer mobile={mobile} visible={menuVisible}>\n      {side === 'right' && (\n        <Box onClick={() => setMenuVisible((toggleMenu) => !toggleMenu)}>\n          {menuVisible ? <RightArrowHide /> : <RightArrowShow />}\n        </Box>\n      )}\n      <WorkshopMenuContent width={menuWidth}>{menuVisible && children}</WorkshopMenuContent>\n      {side === 'left' && (\n        <Box onClick={() => setMenuVisible((toggleMenu) => !toggleMenu)} height=\"40px\">\n          {menuVisible ? <LeftArrowHide /> : <LeftArrowShow />}\n        </Box>\n      )}\n    </MenuContainer>\n  );\n}\n","import React, { useState, useLayoutEffect } from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport format from 'date-fns/format';\nimport {\n  Button,\n  ConfirmationModal,\n  Input,\n  Modal,\n  RegularText,\n  Table,\n  TableBody,\n  TableData,\n  TableRow,\n  UnregularButton,\n} from 'boss-ui';\nimport { DEFAULT_BOX_BORDER_STYLE } from '../libs/constants';\nimport { useFormFields } from '../libs/hooks-lib';\nimport { getStyleMedia } from '../libs/team-lib';\n\nconst DEFAULT_POINTS_RECEIVER_LABEL = 'the team';\nexport default function DirectPointConceiver({\n  onSend = () => {},\n  pointsHistory = {},\n  loading,\n  receiverLabel = DEFAULT_POINTS_RECEIVER_LABEL,\n  screenWidthSchema,\n}) {\n  const [fields, onFieldChange] = useFormFields({ reason: '', points: 0 });\n  const [confirmationModalVisible, setConfirmationModalVisible] = useState(false);\n  const [activityModalVisible, setActivityModalVisible] = useState(false);\n\n  const disableButtons = !Number(fields.points) || !fields.reason.length;\n\n  const assignPoints = () => {\n    setConfirmationModalVisible(false);\n    onSend(fields);\n  };\n\n  useLayoutEffect(() => {\n    // reset values after points request ends\n    if (!loading) {\n      onFieldChange({\n        target: {\n          value: 0,\n          id: 'points',\n        },\n      });\n      onFieldChange({\n        target: {\n          value: '',\n          id: 'reason',\n        },\n      });\n    }\n  }, [loading]);\n\n  return (\n    <>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"14px\" mediumWeight>\n          Point adjustment\n        </RegularText>\n        {pointsHistory && pointsHistory.activity && (\n          <Flex ml=\"auto\">\n            <UnregularButton noPadding onClick={() => setActivityModalVisible(true)}>\n              Activity\n            </UnregularButton>\n          </Flex>\n        )}\n      </Flex>\n      <Flex\n        style={DEFAULT_BOX_BORDER_STYLE}\n        p=\"12px\"\n        flexDirection={getStyleMedia(screenWidthSchema).pointAdjustFlexDir}\n        alignItems={getStyleMedia(screenWidthSchema).pointAdjustAlign}\n      >\n        <Box width=\"60px\" mr=\"6px\" py={getStyleMedia(screenWidthSchema).pointAdjustPy}>\n          <Input\n            value={fields.points}\n            onChange={onFieldChange}\n            height=\"28px\"\n            id=\"points\"\n            type=\"number\"\n          />\n        </Box>\n        <Box\n          mr=\"6px\"\n          py={getStyleMedia(screenWidthSchema).pointAdjustPy}\n          width={getStyleMedia(screenWidthSchema).pointAdjustAssignReasonWitdh}\n        >\n          <Input\n            value={fields.reason}\n            onChange={onFieldChange}\n            placeholder=\"Enter a reason\"\n            height=\"28px\"\n            id=\"reason\"\n          />\n        </Box>\n        <Flex\n          ml=\"auto\"\n          py={getStyleMedia(screenWidthSchema).pointAdjustPy}\n          width={getStyleMedia(screenWidthSchema).pointAdjustAssignBtnWitdh}\n        >\n          <Button\n            disabled={disableButtons || loading}\n            onClick={() => setConfirmationModalVisible(true)}\n          >\n            ASSIGN\n          </Button>\n        </Flex>\n      </Flex>\n      {confirmationModalVisible && (\n        <ConfirmationModal\n          onCancel={() => setConfirmationModalVisible(false)}\n          onAccept={assignPoints}\n        >\n          <RegularText>\n            Are you sure applying {fields.points} points on{' '}\n            {Number(fields.points) > 0 ? 'bonus' : 'penalty'} to {receiverLabel}?\n          </RegularText>\n        </ConfirmationModal>\n      )}\n      {activityModalVisible && (\n        <Modal margin=\"10% auto auto auto\" onBackgroundClick={() => setActivityModalVisible(false)}>\n          <Flex\n            px=\"40px\"\n            py=\"60px\"\n            width=\"640px\"\n            backgroundColor=\"#1D1D1D\"\n            flexDirection=\"column\"\n            maxHeight=\"460px\"\n          >\n            <Flex height=\"0px\">\n              <Flex ml=\"auto\" style={{ position: 'relative', top: '-40px', left: '30px' }}>\n                <UnregularButton onClick={() => setActivityModalVisible(false)}>\n                  Close Activity\n                </UnregularButton>\n              </Flex>\n            </Flex>\n            <RegularText fontSize=\"14px\">Points Assigned History</RegularText>\n            <Flex style={{ overflowY: 'auto' }} mt=\"6px\" mb=\"24px\">\n              <Table>\n                <TableBody>\n                  {pointsHistory.activity.map((activity) => {\n                    return (\n                      <TableRow key={activity.description}>\n                        <TableData>\n                          <PointItem {...activity} />\n                        </TableData>\n                      </TableRow>\n                    );\n                  })}\n                </TableBody>\n              </Table>\n            </Flex>\n            <RegularText fontSize=\"14px\">Total Points Assigned</RegularText>\n            <Box style={DEFAULT_BOX_BORDER_STYLE} p=\"12px\" mt=\"6px\">\n              <Flex mb=\"4px\" alignItems=\"center\">\n                <RegularText fontSize=\"13px\">Bonus: </RegularText>\n                <RegularText fontSize=\"12px\">{pointsHistory.total.bonus}</RegularText>\n              </Flex>\n              <Flex mb=\"4px\" alignItems=\"center\">\n                <RegularText fontSize=\"13px\">Penalty: </RegularText>\n                <RegularText fontSize=\"12px\">{pointsHistory.total.penalty}</RegularText>\n              </Flex>\n              <Flex mb=\"4px\" alignItems=\"center\">\n                <RegularText fontSize=\"13px\">Resultant Score: </RegularText>\n                <RegularText fontSize=\"12px\">{pointsHistory.total.total}</RegularText>\n              </Flex>\n            </Box>\n          </Flex>\n        </Modal>\n      )}\n    </>\n  );\n}\n\nconst PointItem = ({ score = {}, username, description, updatedAt = new Date() }) => {\n  const isBonus = score.bonus > 0;\n  return (\n    <Box p=\"4px\" style={{ whiteSpace: 'break-spaces' }}>\n      <RegularText mediumWeight fontSize=\"13px\" mb=\"6px\">\n        {isBonus ? 'BONUS' : 'PENALTY'}\n      </RegularText>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"13px\">Assigned by: </RegularText>\n        <RegularText fontSize=\"12px\">{username}</RegularText>\n      </Flex>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"13px\">Reason: </RegularText>\n        <RegularText fontSize=\"12px\">{description}</RegularText>\n      </Flex>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"13px\">Time: </RegularText>\n        <RegularText fontSize=\"12px\">{format(new Date(updatedAt), 'PPpp')}</RegularText>\n      </Flex>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"13px\">Assigned: </RegularText>\n        <RegularText fontSize=\"12px\">{isBonus ? score.bonus : score.penalty}</RegularText>\n      </Flex>\n    </Box>\n  );\n};\n","import React from 'react';\n\nconst DEFAULT_ERROR_MSG = 'Something went wrong';\nclass ErrorBoundary extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { hasError: false, errorMsg: props.errorMessage };\n  }\n\n  static getDerivedStateFromError(error) {\n    // Update state so the next render will show the fallback UI.\n    return { hasError: true };\n  }\n\n  componentDidCatch(error, errorInfo) {\n    // You can also log the error to an error reporting service\n    console.error(error, errorInfo);\n  }\n\n  render() {\n    if (this.state.hasError) {\n      if (this.props.ignoreMessage) {\n        return null;\n      }\n      // You can render any custom fallback UI\n      return <>{this.state.errorMsg || DEFAULT_ERROR_MSG}</>;\n    }\n\n    return this.props.children;\n  }\n}\n\nexport default ErrorBoundary;\n","import React from 'react';\nimport { Flex } from 'reflexbox';\n\nconst SCROLL_MARGIN = 10;\n\nexport default function ScrolleableContainer({\n  topMargin = SCROLL_MARGIN,\n  children,\n  setScrolled = () => {},\n}) {\n  const handleScroll = (e) => {\n    if (e.target.scrollHeight - e.target.scrollTop < e.target.clientHeight + topMargin) {\n      setScrolled(true);\n    }\n  };\n\n  return (\n    <Flex maxHeight=\"600px\" onScroll={handleScroll} style={{ overflowX: 'auto' }}>\n      {children}\n    </Flex>\n  );\n}\n","import styled from 'styled-components';\n\nconst Text = styled.div`\n  overflow-y: auto;\n  text-align: left;\n  font-family: 'Roboto Mono';\n  font-weight: 300;\n  font-size: 16px;\n  letter-spacing: 0.28px;\n  color: #a0a0a0;\n  opacity: 1;\n  padding: ${(props) => (props.p ? props.p : '40px')};\n`;\nText.displayName = 'Text';\n\nexport default Text;\n","import React, { useState } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport styled, { css } from 'styled-components';\nimport { ExpandIcon, CollapseIcon, CheckMark } from '../icons';\n\nconst WorkshopTopic = ({ title, subTopics, progress }) => {\n  const [visible, setVisible] = useState(false);\n  return (\n    <Box width={1}>\n      <TopicTitle onTitleClick={() => setVisible((v) => !v)} visible={visible} progress={progress}>\n        {title}\n      </TopicTitle>\n      {visible &&\n        subTopics.map((st) => {\n          if (st.children.length) {\n            return (\n              <WorkshopTopic\n                title={st.title}\n                subTopics={st.children}\n                key={st.title}\n                progress={st.stats}\n              />\n            );\n          }\n          return (\n            <TopicChildren key={st.title} isDone={st.isCompleted}>\n              {st.isCompleted && (\n                <Box minWidth=\"24px\">\n                  <CheckMark />\n                </Box>\n              )}\n              <Flex ml=\"6px\">{st.title}</Flex>\n            </TopicChildren>\n          );\n        })}\n    </Box>\n  );\n};\n\nconst TopicTitle = ({ visible, children, onTitleClick, progress = {} }) => {\n  const showProgress = progress.total > 0;\n  return (\n    <Flex\n      style={{ color: '#DE935F', cursor: 'pointer', fontSize: '14px' }}\n      onClick={onTitleClick}\n      width={1}\n      p=\"22px\"\n      textAlign=\"left\"\n    >\n      <div>{visible ? <CollapseIcon /> : <ExpandIcon />}</div>\n      <Flex mx=\"6px\" style={{ whiteSpace: 'break-spaces' }}>\n        {children}\n      </Flex>\n      {!visible && showProgress && (\n        <Box ml=\"auto\" width=\"40px\" display=\"table\" className=\"WorkshopContent-TopicTitleProgress\">\n          {progress.progressPercentage}%\n        </Box>\n      )}\n    </Flex>\n  );\n};\n\nconst TopicChildren = styled(Flex)`\n  font-size: 14px;\n  color: ${(props) => props.theme.color.card.classic.description};\n  text-align: left;\n  font-weight: 300;\n  padding: 22px;\n  &:hover {\n    background-color: #2c2c2c;\n  }\n  ${(props) =>\n    props.isDone &&\n    css`\n      background-color: #1d1d1d;\n      color: ${props.theme.color.breadcrumb.active};\n    `}\n`;\n\nexport default function WorkshopContent({ content = [] }) {\n  return (\n    <Box width={1}>\n      {content.map((c) => (\n        <Flex\n          my=\"6px\"\n          style={{ border: '1px solid #2C2C2C', fontFamily: 'Roboto Mono' }}\n          width={1}\n          key={c.title}\n        >\n          <WorkshopTopic title={c.title} subTopics={c.children} progress={c.stats} />\n        </Flex>\n      ))}\n    </Box>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { Flex } from 'reflexbox';\nimport { SpinnerIcon, Markdown } from 'boss-ui';\nimport { onError } from '../libs/error-lib';\nimport config from '../config';\n\nexport default function TermsAndConditions() {\n  const [loadingTerms, setLoadingTerms] = useState(true);\n  const [termsAndConditionsMD, setTermsAndConditionsMD] = useState(null);\n\n  useEffect(() => {\n    const fetchTerms = async () => {\n      setLoadingTerms(true);\n      try {\n        const rq = await fetch(config.termsConditionsUrl, {\n          headers: { 'Cache-Control': 'max-age=0, must-revalidate' },\n        });\n        if (rq.ok) {\n          setTermsAndConditionsMD(await rq.text());\n        }\n      } catch (e) {\n        onError(e);\n        setTermsAndConditionsMD(\n          'Something went wrong getting the terms and conditions, please try again'\n        );\n      } finally {\n        setLoadingTerms(false);\n      }\n    };\n\n    fetchTerms();\n  }, []);\n\n  if (loadingTerms) {\n    return (\n      <Flex width={1} justifyContent=\"center\">\n        <SpinnerIcon />\n      </Flex>\n    );\n  }\n\n  return <Markdown md={termsAndConditionsMD} />;\n}\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { Flex, Box } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport {\n  Button,\n  Checkbox,\n  Form,\n  FormLeyend,\n  GameIcon,\n  Input,\n  LinkedText,\n  Markdown,\n  Modal,\n  QuestionCircleIcon,\n  Tabs,\n  Tooltip,\n} from 'boss-ui';\nimport Api from '../../api';\nimport { WorkshopIcon, InviteOnlyIcon } from '../icons';\nimport BossLabel from '../BossLabel';\nimport CardBody from '../cards/CardBody';\nimport CardDate from '../cards/CardDate';\nimport CardDescription from '../cards/CardDescription';\nimport CardIconContainer from '../cards/CardIconContainer';\nimport CardTitle from '../cards/CardTitle';\nimport EventLabel from '../EventLabel';\nimport ScrolleableContainer from '../ScrolleableContainer';\nimport Text from '../Text';\nimport WorkshopContent from '../workshops/WorkshopContent';\nimport { onError } from '../../libs/error-lib';\nimport { getImageURLSized } from '../../libs/utils-lib';\nimport {\n  EVENT_TYPE,\n  CONFIRMATION_NUMBER_REGEXP,\n  SKELTELON_STYLE,\n  EVENT_DELIVERY,\n  EVENT_ACCESS_TYPE,\n  DEFAULT_BOX_BORDER_STYLE,\n} from '../../libs/constants';\nimport { useAppContext } from '../../libs/context-lib';\nimport { isTodayBetween, isTodayAfterThan } from '../../libs/dates-lib';\nimport {\n  getNoImageUrl,\n  isOnDemandEventInsidePlayWindow,\n  isNormalEventInsideActiveWindow,\n} from '../../libs/event-lib';\nimport TermsAndConditions from '../TermsConditions';\n\nconst Image = styled.img`\n  object-fit: cover;\n  width: 100%;\n  height: 432px;\n`;\n\nconst Container = styled(Flex)`\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n`;\n\nconst API = new Api();\n\nconst EnrollComponent = ({ onEnrollEvent, disableEnroll, requireConfirmationNumber, delivery }) => {\n  const [confirmationNumber, setConfirmationNumber] = useState('');\n  const [ackVisible, setAckVisible] = useState(false);\n  const [shareInformationAccepted, setShareInformationAccepted] = useState(false);\n\n  if (requireConfirmationNumber) {\n    return (\n      <>\n        <Box my=\"20px\">\n          <Flex>\n            <Box mr=\"6px\" className=\"EventDetail-FlexCheckbox\" minWidth=\"auto\">\n              <label className=\"EventDetail-LblCheckbox\">\n                <Checkbox\n                  checked={shareInformationAccepted}\n                  onChange={(e) => setShareInformationAccepted(e.target.checked)}\n                  id=\"ack\"\n                  className=\"EventDetail-Checkbox\"\n                />\n              </label>\n            </Box>\n            <Box>\n              <FormLeyend size=\"10px\">\n                I would like Splunk to share my contact information with the sponsors and\n                co-presenters identified on this page so they can contact me by email, post or phone\n                about their news, information, events and offers, subject to privacy policies\n                available on their websites.\n              </FormLeyend>\n              <FormLeyend size=\"10px\">\n                <LinkedText onClick={() => setAckVisible(true)}>\n                  Check Terms and conditions.\n                </LinkedText>\n              </FormLeyend>\n            </Box>\n          </Flex>\n          <Flex mt=\"6px\" alignItems=\"center\" justifyContent=\"space-between\" width={1}>\n            <Box style={{ position: 'relative' }} width=\"285px\">\n              <Flex width={1} mt=\"6px\">\n                <Input\n                  value={confirmationNumber}\n                  onChange={(e) => setConfirmationNumber(e.target.value)}\n                  placeholder=\"Enter your Confirmation Number\"\n                  height=\"25px\"\n                />\n                <Flex data-tip data-for=\"confirmationNumber\" ml=\"4px\">\n                  <QuestionCircleIcon />\n                </Flex>\n              </Flex>\n              <Tooltip id=\"confirmationNumber\">\n                You must enter a confimation number to continue. You should have got this number by\n                email.\n              </Tooltip>\n            </Box>\n            <Box mt=\"10px\">\n              <Button\n                id=\"EventDetails-btnEnroll\"\n                onClick={() => onEnrollEvent(shareInformationAccepted, confirmationNumber)}\n                disabled={!confirmationNumber.match(CONFIRMATION_NUMBER_REGEXP) || disableEnroll}\n              >\n                {delivery === EVENT_DELIVERY.ON_DEMAND ? 'PLAY NOW' : 'ENROLL NOW'}\n              </Button>\n            </Box>\n          </Flex>\n        </Box>\n        {ackVisible && (\n          <Flex>\n            <Modal onBackgroundClick={() => setAckVisible(false)} margin=\"5% auto\">\n              <Form>\n                <Box maxWidth=\"600px\">\n                  <Flex justifyContent=\"center\" width=\"600px\" py=\"15px\" backgroundColor=\"#2C2C2C\">\n                    <FormLeyend size=\"20px\">Splunk Terms and Conditions</FormLeyend>\n                  </Flex>\n                  <ScrolleableContainer>\n                    <Flex py=\"12px\" px=\"8px\" width={1}>\n                      <TermsAndConditions />\n                    </Flex>\n                  </ScrolleableContainer>\n                </Box>\n              </Form>\n            </Modal>\n          </Flex>\n        )}\n      </>\n    );\n  }\n\n  return (\n    <>\n      <Box mt=\"10px\" my=\"20px\">\n        <Flex>\n          <Box mr=\"6px\" className=\"EventDetail-FlexCheckbox\" minWidth=\"auto\">\n            <label className=\"EventDetail-LblCheckbox\">\n              <Checkbox\n                checked={shareInformationAccepted}\n                onChange={(e) => setShareInformationAccepted(e.target.checked)}\n                id=\"ack\"\n                className=\"EventDetail-Checkbox\"\n              />\n            </label>\n          </Box>\n          <Box>\n            <FormLeyend size=\"10px\">\n              I would like Splunk to share my contact information with the sponsors and\n              co-presenters identified on this page so they can contact me by email, post or phone\n              about their news, information, events and offers, subject to privacy policies\n              available on their websites.\n            </FormLeyend>\n            <FormLeyend size=\"10px\">\n              <LinkedText onClick={() => setAckVisible(true)}>\n                Check Terms and conditions.\n              </LinkedText>\n            </FormLeyend>\n          </Box>\n        </Flex>\n        <Box mt=\"6px\" ml=\"auto\" width=\"150px\">\n          <Button\n            id=\"EventDetails-btnEnroll\"\n            onClick={() => onEnrollEvent(shareInformationAccepted)}\n            disabled={disableEnroll}\n          >\n            {delivery === EVENT_DELIVERY.ON_DEMAND ? 'PLAY NOW' : 'ENROLL NOW'}\n          </Button>\n        </Box>\n      </Box>\n      {ackVisible && (\n        <Flex>\n          <Modal onBackgroundClick={() => setAckVisible(false)} margin=\"5% auto\">\n            <Form>\n              <Box maxWidth=\"600px\">\n                <Flex justifyContent=\"center\" width=\"600px\" py=\"15px\" backgroundColor=\"#2C2C2C\">\n                  <FormLeyend size=\"20px\">Splunk Terms and Conditions</FormLeyend>\n                </Flex>\n                <ScrolleableContainer>\n                  <Flex py=\"12px\" px=\"8px\" width={1}>\n                    <TermsAndConditions />\n                  </Flex>\n                </ScrolleableContainer>\n              </Box>\n            </Form>\n          </Modal>\n        </Flex>\n      )}\n    </>\n  );\n};\n\nconst EnterEventComponent = ({\n  eventId,\n  eventType,\n  eventDelivery,\n  participantJoinDate,\n  eventDuration,\n  onPlayAgainEvent,\n  loading = false,\n}) => {\n  const history = useHistory();\n  const validOnDemand = isOnDemandEventInsidePlayWindow(participantJoinDate, eventDuration);\n\n  const onClick = () => {\n    if (eventType === EVENT_TYPE.GAME) {\n      if (eventDelivery === EVENT_DELIVERY.ON_DEMAND) {\n        if (validOnDemand) {\n          history.push(`/event/${eventId}`);\n          return;\n        }\n        onPlayAgainEvent();\n        return;\n      }\n      history.push(`/event/${eventId}`);\n      return;\n    }\n    history.push(`/workshop/${eventId}`);\n  };\n\n  const label =\n    eventDelivery === EVENT_DELIVERY.ON_DEMAND\n      ? validOnDemand\n        ? 'CONTINUE'\n        : 'PLAY AGAIN'\n      : 'ENTER';\n\n  return (\n    <Box ml=\"auto\" mb=\"20px\" width=\"110px\">\n      <Button onClick={onClick} id=\"EventDetails-btnEnter\" disabled={loading}>\n        {label}\n      </Button>\n    </Box>\n  );\n};\n\nexport default function EventDetails({\n  id,\n  imageURL,\n  type,\n  eventType,\n  name,\n  description,\n  confirmationNumberRequired,\n  startDate,\n  delivery,\n  registrationStatus,\n  registrationOpenDate,\n  registrationClosedDate,\n  inviteCode,\n  activeStartDate,\n  activeEndDate,\n}) {\n  const [details, setDetails] = useState(null);\n  const [userInEvent, setUserInEvent] = useState(null);\n  const [loadingDetails, setLoadingDetails] = useState(true);\n  const [enrollingEvent, setEnrollingEvent] = useState(false);\n  const [enrollForbiden, setEnrollForbidden] = useState(false);\n  const [closedRegistrationMessage, setClosedRegistrationMessage] = useState(null);\n  const { user, setEvent, event } = useAppContext();\n  const history = useHistory();\n  const isEventRunning =\n    eventType === EVENT_TYPE.WORKSHOP\n      ? isTodayBetween(new Date(activeStartDate), new Date(activeEndDate))\n      : delivery === EVENT_DELIVERY.NORMAL\n      ? isNormalEventInsideActiveWindow(\n          activeStartDate,\n          activeEndDate,\n          registrationOpenDate,\n          registrationClosedDate,\n          registrationStatus\n        )\n      : // on-demand event gets active style\n        true;\n\n  useEffect(() => {\n    const getDetails = async () => {\n      setLoadingDetails(true);\n      try {\n        if (eventType === EVENT_TYPE.GAME) {\n          const rq = await API.get('events', `/events/${id}`);\n          setEvent(rq.event);\n          setUserInEvent(rq.participant);\n        } else {\n          const rq = await API.get('workshops', `/workshops/${id}`);\n          setEvent(rq.workshop);\n          setDetails(rq.workshop.content);\n          setUserInEvent(rq.participant);\n        }\n      } catch (e) {\n        if (e.response && e.response.status === 403) {\n          setEnrollForbidden(true);\n        }\n        onError(e);\n      } finally {\n        setLoadingDetails(false);\n      }\n    };\n    const checkEventRegistration = () => {\n      if (eventType === EVENT_TYPE.GAME && delivery !== EVENT_DELIVERY.ON_DEMAND) {\n        if (!registrationStatus) {\n          setClosedRegistrationMessage('Registration for this event is not open yet.');\n        } else if (registrationStatus === 'CLOSED') {\n          setClosedRegistrationMessage('Registration for this event has been closed.');\n        } else if (!isTodayAfterThan(registrationOpenDate)) {\n          setClosedRegistrationMessage('Registration for this event has not started yet.');\n        } else if (isTodayAfterThan(registrationClosedDate) || !isEventRunning) {\n          setClosedRegistrationMessage('Registration for this event has ended.');\n        }\n      }\n    };\n    if (event && event.participant) {\n      setUserInEvent(event.participant);\n      setLoadingDetails(false);\n    } else {\n      getDetails();\n    }\n    checkEventRegistration();\n    return () => API.abortCurrentRequest();\n  }, []);\n\n  const onEnrollEvent = async (acceptShareInformation = false, confirmationNumber) => {\n    setEnrollingEvent(true);\n    try {\n      if (eventType === EVENT_TYPE.GAME) {\n        await API.post('events', `/events/${id}/join`, {\n          body: {\n            name: user.dynamoUser.displayName,\n            email: user.attributes.email,\n            confirmationNumber,\n            inviteCodeId: inviteCode,\n            acceptShareInformation,\n          },\n        });\n        // an event fetch is needed in order to refresh participant information of the join\n        if (delivery === EVENT_DELIVERY.ON_DEMAND) {\n          const rq = await API.get('events', `/events/${id}`);\n          setEvent({ ...rq.event, participant: rq.participant });\n        }\n        history.push(`/event/${id}`);\n      } else {\n        await API.post('workshops', `/workshops/${id}/join`, {\n          body: {\n            name: user.dynamoUser.displayName,\n            email: user.attributes.email,\n            inviteCodeId: inviteCode,\n            acceptShareInformation,\n          },\n        });\n        history.push(`/workshop/${id}`);\n      }\n    } catch (e) {\n      setEnrollingEvent(false);\n      onError(e);\n    }\n  };\n\n  if (!id) {\n    history.push('/');\n    return null;\n  }\n  const showDate = delivery === EVENT_DELIVERY.NORMAL;\n  const imgSize = 'large';\n  const imageSrc = getImageURLSized(imageURL, imgSize);\n  const isRestrictedEvent = event && event.accessType === EVENT_ACCESS_TYPE.RESTRICTED;\n  const userEnrolled = userInEvent && userInEvent.enrolled;\n\n  return (\n    <Container maxWidth=\"766px\" flexDirection=\"column\">\n      <Image\n        src={imageSrc}\n        alt=\"Event detail image\"\n        onError={(e) => {\n          e.target.src = getNoImageUrl(type, imgSize);\n        }}\n      />\n      <CardBody\n        active={isEventRunning}\n        alignItems=\"start\"\n        flexDirection=\"column\"\n        height=\"100%\"\n        restricted={isRestrictedEvent}\n      >\n        <Flex width={1} alignItems=\"center\">\n          <CardIconContainer>\n            {eventType === EVENT_TYPE.WORKSHOP ? <WorkshopIcon /> : <GameIcon />}\n          </CardIconContainer>\n          {isRestrictedEvent && (\n            <>\n              <Flex data-tip data-for=\"inviteOnlyIcon\" pl=\"8px\" pr=\"4px\">\n                <InviteOnlyIcon />\n              </Flex>\n              <Tooltip id=\"inviteOnlyIcon\">INVITE ONLY</Tooltip>\n            </>\n          )}\n          <BossLabel type={type} ml=\"6px\" />\n          {showDate && startDate && (\n            <Flex ml=\"auto\">\n              <CardDate date={startDate} />\n            </Flex>\n          )}\n        </Flex>\n        {isRestrictedEvent && (\n          <Flex\n            style={{\n              width: '100%',\n              flexDirection: 'row',\n              justifyContent: 'flex-end',\n              marginLeft: '22px',\n              marginLop: '1px',\n            }}\n          >\n            <EventLabel style={{ position: 'absolute', marginTop: '-67px' }}>\n              Private Event\n            </EventLabel>\n          </Flex>\n        )}\n        <CardTitle active={isEventRunning} restricted={isRestrictedEvent}>\n          {name}\n        </CardTitle>\n        <CardDescription>\n          <Markdown md={description} />\n        </CardDescription>\n        {loadingDetails ? (\n          <Flex ml=\"auto\" mb=\"20px\">\n            <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n              <Skeleton width=\"100px\" height=\"30px\" />\n            </SkeletonTheme>\n          </Flex>\n        ) : (\n          !enrollForbiden &&\n          (userEnrolled ? (\n            <EnterEventComponent\n              eventDelivery={delivery}\n              participantJoinDate={userInEvent.joinDate}\n              eventDuration={event.duration}\n              eventId={id}\n              eventType={eventType}\n              onPlayAgainEvent={onEnrollEvent}\n              loading={enrollingEvent}\n            />\n          ) : closedRegistrationMessage ? (\n            <Flex width={1} mt=\"16px\" style={DEFAULT_BOX_BORDER_STYLE}>\n              <Text\n                style={{\n                  fontWeight: '400',\n                  fontSize: '18px',\n                  paddingTop: '20px',\n                  paddingBottom: '20px',\n                  color: '#E5C07B',\n                }}\n                className=\"EventDetails-RegistrationMessage\"\n              >\n                {closedRegistrationMessage}\n              </Text>\n            </Flex>\n          ) : (\n            <EnrollComponent\n              onEnrollEvent={onEnrollEvent}\n              disableEnroll={enrollingEvent || loadingDetails || !isEventRunning}\n              requireConfirmationNumber={confirmationNumberRequired}\n              termsUrl={event.terms}\n              delivery={delivery}\n            />\n          ))\n        )}\n        {details && (\n          <Box mt=\"66px\" width={1}>\n            <Tabs current={0} labels={['SUMMARY']} onTabChange={() => {}} />\n            <WorkshopContent content={details.workshop} />\n          </Box>\n        )}\n      </CardBody>\n    </Container>\n  );\n}\n","import React from 'react';\nimport { useTheme } from 'styled-components';\nimport { CurveArrow } from './icons';\n\nexport default function FloaitngMessage({\n  top = 0,\n  left = 0,\n  active = false,\n  direction = 'top',\n  children,\n}) {\n  const colors = useTheme().color.text.floatingMessage;\n  const color = active ? colors.active : colors.inactive;\n\n  return (\n    <div\n      style={{\n        color,\n        position: 'absolute',\n        top,\n        left,\n        ...(direction === 'left' && { display: 'flex' }),\n      }}\n    >\n      <CurveArrow direction={direction} color={color} />\n      {children}\n    </div>\n  );\n}\n","import React, { useMemo, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport Media from 'react-media';\nimport { Box, Flex } from 'reflexbox';\nimport get from 'lodash/get';\nimport { RegularText, StyledText, BotsIcon, BooIcon, QUESTION_CARD_DEFAULT_WIDTH, Markdown } from 'boss-ui';\nimport Api from '../../api';\nimport { onError } from '../../libs/error-lib';\nimport Card from '../cards/Card';\nimport CardSkeleton from '../cards/CardSkeleton';\nimport CollapsableSection from '../CollapsableSection';\nimport ErrorBoundary from '../ErrorBoundary';\nimport FloatingMessage from '../FloatingMessage';\nimport { BOTS_TYPE, DEFAULT_BOX_BORDER_STYLE, EVENT_WORDING } from '../../libs/constants';\nimport { getEventShortName } from '../../libs/event-lib';\n\nconst addScenarioIndex = (scenarios = []) => {\n  if (!scenarios.length) {\n    return [];\n  }\n  return scenarios.map((s, idx) => ({\n    ...s,\n    idx: idx + 1,\n  }));\n};\n\nconst getGridConfiguration = (matches) => {\n  if (matches.s) {\n    return '1fr';\n  }\n  if (matches.m) {\n    return '1fr 1fr';\n  }\n  if (matches.l) {\n    return '1fr 1fr 1fr';\n  }\n  if (matches.xl) {\n    return '1fr 1fr 1fr 1fr';\n  }\n  return `${QUESTION_CARD_DEFAULT_WIDTH} ${QUESTION_CARD_DEFAULT_WIDTH} ${QUESTION_CARD_DEFAULT_WIDTH}`;\n};\n\nconst API = new Api();\n\nexport default function EventHome({\n  eventScenarios,\n  eventType,\n  eventId,\n  isOnDemand,\n  isUserWithOutTeam,\n  eventDescription,\n  eventRules,\n  appType,\n}) {\n  const [scenarios, setScenarios] = useState([]);\n  const [loadingScenarios, setLoadingScenarios] = useState(true);\n  const history = useHistory();\n  const scenarioLabel = useMemo(() => EVENT_WORDING.SCENARIO[eventType], [eventType]);\n\n  useEffect(() => {\n    // keep this in order to replace the call when scenarios have his own endpoint\n    const getEventScenarios = async () => {\n      setLoadingScenarios(true);\n      try {\n        const rq = await API.get('events', `/events/${eventId}`);\n        const scenariosWithIdx = addScenarioIndex(get(rq, 'event.scenarios'));\n        setScenarios(scenariosWithIdx);\n      } catch (e) {\n        onError(e);\n      } finally {\n        setLoadingScenarios(false);\n      }\n    };\n\n    if (!eventScenarios.length) {\n      getEventScenarios();\n    } else {\n      const scenariosWithIdx = addScenarioIndex(eventScenarios);\n      setScenarios(scenariosWithIdx);\n      setLoadingScenarios(false);\n    }\n  }, [eventScenarios]);\n\n  const eventIcon = useMemo(\n    () => (eventType === BOTS_TYPE.SOC ? <BotsIcon size={200} /> : <BooIcon size={130} />),\n    [eventType]\n  );\n\n  return (\n    <Media\n      queries={{\n        s: '(max-width: 1000px)',\n        m: '(max-width: 1290px)',\n        l: '(max-width: 1540px)',\n        xl: '(min-width: 1880px)',\n      }}\n    >\n      {(matches) => (\n        <>\n          {isUserWithOutTeam && !isOnDemand && !matches.s && (\n            <FloatingMessage top=\"120px\" left=\"40px\" active>\n              <p>Start by creating your team!</p>\n              <p>Or join an existing one.</p>\n            </FloatingMessage>\n          )}\n          <Box mx={matches.s ? '20px' : '10%'} mt={matches.s ? '20px' : '40px'} mb=\"5%\">\n            <Flex mx={matches.s ? 0 : '20%'} my=\"22px\" style={{ position: 'relative' }}>\n              {!matches.s && (\n                <Box\n                  style={{\n                    position: 'absolute',\n                    left: '-66px',\n                    top: '80px',\n                  }}\n                >\n                  {eventIcon}\n                </Box>\n              )}\n              <Box>\n                <StyledText light size=\"28px\">\n                  Welcome to {getEventShortName(eventType)}\n                </StyledText>\n                <Box\n                  style={DEFAULT_BOX_BORDER_STYLE}\n                  mt=\"16px\"\n                  p={matches.s ? '10px' : '40px'}\n                  pl={matches.s ? '15px' : '90px'}\n                  pr={matches.s ? '15px' : '60px'}\n                  textAlign=\"left\"\n                >\n                  <RegularText light mediumWeight fontSize=\"16px\">\n                    <Markdown md={eventDescription} light mediumWeight fontSize=\"16px\" />\n                  </RegularText>\n                  <Flex mt=\"30px\" flexDirection=\"column\">\n                    {eventRules && (\n                      <Flex ml=\"auto\">\n                        <CollapsableSection\n                          justify=\"flex-end\"\n                          expanded={false}\n                          showLabel=\"Show Rules\"\n                          hideLabel=\"Hide Rules\"\n                        >\n                          <RegularText fontSize=\"16px\" color=\"#A5D6A7\">\n                            RULES\n                          </RegularText>\n                          <Markdown md={eventRules} />\n                          {!matches.s && (\n                            <Box\n                              style={{\n                                position: 'absolute',\n                                right: '-66px',\n                                bottom: '40px',\n                              }}\n                            >\n                              <img\n                                src={`${process.env.PUBLIC_URL}/alice_workshops_mobile@2x.png`}\n                                alt=\"alice\"\n                                height=\"200px\"\n                              />\n                            </Box>\n                          )}\n                        </CollapsableSection>\n                      </Flex>\n                    )}\n                  </Flex>\n                </Box>\n              </Box>\n            </Flex>\n            <Flex mt=\"60px\" mb=\"22px\" ml={matches.s ? 0 : '52px'}>\n              <StyledText light size=\"28px\">\n                {scenarioLabel} {!loadingScenarios && `[${scenarios.length}]`}\n              </StyledText>\n            </Flex>\n            <Flex flexDirection=\"column\" width={1}>\n              <Flex justifyContent=\"center\">\n                {loadingScenarios ? (\n                  <CardSkeleton />\n                ) : (\n                  <Flex\n                    style={{\n                      display: 'grid',\n                      gridTemplateColumns: getGridConfiguration(matches),\n                      gridGap: '22px',\n                      gridAutoFlow: 'dense',\n                    }}\n                    className=\"EventPlayer-FlexScenarios\"\n                  >\n                    <ErrorBoundary ignoreMessage>\n                      {scenarios.map((e, idx) => {\n                        const key = get(e, 'id', idx);\n                        return (\n                          <Card\n                            {...e}\n                            key={key}\n                            onCardClick={() =>\n                              history.push(`/event/${eventId}/scenario/${e.scenarioId}`)\n                            }\n                            isScenario\n                            scenarioLabel={scenarioLabel}\n                            scenarioIdx={idx + 1}\n                            type={appType}\n                          />\n                        );\n                      })}\n                      ;\n                    </ErrorBoundary>\n                  </Flex>\n                )}\n              </Flex>\n            </Flex>\n          </Box>\n        </>\n      )}\n    </Media>\n  );\n}\n","import React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport { Menu } from 'boss-ui';\nimport { useAppContext } from '../../libs/context-lib';\nimport { EVENT_WORDING, EVENT_DELIVERY } from '../../libs/constants';\n\nconst calculateCompoundTeamPath = (location, id) => {\n  const splittedPathName = location && location.pathname.split('/');\n  if (splittedPathName.includes('team')) {\n    return location.pathname;\n  }\n  return `/event/${id}/team/join`;\n};\n\nexport default function EventMenu({ onLeaveEvent = () => {}, onShowCredits = () => {}, hideScoring = false }) {\n  const { event, user } = useAppContext();\n  const scenarioLabel = EVENT_WORDING.SCENARIO[event.type];\n  const userWithoutTeam = isEmpty(user.userInTeam);\n  const isOnDemandEvent = event.delivery === EVENT_DELIVERY.ON_DEMAND;\n\n  const getTeamMenu = (id) =>\n    userWithoutTeam\n      ? {\n          path: (location) => calculateCompoundTeamPath(location, id),\n        }\n      : { path: `/event/${id}/team` };\n\n  const getMenuItems = () => {\n    const items = [\n      {\n        path: `/event/${event.eventId}`,\n        label: scenarioLabel,\n        id: 'menuScenario',\n        exact: true,\n      },\n    ];\n    // ON DEMAND EVENTS DO NOT HAVE TEAMS\n    if (!isOnDemandEvent) {\n      items.push({\n        rootPath: `/event/${event.eventId}/team`,\n        label: 'TEAM',\n        id: 'menuTeam',\n        ...getTeamMenu(event.eventId),\n      });\n    }\n\n    // ON DEMAND EVENTS DO NOT HAVE SCORING SECTION\n    if (!hideScoring && event.isEventStarted && !isOnDemandEvent) {\n      items.push({\n        label: 'SCORING',\n        id: 'menuScoring',\n        rootPath: `/event/${event.eventId}/scoring`,\n        subMenu: [\n          {\n            path: `/event/${event.eventId}/scoring/top10`,\n            label: 'Top 10 teams',\n            id: 'subMenuTop10',\n          },\n          {\n            path: `/event/${event.eventId}/scoring/top`,\n            label: 'All teams score',\n            id: 'subMenuAllScore',\n          },\n          {\n            path: `/event/${event.eventId}/scoring/scoreLine`,\n            label: 'Score timeline [Top 5]',\n            id: 'subMenuTop5',\n          },\n        ],\n      });\n    }\n    return items;\n  };\n\n  const getAuxiliaryItems = () => {\n    const items = [];\n    if (event.isEventRunning || !event.isEventStarted) {\n      items.push({\n        label: 'BACK TO HOME',\n        id: 'leaveEventLinkedText',\n        onClick: onLeaveEvent,\n        dangerTheme: true,\n      });\n    }\n    if (event.eventCreditsMd) {\n      items.push({\n        label: 'CREDITS',\n        id: 'creditsLinkedText',\n        onClick: onShowCredits,\n      });\n    }\n    return items;\n  };\n\n  return <Menu menuItems={getMenuItems()} auxiliaryItems={getAuxiliaryItems()} />;\n}\n","import styled from 'styled-components';\n\nconst FooterContainer = styled.div`\n    text-align: center;\n    margin-top: ${props => props.theme.margin.l};\n    margin-bottom: ${props => props.theme.margin.s};\n    font-family: ${props => props.theme.font.family};\n    font-size: 14px;\n    color: ${props => props.theme.color.text.regular.color};\n    line-height: normal;\n`;\nFooterContainer.displayName = 'Footer-FooterContainer';\n\nconst Link = styled.a`\n    color: ${props => props.theme.color.text.regular.color};\n    text-decoration: none;\n\n    &:hover {\n        text-decoration: underline;\n    }\n`;\nLink.displayName = 'Footer-Link';\n\nconst UnorderedList = styled.ul`\n    list-style-type: none;\n    padding: 0;\n    margin: 0;\n\n    @media (width >= 600px) {\n        & > li {\n            display: inline-block;\n            border-right: 1px solid ${props => props.theme.color.text.regular.color};\n            margin-right: 0.5em;\n            padding-right: 0.5em;\n        }\n\n        & > li:last-child {\n            border-right: none;\n            margin-right: 0;\n            padding-right: 0;\n        }\n    }\n`;\nUnorderedList.displayName = 'Footer-UnorderedList';\n\nconst CopyrightText = styled.span`\n    color: ${props => props.theme.color.text.medium.color};\n`;\nCopyrightText.displayName = 'Footer-CopyrightText';\n\nexport { Link, FooterContainer, UnorderedList, CopyrightText };","import { FooterContainer, Link, UnorderedList, CopyrightText } from './styles';\nimport { getCurrentYear } from '../../libs/dates-lib';\n\nconst FOOTER_LINKS = [\n  { title: 'Legal', url: 'https://www.splunk.com/en_us/legal.html' },\n  { title: 'Privacy', url: 'https://www.splunk.com/view/SP-CAAAAAG' },\n  {\n    title: 'Splunk Licensing Terms',\n    url: 'https://www.splunk.com/en_us/legal/splunk-terms-overview.html'\n  },\n  { title: 'Website Terms of Use', url: 'https://www.splunk.com/view/SP-CAAAAAH' }\n];\nconst COPYRIGHT_UNICODE = '\\u00A9';\n\nfunction generateCopyrightText() {\n  return `${COPYRIGHT_UNICODE} 2005-${getCurrentYear()} Splunk Inc. All rights reserved.`;\n}\n\nexport default function Footer() {\n  const links = FOOTER_LINKS.map(link =>\n    <li>\n      <Link target=\"_blank\" href={link.url}>{link.title}</Link>\n    </li>\n  );\n  return (<FooterContainer>\n      <nav>\n        <UnorderedList>{links}</UnorderedList>\n      </nav>\n      <CopyrightText>{generateCopyrightText()}</CopyrightText>\n    </FooterContainer>\n  );\n}","import React, { useState, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex, Box } from 'reflexbox';\nimport { Input, TextArea, CrossIcon as RemoveIcon, SearchIcon } from 'boss-ui';\nimport { DEFAULT_FORM_INPUT_TYPE, INPUT_FORM_TYPE_TEXTAREA } from '../../libs/constants';\n\nconst InputIcon = styled.div`\n  position: absolute;\n  margin-top: 2.5px;\n  margin-left: 5px;\n  ${(props) =>\n    props.remove &&\n    css`\n      margin-top: 0px;\n      margin-right: 5px;\n      margin-left: auto;\n      position: relative;\n      top: -34px;\n      cursor: pointer;\n    `};\n`;\n\nconst InputValidation = styled.div`\n  color: ${(props) =>\n    props.valid ? props.theme.color.input.success.border : props.theme.color.input.error.border};\n  font-size: 16px;\n  opacity: 92%;\n`;\n\nfunction FormInput(props) {\n  const {\n    search,\n    remove,\n    available,\n    validMessage,\n    unavailableMessage,\n    validate,\n    validating,\n    pattern,\n    invalidPatternMessage,\n    onChange,\n    value,\n    styleBox,\n    inputType = DEFAULT_FORM_INPUT_TYPE,\n  } = props;\n  const [patternFulfilled, setPatternFulfilled] = useState(true);\n\n  const inputChange = (e) => {\n    onChange(e);\n  };\n\n  const getMessage = () => {\n    if (!patternFulfilled) {\n      return invalidPatternMessage;\n    }\n    if (validating) {\n      return null;\n    }\n    if (!available) {\n      return unavailableMessage;\n    }\n    return validMessage;\n  };\n\n  useEffect(() => {\n    if (pattern && value !== null && value !== undefined) {\n      if (value.toString().match(pattern)) {\n        setPatternFulfilled(true);\n      } else {\n        setPatternFulfilled(false);\n      }\n    }\n  }, [value]);\n\n  return (\n    <Box style={styleBox} width={1}>\n      <Flex my=\"6px\" alignItems=\"center\" width={1}>\n        {search && (\n          <InputIcon>\n            <SearchIcon />\n          </InputIcon>\n        )}\n        {inputType === DEFAULT_FORM_INPUT_TYPE && (\n          <Input\n            {...props}\n            valid={available && patternFulfilled}\n            onChange={inputChange}\n            height=\"32px\"\n          />\n        )}\n        {inputType === INPUT_FORM_TYPE_TEXTAREA && (\n          <TextArea\n            {...props}\n            valid={available && patternFulfilled}\n            onChange={inputChange}\n            height=\"32px\"\n          />\n        )}\n      </Flex>\n      {validate && (\n        <Flex minHeight=\"24px\">\n          <InputValidation valid={available && patternFulfilled}>{getMessage()}</InputValidation>\n        </Flex>\n      )}\n      {remove && (\n        <Flex height=\"0px\">\n          <InputIcon remove onClick={remove}>\n            <RemoveIcon size={16} />\n          </InputIcon>\n        </Flex>\n      )}\n    </Box>\n  );\n}\n\nexport default FormInput;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { Flex, Box } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { WorkshopIcon, InviteOnlyIcon } from './icons';\nimport Api from '../api';\nimport {\n  RegularText,\n  Table,\n  TableBody,\n  TableData,\n  TableHead,\n  TableHeader,\n  TableRow,\n  Tooltip,\n  GameIcon,\n} from 'boss-ui';\nimport BossLabel from './BossLabel';\nimport WorkshopContent from './workshops/WorkshopContent';\nimport WorkshopVideoProgress from './workshops/WorkshopVideoProgress';\nimport WorkshopProgressLabel from './workshops/WorkshopProgressLabel';\nimport CardDate from './cards/CardDate';\nimport CardDescription from './cards/CardDescription';\nimport CardIconContainer from './cards/CardIconContainer';\nimport CardTitle from './cards/CardTitle';\nimport EventLabel from './EventLabel';\nimport { onError } from '../libs/error-lib';\nimport { formatMinutes } from '../libs/dates-lib';\nimport { EVENT_TYPE, EVENT_DELIVERY, SKELTELON_STYLE } from '../libs/constants';\n\nconst BodyContainer = styled(Flex)`\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  padding: ${(props) => props.theme.margin.s};\n  font-family: 'Roboto Mono';\n  font-weight: normal;\n  border: 1px solid #a088a4;\n  width: 100%;\n`;\nBodyContainer.displayName = 'HistoryDetails-BodyContainer';\n\nconst transformEventStats = (stats, scenarios = [], scenariosScores = {}, isOnDemand = false) => {\n  if (!stats || isEmpty(stats)) {\n    return [];\n  }\n  const transformedStats = [\n    {\n      id: 0,\n      scenario: 'Overall',\n      totalScore: stats.total || 0,\n      baseScore: stats.base || 0,\n      bonusScore: stats.bonus || 0,\n      penalty: -stats.penalty || 0,\n      average: 0,\n      median: 0,\n    },\n  ];\n  // on-demand event has not scenarios\n  if (stats.scenarios) {\n    scenarios.forEach((s, id) => {\n      const scenarioStat = stats.scenarios[s.scenarioId];\n      if (!isOnDemand && scenariosScores && scenariosScores[s.scenarioId]) {\n        const average =\n          (scenariosScores[s.scenarioId].total || scenariosScores[s.scenarioId].total === 0) &&\n          scenariosScores[s.scenarioId].count\n            ? Number(\n                scenariosScores[s.scenarioId].total / scenariosScores[s.scenarioId].count\n              ).toFixed(0)\n            : 0;\n        const median =\n          (scenariosScores[s.scenarioId].max || scenariosScores[s.scenarioId].max === 0) &&\n          (scenariosScores[s.scenarioId].min || scenariosScores[s.scenarioId].min === 0)\n            ? Number(\n                (scenariosScores[s.scenarioId].max + scenariosScores[s.scenarioId].min) / 2\n              ).toFixed(0)\n            : 0;\n        transformedStats[0].average += Number(average);\n        transformedStats[0].median += Number(median);\n        transformedStats.push({\n          id: id + 1,\n          scenario: s.title,\n          totalScore: get(scenarioStat, 'total', 0),\n          baseScore: get(scenarioStat, 'base', 0),\n          bonusScore: get(scenarioStat, 'bonus', 0),\n          penalty: -get(scenarioStat, 'penalty', 0),\n          average: Number(average),\n          median: Number(median),\n        });\n      } else if (isOnDemand) {\n        transformedStats.push({\n          id: id + 1,\n          scenario: s.title,\n          totalScore: get(scenarioStat, 'total', 0),\n          baseScore: get(scenarioStat, 'base', 0),\n          bonusScore: get(scenarioStat, 'bonus', 0),\n          penalty: -get(scenarioStat, 'penalty', 0),\n          average: 0,\n          median: 0,\n        });\n      }\n    });\n  }\n  if (transformedStats[0].average === 0) {\n    transformedStats[0].average = '-';\n  }\n  if (transformedStats[0].median === 0) {\n    transformedStats[0].median = '-';\n  }\n  return transformedStats;\n};\n\nconst API = new Api();\n\nexport default function HistoryDetails({\n  id,\n  type,\n  eventType,\n  name,\n  description,\n  startDate,\n  delivery,\n  isRestrictedEvent = false,\n  duration = 0,\n  scenarios = [],\n  scenariosScores = {},\n  globalTeamsCount,\n}) {\n  const [loadingData, setLoadingData] = useState(false);\n  const [scenarioData, setScenarioData] = useState([]);\n  const [stats, setStats] = useState({});\n  const [workshopContentWithStats, setWorkshopContentWithStats] = useState([]);\n  const [userTeamName, setUserTeamName] = useState('');\n  const history = useHistory();\n  const showDate = delivery === EVENT_DELIVERY.NORMAL;\n  const isOnDemand = delivery === EVENT_DELIVERY.ON_DEMAND;\n\n  useEffect(() => {\n    setLoadingData(true);\n    const getScenarioDetails = async () => {\n      try {\n        if (eventType === EVENT_TYPE.GAME) {\n          const statsRq = await API.get('users', `/user/events/${id}/stats`);\n          setScenarioData(\n            transformEventStats(statsRq.stats, scenarios, scenariosScores, isOnDemand)\n          );\n          if (!isOnDemand) {\n            setUserTeamName(get(statsRq, 'stats.team.name'));\n          }\n          setStats(statsRq.stats);\n        } else {\n          const rq = await API.get('users', `/user/workshops/${id}`);\n          setStats(rq.stats);\n          setWorkshopContentWithStats(get(rq, 'workshop.content.workshop', []));\n        }\n      } catch (e) {\n        onError(e);\n        history.push('/history');\n      } finally {\n        setLoadingData(false);\n      }\n    };\n    getScenarioDetails();\n  }, []);\n\n  if (!id) {\n    history.push('/');\n    return null;\n  }\n\n  return (\n    <BodyContainer alignItems=\"start\" maxWidth=\"924px\" flexDirection=\"column\" height=\"100%\">\n      <Flex width={1} alignItems=\"center\">\n        <CardIconContainer>\n          {eventType === EVENT_TYPE.WORKSHOP ? <WorkshopIcon /> : <GameIcon />}\n        </CardIconContainer>\n        {isRestrictedEvent && (\n          <>\n            <Flex data-tip data-for=\"inviteOnlyIcon\" pl=\"8px\" pr=\"4px\">\n              <InviteOnlyIcon />\n            </Flex>\n            <Tooltip id=\"inviteOnlyIcon\">INVITE ONLY</Tooltip>\n          </>\n        )}\n        <BossLabel type={type} ml=\"6px\" />\n        {eventType === EVENT_TYPE.WORKSHOP ? (\n          <Flex ml=\"auto\">\n            <WorkshopProgressLabel stats={stats} style={{ position: 'static' }} forceProgress />\n          </Flex>\n        ) : (\n          <>\n            {showDate && startDate && (\n              <Flex ml=\"auto\">\n                <CardDate date={startDate} />\n              </Flex>\n            )}\n          </>\n        )}\n      </Flex>\n      {isRestrictedEvent && (\n        <Flex\n          style={{\n            width: '100%',\n            flexDirection: 'row',\n            justifyContent: 'flex-end',\n            marginLeft: '22px',\n            marginLop: '1px',\n          }}\n        >\n          <EventLabel style={{ position: 'absolute', marginTop: '-67px' }}>\n            Private Event\n          </EventLabel>\n        </Flex>\n      )}\n      <CardTitle style={{ color: '#A088A4' }}>{name}</CardTitle>\n      <CardDescription style={{ marginBottom: '20px' }}>{description}</CardDescription>\n      {loadingData ? (\n        <Box style={{ width: '100%' }}>\n          <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n            <Skeleton />\n          </SkeletonTheme>\n        </Box>\n      ) : (\n        <>\n          {eventType === EVENT_TYPE.WORKSHOP ? (\n            <Flex\n              width={1}\n              style={{ wordBreak: 'break-all' }}\n              flexDirection=\"column\"\n              className=\"HistoryDetails-WorkshopContainer\"\n            >\n              <WorkshopVideoProgress stats={stats} style={{ width: '250px' }} />\n              <WorkshopContent content={workshopContentWithStats} />\n            </Flex>\n          ) : (\n            <>\n              {isOnDemand ? (\n                <Flex color=\"#81A2BE\" className=\"HistoryDetails-Duration\">\n                  Event Duration: {formatMinutes(duration).hour}h {formatMinutes(duration).minutes}m\n                </Flex>\n              ) : (\n                <>\n                  {stats && stats.rank && globalTeamsCount && (\n                    <Flex color=\"#A5D6A7\" pb=\"8px\">\n                      Place: {stats.rank}/{globalTeamsCount}\n                    </Flex>\n                  )}\n                  {userTeamName && (\n                    <Flex color=\"#D0D0D0\" pb=\"8px\">\n                      Team: {userTeamName}\n                    </Flex>\n                  )}\n                </>\n              )}\n              {scenarioData.length ? (\n                <Table style={{ marginTop: '40px' }}>\n                  <TableHead>\n                    <TableRow style={{ height: '60px' }}>\n                      <TableHeader\n                        style={{ paddingLeft: '20px', borderRight: '1px solid #1D1D1D' }}\n                      >\n                        Scenario\n                      </TableHeader>\n                      <TableHeader\n                        width=\"60px\"\n                        style={{ paddingLeft: '10px', borderRight: '1px solid #1D1D1D' }}\n                      >\n                        Total Score\n                      </TableHeader>\n                      <TableHeader\n                        width=\"60px\"\n                        style={{ paddingLeft: '10px', borderRight: '1px solid #1D1D1D' }}\n                      >\n                        Base Score\n                      </TableHeader>\n                      <TableHeader\n                        width=\"60px\"\n                        style={{ paddingLeft: '10px', borderRight: '1px solid #1D1D1D' }}\n                      >\n                        Bonus Score\n                      </TableHeader>\n                      <TableHeader\n                        width=\"60px\"\n                        style={{ paddingLeft: '10px', borderRight: '1px solid #1D1D1D' }}\n                      >\n                        Penalty\n                      </TableHeader>\n                      {!isOnDemand && (\n                        <>\n                          <TableHeader\n                            width=\"60px\"\n                            style={{ paddingLeft: '10px', borderRight: '1px solid #1D1D1D' }}\n                          >\n                            Average\n                          </TableHeader>\n                          <TableHeader\n                            width=\"60px\"\n                            style={{ paddingLeft: '10px', borderRight: '1px solid #1D1D1D' }}\n                          >\n                            Median\n                          </TableHeader>\n                        </>\n                      )}\n                    </TableRow>\n                  </TableHead>\n                  <TableBody>\n                    {scenarioData.map((row, idx) => {\n                      const key = get(row, 'id', idx);\n                      return (\n                        <TableRow\n                          key={key}\n                          style={\n                            key === 0\n                              ? { height: '50px', border: '1px solid #A5D6A7', color: '#A5D6A7' }\n                              : { height: '50px' }\n                          }\n                        >\n                          <TableData\n                            style={{ paddingLeft: '20px', borderRight: '1px solid #2C2C2C' }}\n                          >\n                            {row.scenario}\n                          </TableData>\n                          <TableData\n                            style={{ paddingLeft: '10px', borderRight: '1px solid #2C2C2C' }}\n                          >\n                            {row.totalScore}\n                          </TableData>\n                          <TableData\n                            style={{ paddingLeft: '10px', borderRight: '1px solid #2C2C2C' }}\n                          >\n                            {row.baseScore}\n                          </TableData>\n                          <TableData\n                            style={{ paddingLeft: '10px', borderRight: '1px solid #2C2C2C' }}\n                          >\n                            {row.bonusScore}\n                          </TableData>\n                          <TableData\n                            style={\n                              isOnDemand\n                                ? { paddingLeft: '10px' }\n                                : { paddingLeft: '10px', borderRight: '1px solid #2C2C2C' }\n                            }\n                          >\n                            {row.penalty}\n                          </TableData>\n                          {!isOnDemand && (\n                            <>\n                              <TableData\n                                style={{ paddingLeft: '10px', borderRight: '1px solid #2C2C2C' }}\n                              >\n                                {row.average}\n                              </TableData>\n                              <TableData style={{ paddingLeft: '10px' }}>{row.median}</TableData>\n                            </>\n                          )}\n                        </TableRow>\n                      );\n                    })}\n                  </TableBody>\n                </Table>\n              ) : (\n                <Flex\n                  mt=\"20px\"\n                  width={1}\n                  p=\"8px\"\n                  style={{\n                    border: '1px solid #898989',\n                  }}\n                >\n                  <RegularText>No statistical data for this event</RegularText>\n                </Flex>\n              )}\n            </>\n          )}\n        </>\n      )}\n    </BodyContainer>\n  );\n}\n","import { Flex } from 'reflexbox';\nimport styled from 'styled-components';\n\nconst HovereableFlex = styled(Flex)`\n  &:hover {\n    cursor: ${(props) => (props.disable ? 'not-allowed' : 'pointer')};\n  }\n`;\n\nexport default HovereableFlex;\n","import React, { useEffect } from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { Tooltip, GameIcon } from 'boss-ui';\nimport { InviteOnlyIcon } from '../icons';\nimport { getImageURLSized } from '../../libs/utils-lib';\nimport CardDescription from './CardDescription';\nimport CardIconContainer from './CardIconContainer';\nimport CardTitle from './CardTitle';\nimport CardImage from './CardImage';\nimport CardDate from './CardDate';\nimport BossLabel from '../BossLabel';\nimport EventLabel from '../EventLabel';\nimport { isTodayBetween } from '../../libs/dates-lib';\nimport { getNoImageUrl, isNormalEventInsideActiveWindow } from '../../libs/event-lib';\n\nconst MainContainer = styled(Flex)`\n  font-family: 'Roboto Mono';\n  font-weight: normal;\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  border: 1px solid ${(props) => props.theme.color.card.restricted.border};\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: center;\n`;\nMainContainer.displayName = 'LandscapeCard-MainContainer';\n\nconst Container = styled(Flex)`\n  flex-direction: row;\n  justify-content: flex-start;\n  align-items: flex-start;\n  width: 100%;\n`;\nContainer.displayName = 'LandscapeCard-Container';\n\nconst ContainerBottom = styled(Flex)`\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n  height: 62px;\n  background-color: #121212;\n  padding-left: 20px;\n`;\nContainer.displayName = 'LandscapeCard-ContainerBottom';\n\nconst CardBody = styled(Flex)`\n  &:hover {\n    background-color: ${(props) => props.theme.color.card.classic.background.hover};\n    cursor: pointer;\n  }\n  padding: ${(props) => props.theme.margin.s};\n  padding-top: 0px;\n  background-color: #1d1d1d;\n`;\nCardBody.displayName = 'LandscapeCard-CardBody';\n\nconst calculateDescriptionLines = (matches) => {\n  if (!matches.schema3Boxes && !matches.schema4Boxes && !matches.schema5Boxes) {\n    return 3;\n  }\n  return 4;\n};\n\nconst getWidthSchema = (matches) => {\n  if (matches.schema2Boxes) {\n    return '690px';\n  }\n  if (matches.schema3Boxes) {\n    return '1050px';\n  }\n  if (matches.schema4Boxes) {\n    return '1415px';\n  }\n  if (matches.schema5Boxes) {\n    return '1770px';\n  }\n  return '1050px';\n};\n\n/**\n * @param  {String} imageURL image url of card\n * @param  {String} type SOC/NOC for labels\n * @param  {String} title card title\n * @param  {String} description card description\n * @param  {function} onCardClick on click function\n * @param  {String} activeStartDate event active start date\n * @param  {String} startDate event start date\n * @param  {String} activeEndDate event active end date\n * @param  {String} registrationClosedDate event registration end date\n * @param  {String} registrationOpenDate event registration start date\n * @param  {String} registrationStatus OPEN / CLOSED\n * @param  {boolean} showDate\n * @param  {String} id event id\n * @param  {object} matches width schema\n * @param  {Boolean} enrolled\n */\nexport default function LandscapeCard(props) {\n  const {\n    imageURL,\n    type,\n    title,\n    description,\n    onCardClick,\n    activeStartDate,\n    startDate,\n    activeEndDate,\n    registrationClosedDate,\n    registrationOpenDate,\n    registrationStatus,\n    showDate,\n    id,\n    matches,\n    enrolled = false,\n  } = props;\n  const activeEvent = isTodayBetween(new Date(activeStartDate), new Date(activeEndDate));\n  const imgSize = 'small';\n  const imageSrc = getImageURLSized(imageURL, imgSize);\n  const imageType = type;\n  const isEventRunning = isNormalEventInsideActiveWindow(\n    activeStartDate,\n    activeEndDate,\n    registrationOpenDate,\n    registrationClosedDate,\n    registrationStatus\n  );\n\n  useEffect(() => {\n    if (!title && !description) {\n      throw new Error('missing title/description');\n    }\n  });\n\n  return (\n    <MainContainer\n      maxWidth={getWidthSchema(matches)}\n      flexDirection=\"column\"\n      onClick={onCardClick}\n      className=\"LandscapeCard-Container\"\n      active={activeEvent}\n      mt=\"10px\"\n      mb=\"10px\"\n    >\n      <Container>\n        <CardImage\n          src={imageSrc}\n          alt=\"card image\"\n          onError={(e) => {\n            e.target.src = getNoImageUrl(imageType, imgSize);\n          }}\n          style={{ marginTop: '-1px', marginLeft: '-1px' }}\n        />\n        <CardBody alignItems=\"start\" flexDirection=\"column\" height=\"185px\">\n          <div style={{ display: 'content' }}>\n            <CardTitle restricted active={activeEvent} id={id}>\n              {title}\n            </CardTitle>\n          </div>\n          <Flex>\n            <CardDescription restricted climpAfterLine={calculateDescriptionLines(matches)}>\n              {description}\n            </CardDescription>\n          </Flex>\n        </CardBody>\n      </Container>\n      <ContainerBottom>\n        <Flex width=\"50%\">\n          <CardIconContainer>\n            <GameIcon />\n          </CardIconContainer>\n          <Flex data-tip data-for=\"inviteOnlyIcon\" px=\"8px\">\n            <InviteOnlyIcon />\n          </Flex>\n          <Tooltip id=\"inviteOnlyIcon\">INVITE ONLY</Tooltip>\n          <BossLabel type={type} ml=\"6px\" fontSize=\"18px\" />\n          {showDate && startDate && (\n            <Flex pl=\"55px\">\n              <CardDate date={startDate} style={{ color: '#D0D0D0' }} />\n            </Flex>\n          )}\n        </Flex>\n        <Flex\n          width=\"50%\"\n          flexDirection=\"row\"\n          justifyContent=\"flex-end\"\n          alignItems=\"center\"\n          mt=\"-65px\"\n        >\n          <EventLabel enrolled={enrolled} active={isEventRunning}>\n            {enrolled ? 'Enrolled' : 'Private Event'}\n          </EventLabel>\n        </Flex>\n      </ContainerBottom>\n    </MainContainer>\n  );\n}\n","import styled from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst ListHeader = styled(Flex)`\n  box-shadow: 0px 3px 6px #00000029;\n  background-color: #2c2c2c;\n  height: 130px;\n  padding: 40px 45px 40px 45px;\n  align-items: center;\n`;\n\nexport default ListHeader;\n","import { useEffect } from 'react';\nimport get from 'lodash/get';\nimport { toast } from 'react-toastify';\nimport { useRouteMatch } from 'react-router-dom';\nimport { API } from 'aws-amplify';\nimport { useAppContext } from '../../libs/context-lib';\nimport WebSocketClient, { WEB_SOCKET_STATUS } from '../websocket/index';\nimport {\n  ALERTABLE_NOTIFICATIONS,\n  formatNotificationMessage,\n  ACTIONABLE_NOTIFICATIONS,\n} from '../../libs/notifications-lib';\nimport config from '../../config';\nimport { onError } from '../../libs/error-lib';\n\nconst wsClient = new WebSocketClient();\n\nexport default function NotificationsHandler() {\n  const { user, userSession, setNotifications } = useAppContext();\n  const eventRouteMatch = useRouteMatch('/event/:eventId');\n\n  async function performNotificationAction(notification) {\n    const notificationEventId = get(notification, 'notification.eventId');\n    const pathEventId = get(eventRouteMatch, 'params.eventId');\n    if (!notificationEventId || !pathEventId || notificationEventId !== pathEventId) {\n      return;\n    }\n    switch (notification.notificationType) {\n      case 'TEAM_INVITE_DISBAND':\n        userSession((u) => ({ ...u, userInTeam: null }));\n        break;\n      case 'TEAM_INVITE_REMOVED':\n        userSession((u) => ({ ...u, userInTeam: null }));\n        break;\n      default:\n    }\n  }\n\n  const wsMessageHandler = (e = {}) => {\n    const { data } = e;\n    if (!data) {\n      return;\n    }\n    if (ALERTABLE_NOTIFICATIONS.includes(data.notificationType)) {\n      toast(formatNotificationMessage(data));\n      setNotifications((notif) => [data].concat(notif));\n    }\n    if (ACTIONABLE_NOTIFICATIONS.includes(data.notificationType)) {\n      performNotificationAction(data);\n    }\n  };\n\n  useEffect(() => {\n    async function getNotifications() {\n      try {\n        const notificationsRq = await API.get('users', '/user/notifications');\n        // this need to handle pagination\n        const alertableNotifications = [];\n        notificationsRq.notifications.forEach((n) => {\n          if (ALERTABLE_NOTIFICATIONS.includes(n.notificationType)) {\n            alertableNotifications.push(n);\n          }\n        });\n        setNotifications(alertableNotifications);\n      } catch (e) {\n        onError(e);\n      }\n    }\n    // prevent the notifications operations if there is no logged in user and the socket is OPEN / RECONNECTING\n    if (\n      user &&\n      user.dynamoUser &&\n      wsClient.state !== WEB_SOCKET_STATUS.OPEN &&\n      wsClient.state !== WEB_SOCKET_STATUS.RECONNECTING\n    ) {\n      getNotifications();\n      try {\n        wsClient.open({ url: config.webSocket.URL, authenticateRq: true });\n      } catch (e) {\n        console.error('WS ERROR', JSON.stringify(e));\n      }\n    }\n    if (wsClient.state === WEB_SOCKET_STATUS.OPEN) {\n      wsClient.on('message', wsMessageHandler);\n    }\n    return () => {\n      wsClient.removeListener('message', wsMessageHandler);\n    };\n  }, [user, wsClient.state]);\n\n  return null;\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nconst HiddenButton = styled.input.attrs({ type: 'radio' })`\n  // Hide radio visually but remain accessible to screen readers.\n  // Source: https://polished.js.org/docs/#hidevisually\n  border: 0;\n  clip: rect(0 0 0 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  white-space: nowrap;\n  width: 1px;\n`;\n\nconst StyledRadioButton = styled.div`\n  display: inline-block;\n  border-radius: 100%;\n  width: 10px;\n  height: 10px;\n  color: #4caf50;\n  border: 2px solid #4caf50;\n  ${(props) =>\n    props.checked &&\n    css`\n      background-color: #4caf50;\n    `}\n  opacity: 1;\n  transition: all 150ms;\n`;\n\nconst Container = styled.div`\n  display: inline-block;\n  vertical-align: middle;\n`;\n\nconst RadioButton = ({ checked, ...props }) => {\n  return (\n    <Container>\n      <HiddenButton {...props} />\n      <StyledRadioButton checked={checked} />\n    </Container>\n  );\n};\n\nexport default RadioButton;\n","import React from 'react';\nimport Media from 'react-media';\nimport get from 'lodash/get';\nimport { Flex } from 'reflexbox';\nimport LandscapeCard from './cards/LandscapeCard';\nimport CardSkeleton from './cards/CardSkeleton';\nimport Card from './cards/Card';\nimport { EVENT_DELIVERY } from '../libs/constants';\n\nexport default function RestrictedEvents(props) {\n  const { onCardClick, restrictedEvents, loadingRestrictedEvents } = props;\n\n  return (\n    <>\n      <Media\n        queries={{\n          schemaSmall: '(max-width: 759px)',\n          schema1Boxes: '(min-width: 1px) and (max-width: 948px)',\n          schema2Boxes: '(min-width: 948px) and (max-width: 1420px)',\n          schema3Boxes: '(min-width: 1421px) and (max-width: 1894px)',\n          schema4Boxes: '(min-width: 1895px) and (max-width: 2368px)',\n          schema5Boxes: '(min-width: 2369px)',\n        }}\n      >\n        {(matches) => (\n          <>\n            {loadingRestrictedEvents ? (\n              <CardSkeleton landscape={!matches.schema1Boxes} />\n            ) : (\n              <>\n                {matches.schema1Boxes ? (\n                  <>\n                    <Flex\n                      flexDirection=\"row\"\n                      justifyContent={matches.schemaSmall ? 'center' : 'flex-start'}\n                      alignItems=\"flex-start\"\n                      flexWrap=\"wrap\"\n                      className=\"RestrictedEvents-Flex\"\n                    >\n                      {restrictedEvents.map((e, idx) => {\n                        const key = get(e, 'id', idx);\n                        const title = get(e, 'name');\n                        const showDate = e && e.delivery === EVENT_DELIVERY.NORMAL;\n                        return (\n                          <Flex\n                            key={key}\n                            style={{\n                              minWidth: '330px',\n                              padding: '15px',\n                            }}\n                          >\n                            <Card\n                              {...e}\n                              title={title}\n                              onCardClick={() => onCardClick(e)}\n                              showDate={showDate}\n                              restricted\n                              matches={matches}\n                              enrolled={get(e, 'participant.enrolled')}\n                            />\n                          </Flex>\n                        );\n                      })}\n                    </Flex>\n                  </>\n                ) : (\n                  <>\n                    {restrictedEvents.map((re, idx) => {\n                      const key = get(re, 'id', idx);\n                      const title = get(re, 'name');\n                      const showDate = re && re.delivery === EVENT_DELIVERY.NORMAL;\n                      return (\n                        <LandscapeCard\n                          key={key}\n                          {...re}\n                          title={title}\n                          onCardClick={() => onCardClick(re)}\n                          showDate={showDate}\n                          style={{ justifySelf: 'center' }}\n                          matches={matches}\n                          enrolled={get(re, 'participant.enrolled')}\n                        />\n                      );\n                    })}\n                  </>\n                )}\n              </>\n            )}\n          </>\n        )}\n      </Media>\n    </>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { TopArrow } from './icons';\nimport { RegularText } from 'boss-ui';\nimport { fadeIn } from '../libs/animations-lib';\n\nconst ArrowBox = styled(Flex)`\n  position: fixed;\n  align-items: center;\n  height: 52px;\n  width: 172px;\n  bottom: 100px;\n  justify-content: center;\n  z-index: 1000;\n  cursor: pointer;\n  animation: ${fadeIn} 0.3s;\n  display: ${(props) => (props.show ? 'flex' : 'none')};\n  border: 1px solid #1d1d1d;\n  box-shadow: -3px 3px 3px #00000029;\n  background-color: ${(props) => props.theme.color.background};\n`;\n\nconst ScrollTopButton = () => {\n  const [showScroll, setShowScroll] = useState(false);\n  const [insideBox, setInsideBox] = useState(false);\n\n  const scrollTop = () => {\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n  };\n\n  useEffect(() => {\n    const checkScrollTop = () => {\n      if (!showScroll && window.pageYOffset > 400) {\n        setShowScroll(true);\n        return;\n      }\n      if (showScroll && window.pageYOffset <= 400) {\n        setShowScroll(false);\n      }\n    };\n\n    window.addEventListener('scroll', checkScrollTop);\n    return () => window.removeEventListener('scroll', checkScrollTop);\n  });\n\n  return (\n    <ArrowBox\n      onClick={scrollTop}\n      show={showScroll}\n      onMouseEnter={() => setInsideBox(true)}\n      onMouseLeave={() => setInsideBox(false)}\n    >\n      <TopArrow hover={insideBox} />\n      <Flex ml=\"6px\">\n        <RegularText mediumWeight fontSize=\"14px\" color={insideBox ? '#81C784' : '#535353'}>\n          Back to top\n        </RegularText>\n      </Flex>\n    </ArrowBox>\n  );\n};\n\nexport default ScrollTopButton;\n","import styled, { css } from 'styled-components';\n\nconst MemberState = styled.span`\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  color: #d0d0d0;\n  text-align: ${(props) => (props.center ? 'center' : 'left')};\n  ${(props) =>\n    props.available &&\n    css`\n      color: #a5d6a7;\n    `}\n  ${(props) =>\n    props.invited &&\n    css`\n      color: #e5c07b;\n    `}\n  ${(props) =>\n    props.unavailable &&\n    css`\n      color: #a088a4;\n    `}\n  ${(props) =>\n    props.public &&\n    css`\n      color: #81a2be;\n    `}\n  ${(props) =>\n    props.full &&\n    css`\n      color: #a088a4;\n    `}\n  width: ${(props) => props.width || 'auto'};\n`;\nMemberState.displayName = 'MemberState';\n\nexport default MemberState;\n","import React, { useState, useEffect } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport find from 'lodash/find';\nimport { \nLinkedText, \nUnregularButton, \nModal, \nCrossIcon, \nFormLabel, \nContextMenuItem, \nContextMenu, \nPaginator, \nSpyIcon, \nListTable,\nListItem,\nItem\n} from 'boss-ui';\nimport debounce from 'lodash/debounce';\nimport Api from '../api';\nimport FormInput from './forms/FormInput';\nimport MemberState from './MemberState';\nimport { TEAM_MEMBER_ROLE, USER_TEAM_STATE } from '../libs/constants';\nimport { useAppContext } from '../libs/context-lib';\nimport { useDynamoPaginator } from '../libs/hooks-lib';\nimport { onError } from '../libs/error-lib';\n\nconst DEFAULT_PAGE_SIZE = 5;\nconst ZERO = 0;\nconst PAGE_STEP = 1;\n\nconst SeatAvailables = ({ seats, mobile = false }) => {\n  if (!mobile) {\n    return (\n      <>\n        <FormLabel>Seats left</FormLabel>\n        <div\n          style={{\n            fontFamily: 'Roboto Mono',\n            color: '#D0D0D0',\n            fontSize: 24,\n            borderBottom: '1px solid #1D1D1D',\n            marginTop: '5px',\n          }}\n        >\n          {seats}\n        </div>\n      </>\n    );\n  }\n  return <span style={{ color: '#D0D0D0' }}>Seats left {seats}</span>;\n};\n\nconst API = new Api();\n\nexport default function SearchUsers(props) {\n  const { onClose, event, participants, addParticipants, screenWidthSchema } = props;\n  const { user } = useAppContext();\n  const [search, setSearch] = useState('');\n  const [loading, setLoading] = useState(false);\n  const [debounceSearching, setDebounceSearching] = useState(false);\n  const [{ pages, currentPage }, paginate] = useDynamoPaginator();\n  const [searchList, setSearchList] = useState([]);\n\n  const inviteUser = (user, role) => {\n    if (event.maxNumberOfParticipants - participants.length > 0) {\n      user.recentlyAdded = true;\n      addParticipants(user, role);\n      const invited = find(searchList, (u) => u.userId === user.userId);\n      invited.inviteState = USER_TEAM_STATE.INVITED;\n    }\n  };\n\n  const getUserState = (user) => {\n    if (user.hasTeam) {\n      return 'member of another team';\n    }\n    const invitationSent = find(participants, (u) => u.userId === user.userId);\n    return invitationSent ? USER_TEAM_STATE.INVITED : USER_TEAM_STATE.AVAILABLE;\n  };\n\n  const prepareUserList = (users) => {\n    const filterList = [];\n    users.forEach((u) => {\n      if (u.userId !== user.dynamoUser.userId) {\n        filterList.push({\n          ...u,\n          inviteState: getUserState(u),\n        });\n      }\n    });\n    return filterList;\n  };\n\n  const searchUser = async (q, page = ZERO) => {\n    setLoading(true);\n    let lastEvaluatedKey;\n    if (page > ZERO) {\n      lastEvaluatedKey =\n        page > currentPage\n          ? pages[currentPage].nextPagePointer\n          : pages[currentPage].lastPagePointer;\n    }\n    try {\n      const result = await API.get('events', `/events/${event.eventId}/member-sugestions`, {\n        queryStringParameters: {\n          pageSize: DEFAULT_PAGE_SIZE,\n          q,\n          ...(lastEvaluatedKey && {\n            ...lastEvaluatedKey,\n          }),\n        },\n      });\n      setSearchList(prepareUserList(result.participants));\n      paginate(result.pagination, page);\n    } catch (e) {\n      onError(e);\n    } finally {\n      setLoading(false);\n      setDebounceSearching(false);\n    }\n  };\n\n  const delayedQuery = (q) => {\n    setDebounceSearching(true);\n    debounce(() => searchUser(q), 500)();\n  };\n\n  useEffect(() => {\n    searchUser('');\n  }, []);\n\n  const cleanBox = () => {\n    setSearch('');\n    searchUser('');\n  };\n\n  const onNextPage = () => {\n    if (!debounceSearching) {\n      searchUser(search, currentPage + PAGE_STEP);\n    }\n  };\n\n  const onPrevPage = () => {\n    if (!debounceSearching) {\n      searchUser(search, currentPage - PAGE_STEP);\n    }\n  };\n\n  return (\n    <Modal\n      active\n      onBackgroundClick={onClose}\n      style={\n        screenWidthSchema && screenWidthSchema.l\n          ? {\n              display: 'flex',\n              flexDirection: 'column',\n              alignItems: 'center',\n              marginTop: '100px',\n              minWidth: '96%',\n              top: '-100px',\n            }\n          : { margin: '100px auto auto auto', top: '-100px' }\n      }\n    >\n      <Flex\n        width={screenWidthSchema && screenWidthSchema.l ? '100%' : '920px'}\n        backgroundColor=\"#2C2C2C\"\n        flexDirection=\"column\"\n      >\n        <Flex\n          mr=\"10px\"\n          mt=\"6px\"\n          ml=\"auto\"\n          css={{\n            cursor: 'pointer',\n          }}\n          onClick={onClose}\n        >\n          <CrossIcon />\n        </Flex>\n        <Flex height=\"113px\" alignItems=\"center\" style={{ boxShadow: '0px 3px 6px #00000029' }}>\n          <Box\n            mx={screenWidthSchema && screenWidthSchema.s ? '0px' : '58px'}\n            px={screenWidthSchema && screenWidthSchema.s ? '20px' : '0px'}\n            width={screenWidthSchema && screenWidthSchema.s ? '100%' : '66.6%'}\n          >\n            <FormLabel>Find a member for your team</FormLabel>\n            <FormInput\n              search\n              remove={search.length > ZERO && cleanBox}\n              onChange={(e) => {\n                setSearch(e.target.value);\n                delayedQuery(e.target.value);\n              }}\n              value={search}\n              placeholder=\"Search by email address or by profile Display Name\"\n            />\n            {screenWidthSchema && screenWidthSchema.s && (\n              <Box>\n                <SeatAvailables\n                  seats={event.maxNumberOfParticipants - participants.length}\n                  mobile\n                />\n              </Box>\n            )}\n          </Box>\n          {!(screenWidthSchema && screenWidthSchema.s) && (\n            <Box>\n              <SeatAvailables seats={event.maxNumberOfParticipants - participants.length} />\n            </Box>\n          )}\n        </Flex>\n        <Flex height=\"400px\" flexDirection=\"column\">\n          <ListTable refreshing={loading} mobile={screenWidthSchema && screenWidthSchema.s}>\n            {searchList.map((item) => (\n              <ListItem key={item.userId}>\n                {screenWidthSchema && screenWidthSchema.s ? (\n                  <Item>\n                    <Flex flexDirection=\"column\" justifyContent=\"center\" alignItems=\"flex-start\">\n                      <Flex>{item.name}</Flex>\n                      <Flex>\n                        <MemberState\n                          available={item.inviteState === USER_TEAM_STATE.AVAILABLE}\n                          invited={item.inviteState === USER_TEAM_STATE.INVITED}\n                          unavailable={\n                            item.inviteState !== USER_TEAM_STATE.AVAILABLE &&\n                            item.inviteState !== USER_TEAM_STATE.INVITED\n                          }\n                        >\n                          {item.inviteState}\n                        </MemberState>\n                      </Flex>\n                    </Flex>\n                  </Item>\n                ) : (\n                  <>\n                    <Item noBorder width=\"10%\">\n                      <SpyIcon />\n                    </Item>\n                    <Item>{item.name}</Item>\n                    <Item\n                      available={item.inviteState === USER_TEAM_STATE.AVAILABLE}\n                      invited={item.inviteState === USER_TEAM_STATE.INVITED}\n                      unavailable={\n                        item.inviteState !== USER_TEAM_STATE.AVAILABLE &&\n                        item.inviteState !== USER_TEAM_STATE.INVITED\n                      }\n                    >\n                      {item.inviteState}\n                    </Item>\n                  </>\n                )}\n                <Item width={screenWidthSchema && screenWidthSchema.s ? '' : '15%'}>\n                  {item.inviteState === USER_TEAM_STATE.AVAILABLE && (\n                    <ContextMenu\n                      button={\n                        <UnregularButton active>\n                          +{screenWidthSchema && screenWidthSchema.s ? '' : ' invite'}\n                        </UnregularButton>\n                      }\n                    >\n                      <ContextMenuItem>\n                        <LinkedText onClick={() => inviteUser(item, TEAM_MEMBER_ROLE.CAPTAIN)}>\n                          As captain\n                        </LinkedText>\n                      </ContextMenuItem>\n                      <ContextMenuItem>\n                        <LinkedText onClick={() => inviteUser(item, TEAM_MEMBER_ROLE.REGULAR)}>\n                          As regular member\n                        </LinkedText>\n                      </ContextMenuItem>\n                    </ContextMenu>\n                  )}\n                </Item>\n              </ListItem>\n            ))}\n            {search.length > 3 && searchList.length === ZERO && !loading && (\n              <ListItem>\n                <Item>No users found</Item>\n              </ListItem>\n            )}\n          </ListTable>\n          <Paginator\n            isNext={pages[currentPage] && pages[currentPage].nextPagePointer}\n            onNext={onNextPage}\n            isPrev={currentPage > 0}\n            onPrev={onPrevPage}\n            paginating={loading || debounceSearching}\n          />\n        </Flex>\n      </Flex>\n    </Modal>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { withRouter, NavLink } from 'react-router-dom';\nimport { Box } from 'reflexbox';\n\nfunction IconLink(props) {\n  const { children, ...rest } = props;\n  return <NavLink {...rest}>{children}</NavLink>;\n}\n\nconst MenuLink = styled(IconLink)`\n  position: relative;\n  align-items: center;\n  display: block;\n  padding: 14px 10px 14px 10px;\n  margin-bottom: 8px;\n  font-family: Roboto Mono;\n  font-size: 14px;\n  letter-spacing: 0.72px;\n  text-decoration: none;\n  background-color: #2c2c2c;\n  color: #a0a0a0;\n  border-left: 1px solid transparent;\n  box-shadow: 0px 3px 6px #00000029;\n\n  &.active {\n    color: #66bb6a;\n    border-left-color: #66bb6a;\n  }\n\n  &:hover,\n  &:focus {\n    background-color: #373737;\n    border-left-color: #66bb6a;\n  }\n`;\n\nconst MenuContainer = styled(Box)`\n  overflow: hidden;\n  width: 100%;\n`;\n\nfunction SideMenu(props) {\n  const { options } = props;\n  return (\n    <MenuContainer justifyContent=\"center\" align=\"center\">\n      {options.map((opt) => (\n        <MenuLink key={opt.key} exact to={opt.route}>\n          {opt.label}\n        </MenuLink>\n      ))}\n    </MenuContainer>\n  );\n}\n\nexport default withRouter(SideMenu);\n","import { SURVEY_QUESTIONS_TYPE, SURVEY_QUESTION_OPTION_OTHER } from './constants';\n\nexport const isEmptyQuestion = (question) => {\n  if (\n    question &&\n    question.required &&\n    ((question.type[0] !== SURVEY_QUESTIONS_TYPE.OPTIONS_AND_TEXT && !question.answer) ||\n      (question.type[0] === SURVEY_QUESTIONS_TYPE.OPTIONS_AND_TEXT &&\n        (!question.answer ||\n          (question.answer.option === SURVEY_QUESTION_OPTION_OTHER && !question.answer.text))))\n  ) {\n    return true;\n  }\n  return false;\n};\n\nexport const checkIsPendingQuestions = (answers) => {\n  for (let x = 0; x < answers.length; x++) {\n    if (isEmptyQuestion(answers[x])) {\n      return true;\n    }\n  }\n  return false;\n};","import styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { RegularText } from 'boss-ui';\nimport { Button } from 'boss-ui';\n\nconst MainContainer = styled(Flex)`\n  flex-direction: column;\n  justify-content: space-between;\n  align-items: center;\n  padding-left: 60px;\n  padding-right: 60px;\n  height: ${(props) => props.scrolled ? {} : '350px'}\n`;\nMainContainer.displayName = 'SurveyIntroduction-MainContainer';\n\nconst ContentContainer = styled(Flex)`\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: center;\n`;\nContentContainer.displayName = 'SurveyIntroduction-ContentContainer';\n\nconst Name = styled(Flex)`\n  font-size: 28px;\n  color: #D0D0D0;\n  margin-bottom: 23px;\n`;\nName.displayName = 'SurveyIntroduction-Name';\n\nconst Description = styled(RegularText)`\n  color: #D0D0D0;\n  letter-spacing: 0px;\n  line-height: 27px;\n`;\nDescription.displayName = 'SurveyIntroduction-Description';\n\nconst RequiredContainer = styled(Flex)`\n  flex-direction: row;\n  width: 100%;\n  margin-top: 15px;\n`;\nRequiredContainer.displayName = 'SurveyIntroduction-RequiredContainer';\n\nconst Star = styled(RegularText)`\n  color: #e06c75;\n  position: relative;\n  top: -5px;\n`;\nStar.displayName = 'SurveyIntroduction-Star';\n\nconst Required = styled(RegularText)`\n  color: #e06c75;\n  margin-left: 3px;\n`;\nRequired.displayName = 'SurveyIntroduction-Required';\n\nconst ActionsContainer = styled(Flex)`\n  width: 100%;\n  flex-direction: row;\n  justify-content: ${props => props.showOnDismiss ? 'space-between' : 'flex-end'};\n  align-items: center;\n`;\nActionsContainer.displayName = 'SurveyIntroduction-ActionsContainer';\n\nconst ButtonWrapper = styled(Button)`\n  width: 170px;\n  height: 40px;\n`;\nButtonWrapper.displayName = 'SurveyIntroduction-ButtonWrapper';\n\nexport {\n  MainContainer,\n  ContentContainer,\n  Name,\n  Description,\n  RequiredContainer,\n  Star,\n  Required,\n  ActionsContainer,\n  ButtonWrapper\n};","import {\n  MainContainer,\n  ContentContainer,\n  Name,\n  Description,\n  RequiredContainer,\n  Star,\n  Required,\n  ActionsContainer,\n  ButtonWrapper\n} from './styles';\nimport { UnregularButton } from 'boss-ui';\n\nexport default function SurveyIntroduction({ scrolled, showOnDismiss, onDismiss, onNext, name = '', description = '' }) {\n  return (\n    <MainContainer scrolled={scrolled}>\n      <ContentContainer>\n        <Name>{name}</Name>\n        <Description align=\"left\">{description}</Description>\n        <RequiredContainer>\n          <Star align=\"center\" mediumWeight>*</Star>\n          <Required align=\"center\" mediumWeight>Required</Required>\n        </RequiredContainer>\n      </ContentContainer>\n      <ActionsContainer showOnDismiss={showOnDismiss}>\n        {showOnDismiss && (\n          <UnregularButton id=\"test-Survey-ButtonDismiss\" onClick={onDismiss}>\n            Dismiss Survey\n          </UnregularButton>\n        )}\n        <ButtonWrapper onClick={onNext}>TAKE THE SURVEY</ButtonWrapper>\n      </ActionsContainer>\n    </MainContainer>\n  )\n}","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport { UnregularButton, RegularText } from 'boss-ui';\nimport { AsteriskIcon } from '../../icons';\n\nexport default function NominalScaleQuestion({ value = '', options = [], onChange = () => {} }) {\n  return (\n    <>\n      {options && (\n        <Flex\n          className=\"NominalScaleQuestion-FlexContainer\"\n          flexDirection=\"column\"\n          justifyContent=\"flex-start\"\n          alignItems=\"flex-start\"\n        >\n          {options.map((row) => {\n            return (\n              <Flex\n                key={row}\n                onClick={() => {\n                  onChange(row);\n                }}\n                style={{ cursor: 'pointer' }}\n              >\n                <UnregularButton>\n                  {value === row ? (\n                    <AsteriskIcon color=\"#81C784\" />\n                  ) : (\n                    <AsteriskIcon style={{ visibility: 'hidden' }} color=\"#81C784\" />\n                  )}\n                </UnregularButton>\n                <RegularText\n                  color=\"#81C784\"\n                  align=\"left\"\n                  style={{ letterSpacing: '0px', paddingTop: '6px' }}\n                  mediumWeight\n                >\n                  {row}\n                </RegularText>\n              </Flex>\n            );\n          })}\n        </Flex>\n      )}\n    </>\n  );\n}\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport { UnregularButton, RegularText } from 'boss-ui';\nimport { AsteriskIcon } from '../../icons';\nimport { SURVEY_QUESTION_OPTION_OTHER } from '../../../libs/constants';\n\nexport default function MixScaleQuestion({\n  value = { text: '', option: '' },\n  options = [],\n  onChange = () => {},\n}) {\n  return (\n    <>\n      {options && (\n        <Flex\n          className=\"MixScaleQuestion-FlexContainer\"\n          flexDirection=\"column\"\n          justifyContent=\"flex-start\"\n          alignItems=\"flex-start\"\n          width=\"100%\"\n        >\n          {options.map((row) => {\n            return (\n              <Flex\n                key={row}\n                onClick={() => {\n                  onChange({ option: row });\n                }}\n                style={{ cursor: 'pointer' }}\n                className=\"MixScaleQuestion-Option\"\n              >\n                <UnregularButton>\n                  {value.option === row ? (\n                    <AsteriskIcon color=\"#81C784\" className=\"MixScaleQuestion-AsteriskSelected\" />\n                  ) : (\n                    <AsteriskIcon\n                      style={{ visibility: 'hidden' }}\n                      color=\"#81C784\"\n                      className=\"MixScaleQuestion-AsteriskNotSelected\"\n                    />\n                  )}\n                </UnregularButton>\n                <RegularText\n                  color=\"#81C784\"\n                  align=\"left\"\n                  style={{ letterSpacing: '0px', paddingTop: '6px' }}\n                  mediumWeight\n                >\n                  {row}\n                </RegularText>\n              </Flex>\n            );\n          })}\n          <Flex\n            onClick={() => {\n              onChange({ option: SURVEY_QUESTION_OPTION_OTHER });\n            }}\n            style={{ cursor: 'pointer' }}\n            className=\"MixScaleQuestion-Option MixScaleQuestion-OptionOther\"\n          >\n            <UnregularButton>\n              {value.option === SURVEY_QUESTION_OPTION_OTHER ? (\n                <AsteriskIcon color=\"#81C784\" />\n              ) : (\n                <AsteriskIcon style={{ visibility: 'hidden' }} color=\"#81C784\" />\n              )}\n            </UnregularButton>\n            <RegularText\n              color=\"#81C784\"\n              align=\"left\"\n              style={{ letterSpacing: '0px', paddingTop: '6px' }}\n              mediumWeight\n            >\n              Other\n            </RegularText>\n          </Flex>\n          {value.option === SURVEY_QUESTION_OPTION_OTHER && (\n            <Flex width=\"100%\" p=\"10px\">\n              <textarea\n                placeholder=\"Enter specification\"\n                style={{\n                  backgroundColor: '#2c2c2c',\n                  border: '1px solid #535353',\n                  width: '100%',\n                  height: '100px',\n                  color: '#D0D0D0',\n                  resize: 'none',\n                  fontSize: '14px',\n                  fontFamily: 'Roboto Mono',\n                  padding: '5px',\n                  letterSpacing: '0px',\n                }}\n                className=\"MixScaleQuestion-text\"\n                onChange={(e) => {\n                  onChange({ option: SURVEY_QUESTION_OPTION_OTHER, text: e.target.value });\n                }}\n                value={value.text}\n              />\n            </Flex>\n          )}\n        </Flex>\n      )}\n    </>\n  );\n}\n","import React from 'react';\n\nexport default function OpenQuestion({ value = '', onChange = () => {} }) {\n  return (\n    <textarea\n      placeholder=\"Enter specification\"\n      style={{\n        backgroundColor: '#2c2c2c',\n        border: '1px solid #535353',\n        width: '100%',\n        height: '100px',\n        color: '#D0D0D0',\n        resize: 'none',\n        fontSize: '14px',\n        fontFamily: 'Roboto Mono',\n        padding: '5px',\n        letterSpacing: '0px',\n        marginBottom: '15px',\n      }}\n      className=\"OpenQuestion-text\"\n      onChange={(e) => {\n        onChange(e.target.value);\n      }}\n      value={value}\n    />\n  );\n}\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport styled, { css } from 'styled-components';\nimport { RegularText } from 'boss-ui';\n\nconst DEFAULT_NUMERIC_SCALE = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\nconst NumberCircle = styled(Flex)`\n  color: #898989;\n  border: 2px solid #373737;\n  border-radius: 100%;\n  width: 30px;\n  height: 30px;\n  justify-content: center;\n  align-items: center;\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  padding-left: 1px;\n  ${(props) =>\n    props.filled &&\n    css`\n      color: #1d1d1d;\n      background-color: #66bb6a;\n      border-color: #66bb6a;\n    `}\n  &:hover {\n    cursor: pointer;\n    background-color: #2c2c2c;\n  }\n`;\n\nexport default function NumericScaleQuestion({\n  value,\n  options = DEFAULT_NUMERIC_SCALE,\n  onChange = () => {},\n}) {\n  return (\n    <Flex width=\"600px\" justifyContent=\"space-evenly\" alignItems=\"center\">\n      <RegularText color=\"#A5D6A7\" mediumWeight fontSize=\"14px\">\n        Worst\n      </RegularText>\n      {options.map((o) => (\n        <NumberCircle key={o} filled={value === o} onClick={() => onChange(o)}>\n          {o}\n        </NumberCircle>\n      ))}\n      <RegularText color=\"#A5D6A7\" mediumWeight fontSize=\"14px\">\n        Best\n      </RegularText>\n    </Flex>\n  );\n}\n","import React, { useState } from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport { RegularStar, SolidStar } from '../../icons';\nimport { RegularText } from 'boss-ui';\n\nconst DEFAULT_RANGE_OPTIONS = { 1: 'Bad', 2: 'Regular', 3: 'Good', 4: 'Very good', 5: 'Excelent' };\n\nconst Star = ({ filled = false }) => {\n  if (filled) {\n    return <SolidStar />;\n  }\n  return <RegularStar />;\n};\n\nconst calculateInitialState = (options, value = 0) => {\n  const initialState = {};\n  Object.keys(options).forEach((k) => {\n    initialState[k] = { value: k, label: options[k], filled: k <= value };\n  });\n  return initialState;\n};\n\nexport default function StarQuestion({\n  value,\n  onChange = () => {},\n  options = DEFAULT_RANGE_OPTIONS,\n}) {\n  const [stars, setStars] = useState(calculateInitialState(options, value));\n\n  const onStarClicked = (clickedValue) => {\n    setStars((prevStars) => {\n      const newStars = {};\n      Object.keys(prevStars).forEach((starKey) => {\n        if (prevStars[starKey].value <= clickedValue) {\n          newStars[starKey] = { ...prevStars[starKey], filled: true };\n        } else {\n          newStars[starKey] = { ...prevStars[starKey], filled: false };\n        }\n      });\n      return newStars;\n    });\n    onChange(clickedValue);\n  };\n\n  const onStarHoverEnter = (hoverEnterValue) => {\n    setStars((prevStars) => {\n      const newStars = {};\n      Object.keys(prevStars).forEach((starKey) => {\n        if (prevStars[starKey].value <= hoverEnterValue) {\n          newStars[starKey] = { ...prevStars[starKey], filled: true };\n        } else {\n          newStars[starKey] = { ...prevStars[starKey], filled: false };\n        }\n      });\n      return newStars;\n    });\n  };\n\n  const onStarHoverLeave = () => {\n    setStars((prevStars) => {\n      const newStars = {};\n      Object.keys(prevStars).forEach((starKey) => {\n        newStars[starKey] = {\n          ...prevStars[starKey],\n          filled: prevStars[starKey].value <= value,\n        };\n      });\n      return newStars;\n    });\n  };\n\n  return (\n    <Box>\n      <Flex width=\"300px\">\n        {Object.keys(stars).map((optionKey) => {\n          return (\n            <Flex\n              style={{ cursor: 'pointer' }}\n              key={stars[optionKey].value}\n              onClick={() => onStarClicked(stars[optionKey].value)}\n              onMouseEnter={() => onStarHoverEnter(stars[optionKey].value)}\n              onMouseLeave={() => onStarHoverLeave(stars[optionKey].value)}\n            >\n              <Star filled={stars[optionKey].filled} />\n            </Flex>\n          );\n        })}\n      </Flex>\n      <RegularText\n        color=\"#A5D6A7\"\n        mediumWeight\n        fontSize=\"14px\"\n        style={{ height: '25px', paddingTop: '5px' }}\n      >\n        {value && stars[value].label}\n      </RegularText>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport {\n  RegularFrown,\n  RegularSmile,\n  RegularSadTear,\n  RegularMeh,\n  RegularLaughBeam,\n  SolidSmile,\n  SolidSadTear,\n  SolidMeh,\n  SolidLaughBeam,\n  SolidFrown,\n} from '../../icons';\nimport { RegularText } from 'boss-ui';\n\nconst DEFAULT_RANGE_OPTIONS = [\n  { value: 1, label: 'Sad', regularIcon: <RegularSadTear />, solidIcon: <SolidSadTear /> },\n  { value: 2, label: 'Frown', regularIcon: <RegularFrown />, solidIcon: <SolidFrown /> },\n  { value: 3, label: 'Meh', regularIcon: <RegularMeh />, solidIcon: <SolidMeh /> },\n  { value: 4, label: 'Smile', regularIcon: <RegularSmile />, solidIcon: <SolidSmile /> },\n  { value: 5, label: 'Laugh', regularIcon: <RegularLaughBeam />, solidIcon: <SolidLaughBeam /> },\n];\n\nconst getFace = (filled = false, solidIcon, regularIcon) => {\n  if (filled) {\n    return solidIcon;\n  }\n  return regularIcon;\n};\n\nexport default function SmileQuestion({ value, onChange = () => {} }) {\n  return (\n    <Flex width=\"320px\" alignItems=\"center\" justifyContent=\"space-between\">\n      <RegularText color=\"#A5D6A7\" mediumWeight fontSize=\"14px\">\n        Sadness\n      </RegularText>\n      <Flex>\n        {DEFAULT_RANGE_OPTIONS.map((option) => {\n          return (\n            <Flex\n              style={{ cursor: 'pointer' }}\n              key={option.value}\n              onClick={() => onChange(option.value)}\n              width=\"30px\"\n            >\n              {getFace(value === option.value, option.solidIcon, option.regularIcon)}\n            </Flex>\n          );\n        })}\n      </Flex>\n      <RegularText color=\"#A5D6A7\" mediumWeight fontSize=\"14px\">\n        Total Joy!\n      </RegularText>\n    </Flex>\n  );\n}\n","import styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { RegularText } from 'boss-ui';\nimport { WarningIcon } from '../../icons';\n\nconst MainContainer = styled(Flex)`\n  flexd-irection: column;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n  transition: all 400ms;\n  opacity: ${(props) => props.question.opacity};\n`;\nMainContainer.displayName = 'QuestionContainer-MainContainer';\n\nconst SecondaryContainer = styled(Flex)`\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: flex-start;\n  width: 100%;\n`;\nSecondaryContainer.displayName = 'QuestionContainer-SecondaryContainer';\n\nconst RequiredContainer = styled(Flex)`\n  flex-direction: row;\n  justify-content: flex-start;\n  align-items: center;\n  color: #e06c75;\n`;\nRequiredContainer.displayName = 'QuestionContainer-RequiredContainer';\n\nconst LineSep = styled(Flex)`\n  border: 1px solid #2c2c2c;\n  width: 100%;\n  height: 1px;\n  margin-top: 15px;\n  margin-bottom: 15px;\n`;\nLineSep.displayName = 'QuestionContainer-LineSep';\n\nconst QuestionCount = styled(RegularText)`\n  color: ${(props) => props.question.showQuestionWarning ? '#e06c75' : '#81C784'};\n  letter-spacing: 0px;\n`;\nQuestionCount.displayName = 'QuestionContainer-QuestionCount';\n\nconst Star = styled(RegularText)`\n  color: #e06c75;\n  position: relative;\n  top: -5px;\n  left: 3px;\n`;\nStar.displayName = 'QuestionContainer-Star';\n\nconst QuestionTitle = styled(RegularText)`\n  color: #D0D0D0;\n  letter-spacing: 0px;\n  margin-top: 8px;\n  margin-bottom: 32px;\n`;\nQuestionTitle.displayName = 'QuestionContainer-QuestionTitle';\n\nconst NumericScaleQuestionContainer = styled(Flex)`\n  margin-bottom: 12px;\n  width: 100%;\n`;\nNumericScaleQuestionContainer.displayName = 'QuestionContainer-NumericScaleQuestionContainer';\n\nconst StarQuestionContainer = styled(Flex)`\n  margin-bottom: 12px;\n  width: 100%;\n`;\nStarQuestionContainer.displayName = 'QuestionContainer-StarQuestionContainer';\n\nconst SmileQuestionContainer = styled(Flex)`\n  margin-bottom: 12px;\n  width: 100%;\n`;\nSmileQuestionContainer.displayName = 'QuestionContainer-SmileQuestionContainer';\n\nconst NominalScaleQuestionContainer = styled(Flex)`\n  margin-bottom: 12px;\n  width: 100%;\n  margin-left: -12px;\n`;\nNominalScaleQuestionContainer.displayName = 'QuestionContainer-NominalScaleQuestionContainer';\n\nconst MixScaleQuestionContainer = styled(Flex)`\n  margin-bottom: 12px;\n  width: 100%;\n  margin-left: -12px;\n`;\nMixScaleQuestionContainer.displayName = 'QuestionContainer-MixScaleQuestionContainer';\n\nconst OpenQuestionContainer = styled(Flex)`\n  width: 100%;\n`;\nOpenQuestionContainer.displayName = 'QuestionContainer-OpenQuestionContainer';\n\nconst WarningIconWrapper = styled(WarningIcon)`\n  margin-right: 5px;\n`;\nWarningIconWrapper.displayName = 'QuestionContainer-WarningIconWrapper';\n\nconst Required = styled(RegularText)`\n  color: #e06c75;\n  font-size: 14px;\n`;\nRequired.displayName = 'QuestionContainer-Required';\n\nexport {\n  MainContainer,\n  SecondaryContainer,\n  RequiredContainer,\n  LineSep,\n  QuestionCount,\n  Star,\n  QuestionTitle,\n  NumericScaleQuestionContainer,\n  StarQuestionContainer,\n  SmileQuestionContainer,\n  NominalScaleQuestionContainer,\n  MixScaleQuestionContainer,\n  OpenQuestionContainer,\n  WarningIconWrapper,\n  Required\n};","import { useCallback } from 'react';\nimport NominalScaleQuestion from '../questiontypes/NominalScaleQuestion';\nimport MixScaleQuestion from '../questiontypes/MixScaleQuestion';\nimport OpenQuestion from '../questiontypes/OpenQuestion';\nimport NumericScaleQuestion from '../questiontypes/NumericScaleQuestion';\nimport StarQuestion from '../questiontypes/StarQuestion';\nimport SmileQuestion from '../questiontypes/SmileQuestion';\nimport { SURVEY_QUESTIONS_TYPE } from '../../../libs/constants';\nimport {\n  MainContainer,\n  SecondaryContainer,\n  RequiredContainer,\n  LineSep,\n  QuestionCount,\n  Star,\n  QuestionTitle,\n  NumericScaleQuestionContainer,\n  StarQuestionContainer,\n  SmileQuestionContainer,\n  NominalScaleQuestionContainer,\n  MixScaleQuestionContainer,\n  OpenQuestionContainer,\n  WarningIconWrapper,\n  Required\n} from './styles';\n\nexport default function QuestionContainer({ scrolled, question, idx, answers, onAnswerQuestion }) {\n  const onQuestionChange = useCallback(change => onAnswerQuestion(idx, change), [idx]);\n\n  return (\n    <MainContainer question={question}>\n      <SecondaryContainer>\n        {scrolled && <LineSep />}\n        <QuestionCount align=\"left\" mediumWeight id=\"test-Survey-CurrentPageLabel\" question={question}>\n          Q {idx + 1}/{answers.length}\n          {question.required && (\n            <Star align=\"center\" mediumWeight>*</Star>\n          )}\n        </QuestionCount>\n        <QuestionTitle align=\"left\" mediumWeight>{question.text}</QuestionTitle>\n        {question.type[0] === SURVEY_QUESTIONS_TYPE.NUMERIC_SCALE && (\n          <NumericScaleQuestionContainer>\n            <NumericScaleQuestion\n              value={question.answer}\n              options={question.options}\n              onChange={onQuestionChange}\n            />\n          </NumericScaleQuestionContainer>\n        )}\n        {question.type[0] === SURVEY_QUESTIONS_TYPE.STAR_SCALE && (\n          <StarQuestionContainer>\n            <StarQuestion\n              value={question.answer}\n              onChange={onQuestionChange}\n            />\n          </StarQuestionContainer>\n        )}\n        {question.type[0] === SURVEY_QUESTIONS_TYPE.SMILE_SCALE && (\n          <SmileQuestionContainer>\n            <SmileQuestion\n              value={question.answer}\n              onChange={onQuestionChange}\n            />\n          </SmileQuestionContainer>\n        )}\n        {question.type[0] === SURVEY_QUESTIONS_TYPE.JUST_OPTIONS &&\n          question.options && (\n            <NominalScaleQuestionContainer>\n              <NominalScaleQuestion\n                options={question.options}\n                value={question.answer}\n                onChange={onQuestionChange}\n              />\n            </NominalScaleQuestionContainer>\n          )}\n        {question.type[0] === SURVEY_QUESTIONS_TYPE.OPTIONS_AND_TEXT &&\n          question.options && (\n            <MixScaleQuestionContainer>\n              <MixScaleQuestion\n                options={question.options}\n                value={question.answer}\n                onChange={onQuestionChange}\n              />\n            </MixScaleQuestionContainer>\n          )}\n        {question.type[0] === SURVEY_QUESTIONS_TYPE.JUST_TEXT && (\n          <OpenQuestionContainer>\n            <OpenQuestion\n              value={question.answer}\n              onChange={onQuestionChange}\n            />\n          </OpenQuestionContainer>\n        )}\n        {question.showQuestionWarning && (\n          <RequiredContainer>\n            <WarningIconWrapper />\n            <Required align=\"center\" mediumWeight>\n              This question is required\n            </Required>\n          </RequiredContainer>\n        )}\n      </SecondaryContainer>\n    </MainContainer>\n  )\n}","import styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { Button } from 'boss-ui';\n\nconst BodyContainer = styled(Flex)`\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  padding-top: 30px;\n  padding-bottom: 30px;\n  font-weight: normal;\n  border: 1px solid #81c784;\n  width: 608px;\n  min-height: 400px;\n  align-items: center;\n  max-width: 924px;\n  flex-direction: column;\n  height: 100%;\n  ${(props) =>\n    props.required &&\n    css`\n      border: 1px solid #e06c75;\n    `}\n`;\nBodyContainer.displayName = 'Survey-BodyContainer';\n\nconst MainContainer = styled(Flex)`\n  flex-direction: column;\n  justifycontent: space-between;\n  align-items: flex-start;\n  padding-left: 60px;\n  padding-right: 60px;\n  width: 100%;\n`;\nMainContainer.displayName = 'Survey-MainContainer';\n\nconst SecondaryContainer = styled(Flex)`\n  width: 100%;\n  min-height: 480px;\n  flex-direction: column;\n  justify-content: space-between;\n`;\nSecondaryContainer.displayName = 'Survey-SecondaryContainer';\n\nconst TextIntroContainer = styled(Flex)`\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: center;\n  margin-bottom: 20px;\n`;\nTextIntroContainer.displayName = 'Survey-TextIntroContainer';\n\nconst SubmitedSucess = styled(Flex)`\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  height: 370px;\n  font-size: 40px;\n  color: #D0D0D0;\n  margin-bottom: 23px;\n`;\nSubmitedSucess.displayName = 'Survey-SubmitedSucess';\n\nconst ActionsContainer = styled(Flex)`\n  width: 100%;\n  flex-direction: row;\n  justify-content: ${props => props.showOnDismiss ? 'space-between' : 'flex-end'};\n  align-items: center;\n  margin-top: 25px;\n`;\nActionsContainer.displayName = 'Survey-ActionsContainer';\n\nconst PrevButton = styled(Button)`\n  width: 100px;\n  height: 40px;\n  margin-right: 32px;\n`;\nPrevButton.displayName = 'Survey-PrevButton';\n\nconst SubmitButton = styled(Button)`\n  width: 170px;\n  height: 40px;\n`;\nSubmitButton.displayName = 'Survey-SubmitButton';\n\nconst NextButton = styled(Button)`\n  width: 100px;\n  height: 40px;\n`;\nNextButton.displayName = 'Survey-NextButton';\n\nexport {\n  BodyContainer,\n  MainContainer,\n  SecondaryContainer,\n  TextIntroContainer,\n  SubmitedSucess,\n  ActionsContainer,\n  PrevButton,\n  SubmitButton,\n  NextButton,\n};","import React, { useState, useEffect, useCallback } from 'react';\nimport { Flex } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport get from 'lodash/get';\nimport { UnregularButton } from 'boss-ui';\nimport Api from '../../api';\nimport { onError } from '../../libs/error-lib';\nimport { isEmptyQuestion, checkIsPendingQuestions } from '../../libs/survey-lib';\nimport { SURVEY_QUESTIONS_TYPE, SURVEY_QUESTION_OPTION_OTHER } from '../../libs/constants';\nimport SurveyIntroduction from './SurveyIntroduction';\nimport QuestionContainer from './QuestionContainer';\nimport {\n  BodyContainer,\n  MainContainer,\n  SecondaryContainer,\n  TextIntroContainer,\n  SubmitedSucess,\n  ActionsContainer,\n  PrevButton,\n  NextButton,\n  SubmitButton\n} from './styles';\n\nconst prepareAnswers = (answers) => {\n  const tmpAnswers = [];\n  for (let x = 0; x < answers.length; x++) {\n    tmpAnswers[x] = {\n      id: answers[x].id,\n      name: answers[x].name,\n      text: answers[x].text,\n      type: answers[x].type,\n      required: answers[x].required,\n      options: answers[x].options ? answers[x].options : null,\n      answer: answers[x].answer ? answers[x].answer : '',\n    };\n    // case OPTIONS_AND_TEXT is more complex to set answer, can set from options array or textarea\n    if (answers[x].type[0] === SURVEY_QUESTIONS_TYPE.OPTIONS_AND_TEXT) {\n      tmpAnswers[x].answer =\n        answers[x].answer.option === SURVEY_QUESTION_OPTION_OTHER\n          ? answers[x].answer.text\n          : answers[x].answer.option;\n    }\n  }\n  return tmpAnswers;\n};\n\nconst setOpacity = (answers, currentIndex = 0) => {\n  if (answers && answers.length > 0) {\n    const tmpAnswers = [...answers];\n    for (let x = 0; x < tmpAnswers.length; x++) {\n      tmpAnswers[x].opacity = 0;\n    }\n    if (currentIndex === 0 || currentIndex !== null) {\n      tmpAnswers[currentIndex].opacity = 1;\n    }\n    return tmpAnswers;\n  }\n  return answers;\n};\n\nconst API = new Api();\n\nexport default function Survey({\n  id,\n  campaignId,\n  name,\n  description = '',\n  questions = [],\n  showOnDismiss = true,\n  showTextIntro = true,\n  scrolled = false,\n  onDismiss,\n}) {\n  const [loadingData, setLoadingData] = useState(false);\n  const [answers, setAnswers] = useState(questions);\n  const [currentIndex, setCurrentIndex] = useState(0);\n  const [showIntro, setShowIntro] = useState(showTextIntro && !scrolled);\n  const [submitSuccess, setSubmitSuccess] = useState(false);\n  const [isPendingQuestions, setIsPendingQuestions] = useState(false);\n  const history = useHistory();\n\n  const onSubmitSurvey = async () => {\n    setLoadingData(true);\n    try {\n      let url = `/user/surveys/${id}/submissions`;\n      if (campaignId) {\n        url += `?cid=${campaignId}`;\n      }\n      await API.post('users', url, {\n        body: { name, description, questions: prepareAnswers(answers) },\n      });\n      setSubmitSuccess(true);\n      if (showOnDismiss) {\n        setTimeout(onDismiss, 1500);\n      }\n    } catch (e) {\n      onError(e);\n    } finally {\n      setLoadingData(false);\n    }\n  };\n\n  const setAnswerQuestion = (idx, answer) => {\n    const tmpAnswers = [...answers];\n    tmpAnswers[idx].answer = answer;\n    tmpAnswers[idx].showQuestionWarning = false;\n    // when you answer a single question and you arent on scroll mode, the container border must be green (not required warning).\n    if (!scrolled) {\n      setIsPendingQuestions(false);\n    }\n    // check if there is not some pending question to answer on scroll mode\n    if (!checkIsPendingQuestions(tmpAnswers) && scrolled) {\n      setIsPendingQuestions(false);\n    }\n    setAnswers(tmpAnswers);\n  }\n\n  const setShowQuestionWarning = (idx) => {\n    const tmpAnswers = [...answers];\n    if (idx || idx === 0) {\n      tmpAnswers[idx].showQuestionWarning = true;\n    } else {\n      for (let x = 0; x < tmpAnswers.length; x++) {\n        tmpAnswers[x].showQuestionWarning = isEmptyQuestion(tmpAnswers[x]);\n      }\n    }\n    setAnswers(tmpAnswers);\n  }\n\n  const handleClickNext = useCallback(() => {\n    if (isEmptyQuestion(answers[currentIndex])) {\n      setShowQuestionWarning(currentIndex);\n      setIsPendingQuestions(true);\n    } else {\n      setCurrentIndex(currentIndex + 1);\n    }\n  }, [answers, currentIndex]);\n\n  const handleClickSubmit = useCallback(() => {\n    if (checkIsPendingQuestions(answers)) {\n      setShowQuestionWarning();\n      setIsPendingQuestions(true);\n    } else {\n      setIsPendingQuestions(false);\n      onSubmitSurvey();\n    }\n  }, [answers]);\n\n  useEffect(() => {\n    // for opacity effect on pagination only\n    if (!scrolled && answers.length > 0) {\n      setAnswers(setOpacity([...answers], null));\n      setTimeout(() => {\n        setAnswers(setOpacity([...answers], currentIndex));\n      }, 100);\n    }\n  }, [currentIndex]);\n\n  if (!id) {\n    history.push('/');\n    return null;\n  }\n\n  return (\n    <BodyContainer required={isPendingQuestions}>\n      {submitSuccess ? (\n        <SubmitedSucess>Thank you!</SubmitedSucess>\n      ) : (\n        <>\n          {showIntro ? (\n            <SurveyIntroduction\n              scrolled={scrolled}\n              showOnDismiss={showOnDismiss}\n              onDismiss={onDismiss}\n              onNext={() => setShowIntro(false)}\n              name={name}\n              description={description} />\n          ) : (\n            <MainContainer>\n              <SecondaryContainer>\n                {scrolled && showTextIntro && (\n                  <TextIntroContainer>\n                    <SurveyIntroduction name={name} description={description} />\n                  </TextIntroContainer>\n                )}\n                {answers.map((question, idx) => {\n                  const key = get(question, 'name', idx);\n\n                  if (idx === currentIndex || scrolled) {\n                    return <QuestionContainer\n                      key={key}\n                      scrolled={scrolled}\n                      question={question}\n                      idx={idx}\n                      answers={answers}\n                      onAnswerQuestion={(idx, change) => setAnswerQuestion(idx, change)} />\n                  }\n                })}\n                <ActionsContainer showOnDismiss={showOnDismiss}>\n                  {showOnDismiss && (\n                    <UnregularButton id=\"test-Survey-ButtonDismiss\" onClick={onDismiss}>\n                      Dismiss Survey\n                    </UnregularButton>\n                  )}\n                  <Flex>\n                    {currentIndex > 0 && !scrolled && (\n                      <PrevButton\n                        onClick={() => setCurrentIndex(currentIndex - 1)}\n                      >\n                        {'< PREV'}\n                      </PrevButton>\n                    )}\n                    {currentIndex + 1 === answers.length || scrolled ? (\n                      <SubmitButton\n                        disabled={loadingData}\n                        onClick={handleClickSubmit}\n                        id=\"test-Survey-ButtonSubmit\"\n                      >\n                        SUBMIT SURVEY\n                      </SubmitButton>\n                    ) : (\n                      <>\n                        {!scrolled && (\n                          <NextButton\n                            onClick={handleClickNext}\n                            id=\"test-Survey-ButtonNext\"\n                          >\n                            {'NEXT >'}\n                          </NextButton>\n                        )}\n                      </>\n                    )}\n                  </Flex>\n                </ActionsContainer>\n              </SecondaryContainer>\n            </MainContainer>\n          )}\n        </>\n      )}\n    </BodyContainer>\n  );\n}\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport { Tooltip, PublicIcon, PrivateIcon } from 'boss-ui';\nimport { TEAM_VISIBILITY } from '../../libs/constants';\n\nconst PUBLIC_VISIBILITY_MESSAGE = `This team is public you can see its members clicking in the team's name`;\nconst PRIVATE_VISIBILITY_MESSAGE = `This team is private you can't see its members`;\n\nexport default function TeamMembersState(props) {\n  const { team } = props;\n  const teamMembersState =\n    team.visibility === TEAM_VISIBILITY.PUBLIC\n      ? {\n          icon: <PublicIcon inverted invertedColor=\"#A5D6A7\" />,\n          color: '#81a2be',\n          tooltipMessage: PUBLIC_VISIBILITY_MESSAGE,\n        }\n      : {\n          icon: <PrivateIcon inverted />,\n          tooltipMessage: PRIVATE_VISIBILITY_MESSAGE,\n          color: '#A0A0A0',\n        };\n\n  return (\n    <Flex alignItems=\"center\" justifyContent=\"flex-end\">\n      <Flex\n        mr=\"10px\"\n        style={{\n          color: teamMembersState.color,\n          fontFamily: 'Roboto Mono',\n          fontSize: '14px',\n          whiteSpace: 'nowrap',\n        }}\n      >\n        {team.numberOfParticipants ? `${team.numberOfParticipants} Members` : null}\n      </Flex>\n      <Flex data-tip data-for={`visibility-${team.teamId}`}>\n        {teamMembersState.icon}\n      </Flex>\n      <Tooltip id={`visibility-${team.teamId}`} place=\"right\">\n        {teamMembersState.tooltipMessage}\n      </Tooltip>\n    </Flex>\n  );\n}\n","import React from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport truncate from 'lodash/truncate';\nimport { LinkedText, UnregularButton, TeamIcon, Item, ListItem } from 'boss-ui';\nimport { useTheme } from 'styled-components';\nimport { TEAM_VISIBILITY, TEAM_ACCESSIBILITY } from '../../libs/constants';\nimport TeamMembersState from './TeamMembersState';\n\nconst TeamAccessibility = ({ team, onJoinTeam, isAnInvite }) => {\n  const getAccessibility = () => {\n    if (team.full) {\n      return 'Team is full';\n    }\n    if (isAnInvite) {\n      return (\n        <Flex>\n          <UnregularButton active onClick={onJoinTeam}>\n            Join Team\n          </UnregularButton>\n        </Flex>\n      );\n    }\n    switch (team.accessibility) {\n      case TEAM_ACCESSIBILITY.CLOSED: {\n        return null;\n      }\n      case TEAM_ACCESSIBILITY.OPEN: {\n        return (\n          <Flex>\n            <UnregularButton active onClick={onJoinTeam}>\n              Join Team\n            </UnregularButton>\n          </Flex>\n        );\n      }\n      default:\n        return null;\n    }\n  };\n\n  return <Flex justifyContent=\"flex-end\">{getAccessibility()}</Flex>;\n};\n\nexport default function TeamListItem({\n  mobile = false,\n  item = {},\n  onTeamClicked = () => {},\n  onJoinTeam = () => {},\n  transparentBackground = false,\n  isAnInvite = false,\n}) {\n  const themeColors = useTheme().color;\n\n  if (mobile) {\n    return (\n      <Box width={1}>\n        <Flex my=\"10px\" width={1} alignItems=\"center\">\n          <ListItem>\n            <Item noBorder width=\"20%\">\n              <TeamIcon\n                backgroundColor={\n                  transparentBackground ? themeColors.background : themeColors.form.background\n                }\n              />\n            </Item>\n            <Item noBorder width=\"80%\">\n              <LinkedText onClick={onTeamClicked}>\n                {truncate(item.name, { length: 19, omission: '...' })}\n              </LinkedText>\n            </Item>\n          </ListItem>\n        </Flex>\n        <Flex\n          noBorder\n          width={1}\n          alignItems=\"center\"\n          style={{ borderBottom: '1px solid #2c2c2c' }}\n          justifyContent=\"flex-end\"\n        >\n          <ListItem>\n            <Item noBorder public={item.visibility === TEAM_VISIBILITY.PUBLIC} width=\"35%\" center>\n              <TeamMembersState team={item} />\n            </Item>\n            <Item noBorder full={item.full} width=\"55%\">\n              <TeamAccessibility team={item} onJoinTeam={onJoinTeam} isAnInvite={isAnInvite} />\n            </Item>\n          </ListItem>\n        </Flex>\n      </Box>\n    );\n  }\n\n  return (\n    <ListItem>\n      <Item noBorder width=\"10%\">\n        <TeamIcon\n          backgroundColor={\n            transparentBackground ? themeColors.background : themeColors.form.background\n          }\n        />\n      </Item>\n      <Item width=\"45%\">\n        <LinkedText onClick={onTeamClicked}>\n          {truncate(item.name, { length: 19, omission: '...' })}\n        </LinkedText>\n      </Item>\n      <Item public={item.visibility === TEAM_VISIBILITY.PUBLIC} width=\"20%\" center>\n        <TeamMembersState team={item} />\n      </Item>\n      <Item center full={item.full} width=\"25%\">\n        <TeamAccessibility team={item} onJoinTeam={onJoinTeam} isAnInvite={isAnInvite} />\n      </Item>\n    </ListItem>\n  );\n}\n","import React from 'react';\nimport { useTheme } from 'styled-components';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { TeamIcon, Item, ListItem } from 'boss-ui';\nimport { SKELTELON_STYLE } from '../../libs/constants';\n\nexport default function TeamListItemSkeleton({ mobile = false, transparentBackground = false }) {\n  const themeColors = useTheme().color;\n\n  return (\n    <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n      <ListItem style={{ display: 'flex' }}>\n        {!mobile && (\n          <Item noBorder width=\"10%\">\n            <TeamIcon\n              backgroundColor={\n                transparentBackground ? themeColors.background : themeColors.form.background\n              }\n            />\n          </Item>\n        )}\n        <Item noBorder width=\"100%\">\n          <Skeleton width=\"100%\" height=\"30px\" />\n        </Item>\n      </ListItem>\n    </SkeletonTheme>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport toLower from 'lodash/toLower';\nimport cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport {\n  ContextMenu,\n  ContextMenuItem,\n  LinkedText,\n  RegularText,\n  Table,\n  TableBody,\n  TableData,\n  TableHead,\n  TableHeader,\n  TableItemSkeleton,\n  TableRow,\n  Tooltip,\n  UnregularButton,\n  InfoIcon,\n  TreeDotsIcon,\n  Can,\n} from 'boss-ui';\nimport { Flex } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport SearchUsers from '../SearchUsers';\nimport { TEAM_MEMBER_ROLE, USER_INVITE_STATE } from '../../libs/constants';\nimport { useAppContext } from '../../libs/context-lib';\nimport { rules } from '../../libs/roles-lib';\n\nfunction TeamMembersTable(props) {\n  const {\n    participants,\n    setParticipants,\n    initialNroCaptains,\n    loadingParticipants,\n    contextAction,\n    handleModal,\n    screenWidthSchema,\n    isJoinView = false,\n  } = props;\n  const { event, user } = useAppContext();\n  const [addUserModalVisible, setAddUserModalVisible] = useState(false);\n  const [filteredParticipants, setFilterdParticipants] = useState([]);\n  const [nroCaptains, setNroCaptains] = useState(initialNroCaptains);\n  const history = useHistory();\n  const canEditTeam = !event.isEventStarted || event.isEventRunning;\n\n  const addMember = (newMember, role) => {\n    if (role === TEAM_MEMBER_ROLE.CAPTAIN && user.state === USER_INVITE_STATE.ACCEPTED) {\n      setNroCaptains(nroCaptains + 1);\n    }\n    setParticipants((members) => [\n      ...members,\n      { ...{ state: USER_INVITE_STATE.PENDING, dirty: true, ...newMember }, role },\n    ]);\n  };\n\n  const removeTeamMember = (member) => {\n    const teamMembers = cloneDeep(participants);\n    const teamMember = find(\n      teamMembers,\n      (p) => p.userId === member.userId && p.state === member.state\n    );\n    if (!teamMember) {\n      return;\n    }\n    if (\n      teamMember.role === TEAM_MEMBER_ROLE.CAPTAIN &&\n      teamMember.state === USER_INVITE_STATE.ACCEPTED\n    ) {\n      setNroCaptains(nroCaptains - 1);\n    }\n    if (teamMember.recentlyAdded) {\n      setParticipants(teamMembers.filter((u) => u.userId !== teamMember.userId));\n    } else {\n      // if the user hasn't accepted the invitation invite should be canceled otherwise rejected\n      teamMember.state =\n        teamMember.state === USER_INVITE_STATE.PENDING\n          ? USER_INVITE_STATE.REJECTED\n          : USER_INVITE_STATE.CANCELLED;\n      teamMember.dirty = true;\n      setParticipants(teamMembers);\n    }\n  };\n\n  const changeMemberRole = (member, role) => {\n    const teamMembers = cloneDeep(participants);\n    const teamMember = find(\n      teamMembers,\n      (p) => p.userId === member.userId && p.state === member.state\n    );\n    if (!teamMember) {\n      return;\n    }\n    if (teamMember.state === USER_INVITE_STATE.ACCEPTED) {\n      if (role === TEAM_MEMBER_ROLE.CAPTAIN) {\n        setNroCaptains(nroCaptains + 1);\n      } else {\n        setNroCaptains(nroCaptains - 1);\n      }\n    }\n    teamMember.role = role;\n    teamMember.dirty = true;\n    setParticipants(teamMembers);\n  };\n\n  const onRemoveMemberClick = (member) => {\n    if (disableRemoveMember(member)) {\n      return;\n    }\n    if (member.role === TEAM_MEMBER_ROLE.CAPTAIN) {\n      if (nroCaptains > 1 || member.state === USER_INVITE_STATE.PENDING) {\n        removeTeamMember(member);\n      }\n    } else {\n      removeTeamMember(member);\n    }\n  };\n\n  const onChangeRoleMemberClick = (member) => {\n    if (member.role === TEAM_MEMBER_ROLE.CAPTAIN) {\n      if (nroCaptains > 1 || member.state === USER_INVITE_STATE.PENDING) {\n        changeMemberRole(member, TEAM_MEMBER_ROLE.REGULAR);\n      }\n    } else {\n      changeMemberRole(member, TEAM_MEMBER_ROLE.CAPTAIN);\n    }\n  };\n\n  const disableChangeMember = (member) => {\n    if (member.role !== TEAM_MEMBER_ROLE.CAPTAIN) {\n      return false;\n    }\n    if (member.state === USER_INVITE_STATE.ACCEPTED && (nroCaptains === 1 || member.creator)) {\n      return true;\n    }\n    return false;\n  };\n\n  const disableRemoveMember = (member) => {\n    if (member.role !== TEAM_MEMBER_ROLE.CAPTAIN) {\n      return false;\n    }\n    if (member.state === USER_INVITE_STATE.ACCEPTED && (nroCaptains === 1 || member.creator)) {\n      return true;\n    }\n    if (user.dynamoUser.userId === member.userId) {\n      return true;\n    }\n    return false;\n  };\n\n  useEffect(() => {\n    setFilterdParticipants(\n      participants.filter(\n        (p) => !(p.state === USER_INVITE_STATE.CANCELLED || p.state === USER_INVITE_STATE.REJECTED)\n      )\n    );\n  }, [participants]);\n\n  useEffect(() => {\n    if (handleModal) {\n      handleModal(addUserModalVisible);\n    }\n  }, [addUserModalVisible]);\n\n  useEffect(() => {\n    setNroCaptains(initialNroCaptains);\n  }, [initialNroCaptains]);\n\n  return (\n    <>\n      <Table>\n        <TableHead>\n          <TableRow>\n            <TableHeader>Members</TableHeader>\n            <TableHeader>Role</TableHeader>\n            <Can\n              yes={() =>\n                canEditTeam && !isJoinView ? (\n                  <TableHeader center width=\"5%\">\n                    <UnregularButton onClick={() => setAddUserModalVisible(true)} active>\n                      +\n                    </UnregularButton>\n                  </TableHeader>\n                ) : (\n                  <TableHeader width=\"5%\" />\n                )\n              }\n              data={user.userInTeam}\n              perform={contextAction}\n              role={user.role}\n              rules={rules}\n            />\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {loadingParticipants ? (\n            <TableItemSkeleton numberOfCells={3} />\n          ) : (\n            filteredParticipants.map((member) => {\n              const isCaptain = member.role === TEAM_MEMBER_ROLE.CAPTAIN;\n              return (\n                <TableRow captain={isCaptain} key={member.name}>\n                  <TableData>\n                    <Flex style={{ position: 'relative' }} alignItems=\"center\">\n                      {member.state === USER_INVITE_STATE.PENDING ? (\n                        <>\n                          <Flex\n                            alignItems=\"center\"\n                            data-tip\n                            data-for={member.name}\n                            style={{\n                              position: 'absolute',\n                            }}\n                          >\n                            {member.name}\n                            <Flex ml=\"6px\">\n                              <InfoIcon size=\"16px\" />\n                            </Flex>\n                          </Flex>\n                          <Tooltip id={member.name} place=\"right\">\n                            {member.name} has not confirmed yet\n                          </Tooltip>\n                        </>\n                      ) : (\n                        <RegularText mediumWeight fontSize=\"14px\">\n                          {member.name}\n                        </RegularText>\n                      )}\n                    </Flex>\n                  </TableData>\n                  <TableData>{toLower(member.role)}</TableData>\n                  <Can\n                    yes={() => (\n                      <TableData>\n                        {canEditTeam && !isJoinView && (\n                          <ContextMenu button={<TreeDotsIcon />}>\n                            <>\n                              <ContextMenuItem>\n                                <LinkedText\n                                  disabled={disableRemoveMember(member)}\n                                  onClick={() => onRemoveMemberClick(member)}\n                                >\n                                  Remove {toLower(member.role)}\n                                </LinkedText>\n                              </ContextMenuItem>\n                              <ContextMenuItem>\n                                <LinkedText\n                                  disabled={disableChangeMember(member)}\n                                  onClick={() => onChangeRoleMemberClick(member)}\n                                >\n                                  {isCaptain ? 'Demote to member' : 'Promote to captain'}\n                                </LinkedText>\n                              </ContextMenuItem>\n                            </>\n                          </ContextMenu>\n                        )}\n                      </TableData>\n                    )}\n                    data={user.userInTeam}\n                    perform={contextAction}\n                    role={user.role}\n                    rules={rules}\n                  />\n                </TableRow>\n              );\n            })\n          )}\n        </TableBody>\n      </Table>\n\n      {addUserModalVisible && (\n        <SearchUsers\n          onClose={() => setAddUserModalVisible(false)}\n          event={event}\n          participants={filteredParticipants}\n          addParticipants={addMember}\n          screenWidthSchema={screenWidthSchema}\n        />\n      )}\n    </>\n  );\n}\n\nexport default TeamMembersTable;\n","import React, { useState } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport truncate from 'lodash/truncate';\nimport { StyledText, FormLabel, Tooltip, CancelIcon, PencilIcon, InfoIcon, CheckIcon, TeamIcon } from 'boss-ui';\nimport FormInput from '../forms/FormInput';\nimport { TEAM_NAME_REGEXP } from '../../libs/constants';\n\nexport default function TeamNameBadge(props) {\n  const [editionActive, activateEdition] = useState(false);\n  const [saveHover, mouseHoverSave] = useState(false);\n  const [cancelHover, mouseHoverCancel] = useState(false);\n  const {\n    name,\n    editionAllowed,\n    onNameChange,\n    available,\n    validating,\n    onNameReset,\n    onNameChanged,\n    mobile,\n  } = props;\n\n  const validName = available && name.match(TEAM_NAME_REGEXP);\n\n  return (\n    <Flex alignItems={mobile ? 'flex-start' : 'center'} flexDirection={mobile ? 'column' : 'row'}>\n      {!mobile && <TeamIcon size=\"100px\" backgroundColor=\"#535353\" />}\n      {editionActive ? (\n        <Box style={{ position: 'relative' }} width={mobile ? '90%' : '60%'}>\n          <FormLabel>Team Name</FormLabel>\n          <FormInput\n            id=\"name\"\n            autoFocus\n            placeholder=\"Enter a name for your team\"\n            value={name}\n            onChange={onNameChange}\n            validate={name}\n            validating={validating}\n            available={available}\n            pattern={TEAM_NAME_REGEXP}\n            unavailableMessage=\"This name was already taken!\"\n            invalidPatternMessage=\"From 3 to 30 length, spaces, a-z, 0-9 and _ allowed\"\n            validMessage=\"Team name is available\"\n          />\n          <Flex\n            data-tip\n            data-for=\"name_info\"\n            style={{\n              position: 'absolute',\n              right: '-30px',\n              top: '33px',\n            }}\n          >\n            <InfoIcon />\n          </Flex>\n          <Tooltip id=\"name_info\" place=\"right\">\n            The team name you choose will be visible to all other BOTS participants. You may wish to\n            avoid identifying yourself or your organization by name! (3 characters at least,\n            alphanumerics, spaces and underscores allowed)\n          </Tooltip>\n        </Box>\n      ) : (\n        <Flex ml=\"16px\">\n          <StyledText size=\"40px\" light>\n            {truncate(name, { length: 22, omission: '...' })}\n          </StyledText>\n        </Flex>\n      )}\n      {editionAllowed && (\n        <Flex\n          style={\n            mobile\n              ? {\n                  width: '100%',\n                  display: 'flex',\n                  flexDirection: 'column',\n                  alignItems: 'flex-end',\n                  paddingRight: '10%',\n                  marginTop: '-30px',\n                  zIndex: '1',\n                }\n              : { marginLeft: 'auto' }\n          }\n        >\n          {editionActive ? (\n            <Flex>\n              <Flex\n                onMouseLeave={() => mouseHoverSave(false)}\n                onMouseEnter={() => mouseHoverSave(true)}\n                onClick={() => {\n                  if (validName && !validating) {\n                    onNameChanged();\n                    activateEdition(false);\n                  }\n                }}\n              >\n                <CheckIcon hover={saveHover} disabled={!validName} />\n              </Flex>\n              <Flex\n                ml=\"10px\"\n                onMouseLeave={() => mouseHoverCancel(false)}\n                onMouseEnter={() => mouseHoverCancel(true)}\n                onClick={() => {\n                  onNameReset();\n                  activateEdition(false);\n                }}\n              >\n                <CancelIcon hover={cancelHover} />\n              </Flex>\n            </Flex>\n          ) : (\n            <Flex\n              onClick={() => activateEdition(true)}\n              ml={mobile ? '10px' : ''}\n              mt={mobile ? '-5px' : ''}\n            >\n              <PencilIcon />\n            </Flex>\n          )}\n        </Flex>\n      )}\n    </Flex>\n  );\n}\n","import React, { useMemo, useState } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport styled from 'styled-components';\nimport { Button, Modal, RegularText, StyledText, BotsIcon, BooIcon, Paginator, PublicIcon, PrivateIcon, OpenIcon, CloseIcon } from 'boss-ui';\nimport { BOTS_TYPE, DEFAULT_BOX_BORDER_STYLE } from '../../libs/constants';\nimport { getEventShortName } from '../../libs/event-lib';\n\nconst Image = styled.img`\n  object-fit: cover;\n  width: 100%;\n`;\n\nexport default function TeamWizardModal({\n  onClose = () => {},\n  eventType = BOTS_TYPE.SOC,\n  mobile = false,\n}) {\n  const [currentPage, setCurrentPage] = useState(0);\n  const eventShortName = getEventShortName(eventType);\n  const eventIcon = useMemo(\n    () => (eventType === BOTS_TYPE.SOC ? <BotsIcon size={300} /> : <BooIcon size={200} />),\n    [eventType]\n  );\n\n  const pages = [\n    <>\n      <Flex my=\"16px\">\n        <StyledText light>Welcome to {eventShortName}!</StyledText>\n      </Flex>\n      <Flex>{eventIcon}</Flex>\n      <Flex>\n        <RegularText>\n          For playing {eventShortName} you need to be part of a team. You can create your own team\n          and send invites to your mates or join to a formed team.\n        </RegularText>\n      </Flex>\n    </>,\n    <>\n      <Flex my=\"16px\">\n        <StyledText light>Creating a new team</StyledText>\n      </Flex>\n      <Flex style={DEFAULT_BOX_BORDER_STYLE}>\n        <Image src={`${process.env.PUBLIC_URL}/wizard_create_team_screen.png`} alt=\"create_team\" />\n      </Flex>\n      <Flex my=\"10px\">\n        <RegularText>\n          Go to the Team tab and choose to CREATE A NEW TEAM, think about the coolest name possible\n          and then send invites to your friends. You can always change your team name or send other\n          invites after creation\n        </RegularText>\n      </Flex>\n    </>,\n    <>\n      <Flex my=\"16px\">\n        <StyledText light>Joining a created team</StyledText>\n      </Flex>\n      <Flex style={DEFAULT_BOX_BORDER_STYLE}>\n        <Image src={`${process.env.PUBLIC_URL}/wizard_join_team_screen.png`} alt=\"join_team\" />\n      </Flex>\n      <Flex my=\"10px\">\n        <RegularText>\n          Go to the Team tab and choose to JOIN A TEAM, search for a team by name. You can see the\n          team formation as long as the team is public and / or join to the team if is open. You can\n          also accept or reject invitations from here\n        </RegularText>\n      </Flex>\n      <Flex width={1} mb=\"20px\">\n        <Flex justifyContent=\"center\" alignItems=\"center\" width={1 / 4}>\n          <OpenIcon inverted />\n          <RegularText mediumWeight fontSize=\"11px\">\n            Open team\n          </RegularText>\n        </Flex>\n        <Flex justifyContent=\"center\" alignItems=\"center\" width={1 / 4}>\n          <CloseIcon inverted />\n          <RegularText mediumWeight fontSize=\"11px\">\n            Closed team\n          </RegularText>\n        </Flex>\n        <Flex justifyContent=\"center\" alignItems=\"center\" width={1 / 4}>\n          <PublicIcon inverted />\n          <RegularText mediumWeight fontSize=\"11px\">\n            Public team\n          </RegularText>\n        </Flex>\n        <Flex justifyContent=\"center\" alignItems=\"center\" width={1 / 4}>\n          <PrivateIcon inverted />\n          <RegularText mediumWeight fontSize=\"11px\">\n            Private team\n          </RegularText>\n        </Flex>\n      </Flex>\n    </>,\n  ];\n\n  return (\n    <Modal\n      active\n      onBackgroundClick={onClose}\n      margin={mobile ? '10% 2% auto 2%' : '10% 25% 10% 25%'}\n      hideScroll\n      mobile={mobile}\n    >\n      <Flex\n        p={mobile ? '10px' : '40px'}\n        flexDirection=\"column\"\n        alignItems=\"center\"\n        backgroundColor=\"#1d1d1d\"\n      >\n        {pages[currentPage]}\n        <Flex justifyContent=\"space-between\" width={1} alignItems=\"center\">\n          <Box>\n            <Button id=\"dismissBtn\" onClick={onClose} secondary>\n              Dismiss\n            </Button>\n          </Box>\n          <Paginator\n            isNext={pages.length > currentPage + 1}\n            onNext={() => setCurrentPage((current) => current + 1)}\n            isPrev={currentPage > 0}\n            onPrev={() => setCurrentPage((current) => current - 1)}\n          />\n        </Flex>\n      </Flex>\n    </Modal>\n  );\n}\n","import styled from 'styled-components';\nimport { ToastContainer } from 'react-toastify';\n\nconst ToastContainerNotification = styled(ToastContainer)`\n  .Toastify__toast-container {\n  }\n  .Toastify__toast {\n    background: ${(props) => props.theme.color.toastNotification.toast.background};\n    box-shadow: 0px 4px 10px ${(props) => props.theme.color.toastNotification.toast.boxShadow};\n  }\n  .Toastify__toast--error {\n    justify-content: center;\n  }\n  .Toastify__toast--warning {\n  }\n  .Toastify__toast--success {\n  }\n  .Toastify__toast-body {\n  }\n  .Toastify__progress-bar {\n    background: ${(props) => props.theme.color.toastNotification.progressBar.background};\n  }\n`;\n\nexport default ToastContainerNotification;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst Button = styled.span`\n  content: '';\n  position: absolute;\n  left: 2px;\n  top: 2px;\n  width: 18px;\n  height: 18px;\n  border-radius: 12px;\n  transition: 0.2s;\n  background: #d0d0d0;\n  box-shadow: 0 0 2px 0 rgba(10, 10, 10, 0.29);\n`;\n\nconst Label = styled.label`\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  cursor: pointer;\n  width: 38px;\n  height: 22px;\n  background: #535353;\n  border-radius: 50px;\n  position: relative;\n  &:active ${Button} {\n    width: 10px;\n  }\n`;\n\nconst Input = styled.input`\n  height: 0;\n  width: 0;\n  visibility: hidden;\n  &:checked + ${Label} ${Button} {\n    left: calc(100% - 2px);\n    transform: translateX(-100%);\n  }\n  &:checked + ${Label} {\n    background-color: #66bb6a;\n  }\n`;\n\nexport default function ToggleButton({ isOn, onToggle }) {\n  return (\n    <Flex mx=\"5px\" align=\"center\" className=\"ToggleButton-FlexToggle\">\n      <Input\n        checked={isOn}\n        onChange={onToggle}\n        id=\"react-switch-new\"\n        className=\"ToggleButton-Input\"\n        type=\"checkbox\"\n      />\n      <Label htmlFor=\"react-switch-new\" id=\"labelToggleButton\">\n        <Button />\n      </Label>\n    </Flex>\n  );\n}\n","import React from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { FormLabel, Tooltip, PublicIcon, PrivateIcon, SwitchButton, QuestionCircleIcon } from 'boss-ui';\n\nexport default function VisibilityToggle(props) {\n  const { fieldValue, handleFieldChange } = props;\n  return (\n    <Box style={{ position: 'relative' }}>\n      <FormLabel>Team Visibility</FormLabel>\n      <SwitchButton\n        checked={fieldValue}\n        handleToggle={handleFieldChange}\n        id=\"visibility\"\n        onIcon={<PublicIcon />}\n        offIcon={<PrivateIcon />}\n        onText=\"Public\"\n        offText=\"Private\"\n      />\n      <Flex\n        data-tip\n        data-for=\"visibility_question\"\n        style={{\n          position: 'absolute',\n          right: '-30px',\n          top: '26px',\n        }}\n      >\n        <QuestionCircleIcon />\n      </Flex>\n      <Tooltip id=\"visibility_question\" place=\"right\">\n        Set the team visibility to public if you want the team members' names to appear to others during the team formation process.\n      </Tooltip>\n    </Box>\n  );\n}\n","import React, { useState, useMemo, useEffect } from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport { withTheme } from 'styled-components';\nimport get from 'lodash/get';\nimport { LinkedText, Tabs } from 'boss-ui';\nimport Text from '../Text';\n\nconst TABS_LABELS = ['MORE INFO', 'RESOURCES', 'TRANSCRIPTION'];\n\nconst getTabsContent = (workshop, transcript = '', classLinks = [], colors) => ({\n  0: (\n    <Box\n      width={1}\n      mt=\"20px\"\n      style={{\n        fontFamily: 'Roboto Mono',\n        fontSize: '14px',\n        textAlign: 'left',\n        color: colors.regular,\n        fontWeight: 400,\n        wordBreak: 'break-all',\n      }}\n    >\n      <>\n        Access the <span style={{ color: colors.server }}>Splunk Server</span> to answer questions\n        throughout this workshop, using the below shown{' '}\n        <span style={{ color: colors.server }}>server</span> and{' '}\n        <span style={{ color: colors.credentials }}>credentials:</span>\n      </>\n      <Box\n        style={{ border: '1px solid #2C2C2C', wordBreak: 'break-all' }}\n        my=\"16px\"\n        width=\"400px\"\n        p=\"16px\"\n      >\n        <p>\n          SplunkServer:{' '}\n          <span style={{ color: colors.server }}>\n            <LinkedText onClick={() => window.open(get(workshop, 'serverUrl', ''), '_blank')}>\n              {get(workshop, 'serverUrl', '-')}\n            </LinkedText>\n          </span>\n        </p>\n        <p>\n          User ID:{' '}\n          <span style={{ color: colors.credentials }}>{get(workshop, 'serverUsername', '-')}</span>\n        </p>\n        <p>\n          Password:{' '}\n          <span style={{ color: colors.credentials }}>{get(workshop, 'serverPassword', '-')}</span>\n        </p>\n      </Box>\n    </Box>\n  ),\n  1: (\n    <Box\n      width={1}\n      mt=\"20px\"\n      style={{\n        fontFamily: 'Roboto Mono',\n        fontSize: '14px',\n        textAlign: 'left',\n        color: colors.regular,\n        fontWeight: 400,\n        wordBreak: 'break-all',\n      }}\n    >\n      {!!classLinks.length && <p>Links for further reading:</p>}\n      {classLinks.map((link) => (\n        <p key={link}>\n          <LinkedText onClick={() => window.open(link, '_blank')} color={colors.links}>\n            {link}\n          </LinkedText>\n        </p>\n      ))}\n    </Box>\n  ),\n  2: (\n    <Text p=\"0\" style={{ whiteSpace: 'pre-wrap' }}>\n      {transcript}\n    </Text>\n  ),\n});\n\nfunction WorkshopAdditionalInfoMenu(props) {\n  const { workshop, classTranscript, classLinks, theme } = props;\n  const [currentTabIdx, setCurrentTabIdx] = useState(0);\n  const [transcript, setTranscript] = useState('');\n\n  const tabsContent = useMemo(\n    () => getTabsContent(workshop, transcript, classLinks, theme.color.workshopAdditionalInfo),\n    [workshop, transcript, classLinks, theme]\n  );\n\n  useEffect(() => {\n    const getClassTranscript = async () => {\n      try {\n        if (!classTranscript || classTranscript.url === '') {\n          setTranscript('');\n          return;\n        }\n        const rq = await fetch(`${classTranscript.url}`, {\n          headers: { 'Cache-Control': 'max-age=0, must-revalidate' },\n        });\n        if (rq.ok) {\n          setTranscript(await rq.text());\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.error(e);\n      }\n    };\n\n    getClassTranscript();\n  }, [classTranscript]);\n\n  return (\n    <Box px=\"24px\" minHeight=\"500px\">\n      <Tabs current={currentTabIdx} onTabChange={setCurrentTabIdx} labels={TABS_LABELS} />\n      <Flex mt=\"26px\">{tabsContent[currentTabIdx]}</Flex>\n    </Box>\n  );\n}\n\nexport default withTheme(WorkshopAdditionalInfoMenu);\n","import React, { useState, useEffect } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport styled, { css } from 'styled-components';\nimport { useHistory } from 'react-router-dom';\nimport { StyledText } from 'boss-ui';\nimport { ExpandIcon, CollapseIcon, CheckMark, TimerIcon } from '../icons';\n\nconst isVisibleSlug = (activeClassSlug, slug) => {\n  if (activeClassSlug.indexOf(slug) > -1) {\n    return true;\n  }\n  return false;\n};\n\nexport default function WorkshopContentMenu({ content, title, activeClassSlug, classesProgress }) {\n  const { done, total, completed } = classesProgress;\n\n  return (\n    <>\n      <Box pt=\"24px\" pb=\"12px\" px=\"20px\" style={{ borderBottom: 'solid 1px #2C2C2C' }}>\n        <StyledText light size=\"20px\">\n          {title}\n        </StyledText>\n        <Flex\n          style={{\n            borderTop: 'solid 1px #2C2C2C',\n            color: '#81a2be',\n            fontFamily: 'Roboto Mono',\n          }}\n          mt=\"12px\"\n          py=\"6px\"\n          alignItems=\"center\"\n        >\n          <TimerIcon />\n          <Flex mx=\"3px\" />\n          {Math.ceil((completed / total) * 100)}%\n        </Flex>\n      </Box>\n      {content.map((c) => (\n        <Flex my=\"2px\" style={{ fontFamily: 'Roboto Mono' }} width={1} key={c.slug}>\n          <WorkshopTopic\n            title={c.title}\n            slug={c.slug}\n            subTopics={c.children}\n            activeClassSlug={activeClassSlug}\n            classesDone={done}\n          />\n        </Flex>\n      ))}\n    </>\n  );\n}\n\nconst WorkshopTopic = ({\n  title = '',\n  slug = '',\n  subTopics,\n  activeClassSlug = '',\n  classesDone = [],\n  innerLevel = 1,\n}) => {\n  const history = useHistory();\n  const [visible, setVisible] = useState(isVisibleSlug(activeClassSlug, slug));\n  const menuPadding = 18 * innerLevel;\n\n  useEffect(() => {\n    setVisible(isVisibleSlug(activeClassSlug, slug));\n  }, [activeClassSlug]);\n\n  return (\n    <Box width={1}>\n      <TopicTitle\n        visible={visible}\n        onTitleClick={() => setVisible((visible) => !visible)}\n        menuPadding={menuPadding}\n      >\n        {title}\n      </TopicTitle>\n      <Box>\n        {visible &&\n          subTopics.map((st) => {\n            if (st.children.length) {\n              return (\n                <WorkshopTopic\n                  title={st.title}\n                  subTopics={st.children}\n                  activeClassSlug={activeClassSlug}\n                  key={st.slug}\n                  slug={st.slug}\n                  classesDone={classesDone}\n                  innerLevel={innerLevel + 1}\n                />\n              );\n            }\n            const classDone = classesDone[st.slug];\n            return (\n              <TopicChildren\n                key={st.slug}\n                isActive={st.slug === activeClassSlug}\n                onClick={() => history.push(st.slug)}\n                isDone={classDone}\n                menuPadding={menuPadding}\n              >\n                {classDone && (\n                  <Box minWidth=\"24px\">\n                    <CheckMark />\n                  </Box>\n                )}\n                <Flex ml=\"6px\">{st.title}</Flex>\n              </TopicChildren>\n            );\n          })}\n      </Box>\n    </Box>\n  );\n};\n\nconst TopicTitle = ({ visible, children, onTitleClick, menuPadding }) => {\n  return (\n    <Flex\n      style={{ color: '#DE935F', cursor: 'pointer', fontSize: '12px' }}\n      onClick={onTitleClick}\n      width={1}\n      py=\"17px\"\n      pr=\"20px\"\n      pl={`${menuPadding}px`}\n    >\n      <Box minWidth=\"15px\">{visible ? <CollapseIcon /> : <ExpandIcon />}</Box>\n      <Flex ml=\"4px\">{children}</Flex>\n    </Flex>\n  );\n};\n\nconst TopicChildren = styled.div`\n  font-size: 12px;\n  display: flex;\n  align-items: center;\n  color: ${(props) => props.theme.color.card.classic.description};\n  text-align: left;\n  font-weight: 300;\n  padding: 17px 17px 17px 0px;\n  padding-left: ${(props) => `${props.menuPadding + 15}px`};\n  background-color: #252525;\n  cursor: pointer;\n  &:hover {\n    background-color: #2c2c2c;\n  }\n  ${(props) =>\n    props.isDone &&\n    css`\n      background-color: #1d1d1d;\n      color: ${props.theme.color.breadcrumb.active};\n    `}\n  ${(props) =>\n    props.isActive &&\n    css`\n      background-color: #2c2c2c;\n      color: ${props.theme.color.breadcrumb.active};\n    `}\n`;\n","import React from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport get from 'lodash/get';\nimport WorkshopContent from './WorkshopContent';\nimport { LinkedText, TabScreen } from 'boss-ui';\n\nconst PURPLE_COLOR = '#A088A4';\nconst GREEN_COLOR = '#61ADA1';\nconst BLUE_COLOR = '#81A2BE';\n\nconst getTabsNames = (workshop) => {\n  const arrNames = [{ label: 'SUMMARY' }, { label: 'RESOURCES' }];\n  if (workshop.linksList && workshop.linksList.list) {\n    arrNames.push({ label: 'MORE INFO' });\n  }\n  return arrNames;\n};\n\nconst getTabsContent = (workshop, workshopLinks = { list: [] }) => ({\n  0: (\n    <Flex width={1} mt=\"20px\" style={{ wordBreak: 'break-all' }}>\n      <WorkshopContent content={workshop.content.workshop} />\n    </Flex>\n  ),\n  1: (\n    <Box\n      width={1}\n      mt=\"20px\"\n      style={{\n        fontFamily: 'Roboto Mono',\n        fontSize: '14px',\n        textAlign: 'left',\n        color: '#A0A0A0',\n        fontWeight: 400,\n        wordBreak: 'break-all',\n      }}\n    >\n      <>\n        Access the <span style={{ color: GREEN_COLOR }}>Splunk Server</span> to answer questions\n        throughout this workshop, using the below shown{' '}\n        <span style={{ color: GREEN_COLOR }}>server</span> and{' '}\n        <span style={{ color: PURPLE_COLOR }}>credentials:</span>\n      </>\n      <Box style={{ border: '1px solid #2C2C2C', wordBreak: 'break-all' }} my=\"16px\" p=\"16px\">\n        <p>\n          SplunkServer:{' '}\n          <span style={{ color: GREEN_COLOR }}>\n            <LinkedText onClick={() => window.open(get(workshop, 'serverUrl', ''), '_blank')}>\n              {get(workshop, 'serverUrl', '-')}\n            </LinkedText>\n          </span>\n        </p>\n        <p>\n          User ID:{' '}\n          <span style={{ color: PURPLE_COLOR }}>{get(workshop, 'serverUsername', '-')}</span>\n        </p>\n        <p>\n          Password:{' '}\n          <span style={{ color: PURPLE_COLOR }}>{get(workshop, 'serverPassword', '-')}</span>\n        </p>\n      </Box>\n    </Box>\n  ),\n  2: (\n    <Box\n      width={1}\n      mt=\"20px\"\n      style={{\n        fontFamily: 'Roboto Mono',\n        fontSize: '14px',\n        textAlign: 'left',\n        color: '#A0A0A0',\n        fontWeight: 400,\n        wordBreak: 'break-all',\n      }}\n    >\n      <p>Links for further reading:</p>\n      {workshopLinks.list.map((item) => {\n        return (\n          <p key={item.url}>\n            <LinkedText onClick={() => window.open(item.url, '_blank')} color={BLUE_COLOR}>\n              {item.title}\n            </LinkedText>\n          </p>\n        );\n      })}\n    </Box>\n  ),\n});\n\nexport default function WorkshopTabs({ workshop = {} }) {\n  return (\n    <Box mt=\"66px\" width={1}>\n      <TabScreen\n        tabs={getTabsNames(workshop)}\n        tabsContent={getTabsContent(workshop, workshop.linksList)}\n      />\n    </Box>\n  );\n}\n","import styled from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst ContainerEvtPlayerMobile = styled(Flex)`\n  background-color: ${(props) => props.theme.color.navigationMenu.background.inactive};\n  height: 40px;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  border-top: 2px solid #121212;\n`;\nContainerEvtPlayerMobile.displayName = 'ContainerEvtPlayerMobile';\n\nexport default ContainerEvtPlayerMobile;\n","import React, { useMemo, useState, useEffect, useCallback } from 'react';\nimport Media from 'react-media';\nimport { Box, Flex } from 'reflexbox';\nimport isEmpty from 'lodash/isEmpty';\nimport get from 'lodash/get';\nimport Api from '../../api';\nimport ContainerEvtPlayerMobile from '../ContainerEvtPlayerMobile';\nimport CountDown from '../CountDown';\nimport { FloatingPanel } from 'boss-ui';\nimport PointsCard from '../teams/PointsCard';\nimport {\n  NAV_MOBILE_MAXWIDTH,\n  EVENT_DELIVERY,\n  DEFAULT_ON_DEMAND_EVENT_DURATION,\n  ONE_MINUTE_MS,\n  MAX_INT32,\n} from '../../libs/constants';\nimport { useAppContext } from '../../libs/context-lib';\nimport { isTodayAfterThan, isTodayBetween } from '../../libs/dates-lib';\nimport { onError } from '../../libs/error-lib';\n\nconst nowDate = new Date();\nconst API = new Api();\n\nexport default function EventFloatingBox({ isAdmin = false, hideScoring = false }) {\n  const { event, setEvent, user } = useAppContext();\n  const [teamPoints, setTeamPoints] = useState(0);\n  const [loadingTeamPoints, setLoadingTeamPoints] = useState(false);\n  const isOnDemandEvent = useMemo(\n    () => event.delivery === EVENT_DELIVERY.ON_DEMAND,\n    [event.delivery]\n  );\n  const userWithoutTeam = useMemo(() => isEmpty(user.userInTeam), [user.userInTeam]);\n\n  const countDownStartDate = useMemo(() => {\n    if (!isOnDemandEvent) {\n      return event.startDate;\n    }\n    if (event.participant && event.participant.joinDate) {\n      return event.participant.joinDate;\n    }\n    return nowDate;\n  }, [isOnDemandEvent, event.startDate, event.participant]);\n\n  const countDownEndDate = useMemo(() => {\n    if (!isOnDemandEvent) {\n      return event.endDate;\n    }\n    if (event.duration) {\n      if (event.participant && event.participant.joinDate) {\n        const joinDate = new Date(event.participant.joinDate);\n        return new Date(joinDate.getTime() + event.duration * ONE_MINUTE_MS);\n      }\n      return new Date(nowDate.getTime() + event.duration * ONE_MINUTE_MS);\n    }\n    return new Date(nowDate.getTime() + DEFAULT_ON_DEMAND_EVENT_DURATION * ONE_MINUTE_MS);\n  }, [isOnDemandEvent, event.endDate, event.participant, event.duration]);\n\n  const getPoints = useCallback(async () => {\n    setLoadingTeamPoints(true);\n    try {\n      const rq = await API.get('events', `/events/${event.eventId}/score`);\n      setTeamPoints(get(rq, 'score.total', 0));\n    } catch (e) {\n      onError(e);\n    } finally {\n      setLoadingTeamPoints(false);\n    }\n  }, [event.eventId]);\n  const shouldRenderPointsBox = !hideScoring && (!userWithoutTeam || isOnDemandEvent);\n\n  useEffect(() => {\n    if (isOnDemandEvent || !userWithoutTeam) {\n      getPoints();\n    }\n  }, [getPoints, isOnDemandEvent, userWithoutTeam]);\n\n  // set isEventRunning to false in order to block some UI actions\n  useEffect(() => {\n    const endDateInMs = new Date(countDownEndDate).getTime() - new Date().getTime();\n    let eventRunningTimeout;\n    // setTimeout limit is MAX_INT32 if end date in ms is bigger avoid timeout\n    if (endDateInMs < MAX_INT32) {\n      eventRunningTimeout = setTimeout(() => {\n        console.log(\n          `EVENT-END-TIMEOUT countDownEndDate: ${countDownEndDate}, isEventRunning: false, isEventEnded: true`\n        );\n        setEvent((e) => ({ ...e, isEventRunning: false, isEventEnded: true }));\n      }, endDateInMs);\n    }\n    return () => clearTimeout(eventRunningTimeout);\n  }, [countDownEndDate, setEvent]);\n\n  // set isEventStarted to true in order to show up the scoring in the menu\n  useEffect(() => {\n    let startEventInterval;\n    const startDateInMs = new Date(countDownStartDate).getTime() - new Date().getTime();\n    // setTimeout limit is MAX_INT32 if start date in ms is bigger avoid timeout\n    if (startDateInMs < MAX_INT32) {\n      startEventInterval = setTimeout(() => {\n        console.log(\n          `EVENT-START-TIMEOUT countDownStartDate: ${countDownStartDate}, countDownEndDate: ${countDownEndDate}, isEventStarted: true, isEventRunning: ${isTodayBetween(\n            countDownStartDate,\n            countDownEndDate\n          )}, isEventEnded: ${isTodayAfterThan(countDownEndDate)}`\n        );\n        setEvent((e) => ({\n          ...e,\n          isEventStarted: true,\n          isEventRunning: isTodayBetween(countDownStartDate, countDownEndDate),\n          isEventEnded: isTodayAfterThan(countDownEndDate),\n        }));\n      }, startDateInMs);\n    }\n    return () => clearTimeout(startEventInterval);\n  }, [countDownStartDate, countDownEndDate, setEvent]);\n\n  useEffect(() => {\n    console.log(\n      `EFFECT countDownStartDate: ${countDownStartDate}, countDownEndDate: ${countDownEndDate}, isEventStarted: ${isTodayAfterThan(\n        countDownStartDate\n      )}, isEventRunning: ${isTodayBetween(\n        countDownStartDate,\n        countDownEndDate\n      )}, isEventEnded: ${isTodayAfterThan(countDownEndDate)}`\n    );\n    setEvent((e) => ({\n      ...e,\n      isEventRunning: isTodayBetween(countDownStartDate, countDownEndDate),\n      isEventStarted: isTodayAfterThan(countDownStartDate),\n      isEventEnded: isTodayAfterThan(countDownEndDate),\n    }));\n  }, [countDownStartDate, countDownEndDate, setEvent]);\n\n  return (\n    <Media query={`(max-width: ${NAV_MOBILE_MAXWIDTH})`}>\n      {(mobileScreen) => (\n        <>\n          {mobileScreen ? (\n            <ContainerEvtPlayerMobile>\n              <Flex pl=\"12px\">\n                <CountDown\n                  isAdminView={isAdmin}\n                  endDate={countDownEndDate}\n                  startDate={countDownStartDate}\n                  mobile\n                />\n              </Flex>\n              <Flex style={{ minWidth: '185px' }}>\n                {shouldRenderPointsBox && (\n                  <PointsCard\n                    showRefresh={event.isEventRunning}\n                    teamPoints={teamPoints}\n                    onRefresh={getPoints}\n                    loading={loadingTeamPoints}\n                    isOnDemandEvent={isOnDemandEvent}\n                    sessionId={get(event, 'participant.sessionId')}\n                    mobile\n                  />\n                )}\n              </Flex>\n            </ContainerEvtPlayerMobile>\n          ) : (\n            <FloatingPanel>\n              <Box style={{ position: 'fixed', top: '130px', zIndex: '100' }}>\n                <CountDown\n                  isAdminView={isAdmin}\n                  endDate={countDownEndDate}\n                  startDate={countDownStartDate}\n                />\n                {shouldRenderPointsBox && (\n                  <PointsCard\n                    showRefresh={event.isEventRunning}\n                    teamPoints={teamPoints}\n                    onRefresh={getPoints}\n                    loading={loadingTeamPoints}\n                    isOnDemandEvent={isOnDemandEvent}\n                    sessionId={get(event, 'participant.sessionId')}\n                  />\n                )}\n              </Box>\n            </FloatingPanel>\n          )}\n        </>\n      )}\n    </Media>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Flex, Box } from 'reflexbox';\nimport Media from 'react-media';\n\nconst Container = styled(Flex)`\n  border: 1px solid ${(props) => props.theme.color.messageCard.border};\n  width: 100%;\n  align-items: center;\n`;\n\nconst Image = styled.img`\n  height: 200px;\n`;\n\nconst Message = styled(Flex)`\n  font-size: 20px;\n  font-family: 'Roboto Mono';\n  font-weight: normal;\n  color: ${(props) => props.theme.color.text.medium.color};\n  text-align: left;\n  overflow: hidden;\n  font-weight: 300;\n`;\n\nexport default function MalloryMessage({ message }) {\n  return (\n    <Media query=\"(max-width:640px)\">\n      {(matches) => (\n        <Container flexDirection={matches ? 'column' : 'row'}>\n          <Box ml={matches ? 0 : '50px'}>\n            <Image\n              src={`${process.env.PUBLIC_URL}/mallory_workshops_desktop@2x.png`}\n              alt=\"mallory\"\n            />\n          </Box>\n          <Message width={matches ? 1 : 3 / 4} p={matches ? '20px' : 0}>\n            {message}\n          </Message>\n        </Container>\n      )}\n    </Media>\n  );\n}\n","import React, { useState, useLayoutEffect } from 'react';\nimport trim from 'lodash/trim';\nimport { Flex, Box } from 'reflexbox';\nimport { Button, RegularText, LinkedText, FormLabel, Input, EVENT_QUESTION_STATUS } from 'boss-ui';\nimport { CheckMark } from '../icons';\nimport { useLocalStorage } from '../../libs/hooks-lib';\n\nconst AnswerCorrect = ({ answer }) => (\n  <Flex alignItems=\"center\">\n    <RegularText color=\"#81C784\" mediumWeight style={{ wordBreak: 'break-all' }}>\n      {answer}\n    </RegularText>\n    <Flex minWidth=\"24px\">\n      <CheckMark />\n    </Flex>\n  </Flex>\n);\n\nexport default function QuestionAnswer({\n  localStorageId,\n  isExternal,\n  externalURL,\n  isQuestionCorrect,\n  lastQuestionAnswer,\n  onSubmitAnswer,\n  isSubmittingAnswer,\n}) {\n  const [answerInput, setAnswerInput] = useLocalStorage(localStorageId, '');\n  const [incorrectAnswer, setIncorrectAnswer] = useState(false);\n\n  useLayoutEffect(() => {\n    if (\n      lastQuestionAnswer.state === EVENT_QUESTION_STATUS.INCORRECT &&\n      !lastQuestionAnswer.isWebSocketAnswer\n    ) {\n      setIncorrectAnswer(true);\n    }\n  }, [lastQuestionAnswer]);\n\n  const handleEnterSubmit = (e) => {\n    if (e.key === 'Enter' && trim(answerInput) !== '') {\n      onSubmitAnswer(answerInput);\n    }\n  };\n\n  if (isExternal) {\n    return isQuestionCorrect ? (\n      <AnswerCorrect answer={lastQuestionAnswer.text} />\n    ) : (\n      <Flex mt=\"12px\" style={{ whiteSpace: 'break-spaces' }}>\n        <RegularText>Answer this question in </RegularText>\n        <RegularText>\n          {externalURL ? (\n            <LinkedText\n              className=\"QuestionAnswerExternalURL\"\n              onClick={() => window.open(externalURL, '_blank')}\n            >\n              this external server\n            </LinkedText>\n          ) : (\n            'the external server'\n          )}\n        </RegularText>\n      </Flex>\n    );\n  }\n\n  return (\n    <Box mt=\"20px\">\n      <Flex mb=\"4px\">\n        <FormLabel>Answer</FormLabel>\n      </Flex>\n      <Flex alignItems=\"baseline\" width={1}>\n        {isQuestionCorrect ? (\n          <AnswerCorrect answer={lastQuestionAnswer.text} />\n        ) : (\n          <>\n            <Input\n              className=\"QuestionAnswerInputAnswer\"\n              onChange={(e) => {\n                setIncorrectAnswer(false);\n                setAnswerInput(e.target.value);\n              }}\n              value={answerInput}\n              placeholder=\"Enter your answer\"\n              height=\"28px\"\n              onKeyDown={handleEnterSubmit}\n              id=\"QuestionAnswer-Input\"\n              dangerBorder={incorrectAnswer}\n            />\n            <Box ml=\"6px\" width=\"200px\">\n              <Button\n                className=\"QuestionAnswerSubmitAnswer\"\n                onClick={() => onSubmitAnswer(answerInput)}\n                isLoading={isSubmittingAnswer}\n                disabled={!answerInput.length || trim(answerInput) === ''}\n                id=\"QuestionAnswer-Button\"\n              >\n                SUBMIT\n              </Button>\n            </Box>\n          </>\n        )}\n      </Flex>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { useTheme } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { CheckMark } from '../icons';\nimport { RegularText, CrossIcon, QuestionIcon as QuestionMark, EVENT_QUESTION_STATUS } from 'boss-ui';\n\nfunction QuestionState({ status, iconSize = 24 }) {\n  const theme = useTheme();\n  switch (status) {\n    case EVENT_QUESTION_STATUS.CORRECT:\n      return (\n        <Flex alignItems=\"center\">\n          <CheckMark size={iconSize} />\n          <RegularText fontSize=\"14px\" color={theme.color.question_card.color.correct}>\n            Correct\n          </RegularText>\n        </Flex>\n      );\n    case EVENT_QUESTION_STATUS.INCORRECT:\n      return (\n        <Flex alignItems=\"center\">\n          <CrossIcon size={iconSize} color={theme.color.table.row.incorrect} />\n          <RegularText fontSize=\"14px\" color={theme.color.question_card.color.incorrect}>\n            Incorrect\n          </RegularText>\n        </Flex>\n      );\n    default:\n      return (\n        <Flex alignItems=\"center\">\n          <QuestionMark size={iconSize} />\n          <RegularText fontSize=\"14px\" color={theme.color.question_card.color.pending}>\n            Not Answered\n          </RegularText>\n        </Flex>\n      );\n  }\n}\n\nexport default QuestionState;","import React from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport format from 'date-fns/format';\nimport {\n  RegularText,\n  Modal,\n  UnregularButton,\n  Table,\n  TableBody,\n  TableRow,\n  TableData,\n} from 'boss-ui';\nimport QuestionAnswerItem from './QuestionAnswerItem';\n\nconst Hint = ({ createdAt, username, score }) => {\n  return (\n    <Box p=\"4px\" style={{ whiteSpace: 'break-spaces' }}>\n      <RegularText mediumWeight fontSize=\"13px\" mb=\"6px\">\n        HINT PURCHASE{' '}\n      </RegularText>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"13px\">Time: </RegularText>\n        <RegularText fontSize=\"12px\">{format(new Date(createdAt), 'PPpp')}</RegularText>\n      </Flex>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"13px\">User: </RegularText>\n        <RegularText fontSize=\"12px\">{username}</RegularText>\n      </Flex>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        <RegularText fontSize=\"13px\">Hint cost: </RegularText>\n        <RegularText fontSize=\"12px\">{score.total}</RegularText>\n      </Flex>\n    </Box>\n  );\n};\n\nexport default function QuestionHistoryModal({ answers = [], onClose, questionId }) {\n  return (\n    <Modal margin=\"10% auto auto auto\" onBackgroundClick={onClose}>\n      <Flex\n        px=\"40px\"\n        py=\"60px\"\n        width=\"640px\"\n        backgroundColor=\"#1D1D1D\"\n        flexDirection=\"column\"\n        maxHeight=\"360px\"\n      >\n        <Flex height=\"0px\">\n          <Flex ml=\"auto\" style={{ position: 'relative', top: '-40px', left: '30px' }}>\n            <UnregularButton onClick={onClose}>Close Details</UnregularButton>\n          </Flex>\n        </Flex>\n        <Flex mb=\"8px\">\n          <RegularText mediumWeight fontSize=\"14px\">\n            #{questionId}\n          </RegularText>\n        </Flex>\n        <RegularText fontSize=\"14px\">Question Activity</RegularText>\n        <Flex style={{ overflowY: 'auto' }} mt=\"6px\">\n          <Table>\n            <TableBody>\n              {answers.map((answer) => {\n                return (\n                  <TableRow key={answer.createdAt}>\n                    <TableData>\n                      {answer.type === 'HINT' ? (\n                        <Hint {...answer} />\n                      ) : (\n                        <>\n                          <RegularText mediumWeight fontSize=\"13px\" mb=\"2px\" ml=\"4px\">\n                            ANSWER SUBMIT\n                          </RegularText>\n                          <QuestionAnswerItem {...answer} />\n                        </>\n                      )}\n                    </TableData>\n                  </TableRow>\n                );\n              })}\n            </TableBody>\n          </Table>\n        </Flex>\n      </Flex>\n    </Modal>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport isEmpty from 'lodash/isEmpty';\nimport { ShakeContent } from 'boss-ui';\nimport { DEFAULT_BOX_BORDER_STYLE } from '../../libs/constants';\n\nconst Row = styled.tr`\n  margin: 6px;\n  height: 20px;\n  ${(props) =>\n    props.correct &&\n    css`\n      color: ${props.theme.color.table.row.correct};\n    `}\n  ${(props) =>\n    props.incorrect &&\n    css`\n      color: ${props.theme.color.table.row.incorrect};\n    `}\n`;\nconst Cell = styled.td`\n  ${(props) =>\n    props.right &&\n    css`\n      text-align: right;\n    `}\n`;\nconst TableHead = styled.thead``;\nconst ScoreTable = styled.table`\n  border: ${DEFAULT_BOX_BORDER_STYLE.border};\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  color: ${(props) => props.theme.color.text.regular.color};\n  border-collapse: collapse;\n  white-space: nowrap;\n  ${TableHead} {\n    background-color: ${(props) => props.theme.color.table.header.background};\n    color: ${(props) => props.theme.color.text.light.color};\n  }\n  ${Cell} {\n    padding: ${(props) => props.theme.margin.xs};\n  }\n`;\n\nconst EMPTY_ANSWER_SCORE = { total: 0, base: 0, bonus: 0, penalty: 0 };\n\nexport default function PointsTable({ score, shakeTotal }) {\n  const { total, base, bonus, penalty } = isEmpty(score) ? EMPTY_ANSWER_SCORE : score;\n  return (\n    <ScoreTable>\n      <TableHead>\n        <Row>\n          <Cell>Total Points:</Cell>\n          <Cell right>\n            <ShakeContent shake={shakeTotal} justifyContent=\"flex-end\">\n              {total}\n            </ShakeContent>\n          </Cell>\n        </Row>\n      </TableHead>\n      <tbody>\n        <Row correct>\n          <Cell>Base points:</Cell>\n          <Cell right>{Math.round(base)}</Cell>\n        </Row>\n        <Row correct>\n          <Cell>Bonus points:</Cell>\n          <Cell right>{Math.round(bonus)}</Cell>\n        </Row>\n        <Row incorrect>\n          <Cell>Penalty points:</Cell>\n          <Cell right>{-Math.round(penalty)}</Cell>\n        </Row>\n      </tbody>\n    </ScoreTable>\n  );\n}\n","import React from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { useTheme } from 'styled-components';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { \nCopyClipboardIcon, \nQuestionCircleIcon, \nTooltip, \nRegularText, \nLinkedText, \nContextMenu, \nContextMenuItem, \nCopyToClipboard,\n} \nfrom 'boss-ui';\nimport { DEFAULT_BOX_BORDER_STYLE, RESOURCES_COLORS } from '../libs/constants';\n\nconst showCredentials = (res) => {\n  if (\n    res.username !== undefined &&\n    res.username !== null &&\n    res.username !== '' &&\n    res.password !== undefined &&\n    res.password !== null &&\n    res.password !== ''\n  ) {\n    return true;\n  }\n  return false;\n};\n\nexport default function ResourcesTable({\n  loading = false,\n  resources = [],\n  ignoreTooltip = false,\n  errorMsg = null,\n  mobile,\n}) {\n  const SKELETON_STYLE = {\n    COLOR: useTheme().color.skeleton.color,\n    EFFECT: useTheme().color.skeleton.highlightColor,\n  };  \n  let resourceBlock = null;\n\n  if (!loading && errorMsg && errorMsg !== null) {\n    resourceBlock = (\n      <Flex style={DEFAULT_BOX_BORDER_STYLE} p=\"8px\" justifyContent=\"space-between\">\n        <RegularText mediumWeight fontSize=\"14px\" color=\"#A0A0A0\">\n          {errorMsg}\n        </RegularText>\n      </Flex>\n    );\n  } else if (!loading && errorMsg === null && resources) {\n    resourceBlock = resources.map((resource, idx) => {\n      const showCredentialsInTable = showCredentials(resource);\n      return (\n        <Flex\n          style={DEFAULT_BOX_BORDER_STYLE}\n          p=\"8px\"\n          key={resource.name}\n          className=\"ResourcesTable-resourceBox\"\n          flexDirection={mobile ? 'column' : 'row'}\n          alignItems={mobile ? 'flex-end' : ''}\n          width={1}\n        >\n          <RegularText\n            width={1}\n            mediumWeight\n            fontSize=\"14px\"\n            color={RESOURCES_COLORS[idx]}\n            textAlign=\"left\"\n            style={{ wordBreak: 'break-all' }}\n          >\n            <LinkedText onClick={() => window.open(resource.instance_url, '_blank')}>\n              {resource.instance_url}\n            </LinkedText>\n          </RegularText>\n          <Flex justifyContent=\"flex-end\">\n            {showCredentialsInTable ? (\n              <Flex width={1}>\n                {!mobile && (\n                  <RegularText\n                    mediumWeight\n                    mr=\"10px\"\n                    fontSize=\"14px\"\n                    style={{\n                      display: showCredentialsInTable ? '' : 'none',\n                      wordBreak: 'break-all',\n                    }}\n                    color=\"#A5D6A7\"\n                    textAlign=\"right\"\n                    className=\"ResourcesTable-credentials\"\n                  >\n                    {resource.username} / {resource.password}\n                  </RegularText>\n                )}\n                <Flex width=\"35px\">\n                  <ContextMenu width=\"20px\" mobile button={<CopyClipboardIcon />}>\n                    <ContextMenuItem>\n                      <Flex justifyContent=\"space-between\" width={1}>\n                        <RegularText mediumWeight fontSize=\"12px\" light>\n                          Username\n                        </RegularText>\n                        <CopyToClipboard value={resource.username} idx={idx} />\n                      </Flex>\n                    </ContextMenuItem>\n                    <ContextMenuItem>\n                      <Flex justifyContent=\"space-between\" width={1}>\n                        <RegularText mediumWeight fontSize=\"12px\" light>\n                          Password\n                        </RegularText>\n                        <CopyToClipboard value={resource.password} idx={idx} />\n                      </Flex>\n                    </ContextMenuItem>\n                    <ContextMenuItem>\n                      <Flex justifyContent=\"space-between\" width={1}>\n                        <RegularText mediumWeight fontSize=\"12px\" light>\n                          Url\n                        </RegularText>\n                        <CopyToClipboard value={resource.instance_url} idx={idx} />\n                      </Flex>\n                    </ContextMenuItem>\n                  </ContextMenu>\n                </Flex>\n              </Flex>\n            ) : (\n              <Flex width=\"33px\">\n                <CopyToClipboard idx={idx} mobile={mobile} />\n              </Flex>\n            )}\n          </Flex>\n        </Flex>\n      );\n    });\n  }\n\n  return (\n    <>\n      <Flex mb=\"4px\" alignItems=\"center\">\n        {!ignoreTooltip && (\n          <>\n            <Flex ml=\"6px\" data-tip data-for=\"resources\">\n              <QuestionCircleIcon size=\"20px\" />\n            </Flex>\n            <Tooltip id=\"resources\" place=\"right\">\n              Use these resources to complete the scenario. In light green the username/password to\n              login to the server.\n            </Tooltip>\n          </>\n        )}\n      </Flex>\n      <Box>\n        {loading ? (\n          <SkeletonTheme color={SKELETON_STYLE.COLOR} highlightColor={SKELETON_STYLE.EFFECT}>\n            <Skeleton count={3} />\n          </SkeletonTheme>\n        ) : (\n          resourceBlock\n        )}\n      </Box>\n    </>\n  );\n}\n","import React from 'react';\nimport styled, { css, withTheme } from 'styled-components';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { Flex } from 'reflexbox';\nimport { QuestionIcon as QuestionMark, CrossIcon } from 'boss-ui';\nimport { CheckMark } from '../icons';\nimport { DEFAULT_BOX_BORDER_STYLE, SKELTELON_STYLE } from '../../libs/constants';\n\nconst Row = styled.tr`\n  margin: 6px;\n  height: 20px;\n  ${(props) =>\n    props.correct &&\n    css`\n      color: ${props.theme.color.table.row.correct};\n    `}\n  ${(props) =>\n    props.incorrect &&\n    css`\n      color: ${props.theme.color.table.row.incorrect};\n    `}\n`;\n\nconst Cell = styled.td`\n  ${(props) =>\n    props.right &&\n    css`\n      text-align: right;\n    `}\n`;\nconst TableHead = styled.thead``;\nconst Table = styled.table`\n  border: ${DEFAULT_BOX_BORDER_STYLE.border};\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  color: ${(props) => props.theme.color.text.regular.color};\n  width: 200px;\n  border-collapse: collapse;\n  ${TableHead} {\n    background-color: ${(props) => props.theme.color.table.header.background};\n    color: ${(props) => props.theme.color.text.light.color};\n  }\n  ${Cell} {\n    padding: ${(props) => props.theme.margin.xs};\n  }\n`;\n\nconst IconInLine = ({ icon }) => <Flex mr=\"6px\">{icon}</Flex>;\nconst LoadingPoint = <Skeleton circle width=\"15px\" height=\"15px\" />;\n\nconst StatusTable = ({ loading, score = {}, theme }) => {\n  const { total, unanswered, correct, incorrect } = score;\n  return (\n    <SkeletonTheme color={SKELTELON_STYLE.COLOR} highlightColor={SKELTELON_STYLE.EFFECT}>\n      <Table>\n        <TableHead>\n          <Row>\n            <Cell>Total Questions:</Cell>\n            <Cell right> {loading ? LoadingPoint : total}</Cell>\n          </Row>\n        </TableHead>\n        <tbody>\n          <Row>\n            <Cell>\n              <Flex alignItems=\"center\">\n                <IconInLine icon={<QuestionMark />} />\n                Unanswered:\n              </Flex>\n            </Cell>\n            <Cell right>{loading ? LoadingPoint : unanswered}</Cell>\n          </Row>\n          <Row correct>\n            <Cell>\n              <Flex alignItems=\"center\">\n                <IconInLine icon={<CheckMark />} />\n                Correct:\n              </Flex>\n            </Cell>\n            <Cell right>{loading ? LoadingPoint : correct}</Cell>\n          </Row>\n          <Row incorrect>\n            <Cell>\n              <Flex alignItems=\"center\">\n                <IconInLine icon={<CrossIcon color={theme.color.table.row.incorrect} />} />\n                Incorrect:\n              </Flex>\n            </Cell>\n            <Cell right>{loading ? LoadingPoint : incorrect}</Cell>\n          </Row>\n        </tbody>\n      </Table>\n    </SkeletonTheme>\n  );\n};\n\nexport default withTheme(StatusTable);\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport Media from 'react-media';\nimport { QuestionCard, QUESTION_CARD_DEFAULT_WIDTH } from 'boss-ui';\nimport QuestionBigCard from './QuestionBigCard';\n\nconst getGridConfiguration = (matches) => {\n  if (matches.s) {\n    return '1fr';\n  }\n  if (matches.xl) {\n    return '1fr 1fr 1fr';\n  }\n  return `${QUESTION_CARD_DEFAULT_WIDTH} ${QUESTION_CARD_DEFAULT_WIDTH}`;\n};\n\nexport default function QuestionsGrid({\n  questions,\n  onQuestionCardClick = () => {},\n  onQuestionCardClosed = () => {},\n  onQuestionRemoved = () => {},\n  focusedQuestionId,\n  removingQuestionId,\n  questionNavigation,\n  isEditionView = false,\n}) {\n  return (\n    <Media\n      queries={{\n        s: '(max-width: 1000px)',\n        m: '(max-width: 1290px)',\n        l: '(max-width: 1540px)',\n        xl: '(min-width: 1880px)',\n      }}\n    >\n      {(matches) => (\n        <Flex\n          style={{\n            display: 'grid',\n            gridTemplateColumns: getGridConfiguration(matches),\n            gridGap: '22px',\n            gridAutoFlow: 'dense',\n          }}\n          className=\"ScenarioQuestions-Questions\"\n        >\n          {questions.map((q, idx) => {\n            const isSelected = focusedQuestionId === q.question.question_id;\n            const isQuestionBeingRemoving = removingQuestionId === q.question.question_id;\n            return (\n              <React.Fragment key={q.question.question_id}>\n                <QuestionCard\n                  selectedCard={isSelected}\n                  question={q.question}\n                  answer={q.answer}\n                  points={q.total}\n                  onSelectCard={() => onQuestionCardClick(q.question)}\n                  isEditionView={isEditionView}\n                  onRemoveQuestion={() => onQuestionRemoved(q.question.question_id)}\n                  removingQuestion={isQuestionBeingRemoving}\n                />\n                {isSelected &&\n                  <QuestionBigCard\n                    question={q.question}\n                    answer={q.answer}\n                    points={q.total}\n                    media={matches}\n                    onCloseCard={onQuestionCardClosed}\n                    gridNavigation={questionNavigation(idx)}\n                  />\n                }\n              </React.Fragment>\n            );\n          })}\n        </Flex>\n      )}\n    </Media>\n  );\n}\n","import React from 'react';\nimport { Flex } from 'reflexbox';\nimport Media from 'react-media';\nimport { QuestionInLine } from 'boss-ui';\nimport QuestionBigCard from './QuestionBigCard';\n\nexport default function ScenarioQuestions({\n  questions,\n  onQuestionCardClick = () => {},\n  onQuestionCardClosed = () => {},\n  onQuestionRemoved = () => {},\n  focusedQuestionId,\n  removingQuestionId,\n  questionNavigation,\n  isEditionView = false,\n}) {\n  return (\n    <Media\n      queries={{\n        s: '(max-width: 1000px)',\n        m: '(max-width: 1290px)',\n        l: '(max-width: 1540px)',\n        xl: '(min-width: 1880px)',\n      }}\n    >\n      {(matches) => (\n        <Flex width={1} flexDirection=\"column\">\n          {questions.map((q, idx) => {\n            const isSelected = focusedQuestionId === q.question.question_id;\n            const isQuestionBeingRemoving = removingQuestionId === q.question.question_id;\n            return (\n              <React.Fragment key={q.question.question_id}>\n                <QuestionInLine\n                  selectedCard={isSelected}\n                  question={q.question}\n                  answer={q.answer}\n                  points={q.total}\n                  onSelectCard={() => onQuestionCardClick(q.question)}\n                  isEditionView={isEditionView}\n                  onRemoveQuestion={() => onQuestionRemoved(q.question.question_id)}\n                  removingQuestion={isQuestionBeingRemoving}\n                />\n                {isSelected &&\n                  <QuestionBigCard\n                    question={q.question}\n                    answer={q.answer}\n                    points={q.total}\n                    media={matches}\n                    onCloseCard={onQuestionCardClosed}\n                    gridNavigation={questionNavigation(idx)}\n                  />\n                }\n              </React.Fragment>\n            );\n          })}\n        </Flex>\n      )}\n    </Media>\n  );\n}\n","import React, { useState } from 'react';\nimport { Flex } from 'reflexbox';\nimport { GridIcon, ListIcon } from 'boss-ui';\nimport { DISPLAY_QUESTIONS_MODE } from '../../libs/constants';\n\nexport default function ScenarioQuestionsDisplaySelector({ onSelected, selected }) {\n  const [listHover, setListHover] = useState(false);\n  const [gridHover, setGridHover] = useState(false);\n  return (\n    <Flex ml=\"auto\" width=\"60px\" justifyContent=\"space-between\">\n      <Flex\n        onMouseEnter={() => setListHover(true)}\n        onMouseLeave={() => setListHover(false)}\n        onClick={() => onSelected(DISPLAY_QUESTIONS_MODE.LIST)}\n        className=\"ScenarioQuestionsDisplaySelector-ListIcon\"\n      >\n        <ListIcon hover={listHover} selected={selected === DISPLAY_QUESTIONS_MODE.LIST} />\n      </Flex>\n      <Flex\n        onMouseOver={() => setGridHover(true)}\n        onMouseLeave={() => setGridHover(false)}\n        onClick={() => onSelected(DISPLAY_QUESTIONS_MODE.GRID)}\n        className=\"ScenarioQuestionsDisplaySelector-GridIcon\"\n      >\n        <GridIcon hover={gridHover} selected={selected === DISPLAY_QUESTIONS_MODE.GRID} />\n      </Flex>\n    </Flex>\n  );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport intersectionBy from 'lodash/intersectionBy';\nimport isEmpty from 'lodash/isEmpty';\nimport QuestionsGrid from './QuestionsGrid';\nimport QuestionsList from './QuestionsList';\nimport {\n  RegularText,\n  Select,\n  QuestionCardSkeleton,\n  QuestionInlineSkeleton,\n  EVENT_QUESTION_STATUS,\n} from 'boss-ui';\nimport { DISPLAY_QUESTIONS_MODE } from '../../libs/constants';\nimport WebSocketClient from '../websocket';\nimport { updateQuestionBy, updateQuestionByWS } from '../../libs/question-lib';\nimport { useScenarioContext } from '../../libs/context-lib';\nimport { useLocalStorage } from '../../libs/hooks-lib';\nimport Api from '../../api';\nimport ScenarioQuestionsDisplaySelector from './ScenarioQuestionsDisplaySelector';\n\nconst wsClient = new WebSocketClient({ customMessageEvents: ['TEAM_ANSWER_UPDATE'] });\n\nconst SELECT_FILTER_OPTIONS = [\n  { value: 'ALL', label: 'Show All' },\n  { value: 'INCORRECT', label: 'Attempted' },\n  { value: 'CORRECT', label: 'Answered Correctly' },\n  { value: 'PENDING', label: 'Not Answered' },\n];\n\nconst filterQuestionsByState = (state, questions) => {\n  if (state === 'ALL') {\n    return questions;\n  }\n  return questions.filter((q) => {\n    if (state === EVENT_QUESTION_STATUS.PENDING && isEmpty(q.answer)) {\n      return true;\n    }\n    if (q.answer && state === q.answer.state) {\n      return true;\n    }\n    return false;\n  });\n};\n\nconst API = new Api();\n\nexport default function ScenarioQuestions() {\n  const { setScenarioQuestions, scenarioQuestions, loadingScenario, currentScenario } =\n    useScenarioContext();\n  const [focusedQuestionId, setFocusedQuestionId] = useState(null);\n  const [filterQuestionValue, setFilterQuestionsValue] = useState(SELECT_FILTER_OPTIONS[0]);\n  const [filterdScenarioQuestions, setFilteredScenarioQuestions] = useState(scenarioQuestions);\n  const [displayMode, setDisplayMode] = useLocalStorage(\n    `${currentScenario.scenarioId}-display`,\n    DISPLAY_QUESTIONS_MODE.GRID\n  );\n\n  const onQuestionCardClick = (question) => {\n    const questionId = question.question_id;\n    if (focusedQuestionId === questionId) {\n      setFocusedQuestionId(null);\n    } else {\n      setFocusedQuestionId(questionId);\n    }\n  };\n\n  const onFilterChange = (selected) => {\n    setFilterQuestionsValue(selected);\n    setFilteredScenarioQuestions(filterQuestionsByState(selected.value, scenarioQuestions));\n  };\n\n  const getQuestionNavigation = useCallback(\n    (questionIndex) => ({\n      goNext: () =>\n        setFocusedQuestionId(filterdScenarioQuestions[questionIndex + 1].question.question_id),\n      goPrev: () =>\n        setFocusedQuestionId(filterdScenarioQuestions[questionIndex - 1].question.question_id),\n      isNext: questionIndex + 1 < filterdScenarioQuestions.length,\n      isPrev: questionIndex > 0,\n    }),\n    [filterdScenarioQuestions]\n  );\n\n  /*\n  When the source list changes or the selected card does, \n  update the grid with the filtered values only if there is no selected card,\n  */\n  useEffect(() => {\n    if (!focusedQuestionId) {\n      setFilteredScenarioQuestions(\n        filterQuestionsByState(filterQuestionValue.value, scenarioQuestions)\n      );\n    }\n  }, [focusedQuestionId, scenarioQuestions]);\n\n  /*\n  Updates the grid with the updated values only if there is a selected card\n  */\n  useEffect(() => {\n    if (focusedQuestionId) {\n      setFilteredScenarioQuestions((filterdScenarioQuestions) =>\n        intersectionBy(scenarioQuestions, filterdScenarioQuestions, 'question.question_id')\n      );\n    }\n  }, [scenarioQuestions]);\n\n  const answerUpdateHandler = useCallback(\n    async (update) => {\n      const { questionId, scenarioId, eventId } = update;\n      if (currentScenario?.scenarioId === scenarioId) {\n        const updatedQuestion = await API.get(\n          'users',\n          `/user/events/${eventId}/scenarios/${scenarioId}/questions/${questionId}`\n        );\n        setScenarioQuestions(\n          updateQuestionBy(\n            scenarioQuestions,\n            updatedQuestion.question,\n            questionId,\n            updateQuestionByWS\n          )\n        );\n      }\n    },\n    [scenarioQuestions, currentScenario?.scenarioId, setScenarioQuestions]\n  );\n\n  useEffect(() => {\n    wsClient.on('TEAM_ANSWER_UPDATE', answerUpdateHandler);\n    return () => wsClient.removeListener('TEAM_ANSWER_UPDATE', answerUpdateHandler);\n  }, [answerUpdateHandler]);\n\n  // Clean focused question if scenario is changed\n  useEffect(() => {\n    setFocusedQuestionId(null);\n  }, [currentScenario.scenarioId]);\n\n  return (\n    <Flex flexDirection=\"column\" width={1}>\n      <Flex alignItems=\"center\">\n        <Box my=\"12px\" width=\"300px\">\n          <Flex>\n            <RegularText fontSize=\"14px\">Filter by:</RegularText>\n          </Flex>\n          <Select\n            value={filterQuestionValue}\n            onChange={onFilterChange}\n            options={SELECT_FILTER_OPTIONS}\n          />\n        </Box>\n        <ScenarioQuestionsDisplaySelector\n          onSelected={(v) => setDisplayMode(v)}\n          selected={displayMode}\n        />\n      </Flex>\n      <Flex justifyContent=\"center\">\n        {loadingScenario ? (\n          displayMode === DISPLAY_QUESTIONS_MODE.GRID ? (\n            <QuestionCardSkeleton />\n          ) : (\n            <QuestionInlineSkeleton />\n          )\n        ) : displayMode === DISPLAY_QUESTIONS_MODE.GRID ? (\n          <QuestionsGrid\n            questions={filterdScenarioQuestions}\n            onQuestionCardClick={onQuestionCardClick}\n            onQuestionCardClosed={() => setFocusedQuestionId(null)}\n            focusedQuestionId={focusedQuestionId}\n            questionNavigation={getQuestionNavigation}\n          />\n        ) : (\n          <QuestionsList\n            questions={filterdScenarioQuestions}\n            onQuestionCardClick={onQuestionCardClick}\n            onQuestionCardClosed={() => setFocusedQuestionId(null)}\n            focusedQuestionId={focusedQuestionId}\n            questionNavigation={getQuestionNavigation}\n          />\n        )}\n      </Flex>\n    </Flex>\n  );\n}\n","import React, { useEffect } from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport differenceInMilliseconds from 'date-fns/differenceInMilliseconds';\nimport { DEFAULT_BOX_BORDER_STYLE } from '../../libs/constants';\nimport { Tooltip, RegularText, InfoIcon } from 'boss-ui';\nimport { getHourMinuteDifference } from '../../libs/dates-lib';\n\nconst formatReleaseDate = (releaseTime) => {\n  if (releaseTime.minutes > 1) {\n    if (releaseTime.hour === 0) {\n      return `${releaseTime.minutes} minutes`;\n    }\n    if (releaseTime.hour > 1) {\n      return `${releaseTime.hour} hours and ${releaseTime.minutes} minutes`;\n    }\n    return `${releaseTime.hour} hour and ${releaseTime.minutes} minutes`;\n  }\n  if (releaseTime.hour === 0) {\n    return `${releaseTime.minutes} minute`;\n  }\n  if (releaseTime.hour > 1) {\n    return `${releaseTime.hour} hours and ${releaseTime.minutes} minute`;\n  }\n  return `${releaseTime.hour} hour and ${releaseTime.minutes} minute`;\n};\n\nexport default function TimeBasedHint({ hints = [], totalHints, onRefreshHintsList }) {\n  let releaseTimeOut;\n  useEffect(() => {\n    // avoid process if there is no hints\n    if (hints.length) {\n      // get the activation date of the closest one\n      const firstHintToRelease = hints.reduce((selectedCandidate, candidate) => {\n        const closest = new Date(selectedCandidate.activation);\n        const closestCandidate = new Date(candidate.activation);\n        const now = new Date();\n        if (closest < now) {\n          return candidate;\n        }\n        if (closest > closestCandidate && closestCandidate > now) {\n          return candidate;\n        }\n        return selectedCandidate;\n      });\n      const distanceToReleace = differenceInMilliseconds(\n        new Date(firstHintToRelease.activation),\n        new Date()\n      );\n      if (distanceToReleace) {\n        releaseTimeOut = setTimeout(() => onRefreshHintsList(), distanceToReleace);\n      }\n    }\n    return () => clearTimeout(releaseTimeOut);\n  }, []);\n\n  return (\n    <>\n      <Flex mb=\"4px\">\n        <RegularText mediumWeight fontSize=\"14px\">\n          {`Hints [${totalHints}]`}\n        </RegularText>\n        <Flex data-tip data-for=\"hints\" ml=\"6px\">\n          <InfoIcon />\n          <Tooltip id=\"hints\">The hints will be released as time goes by..</Tooltip>\n        </Flex>\n      </Flex>\n      {hints.map((hint) => (\n        <Box p=\"10px\" style={DEFAULT_BOX_BORDER_STYLE} key={hint.hint_id}>\n          {hint.hint ? (\n            <RegularText fontSize=\"14px\" color=\"#E5C07B\">\n              {hint.hint}\n            </RegularText>\n          ) : (\n            <RegularText fontSize=\"14px\">\n              Hint will be released in{' '}\n              {formatReleaseDate(getHourMinuteDifference(new Date(hint.activation), new Date()))}\n            </RegularText>\n          )}\n        </Box>\n      ))}\n    </>\n  );\n}\n","import React, { useState, useMemo } from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport { DEFAULT_BOX_BORDER_STYLE } from '../../libs/constants';\nimport { ConfirmationModal, Tooltip, RegularText, UnregularButton, InfoIcon } from 'boss-ui';\n\nexport default function BuyBasedHint({ hints = [], totalHints, onBuyHint, active = true }) {\n  const [hintBuyInformation, setHintBuyInformation] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const numberVisibleHints = useMemo(\n    () => hints.reduce((sum, hint) => (hint.hint ? sum + 1 : sum), 0),\n    [hints]\n  );\n\n  const buyHint = async () => {\n    setLoading(true);\n    await onBuyHint(hintBuyInformation.hint_id);\n    setHintBuyInformation(null);\n    setLoading(false);\n  };\n\n  return (\n    <>\n      {hintBuyInformation && (\n        <ConfirmationModal\n          onAccept={buyHint}\n          onCancel={() => setHintBuyInformation(null)}\n          loading={loading}\n          acceptLabel=\"PURCHASE\"\n        >\n          <Flex width=\"300px\" alignItems=\"center\" flexDirection=\"column\">\n            <RegularText light>Purchase hint?</RegularText>\n            <RegularText light>Cost: {hintBuyInformation.hint_cost}</RegularText>\n          </Flex>\n        </ConfirmationModal>\n      )}\n      <Flex mb=\"4px\">\n        <RegularText mediumWeight fontSize=\"14px\">\n          {`Hints purchased [${numberVisibleHints} / ${totalHints}]`}\n        </RegularText>\n        <Flex data-tip data-for=\"hints\" ml=\"6px\">\n          <InfoIcon />\n          <Tooltip id=\"hints\">Buy hints using your team points..</Tooltip>\n        </Flex>\n      </Flex>\n      {hints.map((hint) => (\n        <Flex width={1} key={hint.hint_id}>\n          <Box p=\"10px\" style={DEFAULT_BOX_BORDER_STYLE} width={1 / 5}>\n            <RegularText color={hint.hint ? '#E06C75' : '#D0D0D0'} fontSize=\"14px\">\n              - {hint.hint_cost} points\n            </RegularText>\n          </Box>\n          <Box p=\"10px\" style={DEFAULT_BOX_BORDER_STYLE} width={4 / 5}>\n            <RegularText fontSize=\"14px\" color=\"#E5C07B\">\n              {hint.hint ? (\n                hint.hint\n              ) : (\n                <UnregularButton\n                  onClick={() => {\n                    setHintBuyInformation(hint);\n                  }}\n                  disabled={!active}\n                >\n                  Purchase Hint\n                </UnregularButton>\n              )}\n            </RegularText>\n          </Box>\n        </Flex>\n      ))}\n    </>\n  );\n}\n","import React from 'react';\nimport { SCENARIO_HINTS_STRATEGIES } from '../../libs/constants';\nimport TimeBasedHint from './TimeBasedHint';\nimport BuyBasedHint from './BuyBasedHint';\n\nexport default function HintsTable(props) {\n  return props.hintsStrategy === SCENARIO_HINTS_STRATEGIES.TIME ? (\n    <TimeBasedHint {...props} />\n  ) : (\n    <BuyBasedHint {...props} />\n  );\n}\n","import endsWith from 'lodash/endsWith';\nimport get from 'lodash/get';\nimport { Auth, Signer } from 'aws-amplify';\nimport { BOTS_TYPE, NUMBERS } from './constants';\nimport config from './../config';\n\nconst DOMAINS = [\n  { domain: 'bots', type: BOTS_TYPE.SOC },\n  { domain: 'boo', type: BOTS_TYPE.NOC },\n  { domain: 'botn', type: BOTS_TYPE.NOC },\n  { domain: 'playbots', type: BOTS_TYPE.SOC },\n  { domain: 'playbotn', type: BOTS_TYPE.NOC },\n  { domain: 'localhost', type: BOTS_TYPE.SOC },\n];\n\nexport const getAppType = () => {\n  let type = BOTS_TYPE.SOC;\n  DOMAINS.forEach((d) => {\n    if (config.appType.includes(d.domain)) {\n      type = d.type;\n    }\n  });\n  return type;\n};\n\nexport const setUserHeaders = (loggedUser = {}) => {\n  try {\n    window.user = {\n      email: get(loggedUser, 'dynamoUser.email'),\n      displayName: get(loggedUser, 'dynamoUser.displayName'),\n      userName: loggedUser.username,\n    };\n  } catch (e) {\n    // eslint-disable-next-line no-console\n    console.error('Unable to set user headers', e);\n  }\n};\n\nexport const deleteUserHeaders = () => delete window.user;\n\nexport const getImageURLSized = (url, size) => {\n  switch (size) {\n    case 'small': {\n      return `https:${url}?fit=fill&w=330&h=186`;\n    }\n    case 'medium': {\n      return `https:${url}?fit=fill&w=550&h=310`;\n    }\n    case 'large': {\n      return `https:${url}?fit=fill&w=766&h=432`;\n    }\n    default:\n      return `https:${url}?fit=fill&w=330`;\n  }\n};\n\nexport const getFaviconEl = () => document.getElementById('favicon');\n\nexport function removePlural(string) {\n  if (endsWith(string, 's')) {\n    return string.substr(NUMBERS.ZERO, string.length - NUMBERS.ONE);\n  }\n  return string;\n}\n\nexport function reloadPage() {\n  window.location.reload();\n}\n\nexport function sendWarning(text = '', reloadpage = false) {\n  console.warn(text);\n  if (reloadpage) {\n    setTimeout(() => {\n      reloadPage();\n    }, 600);\n  }\n}\n\nexport const isValidPattern = (text, pattern) => {\n  return pattern.test(text);\n};\n\nexport function isNumeric(value) {\n  return /^\\d+$/.test(value);\n}\n\nexport function parseJwt(token) {\n  const base64Url = token.split('.')[1];\n  const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n  const jsonPayload = decodeURIComponent(\n    atob(base64)\n      .split('')\n      .map(function (c) {\n        return `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`;\n      })\n      .join('')\n  );\n\n  return JSON.parse(jsonPayload);\n}\n\nexport function getHashObjectInURL(location) {\n  const lochash = location.hash.substr(1);\n  const paramMap = {};\n  lochash.split('&').reduce((o, current) => {\n    const split = current.split('=');\n    o[split[0]] = split[1];\n    return o;\n  }, paramMap);\n  return paramMap;\n}\n\nexport function scrollToHash(location) {\n  const hash = location.hash;\n  if (hash) {\n    const element = document.getElementById(hash.split('#').join(''));\n    if (element) {\n      window.scroll({ top: element.offsetTop - 115 });\n      return;\n    }\n  }\n  // If element not present, scroll to the top\n  window.scrollTo(0, 0);\n}\n\n// sign a request using Amplify Auth and Signer\nexport async function signRequest(params) {\n  const essentialCredentials = Auth.essentialCredentials(await Auth.currentCredentials());\n\n  const credentials = {\n    secret_key: essentialCredentials.secretAccessKey,\n    access_key: essentialCredentials.accessKeyId,\n    session_token: essentialCredentials.sessionToken,\n  };\n  // Signer.signUrl returns a Signature V4 signed URL\n  return Signer.signUrl(params, credentials);\n}\n\nexport function formDataBody(json) {\n  const props = Object.keys(json);\n  return props\n    .map((prop) => `${encodeURIComponent(prop)}=${encodeURIComponent(json[prop])}`)\n    .join('&');\n}\n/**\n * Use this function in order to be able to mock the Date() constructor it for testing\n * @param  {...any} args\n * @returns Date: new Date(args)\n */\nexport function getNewDate(...args) {\n  return new Date(...args);\n}\n\nexport const promiseToObject = (promise) => {\n  return promise\n    .then((result) => ({ success: true, result }))\n    .catch((error) => ({ success: false, error }));\n};\n\nexport const setSessionStorageItem = (eventId, data) => {\n  sessionStorage.setItem(`data2Import${eventId}`, JSON.stringify(data));\n};\n\nexport const removeSessionStorageItem = (eventId) => {\n  sessionStorage.removeItem(`data2Import${eventId}`);\n};\n\nexport const getSessionStorageItem = (eventId) => {\n  return sessionStorage.getItem(`data2Import${eventId}`);\n};\n\nexport const replaceAll = (originalText, findText = '', replaceText = '') => {\n  return originalText.replace(new RegExp(findText, 'g'), replaceText);\n};\n","import { useState, useEffect, useCallback } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport marked from 'marked';\nimport sanitizeHTML from 'sanitize-html';\n\nconst MD_DEFAULT_OPTIONS = {\n  skipSanitize: false,\n  markedOptions: null,\n  sanitizeOptions: {\n    allowedTags: [\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'blockquote',\n      'p',\n      'a',\n      'ul',\n      'ol',\n      'nl',\n      'li',\n      'b',\n      'i',\n      'strong',\n      'em',\n      'strike',\n      'code',\n      'hr',\n      'br',\n      'div',\n      'table',\n      'thead',\n      'caption',\n      'tbody',\n      'tr',\n      'th',\n      'td',\n      'pre',\n      'iframe',\n    ],\n    disallowedTagsMode: 'discard',\n    allowedAttributes: {\n      a: ['href', 'name', 'target'],\n      img: ['src'],\n    },\n    selfClosing: ['img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta'],\n    allowedSchemes: ['http', 'https', 'ftp', 'mailto'],\n    allowedSchemesByTag: {},\n    allowedSchemesAppliedToAttributes: ['href', 'src', 'cite'],\n    allowProtocolRelative: true,\n  },\n};\n\nexport function useQuery() {\n  return new URLSearchParams(useLocation().search);\n}\n\nexport function useMarked(markdown, options = MD_DEFAULT_OPTIONS) {\n  const [html, setHtml] = useState(markdown);\n\n  useEffect(() => {\n    if (options.markedOptions) {\n      marked.setOptions(options.markedOptions);\n    }\n    const tokens = marked.lexer(markdown);\n    const html = marked.parser(tokens);\n    setHtml(options.skipSanitize ? html : sanitizeHTML(html, options.sanitizeOptions));\n  }, [markdown, options]);\n\n  return html;\n}\n\nexport function useCopyToClipboard(params = { resetTimeOut: null }) {\n  const [isCopied, setCopied] = useState(false);\n  const [textCopied, setText] = useState(null);\n\n  const handleCopy = useCallback((text) => {\n    const textField = document.createElement('textarea');\n    textField.innerText = text;\n    document.body.appendChild(textField);\n    textField.select();\n    document.execCommand('copy');\n    textField.remove();\n    setCopied(true);\n    setText(text);\n  }, []);\n\n  useEffect(() => {\n    let timeout;\n    if (isCopied && params && params.resetTimeOut) {\n      timeout = setTimeout(() => setCopied(false), params.resetTimeOut);\n    }\n    return () => {\n      clearTimeout(timeout);\n    };\n  }, [isCopied, params]);\n\n  return [handleCopy, isCopied, textCopied];\n}\n\nexport default { useQuery, useMarked, useCopyToClipboard };\n","import React from 'react';\nimport { Route, Redirect, useLocation } from 'react-router-dom';\nimport { useQuery } from '../../hooks';\n\nexport default function AuthenticatedRoute({\n  children,\n  validateSession = () => true,\n  fallbackRoute = '/login',\n  skipRedirect = false,\n  ...rest\n}) {\n  const { pathname, search } = useLocation();\n  const query = useQuery();\n  const internalRedirect = query.get('redirect');\n\n  return (\n    <>\n      {validateSession() ? (\n        <>\n          <Route {...rest}>{children}</Route>\n        </>\n      ) : (\n        <Route {...rest}>\n          <Redirect\n            to={\n              internalRedirect\n                ? `${fallbackRoute}?redirect=${internalRedirect}`\n                : skipRedirect ? fallbackRoute\n                  : `${fallbackRoute}?redirect=${pathname}${search}`\n            }\n          />\n        </Route>\n      )}\n    </>\n  );\n}","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nconst Crumb = styled.a`\n  color: ${(props) => props.theme.color.breadcrumb.inactive};\n  cursor: pointer;\n  font-size: 14px;\n  font-family: 'Roboto Mono';\n  ${(props) =>\n    props.active &&\n    css`\n      cursor: default;\n      color: ${(props) => props.theme.color.breadcrumb.active};\n    `};\n`;\n\nconst CrumbSpace = styled.div`\n  font-size: 14px;\n  font-family: 'Roboto Mono';\n  margin: 0 6px 0 6px;\n  color: ${(props) => props.theme.color.breadcrumb.inactive};\n`;\n\nconst CrumbLine = styled.div`\n  display: flex;\n  overflow-x: auto;\n`;\n\nexport default function Breadcrumb({ crumbs = [] }) {\n  const last = crumbs.length - 1;\n  return (\n    <CrumbLine>\n      {crumbs.map((p, idx) => (\n        <div key={p.path ? p.path : p.name} style={{ display: 'flex' }}>\n          {p.staticFather && (\n            <>\n              <Crumb onClick={p.staticFather.action}>{p.staticFather.name}</Crumb>\n              <CrumbSpace>{'>'}</CrumbSpace>\n            </>\n          )}\n          <Crumb onClick={p.action} active={last === idx}>\n            {p.name}\n          </Crumb>\n          {last > idx && <CrumbSpace>{'>'}</CrumbSpace>}\n        </div>\n      ))}\n    </CrumbLine>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nfunction BaseButton({\n  children,\n  className,\n  disabled = false,\n  id,\n  isLoading,\n  onClick = () => {},\n  style,\n  type,\n}) {\n  return (\n    <button\n      className={className}\n      disabled={disabled || isLoading}\n      id={id}\n      onClick={onClick}\n      style={style}\n      type={type || 'button'}\n    >\n      {children}\n    </button>\n  );\n}\n\nconst Button = styled(BaseButton)`\n  opacity: 1;\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  font-weight: 500;\n  letter-spacing: 0.56px;\n  background: ${(props) => props.theme.color.button.regular.accept.disabled.background};\n  border: 1px solid ${(props) => props.theme.color.button.regular.accept.disabled.border};\n  opacity: 1;\n  color: ${(props) => props.theme.color.button.regular.accept.disabled.color};\n  height: ${(props) => props.height ? props.height : '32px'};\n  width: -webkit-fill-available;\n  width: -moz-available;\n  cursor: not-allowed;\n  ${(props) =>\n    !(props.disabled || props.isLoading) &&\n    !props.secondary &&\n    css`\n      cursor: pointer;\n      color: ${props.theme.color.button.regular.accept.default.color};\n      background: ${props.theme.color.button.regular.accept.default.background};\n      box-shadow: 0px 3px 6px #00000029;\n      border: 1px solid ${props.theme.color.button.regular.accept.default.border};\n      &:hover,\n      &:focus {\n        background: ${props.theme.color.button.regular.accept.hover.background};\n        box-shadow: 0px 4px 10px #00000040;\n      }\n    `}\n  ${(props) =>\n    !props.disabled &&\n    props.secondary &&\n    css`\n      background: ${props.theme.color.button.regular.reject.default.background};\n      cursor: pointer;\n      border: 1px solid ${props.theme.color.button.regular.reject.default.border};\n      color: ${props.theme.color.button.regular.reject.default.color};\n      &:hover,\n      &:focus {\n        background: ${props.theme.color.button.regular.reject.hover.background};\n        box-shadow: 0px 4px 10px #00000040;\n      }\n    `}\n  ${(props) =>\n    props.hide &&\n    css`\n      display: none;\n    `}\n    ${(props) =>\n    !props.disabled &&\n    props.danger &&\n    css`\n      background: ${props.theme.color.button.regular.danger.default.background};\n      cursor: pointer;\n      border: 1px solid ${props.theme.color.button.regular.danger.default.border};\n      color: ${props.theme.color.button.regular.danger.default.color};\n      &:hover,\n      &:focus {\n        background: ${props.theme.color.button.regular.danger.hover.background};\n        box-shadow: 0px 4px 10px #00000040;\n      }\n    `}\n`;\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import styled from 'styled-components';\n\nexport default styled.svg.attrs({\n  version: '1.1',\n  xmlns: 'http://www.w3.org/2000/svg',\n  xmlnsXlink: 'http://www.w3.org/1999/xlink',\n})``;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst CheckIcon = styled(Base)`\n  fill: #81c784;\n  &:hover {\n    fill: #2ab800;\n  }\n`;\nCheckIcon.displayName = 'CheckMark-CheckIcon';\n\nexport default function CheckMark(props) {\n  return (\n    <CheckIcon {...props} width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path d=\"M10,15.172l9.192-9.193,1.415,1.414L10,18,3.636,11.636,5.05,10.222Z\" />\n    </CheckIcon>\n  );\n}\n","import React from 'react';\n\nconst SIZE = 50;\nexport default function SpinnerIcon(props) {\n  return (\n    <svg width={props.size || SIZE} height={props.size || SIZE} viewBox=\"0 0 100 100\">\n      <circle\n        cx=\"50\"\n        cy=\"50\"\n        fill=\"none\"\n        stroke={props.color || '#66bb6a'}\n        strokeWidth=\"10\"\n        r=\"35\"\n        strokeDasharray=\"164.93361431346415 56.97787143782138\"\n      >\n        <animateTransform\n          attributeName=\"transform\"\n          type=\"rotate\"\n          repeatCount=\"indefinite\"\n          dur=\"1s\"\n          values=\"0 50 50;360 50 50\"\n          keyTimes=\"0;1\"\n        />\n      </circle>\n    </svg>\n  );\n}\n","\nimport { Flex } from 'reflexbox';\nimport styled from 'styled-components';\n\nconst CenteredFlex = styled(Flex)`\n  align-items: center;\n  justify-content: center;\n`;\n\nexport default CenteredFlex;\n","\nimport { Box } from \"reflexbox\";\nimport styled from \"styled-components\";\n\nconst Space = styled(Box)`\n  padding: 0 4px;\n`;\n\nexport default Space;","const checkPermission = (rules = [], role = '', action, data) => {\n  const permissions = rules[role.toLowerCase()];\n  if (!permissions) {\n    // role is not present in the rules\n    return false;\n  }\n\n  const staticPermissions = permissions.static;\n\n  if (staticPermissions && staticPermissions.includes(action)) {\n    // static rule not provided for action\n    return true;\n  }\n\n  const dynamicPermissions = permissions.dynamic;\n\n  if (dynamicPermissions) {\n    const permissionCondition = dynamicPermissions[action];\n    if (!permissionCondition) {\n      // dynamic rule not provided for action\n      return false;\n    }\n\n    return permissionCondition(data);\n  }\n  return false;\n};\n\nconst Can = (props) =>\n  checkPermission(props.rules, props.role, props.perform, props.data) ? props.yes() : props.no();\n\nCan.defaultProps = {\n  yes: () => null,\n  no: () => null,\n};\n\nexport default Can;\n","export const EVENT_QUESTION_STATUS = {\n  CORRECT: 'CORRECT',\n  INCORRECT: 'INCORRECT',\n  PENDING: 'PENDING',\n};\nexport const DEFAULT_FORM_INPUT_TYPE = 'input';\nexport const INPUT_FORM_TYPE_TEXTAREA = 'textarea';\nexport const DEFAULT_BONUS_MULTIPLIER = 2;\nexport const QUESTION_CARD_DEFAULT_WIDTH = '380px';\n\nexport const RESOURCE_STATE = {\n  ASSIGNED: 'ASSIGNED',\n  UNASSIGNED: 'UNASSIGNED',\n  PROVISIONING: 'PROVISIONING',\n};\n\nexport const RESOURCE_TYPE = {\n  SERVER: 'server',\n  URL: 'url',\n  CREDENTIALS: 'credentials',\n};\n\nexport const RESOURCES_COLORS = ['#61ADA1', '#81A2BE', '#E5C07B', '#A088A4'];\n\nexport const CHECKBOX_STATUS = {\n  CHECKED: 'checked',\n  MIXED: 'mixed'\n}","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { CHECKBOX_STATUS } from '../../constants';\n\nconst HiddenCheckbox = styled.input.attrs({ type: 'checkbox' })`\n  // Hide checkbox visually but remain accessible to screen readers.\n  // Source: https://polished.js.org/docs/#hidevisually\n  border: 0;\n  clip: rect(0 0 0 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  white-space: nowrap;\n  width: 1px;\n`;\nHiddenCheckbox.displayName = 'Checkbox-HiddenCheckbox';\n\nconst Icon = styled.svg`\n  stroke: white;\n  fill: transparent;\n  stroke-width: 3px;\n  display: block;\n`;\nIcon.displayName = 'Checkbox-Icon';\n\nconst StyledCheckbox = styled.div`\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  color: ${(props) => props.theme.color.checkbox.color};\n  border: 2px solid ${(props) => props.theme.color.checkbox.border};\n  ${(props) =>\n    props.checked &&\n    css`\n      background-color: ${props.theme.color.checkbox.background};\n    `}\n  opacity: 1;\n  transition: all 150ms;\n  ${Icon} {\n    visibility: ${(props) => (props.checked ? 'visible' : 'hidden')};\n  }\n`;\nStyledCheckbox.displayName = 'Checkbox-StyledCheckbox';\n\nconst CheckboxContainer = styled.div`\n  display: inline-block;\n  vertical-align: middle;\n  cursor: pointer;\n`;\n\nconst Checkbox = ({ className, checked, status = CHECKBOX_STATUS.CHECKED, ...props }) => (\n  <CheckboxContainer className={className}>\n    <HiddenCheckbox checked={checked} {...props} />\n    <StyledCheckbox checked={checked} className=\"Checkbox-StyledCheckbox\">\n      <Icon viewBox=\"0 0 24 24\">\n        {status === CHECKBOX_STATUS.CHECKED && <polyline points=\"20 6 9 17 4 12\" />}\n        {status === CHECKBOX_STATUS.MIXED && <polyline points=\"4 12 20 12\" />}\n      </Icon>\n    </StyledCheckbox>\n  </CheckboxContainer>\n);\n\nexport default Checkbox;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst Box = styled.div`\n  border: 1px solid ${(props) => (props.active ? '#81C784' : '#888')};\n  z-index: 999;\n  max-width: ${(props) => (props.mobile ? null : 'max-content')};\n  margin: ${(props) => (props.margin ? props.margin : '15% auto')};\n`;\n\nconst Background = styled.div`\n  position: fixed;\n  z-index: 9999;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  overflow: ${(props) => (props.hideScroll ? 'hidden' : 'auto')};\n  background-color: rgba(0, 0, 0, 0.4);\n`;\nBackground.displayName = 'ModalBackground';\n\nfunction Modal(props) {\n  const { mobile, onBackgroundClick, margin, ...rest } = props;\n\n  return (\n    <Background onClick={() => onBackgroundClick && onBackgroundClick()} {...rest}>\n      <Box margin={margin} mobile={mobile} onClick={(e) => e.stopPropagation()} {...rest} />\n    </Background>\n  );\n}\n\nexport default Modal;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport Button from '../Button';\nimport Modal from '../Modal';\n\nconst Background = styled(Flex)`\n  background-color: ${(props) => props.theme.color.form.background};\n  padding-top: ${(props) => props.theme.margin.m};\n  padding-bottom: ${(props) => props.theme.margin.s};\n  padding-left: ${(props) => props.theme.margin.s};\n  padding-right: ${(props) => props.theme.margin.s};\n`;\n\nconst DEFAULT_ACCEPT_LABEL = 'ACCEPT';\nconst DEFAULT_CANCEL_LABEL = 'CANCEL';\n\nfunction ConfirmationModal(props) {\n  const {\n    onAccept,\n    onCancel,\n    children,\n    loading,\n    acceptLabel,\n    cancelLabel,\n    dangerDialog = false,\n  } = props;\n  return (\n    <Modal active={!dangerDialog}>\n      <Background justifyContent=\"center\" flexDirection=\"column\">\n        {children}\n        <Flex justifyContent=\"space-around\" mt=\"40px\">\n          <Flex width={1 / 3}>\n            <Button onClick={onCancel} secondary className=\"ConfirmarionModal-cancel\">\n              {cancelLabel || DEFAULT_CANCEL_LABEL}\n            </Button>\n          </Flex>\n          <Flex width={1 / 3}>\n            <Button\n              onClick={onAccept}\n              disabled={loading}\n              danger={dangerDialog}\n              className=\"ConfirmationModal-accept\"\n            >\n              {acceptLabel || DEFAULT_ACCEPT_LABEL}\n            </Button>\n          </Flex>\n        </Flex>\n      </Background>\n    </Modal>\n  );\n}\nConfirmationModal.displayName = 'ConfirmationModal';\n\nexport default ConfirmationModal;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Box, Flex } from 'reflexbox';\n\nconst Menu = styled.div`\n  font-family: 'Roboto Mono';\n  background: #373737 0% 0% no-repeat padding-box;\n  opacity: 1;\n  width: max-content;\n  text-align: left;\n  padding: 6px 2px 6px 2px;\n  border: transparent;\n  font-size: 14px;\n  z-index: 10;\n`;\nMenu.displayName = 'Menu';\n\nconst ButtonMenu = styled.button`\n  background-color: transparent;\n  border: transparent;\n  height: max-content;\n  width: max-content;\n  cursor: pointer;\n`;\nButtonMenu.displayName = 'ButtonMenu';\n\nconst Background = styled(Box)`\n  position: relative;\n  display: flex;\n  justify-content: flex-end;\n  align-items: center;\n  &:hover {\n    background: ${(props) => props.theme.color.button.unregular.active.hover.background};\n  }\n`;\nBackground.displayName = 'Background';\n\nfunction ContextMenu(props) {\n  const { button, children, id } = props;\n  const [menuVisible, setMenuVisibility] = useState(false);\n  const [menuTop, setMenuTop] = useState('0px');\n  const onContextClick = (e) => {\n    try {\n      const rect = e.currentTarget.getBoundingClientRect();\n      setMenuTop(`${rect.top + rect.height}px`);\n    } catch (err) {\n      setMenuTop(e.pageY);\n    }\n    e.preventDefault();\n    setMenuVisibility(true);\n  };\n\n  return (\n    <Background onMouseLeave={() => setMenuVisibility(false)}>\n      <ButtonMenu onClick={onContextClick} id={id}>\n        {button}\n      </ButtonMenu>\n      <Flex\n        style={{\n          position: 'fixed',\n          top: menuTop,\n          zIndex: 15,\n        }}\n        onClick={() => setMenuVisibility(false)}\n      >\n        {menuVisible && <Menu>{children}</Menu>}\n      </Flex>\n    </Background>\n  );\n}\n\nexport default ContextMenu;\n","import styled from 'styled-components';\n\nconst Item = styled.div`\n  padding: 10px 12px 10px 12px;\n  color: ${(props) => props.theme.color.text.regular.color};\n  &:hover {\n    cursor: pointer;\n    color: ${(props) => props.theme.color.text.light.color};\n  }\n`;\nItem.displayName = 'Item';\n\nexport default Item;\n","import styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst RegularText = styled(Flex)`\n  color: ${(props) => (props.color ? props.color : props.theme.color.text.regular.color)};\n  ${(props) =>\n    props.light &&\n    css`\n      color: ${props.theme.color.text.light.color};\n    `}\n  ${(props) =>\n    props.medium &&\n    css`\n      color: ${props.theme.color.text.medium.color};\n    `}\n  ${(props) =>\n    props.regular &&\n    css`\n      color: ${props.theme.color.text.regular.color};\n    `}\n  ${(props) =>\n    props.align &&\n    css`\n      text-align: ${props.align};\n    `}\n  ${(props) =>\n    props.breakAll &&\n    css`\n      word-break: break-all;\n    `}\n  font-family: ${(props) => props.theme.font.family};\n  font-size: ${(props) => props.fontSize};\n  font-weight: ${(props) => (props.mediumWeight ? 500 : props.weight)};\n`;\nRegularText.displayName = 'RegularText';\n\nRegularText.defaultProps = {\n  fontSize: '16px',\n  weight: 400,\n};\nexport default RegularText;\n","import React from 'react';\nimport styled, { useTheme } from 'styled-components';\nimport ReactTooltip from 'react-tooltip';\n\nconst CustomTooltip = (props) => {\n  const theme = useTheme();\n\n  return (\n    <ReactTooltip\n      textColor={theme.color.tooltip.textColor}\n      backgroundColor={theme.color.tooltip.backgroundColor}\n      borderColor={theme.color.tooltip.borderColor}\n      arrowColor={theme.color.tooltip.arrowColor}\n      border\n      {...props}\n    />\n  );\n};\n\nconst Tooltip = styled(CustomTooltip)`\n  box-shadow: 0px 3px 6px #00000033 !important;\n  font-family: ${(props) => props.theme.font.family};\n  font-size: 12px;\n  max-width: 340px;\n`;\nTooltip.displayName = 'Tooltip';\n\nexport default Tooltip;\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst ClipBoardSVG = styled(svgBase)`\n  width: ${(props) => props.size || '20px'};\n  height: ${(props) => props.size || '20px'};\n  fill: #898989;\n  &:hover {\n    fill: #66bb6a;\n  }\n`;\n\nexport default function CopyClipboardIcon(props) {\n  return (\n    <ClipBoardSVG viewBox=\"0 0 448 512\" {...props}>\n      <path d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\" />\n    </ClipBoardSVG>\n  );\n}\n","import React, { useState } from 'react';\nimport { Flex } from 'reflexbox';\nimport styled, { css } from 'styled-components';\nimport { useCopyToClipboard } from '../../hooks';\nimport RegularText from '../RegularText';\nimport Tooltip from '../Tooltip';\nimport CopyClipboardIcon from '../../icons/CopyClipboardIcon';\n\nconst CopiedLabel = styled(Flex)`\n  border: 1px solid;\n  position: absolute;\n  transition: opacity 1s;\n  margin-top: -30px;\n  margin-left: ${(props) => (props.mobile ? '-60px' : '-23px')};\n  height: 30px;\n  padding-left: 7px;\n  padding-right: 7px;\n  align-items: center;\n  justify-content: center;\n  background-color: #1d1d1d;\n  color: #81c784;\n  ${(props) =>\n    props.hidden &&\n    css`\n      opacity: 0;\n      z-index: -1000;\n    `}\n`;\n\nCopiedLabel.displayName = 'CopyToClipboard-copiedLabel';\n\nexport default function CopyToClipboard({\n  value = '',\n  idx = 0,\n  mobile = false,\n  tooltip = null,\n  copiedText = 'Copied!',\n}) {\n  const [handleCopy, isCopied] = useCopyToClipboard({ resetTimeOut: 2000 });\n  const [indexCopied, setIndexCopied] = useState(-1);\n\n  return (\n    <Flex mx=\"6px\" alignItems=\"center\">\n      <Flex data-tip data-for=\"copyLinkClipIcon\">\n        <Flex\n          onClick={() => {\n            setIndexCopied(idx);\n            handleCopy(value);\n          }}\n          width=\"24px\"\n          style={{ cursor: 'pointer' }}\n          className=\"CopyToClipboard-copyContainer\"\n        >\n          <CopyClipboardIcon />\n        </Flex>\n      </Flex>\n      {tooltip && !isCopied && <Tooltip id=\"copyLinkClipIcon\">{tooltip}</Tooltip>}\n      <CopiedLabel hidden={!isCopied || idx !== indexCopied} mobile={mobile}>\n        <RegularText mediumWeight>{copiedText}</RegularText>\n      </CopiedLabel>\n    </Flex>\n  );\n}\n","import styled from 'styled-components';\n\nconst FormLeyend = styled.div`\n  text-align: left;\n  font-family: 'Roboto Mono';\n  font-size: ${(props) => (props.size ? props.size : '12px')};\n  letter-spacing: 0.24px;\n  color: ${(props) => props.theme.color.form.legend.color};\n  opacity: 1;\n`;\n\nexport default FormLeyend;\n","import styled, { css } from 'styled-components';\n\nconst LinkedText = styled.span`\n  cursor: not-allowed;\n\n  ${(props) =>\n    !props.disabled &&\n    css`\n      cursor: pointer;\n\n      &:hover {\n        color: ${props.hoverColor || '#d0d0d0'};\n        text-decoration: underline;\n      }\n    `}\n  ${(props) =>\n    props.font &&\n    css`\n      font-family: ${props.font};\n    `}\n  ${(props) =>\n    props.fontSize &&\n    css`\n      font-size: ${props.fontSize};\n    `}\n  ${(props) =>\n    props.color &&\n    css`\n      color: ${props.color};\n    `}\n`;\nLinkedText.displayName = 'LinkedText';\n\nexport default LinkedText;\n","import React from 'react';\nimport ReactSelect from 'react-select';\nimport styled, { useTheme } from 'styled-components';\n\nconst StyledSelect = styled(ReactSelect).attrs({\n  components: { IndicatorSeparator: null },\n})`\n  font-family: ${(props) => props.theme.font.family};\n  font-size: 14px;\n  margin-top: ${props => props.marginTop || '6px'};\n  margin-right: ${props => props.marginRight};\n  width: -webkit-fill-available;\n`;\nStyledSelect.displayName = 'Select-StyledSelect';\n\nfunction Select(props) {\n  const theme = useTheme();\n\n  // react-select allows passing style function for nested components inside the select component\n  const getStyles = {\n    control: (provided) => ({\n      ...provided,\n      background: theme.color.select.control.background.inactive,\n      border: `${theme.color.select.control.border} 1px solid`,\n      borderRadius: '0px',\n      color: theme.color.select.control.color,\n      boxShadow: '0',\n      '&:hover': {\n        background: theme.color.select.control.background.active,\n      },\n      height: props.height || provided.height,\n      minHeight: props.minHeight || provided.minHeight\n    }),\n    option: (provided) => ({\n      ...provided,\n      background: theme.color.select.option.background.inactive,\n      '&:hover': {\n        background: theme.color.select.option.background.active,\n      },\n    }),\n    menu: (provided) => ({\n      ...provided,\n      background: theme.color.select.menu.background,\n      border: `${theme.color.select.menu.border} 1px solid`,\n      color: theme.color.select.menu.color,\n      borderRadius: '0px',\n    }),\n    singleValue: (provided) => ({\n      ...provided,\n      color: theme.color.select.singleValue.color,\n      height: props.height || provided.height\n    }),\n    valueContainer: (provided) => ({\n      ...provided,\n      height: props.height || provided.height\n    }),\n    indicatorsContainer: (provided) => ({\n      ...provided,\n      height: props.height || provided.height\n    }),\n    indicatorContainer: (provided) => ({\n      ...provided,\n      height: props.height || provided.height\n    }),\n  };\n  return <StyledSelect {...props} styles={getStyles} />;\n}\n\nexport default Select;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst UploadSVG = styled(svgBase)`\n  width: ${(props) => props.size || '20px'};\n  height: ${(props) => props.size || '20px'};\n  fill: #898989;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `};\n`;\nUploadSVG.displayName = 'UploadIcon-UploadSVG';\n\nexport default function UploadIcon(props) {\n  return (\n    <UploadSVG viewBox=\"0 0 24 24\" {...props}>\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path d=\"M12,12.586l4.243,4.242-1.415,1.415L13,16.415V22H11V16.413l-1.828,1.83L7.757,16.828ZM12,2a7,7,0,0,1,6.954,6.194A5.5,5.5,0,0,1,18,18.978V16.964a3.5,3.5,0,1,0-1.112-6.911,5,5,0,1,0-9.777,0,3.5,3.5,0,0,0-1.292,6.88l.18.03v2.014A5.5,5.5,0,0,1,5.046,8.194,7,7,0,0,1,12,2Z\" />\n    </UploadSVG>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst FileSVG = styled(svgBase)`\n  width: ${(props) => props.size || '20px'};\n  height: ${(props) => props.size || '20px'};\n  fill: ${(props) => props.color || '#A5D6A7'};\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `};\n`;\nFileSVG.displayName = 'FileIcon-FileSVG';\n\nexport default function FileIcon(props) {\n  return (\n    <FileSVG viewBox=\"0 0 24 24\" {...props}>\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path d=\"M21,9V20.993A1,1,0,0,1,20.007,22H3.993A.993.993,0,0,1,3,21.008V2.992A1,1,0,0,1,4,2H14V8a1,1,0,0,0,1,1Zm0-2H16V2ZM8,7V9h3V7Zm0,4v2h8V11Zm0,4v2h8V15Z\" />\n    </FileSVG>\n  );\n}\n","import React, { useState, useRef } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport styled, { useTheme } from 'styled-components';\nimport RegularText from '../RegularText';\nimport UploadIcon from '../../icons/UploadIcon';\nimport FileIcon from '../../icons/FileIcon';\n\nconst Container = styled(Flex)`\n  max-width: 488px;\n  height: 137px;\n  padding: 20px;\n  background-color: ${(props) => props.theme.color.dragDrop.background};\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  border: 2px dashed\n    ${(props) =>\n      props.draggedOn\n        ? props.theme.color.dragDrop.border.draggedOn\n        : props.theme.color.dragDrop.border.draggedOff};\n  margin-top: 6px;\n`;\nContainer.displayName = 'DragDrop-Container';\n\nexport default function DragDrop({ onFileChange }) {\n  const theme = useTheme();\n  const [draggedOn, setDraggedOn] = useState(false);\n  const [fileName, setFileName] = useState(null);\n  const hiddenFileInput = useRef(null);\n\n  const dragOver = (e) => {\n    e.preventDefault();\n    setDraggedOn(true);\n  };\n\n  const dragEnter = (e) => {\n    e.preventDefault();\n    setDraggedOn(true);\n  };\n\n  const dragLeave = (e) => {\n    e.preventDefault();\n    setDraggedOn(false);\n  };\n\n  const fileDrop = (e) => {\n    e.preventDefault();\n    setDraggedOn(false);\n    const files = e.dataTransfer.files;\n    if (files.length && files[0].name) {\n      setFileName(files[0].name);\n      onFileChange(files[0]);\n    }\n  };\n\n  const handleClick = () => {\n    hiddenFileInput.current.click();\n  };\n\n  const onChangeFile = async (evt) => {\n    if (evt.target.files && evt.target.files[0]) {\n      setFileName(evt.target.files[0].name);\n      onFileChange(evt.target.files[0]);\n    }\n  };\n\n  return (\n    <>\n      <Container\n        draggedOn={draggedOn}\n        onDragOver={dragOver}\n        onDragEnter={dragEnter}\n        onDragLeave={dragLeave}\n        onDrop={fileDrop}\n      >\n        <Flex mb=\"4px\">\n          <UploadIcon />\n        </Flex>\n        <RegularText mediumWeight fontSize=\"14px\">\n          Drag &#38; Drop\n        </RegularText>\n        <RegularText mediumWeight fontSize=\"14px\" my=\"6px\">\n          or\n        </RegularText>\n        <RegularText\n          onClick={handleClick}\n          mediumWeight\n          fontSize=\"14px\"\n          style={{ cursor: 'pointer', textDecoration: 'underline' }}\n        >\n          Browse file\n        </RegularText>\n        <input\n          type=\"file\"\n          onChange={onChangeFile}\n          onClick={(evt) => {\n            // eslint-disable-next-line no-param-reassign\n            evt.target.value = null;\n          }}\n          ref={hiddenFileInput}\n          style={{ display: 'none' }}\n          multiple={false}\n        />\n      </Container>\n      {fileName && (\n        <Flex mt=\"20px\" width={1} alignItems=\"center\">\n          <Box>\n            <FileIcon />\n          </Box>\n          <RegularText\n            mediumWeight\n            fontSize=\"14px\"\n            ml=\"10px\"\n            pt=\"4px\"\n            color={theme.color.dragDrop.color}\n          >\n            {fileName}\n          </RegularText>\n        </Flex>\n      )}\n    </>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '20px';\nconst FILL = '#535353';\n\nconst InfoSVG = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: ${(props) => props.fill || FILL};\n  &:hover {\n    fill: #81a2be;\n  }\n`;\nInfoSVG.displayName = 'InfoIcon-InfoSVG';\n\nfunction InfoIcon(props) {\n  return (\n    <InfoSVG viewBox=\"0 0 416 416\" {...props}>\n      <g>\n        <path\n          d=\"M356.004,61.156c-81.37-81.47-213.377-81.551-294.848-0.182c-81.47,81.371-81.552,213.379-0.181,294.85\n            c81.369,81.47,213.378,81.551,294.849,0.181C437.293,274.636,437.375,142.626,356.004,61.156z M237.6,340.786\n            c0,3.217-2.607,5.822-5.822,5.822h-46.576c-3.215,0-5.822-2.605-5.822-5.822V167.885c0-3.217,2.607-5.822,5.822-5.822h46.576\n            c3.215,0,5.822,2.604,5.822,5.822V340.786z M208.49,137.901c-18.618,0-33.766-15.146-33.766-33.765\n            c0-18.617,15.147-33.766,33.766-33.766c18.619,0,33.766,15.148,33.766,33.766C242.256,122.755,227.107,137.901,208.49,137.901z\"\n        />\n      </g>\n    </InfoSVG>\n  );\n}\n\nexport default InfoIcon;\n","import React, { useState } from 'react';\nimport styled, { useTheme } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport FormLeyend from '../FormLeyend';\nimport LinkedText from '../LinkedText';\nimport Tooltip from '../Tooltip';\nimport Select from '../Select';\nimport DragDrop from '../DragDrop';\nimport InfoIcon from '../../icons/InfoIcon';\n\nconst Background = styled(Flex)`\n  background-color: ${(props) => props.theme.color.form.background};\n  padding-top: ${(props) => props.theme.margin.m};\n  padding-bottom: ${(props) => props.theme.margin.s};\n  padding-left: ${(props) => props.theme.margin.s};\n  padding-right: ${(props) => props.theme.margin.s};\n  border: 1px solid ${(props) => props.theme.color.form.border.modal};\n  flex-direction: column;\n`;\nBackground.displayName = 'CsvImportModal-Background';\n\nexport default function CsvImportModal({\n  filterLeyend = '',\n  filterOptions = [],\n  filterTooltipText = '',\n  onImport,\n  onCancel,\n  enableCSVTemplate = false,\n  onDownloadTemplate,\n}) {\n  const theme = useTheme();\n  const [file, setFile] = useState(null);\n\n  const enableFilterSection =\n    filterLeyend !== null &&\n    filterLeyend.length > 0 &&\n    filterOptions.length > 0 &&\n    filterTooltipText !== null &&\n    filterTooltipText.length > 0;\n\n  const [filterValue, setFilterValue] = useState(enableFilterSection && filterOptions[0]);\n\n  return (\n    <Modal style={{ overflow: 'hidden' }}>\n      <Background width=\"500px\">\n        <FormLeyend>{filterLeyend}</FormLeyend>\n        {enableFilterSection && (\n          <Flex width={1} alignItems=\"center\">\n            <Flex width={1}>\n              <Select options={filterOptions} value={filterValue} onChange={setFilterValue} />\n            </Flex>\n            <Flex ml=\"8px\" data-tip data-for=\"filterSelect\">\n              <InfoIcon />\n            </Flex>\n            <Tooltip id=\"filterSelect\">{filterTooltipText}</Tooltip>\n          </Flex>\n        )}\n        <Flex mt=\"20px\" mb=\"10px\" flexDirection=\"column\">\n          <DragDrop onFileChange={setFile} />\n        </Flex>\n        {enableCSVTemplate && (\n          <Flex>\n            <LinkedText\n              color={theme.color.form.legend.color}\n              fontSize=\"14px\"\n              onClick={onDownloadTemplate}\n            >\n              Use a template as base for your csv file\n            </LinkedText>\n          </Flex>\n        )}\n        <Flex justifyContent=\"flex-end\" mt=\"40px\">\n          <Flex width=\"150px\">\n            <Button\n              onClick={() => {\n                setFile(null);\n                onCancel();\n              }}\n              secondary\n            >\n              CANCEL\n            </Button>\n          </Flex>\n          <Flex width=\"150px\" ml=\"20px\">\n            <Button disabled={!file} onClick={() => onImport(file, filterValue.value)}>\n              IMPORT FILE\n            </Button>\n          </Flex>\n        </Flex>\n      </Background>\n    </Modal>\n  );\n}\n","import styled, { css } from 'styled-components';\n\nconst Input = styled.input`\n  background: ${(props) => props.theme.color.input.default.background} 0% 0% no-repeat padding-box;\n  border: 1px solid ${(props) => props.theme.color.input.default.border};\n  opacity: 1;\n  color: ${(props) => props.theme.color.input.default.color};\n  letter-spacing: 0px;\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  display: block;\n  width: -webkit-fill-available;\n  width: -moz-available;\n  height: ${(props) => (props.height ? props.height : '')};\n  ${(props) =>\n    props.search &&\n    css`\n      padding-left: 30px;\n      background-color: #373737;\n    `}\n  &::placeholder {\n    color: ${(props) => props.theme.color.input.default.placeholderColor};\n  }\n  &:hover {\n    background: ${(props) => props.theme.color.input.hover.background} 0% 0% no-repeat padding-box;\n    border: 1px solid ${(props) => props.theme.color.input.hover.border};\n    opacity: 1;\n  }\n  &:focus {\n    background: ${(props) => props.theme.color.input.focused.background} 0% 0% no-repeat padding-box;\n    ${(props) =>\n      props.search &&\n      css`\n        background-color: #454545;\n      `}\n    border: 1px solid ${(props) =>\n      props.dangerBorder\n        ? props.theme.color.input.error.border\n        : props.theme.color.input.focused.border};\n    opacity: 1;\n  }\n  ${(props) =>\n    props.validate &&\n    !props.validating &&\n    css`\n      box-shadow: none;\n      border: 1px solid\n        ${props.valid\n          ? props.theme.color.input.success.border\n          : props.theme.color.input.error.border};\n    `}\n  ${(props) =>\n    props.dangerBorder &&\n    css`\n      box-shadow: none;\n      border: 1px solid ${props.theme.color.input.error.border};\n    `}\n`;\nInput.displayName = 'Input';\n\nexport default Input;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst CrossIcon = styled(Base)`\n  fill: #e06c75;\n  ${(props) =>\n    props.hover &&\n    css`\n      fill: #ff5733;\n    `}\n`;\n\nconst SquareIcon = styled(Base)`\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `}\n`;\nexport default function CancelIcon(props) {\n  return (\n    <SquareIcon width={props.size || 34} height={props.size || 32} viewBox=\"0 0 34 32\" {...props}>\n      <rect fill=\"none\" width=\"34\" height=\"32\" />\n      <path\n        fill=\"#6c6c6c\"\n        d=\"M-9.566-13.087h-1.705V1.2h1.705V2.839h-3.753V-14.739h3.753Zm19.2-1.652H13.4V2.839H9.637V1.2H11.35V-13.087H9.637Z\"\n        transform=\"translate(17 22)\"\n      />\n      <CrossIcon {...props}>\n        <path\n          d=\"M12,10.586l4.95-4.95L18.364,7.05,13.414,12l4.95,4.95L16.95,18.364,12,13.414l-4.95,4.95L5.636,16.95,10.586,12,5.636,7.05,7.05,5.636Z\"\n          transform=\"translate(5 4.364)\"\n        />\n      </CrossIcon>\n    </SquareIcon>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst Check = styled(Base)`\n  fill: #66bb6a;\n  ${(props) =>\n    props.hover &&\n    !props.disabled &&\n    css`\n      fill: #2ab800;\n    `}\n`;\nCheck.displayName = 'CheckIcon-Check';\n\nconst SquareIcon = styled(Base)`\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: ${props.disabled ? 'not-allowed' : 'pointer'};\n    `}\n`;\nSquareIcon.displayName = 'CheckIcon-SquareIcon';\n\nexport default function CheckIcon(props) {\n  return (\n    <SquareIcon width={props.size || 34} height={props.size || 32} viewBox=\"0 0 34 32\" {...props}>\n      <rect fill=\"none\" width=\"34\" height=\"32\" />\n      <path\n        fill=\"#6c6c6c\"\n        d=\"M-9.566-13.087h-1.705V1.2h1.705V2.839h-3.753V-14.739h3.753Zm19.2-1.652H13.4V2.839H9.637V1.2H11.35V-13.087H9.637Z\"\n        transform=\"translate(17 22)\"\n      />\n      <Check {...props}>\n        <path\n          d=\"M10,15.172l8.533-8.616L19.948,7.97,10,18,4.5,12.746l1.414-1.414Z\"\n          transform=\"translate(4.364 4.021)\"\n        />\n      </Check>\n    </SquareIcon>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { Flex } from 'reflexbox';\nimport map from 'lodash.map';\nimport Input from '../Input';\nimport CancelIcon from '../../icons/CancelIcon';\nimport CheckIcon from '../../icons/CheckIcon';\n\nconst areValidChanges = (valuesOnEdition, matchRegExp) => {\n  if (!matchRegExp) {\n    return true;\n  }\n  const validations = map(\n    valuesOnEdition,\n    (value) => value !== undefined && value !== null && value.toString().match(matchRegExp)\n  );\n  return !validations.some((v) => v === false || v === null);\n};\n\nexport default function EditableInput({\n  valueObject = {},\n  onValueChanged = () => {},\n  edit = false,\n  setEditionActive = () => {},\n  matchRegExp,\n}) {\n  const [valuesOnEdition, _setEditionValues] = useState({});\n  const valuesOnEditionRef = React.useRef(valuesOnEdition);\n  const [valueOnView, setViewValue] = useState('');\n  const [saveHover, mouseHoverSave] = useState(false);\n  const [cancelHover, mouseHoverCancel] = useState(false);\n\n  const onCancelChange = () => {\n    setEditionActive(false);\n  };\n\n  // work around to get state values on event handler\n  const setEditionValues = (data) => {\n    _setEditionValues(data);\n    valuesOnEditionRef.current = data;\n  };\n\n  const getDisplayableValue = (objectValue) => {\n    // reverse in order to have username field first\n    const keys = Object.keys(objectValue).sort().reverse();\n    let displayableValue = objectValue[keys[0]];\n    for (let idx = 1; idx < keys.length; idx++) {\n      displayableValue = displayableValue.concat(` / ${objectValue[keys[idx]]}`);\n    }\n    return displayableValue;\n  };\n\n  const onSaveChange = (change = valuesOnEdition) => {\n    if (areValidChanges(change, matchRegExp)) {\n      onValueChanged(change);\n    }\n  };\n\n  useEffect(() => {\n    const handleEnter = (event) => {\n      if (event.key === 'Enter') {\n        // work around to get state values on event handler\n        onSaveChange(valuesOnEditionRef.current);\n        event.preventDefault();\n      }\n    };\n    if (edit) {\n      window.addEventListener('keydown', handleEnter);\n      setEditionValues(valueObject);\n    }\n    return () => window.removeEventListener('keydown', handleEnter);\n  }, [edit]);\n\n  useEffect(() => {\n    setViewValue(getDisplayableValue(valueObject));\n  }, [valueObject]);\n\n  if (edit) {\n    return (\n      <Flex>\n        <Flex width=\"-webkit-fill-available\">\n          {map(valuesOnEdition, (valueOnEdition, valueKey) => {\n            return (\n              <Input\n                key={valueKey}\n                id={valueKey}\n                autoFocus\n                value={valueOnEdition}\n                onChange={(e) => {\n                  const newValue = e.target.value;\n                  setEditionValues(\n                    (function () {\n                      return {\n                        ...valuesOnEdition,\n                        [valueKey]: newValue,\n                      };\n                    })()\n                  );\n                }}\n              />\n            );\n          })}\n        </Flex>\n        <Flex width=\"70px\">\n          <Flex\n            onMouseLeave={() => mouseHoverSave(false)}\n            onMouseEnter={() => mouseHoverSave(true)}\n            onClick={() => onSaveChange()}\n          >\n            <CheckIcon\n              hover={saveHover}\n              disabled={!areValidChanges(valuesOnEdition, matchRegExp)}\n            />\n          </Flex>\n          <Flex\n            ml=\"10px\"\n            onMouseLeave={() => mouseHoverCancel(false)}\n            onMouseEnter={() => mouseHoverCancel(true)}\n            onClick={onCancelChange}\n          >\n            <CancelIcon hover={cancelHover} />\n          </Flex>\n        </Flex>\n      </Flex>\n    );\n  }\n\n  return (\n    <Flex py=\"6px\" pl=\"10px\">\n      {valueOnView}\n    </Flex>\n  );\n}\n","import styled, { css } from 'styled-components';\n\nconst TableData = styled.td.attrs((props) => ({\n  colSpan: props.colspan || 1,\n}))`\n  vertical-align: middle;\n  width: ${(props) => props.width || 'auto'};\n  ${(props) =>\n    props.minWidth &&\n    css`\n      min-width: ${props.minWidth};\n    `};\n\n  ${(props) =>\n    props.maxWidth &&\n    css`\n      max-width: ${props.maxWidth};\n    `};\n\n  ${(props) =>\n    props.center &&\n    css`\n      text-align: center;\n    `};\n\n  ${(props) =>\n    props.right &&\n    css`\n      text-align: right;\n    `};\n\n  ${(props) =>\n    props.nowrap &&\n    css`\n      white-space: nowrap;\n    `};\n\n  ${(props) =>\n    props.onClick &&\n    css`\n      cursor: pointer;\n    `}\n`;\n\nexport default TableData;\n","import styled, { css } from 'styled-components';\n\nconst TableRow = styled.tr`\n  height: ${(props) => props.height ? props.height : 'auto'};\n  background-color: ${(props) => props.theme.color.table.row.background.inactive};\n  color: ${(props) => props.theme.color.table.row.color};\n  ${(props) =>\n    props.selected &&\n    css`\n      background-color: ${props.theme.color.table.row.background.active};\n    `};\n\n  ${(props) =>\n    props.captain &&\n    css`\n      color: ${props.theme.color.table.row.captain};\n    `};\n\n  ${(props) =>\n    props.onClick &&\n    css`\n      cursor: pointer;\n    `};\n\n  ${(props) =>\n    props.border &&\n    css`\n      border: ${props.border};\n    `}\n\n  ${(props) =>\n    props.borderIncorrect &&\n    css`\n      border: 1.1px solid ${props.theme.color.table.row.incorrect};\n    `};\n\n  ${(props) =>\n    props.borderTransparent &&\n    css`\n      border: 1px solid transparent;\n    `};\n  \n  ${(props) =>\n    props.mouseOver &&\n    css` \n      border: 1px solid ${props.theme.color.table.row.hover};\n      border-top: 1.1px solid ${props.theme.color.table.row.hover};\n    `};\n      \n  &:hover {\n    ${(props) =>\n      props.onClick &&\n      css`\n        background-color: ${props.theme.color.table.row.background.active};\n      `};\n  }\n`;\nTableRow.displayName = 'TableRow';\n\nexport default TableRow;\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '24px';\n\nconst PencilSVG = styled(svgBase)`\n  fill: ${(props) => props.fill || '#535353'};\n  &:hover {\n    fill: ${(props) => props.fillHover || '#81a2be'};\n    cursor: pointer;\n  }\n`;\nPencilSVG.displayName = 'PencilIcon-PencilSVG';\n\nconst PencilIcon = (props) => (\n  <svg width={props.size || SIZE} height={props.size || SIZE} viewBox=\"0 0 24 24\">\n    <PencilSVG viewBox=\"0 0 20 20\" {...props}>\n      <path d=\"M7.243,18H3V13.757L14.435,2.322a1,1,0,0,1,1.414,0l2.829,2.829a1,1,0,0,1,0,1.414ZM3,20H21v2H3Z\" />\n    </PencilSVG>\n  </svg>\n);\n\nexport default PencilIcon;\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '32px';\n\nconst TrashIcon = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: ${(props) => props.color || '#898989'};\n  &:hover {\n    fill: #e06c75;\n  }\n`;\nTrashIcon.displayName = 'TrashCanIcon-TrashIcon';\n\nexport default function TrashCanIcon(props) {\n  return (\n    <TrashIcon viewBox=\"0 0 32 32\" {...props}>\n      <path\n        d=\"M7,6V3A1,1,0,0,1,8,2h8a1,1,0,0,1,1,1V6h5V8H20V21a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V8H2V6Zm6.414,8,1.768-1.768-1.414-1.414L12,12.586l-1.768-1.768L8.818,12.232,10.586,14,8.818,15.768l1.414,1.414L12,15.414l1.768,1.768,1.414-1.414ZM9,4V6h6V4Z\"\n        transform=\"translate(4 4)\"\n      />\n      <rect fill=\"none\" width=\"32\" height=\"32\" />\n    </TrashIcon>\n  );\n}\n","import React from 'react';\nimport { useTheme } from 'styled-components';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport TableRow from '../TableRow';\nimport TableData from '../TableData';\n\nexport default function TableItemSkeleton({ numberOfCells = 1, height = '25px' }) {\n  const theme = useTheme();\n\n  return (\n    <TableRow>\n      <TableData colspan={numberOfCells}>\n        <SkeletonTheme\n          color={theme.color.skeleton.color}\n          highlightColor={theme.color.skeleton.highlightColor}\n        >\n          <Skeleton height={height} />\n        </SkeletonTheme>\n      </TableData>\n    </TableRow>\n  );\n}\n","import React, { useState } from 'react';\nimport { Flex } from 'reflexbox';\nimport styled from 'styled-components';\nimport TableData from '../TableData';\nimport TableRow from '../TableRow';\nimport PencilIcon from '../../icons/PencilIcon';\nimport TrashCanIcon from '../../icons/TrashCanIcon';\nimport TableItemSkeleton from '../TableItemSkeleton';\nimport EditableInput from '../EditableInput';\nimport { Checkbox } from 'boss-ui';\n\nconst HovereableFlex = styled(Flex)`\n  &:hover {\n    cursor: pointer;\n  }\n`;\n\nexport default function EditableTableData({ itemData, itemRegExp, isChecked, onItemDelete, onItemChanged, onSelectionChange }) {\n  const [editionActive, setActiveEdition] = useState(false);\n  const [loadingItem, setLoadingItem] = useState(false);\n\n  if (loadingItem) {\n    return <TableItemSkeleton numberOfCells={3} />;\n  }\n\n  const onItemDeleteClicked = (...args) => {\n    setLoadingItem(true);\n    onItemDelete(...args);\n  };\n\n  const onItemEdited = (...args) => {\n    setLoadingItem(true);\n    onItemChanged(...args);\n  };\n\n  if (editionActive) {\n    return (\n      <TableRow>\n        <TableData colspan={3}>\n          <EditableInput\n            valueObject={itemData}\n            edit\n            onValueChanged={onItemEdited}\n            setEditionActive={setActiveEdition}\n            matchRegExp={itemRegExp}\n          />\n        </TableData>\n      </TableRow>\n    );\n  }\n\n  return (\n    <TableRow>\n      <TableData width=\"20px\" style={{ paddingLeft: '10px' }}>\n        <label>\n          <Checkbox checked={isChecked} onChange={onSelectionChange} />\n        </label>\n      </TableData>\n      <TableData>\n        <EditableInput\n          valueObject={itemData}\n          onValueChanged={onItemEdited}\n          setEditionActive={setActiveEdition}\n          matchRegExp={itemRegExp}\n        />\n      </TableData>\n      <TableData>\n        <Flex alignItems=\"center\" width={1} justifyContent=\"flex-end\">\n          <HovereableFlex onClick={() => setActiveEdition(true)}>\n            <PencilIcon fill=\"#898989\" size=\"18px\" />\n          </HovereableFlex>\n          <HovereableFlex ml=\"8px\" onClick={onItemDeleteClicked}>\n            <TrashCanIcon size=\"22px\" />\n          </HovereableFlex>\n        </Flex>\n      </TableData>\n    </TableRow>\n  );\n}\n","import React, { useEffect, useState, useLayoutEffect } from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { useMarked } from '../../hooks';\nimport './index.css';\n\nconst CreditsContainer = styled(Flex)`\n  position: relative;\n  justify-content: center;\n  height: 80vh;\n  font-family: 'Droid Sans', arial, verdana, sans-serif;\n  font-weight: 700;\n  color: #ff6;\n  background-color: #000;\n  overflow: hidden;\n`;\n\nconst Title = styled.h1`\n  position: absolute;\n  width: 2.6em;\n  left: 50%;\n  top: 25%;\n  font-size: 10em;\n  text-align: center;\n  margin-left: -1.3em;\n  line-height: 0.8em;\n  letter-spacing: -0.05em;\n  color: #000;\n  text-shadow: -2px -2px 0 #ff6, 2px -2px 0 #ff6, -2px 2px 0 #ff6, 2px 2px 0 #ff6;\n  opacity: 0;\n  z-index: 1;\n  -webkit-animation: logo 5s ease-out 5s;\n  -moz-animation: logo 5s ease-out 5s;\n  -ms-animation: logo 5s ease-out 5s;\n  -o-animation: logo 5s ease-out 5s;\n  animation: logo 5s ease-out 5s;\n`;\n\nconst CreditsLine = styled(Flex)`\n  position: absolute;\n  display: flex;\n  height: 250%;\n  bottom: 12%;\n  font-size: 44px;\n  text-align: justify;\n  overflow: hidden;\n  -webkit-transform-origin: 50% 100%;\n  -moz-transform-origin: 50% 100%;\n  -ms-transform-origin: 50% 100%;\n  -o-transform-origin: 50% 100%;\n  transform-origin: 50% 100%;\n  -webkit-transform: perspective(350px) rotateX(25deg);\n  -moz-transform: perspective(350px) rotateX(25deg);\n  -ms-transform: perspective(350px) rotateX(25deg);\n  -o-transform: perspective(350px) rotateX(25deg);\n  transform: perspective(350px) rotateX(25deg);\n  &::after {\n    position: absolute;\n    content: ' ';\n    left: 0;\n    right: 0;\n    top: 0;\n    bottom: 60%;\n    background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 1) 0%, transparent 100%);\n    background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 1) 0%, transparent 100%);\n    background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 1) 0%, transparent 100%);\n    background-image: -o-linear-gradient(top, rgba(0, 0, 0, 1) 0%, transparent 100%);\n    background-image: linear-gradient(top, rgba(0, 0, 0, 1) 0%, transparent 100%);\n    pointer-events: none;\n  }\n  p {\n    text-align: justify;\n    margin: 0.8em 0;\n  }\n  p.center {\n    text-align: center;\n  }\n  a {\n    color: #ff6;\n    text-decoration: underline;\n  }\n`;\n\nconst StartLabel = styled.div`\n  align-self: center;\n  width: 16em;\n  font-size: 200%;\n  font-weight: 400;\n  color: #4ee;\n  opacity: 0;\n  z-index: 1;\n  -webkit-animation: intro 4s ease-out;\n  -moz-animation: intro 4s ease-out;\n  -ms-animation: intro 4s ease-out;\n  -o-animation: intro 4s ease-out;\n  animation: intro 4s ease-out;\n`;\n\nconst TitleContent = styled.div`\n  position: absolute;\n  top: 100%;\n  -webkit-animation: scroll 90s linear 6s infinite;\n  -moz-animation: scroll 90s linear 6s infinite;\n  -ms-animation: scroll 90s linear 6s infinite;\n  -o-animation: scroll 90s linear 6s infinite;\n  animation: scroll 90s linear 6s infinite;\n`;\n\nexport default function Credits({ contentUrl = '', title = '' }) {\n  const [creditsMd, setCreditsMd] = useState('');\n  const [containerWidth, setContainerWidth] = useState(0);\n\n  useEffect(() => {\n    const fetchCredits = async () => {\n      try {\n        const rq = await fetch(`https://${contentUrl}`);\n        if (rq.ok) {\n          setCreditsMd(await rq.text());\n        }\n      } catch (e) {\n        console.log(e);\n      }\n    };\n    fetchCredits();\n  });\n\n  useLayoutEffect(() => {\n    setContainerWidth(window.innerWidth * 0.9);\n  }, []);\n\n  const creditsText = useMarked(creditsMd);\n\n  return (\n    <CreditsContainer width={`${containerWidth}px`}>\n      <StartLabel>A short time ago in a Splunk instance very, very close&hellip;</StartLabel>\n      <Title>{title}</Title>\n      <CreditsLine width={`${containerWidth * 0.7}px`}>\n        <TitleContent\n          dangerouslySetInnerHTML={{\n            __html: creditsText,\n          }}\n        />\n      </CreditsLine>\n    </CreditsContainer>\n  );\n}\n","import React from 'react';\nimport { Box } from 'reflexbox';\nimport styled from 'styled-components';\n\nconst PROFILE_BOX_WIDTH_REGULAR = 420;\nconst PROFILE_BOX_WIDTH_MOBILE = 320;\n\nconst Background = styled.div`\n  position: fixed;\n  z-index: 900;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  overflow: auto;\n  background-color: transparent;\n`;\n\nconst Arrow = styled.div`\n  width: 0;\n  height: 0;\n  margin-left: ${(props) => (props.mobile ? '270px' : '370px')};\n  border-left: 10px solid transparent;\n  border-right: 10px solid transparent;\n  box-shadow: 0px 4px 10px #00000059;\n  border-bottom: 13px solid ${(props) => props.theme.color.profile.border};\n`;\n\nexport default function FloatingMenu({ onBackgroundClick, mobile, children, parentRef = null }) {\n  let floatingLeftMargin = document.documentElement.clientWidth;\n\n  if (parentRef && parentRef.current) {\n    floatingLeftMargin = parentRef.current.getBoundingClientRect().x + 60;\n  }\n\n  return (\n    <Background onClick={() => onBackgroundClick && onBackgroundClick()}>\n      <Box\n        ml={\n          mobile\n            ? floatingLeftMargin - PROFILE_BOX_WIDTH_MOBILE\n            : floatingLeftMargin - PROFILE_BOX_WIDTH_REGULAR\n        }\n        mt=\"48px\"\n        style={{ position: 'absolute' }}\n        justifyContent=\"right\"\n        onClick={(e) => e.stopPropagation()}\n      >\n        <Arrow mobile={mobile} />\n        {children}\n      </Box>\n    </Background>\n  );\n}\n","import React from 'react';\n\nexport default function FloatingPanel(props) {\n  const { children } = props;\n  return (\n    <div\n      style={{\n        position: 'absolute',\n        right: 0,\n        minWidth: '200px',\n        display: 'flex',\n        justifyContent: 'flex-end',\n      }}\n    >\n      {children}\n    </div>\n  );\n}\n","import styled from 'styled-components';\n\nconst Form = styled.form`\n  background: ${(props) => props.theme.color.form.background} 0% 0% no-repeat padding-box;\n  border: ${(props) => (props.noBorder ? '' : `2px solid ${props.theme.color.form.border.main}`)};\n  filter: ${(props) => (props.refreshing ? 'blur(1px)' : 'none')};\n  height: ${(props) => props.height};\n`;\n\nForm.displayName = 'Form';\n\nexport default Form;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst Label = styled.div`\n  color: ${(props) =>\n    props.light ? props.theme.color.text.light.color : props.theme.color.text.medium.color};\n  text-align: left;\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  letter-spacing: 0.56px;\n  opacity: 1;\n`;\n\nconst Required = styled.div`\n  color: red;\n`;\n\nfunction FormLabel(props) {\n  const { required, children, light, style } = props;\n  return (\n    <Flex style={style}>\n      <Label light={light}>{children}</Label>\n      {required && <Required title=\"This field is required\">*</Required>}\n    </Flex>\n  );\n}\n\nexport default FormLabel;\n","import { Flex } from 'reflexbox';\nimport styled from 'styled-components';\n\nconst HovereableFlex = styled(Flex)`\n  &:hover {\n    cursor: ${(props) => (props.disable ? 'not-allowed' : 'pointer')};\n  }\n`;\n\nexport default HovereableFlex;\n","import styled, { css } from 'styled-components';\n\nexport default styled.td`\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  color: #d0d0d0;\n  text-align: ${(props) => (props.center ? 'center' : 'left')};\n  ${(props) =>\n    props.available &&\n    css`\n      color: #a5d6a7;\n    `}\n  ${(props) =>\n    props.invited &&\n    css`\n      color: #e5c07b;\n    `}\n  ${(props) =>\n    props.unavailable &&\n    css`\n      color: #a088a4;\n    `}\n  ${(props) =>\n    props.public &&\n    css`\n      color: #81a2be;\n    `}\n  ${(props) =>\n    props.full &&\n    css`\n      color: #a088a4;\n    `}\n  width: ${(props) => props.width || 'auto'};\n  ${(props) =>\n    !props.noBorder &&\n    css`\n      border-bottom: 1px solid #2c2c2c;\n    `}\n`;\n","import styled from 'styled-components';\n\nconst Row = styled.tr`\n  height: 52px;\n  vertical-align: middle;\n`;\n\nexport default Row;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nconst ListBody = styled.tbody``;\n\nconst List = styled.table`\n  padding: ${(props) => (props.mobile ? '20px 0px 0px 20px' : '35px 45px 0px 45px')};\n  width: 100%;\n`;\nList.displayName = 'ListTableList';\n\nconst ListContainer = styled.div`\n  ${(props) =>\n    props.refreshing &&\n    css`\n      opacity: 0.8;\n      cursor: not-allowed;\n    `}\n  background-color: ${(props) => (props.transparentBackground ? 'transparent' : '#1d1d1d')};\n  width: 100%;\n  height: 100%;\n`;\nListContainer.displayName = 'ListTableListContainer';\n\nexport default function ListTable({\n  refreshing = false,\n  mobile,\n  children,\n  transparentBackground = false,\n}) {\n  return (\n    <ListContainer\n      refreshing={refreshing}\n      mobile={mobile}\n      transparentBackground={transparentBackground}\n    >\n      <List mobile={mobile}>\n        <ListBody mobile={mobile}>{children}</ListBody>\n      </List>\n    </ListContainer>\n  );\n}\n","import React from 'react';\n\nconst WIDTH = 30;\nconst HEIGHT = 40;\nfunction BooIcon(props) {\n  return (\n    <svg\n      width={props.size || WIDTH}\n      height={props.size || HEIGHT}\n      viewBox=\"0 0 337.0914307 384.1937256\"\n    >\n      <g id=\"BOO\">\n        <linearGradient\n          id=\"SVGID_1_\"\n          gradientUnits=\"userSpaceOnUse\"\n          x1=\"62.776226\"\n          y1=\"287.4862366\"\n          x2=\"282.8515015\"\n          y2=\"97.5329742\"\n        >\n          <stop offset=\"0%\" style={{ stopColor: '#ED0080' }} />\n          <stop offset=\"6%\" style={{ stopColor: '#ED0D72' }} />\n          <stop offset=\"34%\" style={{ stopColor: '#EF4538' }} />\n          <stop offset=\"47%\" style={{ stopColor: '#F05A22' }} />\n          <stop offset=\"99%\" style={{ stopColor: '#F99D1C' }} />\n        </linearGradient>\n        <circle\n          style={{ fill: 'url(#SVGID_1_)' }}\n          cx=\"169.7421875\"\n          cy=\"195.1609955\"\n          r=\"166.3019257\"\n        />\n        <path\n          fill=\"#FFFFFF\"\n          d=\"M169.7421875,39.2599564c-86.1018677,0-155.9011841,69.7992935-155.9011841,155.901123\n\t\ts69.799324,155.9011993,155.9011841,155.9011993s155.901123-69.7993774,155.901123-155.9011993\n\t\tS255.8439789,39.2599564,169.7421875,39.2599564L169.7421875,39.2599564z\"\n        />\n        <path\n          d=\"M169.7421875,44.2700043c40.3044281,0,78.1965179,15.6954041,106.696106,44.1949921\n\t\tc28.4996033,28.499527,44.1950073,66.3916473,44.1950073,106.6960907s-15.6954041,78.196579-44.1950073,106.6961823\n\t\tc-28.499588,28.4995422-66.3916779,44.1949463-106.696106,44.1949463c-40.3045044,0-78.1965942-15.6954041-106.6961823-44.1949463\n\t\tc-28.4995842-28.4996033-44.194931-66.3916626-44.194931-106.6961823s15.6953449-78.1965637,44.194931-106.6960907\n\t\tC91.5455933,59.9654083,129.4376831,44.2700043,169.7421875,44.2700043\"\n        />\n        <g>\n          <polygon\n            fill=\"#363C44\"\n            points=\"-6.0573277,283.6479492 342.6569214,209.4478302 342.6569214,114.4594345 -6.0573277,188.6595459 \t\t\n\t\t\t\"\n          />\n        </g>\n        <g>\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M82.4019775,222.8423462c-1.5776443-1.7671509-3.4988708-3.0991669-5.7376022-3.982254\n\t\t\tc3.1208344-2.2997589,5.3433151-5.1035919,6.6260986-8.3661804c1.6253967-4.1387939,2.0403595-8.3445282,1.2340622-12.503006\n\t\t\tc-1.0627594-5.4727631-4.1151657-9.6696472-9.0725555-12.4724884c-4.8771515-2.7585297-11.4968529-3.3502045-19.6745071-1.7641907\n\t\t\tl-28.237587,5.4786682l-0.0103378,80.4484406l32.5949326-6.3253174c6.8889618-1.335968,12.5207214-3.5924072,16.7397461-6.7053528\n\t\t\tc4.2731781-3.1523285,7.2645416-6.9485168,8.8894424-11.2802734c1.6199722-4.3179626,1.9832535-8.8653107,1.0804749-13.5170288\n\t\t\tC86.170105,228.4312897,84.6791,225.4000397,82.4019775,222.8423462z M45.9670486,249.5682526l-0.0669479-16.9765167\n\t\t\tl11.8448715-2.2987823c3.1301804-0.6074219,5.4929543-0.4459686,7.0169449,0.4794464\n\t\t\tc1.4983902,0.9126282,2.411499,2.3066559,2.7910233,4.2618561c0.5355606,2.760498,0.1629333,5.2414093-1.1385651,7.5825195\n\t\t\tc-1.235527,2.2190399-4.1013756,3.7794495-8.5172997,4.6369476L45.9670486,249.5682526z M63.6907921,200.3753357\n\t\t\tc1.3206902,0.7944794,2.1196022,1.9896545,2.4420204,3.6524506c0.4479446,2.3086243,0.0708847,4.4302063-1.1543121,6.4858093\n\t\t\tc-1.1725235,1.9689789-3.8335953,3.368927-7.9098701,4.1604462L45.9069939,216.83992l0.0300255-14.6413116l11.9605484-2.3204346\n\t\t\tC60.3868484,199.3928223,62.3351517,199.562149,63.6907921,200.3753357z\"\n          />\n        </g>\n        <path\n          fill=\"#FFFFFF\"\n          d=\"M233.493988,186.0044403c-4.026062-3.0154877-9.8852386-4.7865906-17.4116516-5.2630768l-6.4848328-0.425293\n\t\tc-3.0199127-0.1772156-5.2935944-0.656662-6.7609711-1.4275208c-1.2453766-0.6507416-1.9975281-1.724823-2.2992706-3.2822723\n\t\tc-0.4804382-2.4730377,0.1161652-4.5650787,1.8242493-6.3952484c1.8345947-1.9689636,4.2298584-3.2182922,7.3221436-3.8188171\n\t\tc2.8727264-0.5572205,5.394989-0.2992859,7.7105103,0.7875824c2.1678467,1.0179596,3.5879669,3.0686493,4.3420868,6.2702026\n\t\tl0.333252,1.4147186l18.268158-3.5461273l-0.3047028-1.4954376c-1.6824799-8.260849-5.5662842-14.0712891-11.5440979-17.2708893\n\t\tc-5.8773956-3.144455-13.0331573-3.9251404-21.2693787-2.3292847c-5.4294586,1.0533905-10.3228607,3.0243378-14.544342,5.8586884\n\t\tc-4.2707062,2.8727264-7.4978638,6.4730072-9.5923615,10.7003937c-2.1284637,4.2953339-2.6955261,9.1143951-1.6849518,14.3233337\n\t\tc1.123291,5.7887878,3.8429413,10.1727142,8.0821533,13.0306854c4.1186066,2.7811737,9.8222351,4.4311829,16.9592896,4.9037323\n\t\tl6.5640717,0.4036407c4.1712799,0.305191,6.095459,1.0986938,6.9746094,1.7100525\n\t\tc1.1877899,0.8259888,1.9325562,2.0910492,2.2766266,3.8670654c0.5207977,2.6797791-0.1776886,4.9697113-2.1348572,7.0016937\n\t\tc-2.0698853,2.150116-4.9253998,3.5904236-8.4862976,4.2815399c-3.2000732,0.6221924-6.1407318,0.3278351-8.7452087-0.8722687\n\t\tc-2.4882812-1.1449585-4.0979309-3.4309387-4.9199677-6.986908l-0.3288269-1.4216003l-18.2730865,3.5451355l0.3032227,1.4954376\n\t\tc1.7514038,8.6270752,5.8370361,14.6846313,12.1426849,18.0043335c4.1072845,2.1629181,8.7855682,3.247818,13.9762878,3.247818\n\t\tc2.6398926,0,5.413208-0.2805786,8.3095703-0.8427124c5.7927246-1.1242828,10.9676971-3.1867981,15.3831177-6.1304169\n\t\tc4.4676056-2.9800415,7.8581848-6.7023926,10.0772247-11.0636749c2.2569427-4.4341431,2.8742218-9.3999023,1.8345947-14.7584686\n\t\tC240.2475891,193.6194611,237.5899506,189.0711212,233.493988,186.0044403z\"\n        />\n        <path\n          fill=\"#FFFFFF\"\n          d=\"M310.4928284,184.498642c-1.1454468-5.9020081-3.8035583-10.4493713-7.8990479-13.5150604\n\t\tc-4.026062-3.0154877-9.8852539-4.7865906-17.4116516-5.2630768l-6.4848328-0.425293\n\t\tc-3.0194092-0.1772156-5.2930908-0.656662-6.7604675-1.4275208c-1.2458801-0.6517181-1.9980469-1.724823-2.2997742-3.2822723\n\t\tc-0.47995-2.4730377,0.1161804-4.5650787,1.823761-6.396225c1.835083-1.9679871,4.2303467-3.2173157,7.3226318-3.8178406\n\t\tc2.8722229-0.5582123,5.394989-0.3002777,7.710022,0.7866058c2.168335,1.0189362,3.5884399,3.0696259,4.3425598,6.2702026\n\t\tl0.333252,1.4147034l18.2681885-3.5441589l-0.304718-1.4964142c-1.6820068-8.2598572-5.5662842-14.0712891-11.5440979-17.2708893\n\t\tc-5.8778992-3.144455-13.0336609-3.9261322-21.2693787-2.3292999c-5.4289551,1.0534058-10.3218689,3.024353-14.544342,5.8587036\n\t\tc-4.2707214,2.8727264-7.4978638,6.4720154-9.5923615,10.6994171c-2.1284637,4.2963104-2.6950378,9.1153717-1.6849518,14.3233185\n\t\tc1.123291,5.7878113,3.842453,10.1727142,8.0821533,13.0316772c4.1185913,2.7811737,9.8222351,4.4311829,16.9597778,4.9037323\n\t\tl6.5640869,0.4026489c4.1712646,0.3071594,6.095459,1.0996857,6.9736023,1.7100677\n\t\tc1.1882935,0.8269653,1.9330444,2.0920258,2.2771301,3.868042c0.5207825,2.6797791-0.1777039,4.9697113-2.1348572,7.0016937\n\t\tc-2.0698853,2.150116-4.9253845,3.5904236-8.4862976,4.2815399c-3.2000732,0.6221924-6.1412354,0.3268433-8.7452087-0.8722687\n\t\tc-2.4882812-1.1449585-4.0979309-3.4309387-4.9199829-6.9878845l-0.3288269-1.4216156l-18.2730713,3.5461273l0.3032227,1.4954376\n\t\tc1.7514038,8.6270752,5.8370209,14.6846313,12.1426697,18.0033417c4.1068115,2.1639099,8.7860718,3.2488098,13.9772644,3.2488098\n\t\tc2.6399231,0,5.4122314-0.2805786,8.3085938-0.8427124c5.7902832-1.1242828,10.9657288-3.1867981,15.3831482-6.1304169\n\t\tc4.4675903-2.9800415,7.8581848-6.7023926,10.0772095-11.0636749\n\t\tC310.9151611,194.8229675,311.5324402,189.8581848,310.4928284,184.498642z\"\n        />\n        <path\n          id=\"Logo_17_\"\n          fill=\"#FFFFFF\"\n          d=\"M114.0024033,107.6023178c0,0.9661255-0.2053833,1.8580017-0.6135559,2.6774368\n\t\tc-0.4089203,0.8199081-0.9794159,1.514389-1.7098618,2.0842056c-0.7304993,0.5707245-1.5991058,1.016983-2.6069107,1.3387833\n\t\tc-1.0080261,0.3213501-2.1111908,0.4810791-3.3089523,0.4810791c-1.4328156,0-2.7174377-0.195694-3.8575058-0.5882263\n\t\tc-1.1391144-0.3933029-2.2772903-1.0418625-3.4166412-1.9453354l1.8840179-3.0633545\n\t\tc0.9053268,0.7583694,1.7226181,1.3137283,2.4533386,1.6641846c0.7292786,0.3511581,1.4751129,0.5248566,2.2356415,0.5248566\n\t\tc0.9344177,0,1.6859589-0.2394562,2.2560043-0.7224197c0.5697708-0.4827194,0.8551559-1.1332016,0.8551559-1.9514694\n\t\tc0-0.3509064-0.0518112-0.6814728-0.1535873-0.987442c-0.1017609-0.3066711-0.2915192-0.6218567-0.5693207-0.943634\n\t\tc-0.2766037-0.3209076-0.655426-0.671814-1.1374588-1.0515976c-0.4817581-0.3799896-1.1017227-0.8487473-1.8596649-1.4034424\n\t\tc-0.583519-0.4095993-1.1523361-0.8333817-1.7065277-1.2716141c-0.55513-0.4389114-1.0581818-0.9072418-1.5106201-1.4045944\n\t\tc-0.4519424-0.496933-0.8165817-1.0515518-1.094635-1.665596c-0.2770767-0.6157074-0.4147873-1.3168411-0.4147873-2.105545\n\t\tc0-0.9060287,0.1890488-1.7325745,0.5679016-2.4788818c0.3781281-0.745369,0.8951569-1.3806992,1.5520096-1.9067459\n\t\tc0.6554718-0.5267181,1.4413071-0.9358292,2.3600998-1.2278519c0.9179001-0.2931519,1.9157639-0.4396362,2.9933472-0.4396362\n\t\tc1.1381531,0,2.2391739,0.1526489,3.3065948,0.4574127c1.0650711,0.3052139,2.0513458,0.7472763,2.9573822,1.3276901\n\t\tl-1.7089386,2.7512817c-1.1681976-0.8175888-2.3951492-1.2266998-3.6811905-1.2266998\n\t\tc-0.7874985,0-1.4386597,0.2053909-1.9493027,0.6145325c-0.5113602,0.4095993-0.7664566,0.9204788-0.7664566,1.5356903\n\t\tc0,0.5851746,0.225296,1.1126175,0.6772385,1.5802002c0.4493332,0.4680481,1.2282944,1.1265793,2.3357162,1.9739227\n\t\tc1.1145096,0.8199081,2.0383301,1.5361633,2.7711639,2.1507111c0.73349,0.6145325,1.3120728,1.1930542,1.7372589,1.7332535\n\t\tc0.4259262,0.541893,0.7191238,1.091095,0.880249,1.6464615\n\t\tC113.9200668,106.3160172,114.0024033,106.9298401,114.0024033,107.6023178 M139.5061798,102.2174301\n\t\tc0-1.6355591-0.2346954-3.1253815-0.702301-4.4696579c-0.4687653-1.3449783-1.1352997-2.4982986-1.9973602-3.4639511\n\t\tc-0.8641663-0.9645004-1.8884888-1.7172089-3.0732574-2.2574005c-1.1855011-0.5402451-2.4938049-0.8109436-3.9284973-0.8109436\n\t\tc-1.5799255,0-2.9708557,0.2993469-4.17099,0.8979797c-1.1994553,0.5994034-2.3111572,1.5418854-3.3361969,2.826973\n\t\tl-0.0305252-3.1986694h-5.6319504v32.865921h5.6319504V110.716774c0.5567703,0.6431656,1.091774,1.1852417,1.6047745,1.6241989\n\t\tc0.5127716,0.4401245,1.0333862,0.7985992,1.5607834,1.0764313c0.5281754,0.2768631,1.084465,0.4744339,1.6710968,0.5924835\n\t\tc0.586319,0.1166992,1.217186,0.1739349,1.8915634,0.1739349c1.4950256,0,2.8878021-0.2993469,4.1773987-0.8968277\n\t\tc1.2910309-0.5993652,2.4039001-1.4393845,3.3428345-2.5214767c0.938446-1.0802002,1.6705475-2.3444901,2.1984863-3.7912064\n\t\tC139.2423553,105.5282898,139.5061798,103.9421539,139.5061798,102.2174301 M133.381134,102.4393845\n\t\tc0,0.8492279-0.089447,1.7630615-0.2652588,2.7431793c-0.1767426,0.9798813-0.4782257,1.8875656-0.9046326,2.7209473\n\t\tc-0.4268494,0.8331909-0.9855499,1.5203705-1.6766968,2.0617218c-0.6923676,0.5411682-1.5662689,0.8107147-2.6248932,0.8107147\n\t\tc-1.7654877,0-3.1556931-0.7004166-4.1707993-2.1062241c-1.0141907-1.4034271-1.5217285-3.3340759-1.5217285-5.7914352\n\t\tc0-2.5145874,0.515152-4.5112762,1.5449371-5.9889908c1.0293121-1.4777298,2.4263535-2.2159882,4.1913528-2.2159882\n\t\tc1.6767426,0,3.0001678,0.6956635,3.9706116,2.084404C132.8955536,98.1476746,133.381134,100.041626,133.381134,102.4393845\n\t\t M142.0127716,81.4811554v32.161972h5.779953v-32.161972H142.0127716L142.0127716,81.4811554z M166.699295,113.652153h5.7799377\n\t\tV91.709343h-5.7799377v11.8085403c0,1.0539322-0.0431213,1.8653564-0.1322937,2.4353561\n\t\tc-0.0881958,0.5712128-0.2350464,1.0906219-0.440506,1.5588913c-0.8209381,1.8147202-2.3183746,2.7212296-4.4913635,2.7212296\n\t\tc-1.7024536,0-2.8926544-0.6137924-3.5672302-1.8447495c-0.2645874-0.4663925-0.4482574-0.9942856-0.5509949-1.5787659\n\t\tc-0.1027374-0.5858917-0.1541138-1.4332352-0.1541138-2.54702V91.709343h-5.7794495v12.466835\n\t\tc0,0.8492813,0.0072632,1.5667496,0.0222778,2.1514206c0.0145416,0.5851746,0.0513763,1.1045685,0.1095276,1.5586548\n\t\tc0.0586395,0.4543228,0.1245422,0.8561096,0.1982117,1.2070312c0.0726929,0.3511353,0.1822205,0.6883316,0.3290405,1.0096817\n\t\tc0.5262909,1.3459549,1.3821259,2.3634338,2.5674744,3.0517807c1.1863251,0.6864548,2.6416016,1.0290756,4.3677979,1.0290756\n\t\tc1.551712,0,2.9125061-0.2694931,4.083313-0.8109055c1.1708221-0.541893,2.3120728-1.4270782,3.4242554-2.6561432\n\t\tL166.699295,113.652153L166.699295,113.652153z M191.6281281,113.6424026h5.7809143v-12.439888\n\t\tc0-0.8468552-0.008728-1.5693207-0.0232697-2.1684418c-0.0145264-0.5986328-0.0499115-1.1168747-0.1095123-1.5551224\n\t\tc-0.0586395-0.4377289-0.1308441-0.8236771-0.2195282-1.1601486c-0.0867462-0.3360214-0.1904449-0.6639557-0.3072357-0.9865189\n\t\tc-0.5267792-1.3137207-1.3830872-2.3274231-2.5679626-3.043251c-1.1863251-0.7155304-2.6420898-1.073555-4.3697205-1.073555\n\t\tc-1.5507507,0-2.9125061,0.2706985-4.08284,0.8128357c-1.1717987,0.5406799-2.3120728,1.4275665-3.4252167,2.6554184\n\t\tl-0.0106659-2.9346466h-5.8298645v21.8933182h5.8298645v-11.8210983c0-1.0213089,0.0363312-1.8168411,0.1090393-2.3861618\n\t\tc0.0736542-0.56884,0.212738-1.1009979,0.4196777-1.597908c0.3804016-0.8748093,0.9609833-1.5392685,1.7382812-1.9914474\n\t\tc0.7782898-0.452446,1.7111511-0.6786575,2.7976532-0.6786575c1.7029266,0,2.8921509,0.6133194,3.567215,1.8386154\n\t\tc0.2621765,0.4670715,0.4472961,0.993782,0.548584,1.5766373c0.1036987,0.583252,0.1545868,1.4301224,0.1545868,2.5389557\n\t\tV113.6424026L191.6281281,113.6424026z M215.9511871,114.0863571l5.3903351-1.8845062l-8.8092499-10.9536362l7.4499207-7.9745636\n\t\tl-4.3823395-1.8837662l-7.7542419,8.9816132h-0.6130371V81.4873047h-5.8293762v32.1612625h5.8293762v-11.6554718\n\t\tL215.9511871,114.0863571L215.9511871,114.0863571z M226.3451233,113.0491943l17.526886-8.7090225v-3.5882111l-17.526886-8.7956085\n\t\tv3.9381638l13.5826263,6.6082458l-13.5826263,6.6955795V113.0491943L226.3451233,113.0491943z M227.674408,88.1760025v-0.7432022\n\t\tc0.0605621-0.0090027,0.1400299-0.01754,0.2539215-0.01754c0.3935089,0,0.5335541,0.1919022,0.5335541,0.3845291\n\t\tc0,0.2714005-0.2451935,0.3762131-0.5335541,0.3762131H227.674408L227.674408,88.1760025z M227.674408,89.3915482V88.446701\n\t\th0.2447052c0.2791595,0,0.419693,0.105545,0.4720306,0.3852539c0.0440826,0.2884598,0.0964355,0.489563,0.1487579,0.5595932\n\t\th0.3668671c-0.0339355-0.0700302-0.0867615-0.2011185-0.1386108-0.542572\n\t\tc-0.0440826-0.3229904-0.175415-0.4980774-0.3682861-0.533371v-0.0170059\n\t\tc0.236496-0.0700684,0.4288788-0.2451553,0.4288788-0.5333557c0-0.2103729-0.070282-0.3585129-0.2011261-0.4548111\n\t\tc-0.1318054-0.0965271-0.3498688-0.1665649-0.682312-0.1665649c-0.262207,0-0.4371338,0.0262604-0.6207886,0.0525284v2.1951523\n\t\tH227.674408L227.674408,89.3915482z M228.0412445,86.5842438h0.0101929c0.8737488,0,1.5725403,0.7432556,1.5725403,1.6703568\n\t\tc0,0.9266129-0.6987915,1.6703033-1.5725403,1.6613388c-0.8757019,0-1.584198-0.734726-1.584198-1.6698685\n\t\tC226.4672394,87.3274994,227.1757355,86.5842438,228.0412445,86.5842438L228.0412445,86.5842438z M228.0514374,86.2782745\n\t\th-0.0101929c-1.0753326,0-1.9490814,0.8748016-1.9490814,1.9677963c0,1.1102448,0.8737488,1.9757996,1.9490814,1.9757996\n\t\tc1.0850372,0,1.942337-0.8655548,1.942337-1.9757996C229.9835815,87.1530762,229.1262817,86.2782745,228.0514374,86.2782745\n\t\tL228.0514374,86.2782745z\"\n        />\n        <g>\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M112.1307602,304.6702576c-2.2314453,0.4707031-4.0341797,0.2333984-5.4091797-0.7128906\n\t\t\tc-1.3759766-0.9462891-2.28125-2.4570312-2.71875-4.5317383c-0.2568359-1.2133789-0.2998047-2.409668-0.1289062-3.5908203\n\t\t\tc0.1689453-1.1801758,0.5351562-2.2744141,1.1005859-3.2832031c0.5634766-1.0078125,1.3173828-1.8666992,2.2617188-2.5771484\n\t\t\tc0.9423828-0.7099609,2.0605469-1.2016602,3.3525391-1.4741211c2.2304688-0.4707031,4.03125-0.2382812,5.4052734,0.6982422\n\t\t\tc1.3740234,0.9375,2.28125,2.4526367,2.7226562,4.5458984c0.2558594,1.2138672,0.2978516,2.4116211,0.1289062,3.5908203\n\t\t\tc-0.1699219,1.1806641-0.5371094,2.2753906-1.1005859,3.2832031c-0.5644531,1.0087891-1.3183594,1.8686523-2.2617188,2.5776367\n\t\t\tC114.5399399,303.9065857,113.4217758,304.3977966,112.1307602,304.6702576z M111.698143,301.0208435\n\t\t\tc0.8007812-0.1694336,1.4511719-0.5507812,1.9492188-1.1474609c0.4980469-0.5947266,0.8271484-1.3339844,0.9882812-2.2163086\n\t\t\tc0.1611328-0.8828125,0.1357422-1.8320312-0.0791016-2.8500977c-0.21875-1.0375977-0.6279297-1.7890625-1.2275391-2.2548828\n\t\t\tc-0.5996094-0.4663086-1.3681641-0.6005859-2.3076172-0.4023438c-0.8027344,0.1689453-1.4521484,0.5512695-1.9501953,1.1474609\n\t\t\tc-0.4980469,0.5947266-0.8271484,1.3349609-0.9882812,2.2167969s-0.1347656,1.8325195,0.0800781,2.8491211\n\t\t\tc0.2148438,1.0185547,0.6220703,1.7651367,1.2246094,2.2407227\n\t\t\tC109.9881821,301.0799255,110.7586899,301.2185974,111.698143,301.0208435z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M122.9315414,307.9095154l-0.2929688-18.2421875l-2.3183594,0.4892578l-0.0712891-3.3881836\n\t\t\tl2.3476562-0.4956055l-0.0107422-0.487793c-0.03125-2.1811523,0.4052734-3.7963867,1.3076172-4.8452148\n\t\t\ts2.234375-1.7587891,3.9960938-2.1308594c0.4492264-0.0947266,0.8955154-0.1630859,1.3359451-0.2055664\n\t\t\tc0.4414062-0.0419922,0.8242188-0.0668945,1.1494141-0.0737305l0.0585938,3.1767578l-1.1152344,0.2353516\n\t\t\tc-1.0185547,0.2148438-1.708992,0.5488281-2.0732498,1.0043945s-0.5429688,1.1826172-0.5361328,2.1831055l-0.0029297,0.2763672\n\t\t\tl3.2002029-0.675293l0.0996094,3.3823242l-3.2285233,0.6811523l0.2646484,18.2485352L122.9315414,307.9095154z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M147.9657288,297.2303162c-2.4853516,0.5244141-4.609375,0.2211914-6.3701172-0.9091797\n\t\t\tc-1.7617188-1.1308594-2.9316406-3.0649414-3.5097656-5.8061523c-0.3427734-1.6230469-0.4375-3.237793-0.2871094-4.8447266\n\t\t\tc0.1523438-1.605957,0.5654297-3.1083984,1.2412109-4.5073242c0.6748047-1.4003906,1.6162109-2.5898438,2.8193359-3.5693359\n\t\t\tc1.203125-0.9799805,2.6855469-1.6557617,4.4462891-2.0273438c2.5048828-0.5288086,4.6337891-0.2260742,6.3847656,0.90625\n\t\t\tc1.7519531,1.1323242,2.9169922,3.0693359,3.4951172,5.8085938c0.3427734,1.6245117,0.4384766,3.2387695,0.2871094,4.8447266\n\t\t\tc-0.1523438,1.605957-0.5654297,3.1088867-1.2412109,4.5092773c-0.6757812,1.3984375-1.6152344,2.5893555-2.8193359,3.5688477\n\t\t\tC151.2088928,296.1824646,149.7264709,296.8587341,147.9657288,297.2303162z M147.5711975,293.3269958\n\t\t\tc1.2519531-0.2641602,2.25-0.8876953,2.9921875-1.8725586c0.7431641-0.984375,1.2207031-2.1845703,1.4326172-3.5986328\n\t\t\tc0.2128906-1.4135742,0.1601562-2.8740234-0.1582031-4.3818359c-0.3173828-1.5068359-0.9160156-2.6220703-1.7949219-3.3457031\n\t\t\tc-0.8779297-0.7241211-1.9921875-0.9438477-3.3427734-0.6591797c-1.2519531,0.2646484-2.25,0.8881836-2.9921875,1.8730469\n\t\t\tc-0.7431641,0.984375-1.2216797,2.1791992-1.4355469,3.5839844c-0.2148438,1.4047852-0.1611328,2.8701172,0.1611328,4.3959961\n\t\t\tc0.3173828,1.5068359,0.9150391,2.6225586,1.7949219,3.3461914\n\t\t\tC145.1053772,293.3934021,146.2206116,293.6121521,147.5711975,293.3269958z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M159.8280334,300.1233826l-0.3349609-21.637207l3.6396484-0.7680664l0.3320312,1.8608398\n\t\t\tc0.3486328-0.7680664,0.8789062-1.4267578,1.5908203-1.9750977c0.7128906-0.5488281,1.5087891-0.9165039,2.3896484-1.1025391\n\t\t\tc1.6621094-0.3505859,3.0703125-0.0703125,4.2246094,0.8413086c1.1523438,0.9116211,1.9394531,2.3647461,2.3613281,4.3608398\n\t\t\tc0.4130859,1.9570312,0.4160156,3.7192383,0.0117188,5.2866211c-0.40625,1.5678711-1.1103516,2.8554688-2.1132812,3.8642578\n\t\t\tc-1.0029297,1.0092773-2.2089844,1.6621094-3.6181641,1.9594727c-0.9980469,0.2109375-1.8789062,0.2021484-2.6425781-0.0244141\n\t\t\tc-0.7626953-0.2265625-1.3857422-0.6171875-1.8710938-1.1689453l0.1396484,7.6357422L159.8280334,300.1233826z\n\t\t\t M163.7079163,284.2200623l0.0351562,2.1987305c0.0068359,0.3261719,0.0439453,0.6455078,0.1103516,0.9580078\n\t\t\tc0.1855469,0.8808594,0.5654297,1.4707031,1.1396484,1.7685547c0.5722656,0.2983398,1.203125,0.3740234,1.8886719,0.2294922\n\t\t\tc0.859375-0.1816406,1.5488281-0.5761719,2.0634766-1.1860352s0.8564453-1.3662109,1.0224609-2.2709961\n\t\t\tc0.1669922-0.9033203,0.1416016-1.8745117-0.0771484-2.9106445c-0.2226562-1.0576172-0.6289062-1.7939453-1.2177734-2.2119141\n\t\t\tc-0.5888672-0.4169922-1.2841797-0.5410156-2.0869141-0.3720703c-0.8212891,0.1738281-1.5126953,0.5800781-2.0732422,1.2197266\n\t\t\tC163.9530334,282.2815857,163.6835022,283.1409607,163.7079163,284.2200623z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M175.9325256,286.2078552l3.875-0.8173828c0.1445312,0.5009766,0.4638672,0.8520508,0.9570312,1.0541992\n\t\t\tc0.4921875,0.2041016,1.1005859,0.2280273,1.8251953,0.0751953c0.8017578-0.1694336,1.4052734-0.4604492,1.8085938-0.8720703\n\t\t\tc0.4033203-0.4121094,0.5498047-0.8818359,0.4384766-1.4106445c-0.0869141-0.4106445-0.2724609-0.6791992-0.5537109-0.8032227\n\t\t\tc-0.2822266-0.1245117-0.8085938-0.1767578-1.5810547-0.1567383l-0.9111328,0.0385742\n\t\t\tc-1.6630859,0.0644531-2.9345703-0.171875-3.8154297-0.7128906c-0.8798828-0.5385742-1.4501953-1.425293-1.7109375-2.6586914\n\t\t\tc-0.2148438-1.0166016-0.1279297-1.965332,0.2597656-2.8447266c0.3857422-0.878418,1.0234375-1.6313477,1.9140625-2.2592773\n\t\t\tc0.8896484-0.6269531,1.9902344-1.0786133,3.3017578-1.3554688c1.8193359-0.3837891,3.3330078-0.2592773,4.5400391,0.375\n\t\t\tc1.2070312,0.6347656,1.9785156,1.7036133,2.3164062,3.206543l-3.7871094,0.7993164\n\t\t\tc-0.1464844-0.5004883-0.4472656-0.8613281-0.9013672-1.0825195c-0.4560547-0.2202148-1.0068359-0.2626953-1.6533203-0.1264648\n\t\t\tc-0.7226562,0.1523438-1.2695312,0.4267578-1.6347656,0.8203125c-0.3671875,0.3945312-0.4970703,0.8466797-0.3896484,1.3544922\n\t\t\tc0.078125,0.3720703,0.2783203,0.6162109,0.6005859,0.7319336c0.3193359,0.1162109,0.8857422,0.1616211,1.6982422,0.1328125\n\t\t\tl0.9111328-0.0395508c1.6201172-0.0756836,2.8681641,0.1508789,3.7460938,0.6811523\n\t\t\tc0.8789062,0.5297852,1.4453125,1.4018555,1.7021484,2.6152344c0.21875,1.0366211,0.1201172,2.019043-0.2988281,2.9443359\n\t\t\tc-0.4179688,0.9262695-1.0986328,1.71875-2.0419922,2.378418c-0.9443359,0.659668-2.1123047,1.1352539-3.5019531,1.4287109\n\t\t\tc-1.8974609,0.4003906-3.46875,0.2973633-4.7089844-0.3085938\n\t\t\tC177.094635,288.7884216,176.2919006,287.7264099,175.9325256,286.2078552z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M200.2176819,283.1678162l-0.0888672-5.0712891l-4.6386719,0.9790039l-0.0664062-3.512207\n\t\t\tl4.6376953-0.9790039l-0.0888672-5.0703125l3.6396484-0.7680664l0.0888672,5.0703125l4.6376953-0.9790039l0.0673828,3.5126953\n\t\t\tl-4.6386719,0.9785156l0.0898438,5.0712891L200.2176819,283.1678162z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M225.5760803,280.8514099c-2.4853516,0.5249023-4.6103516,0.2216797-6.3701172-0.9086914\n\t\t\tc-1.7617188-1.1308594-2.9326172-3.0654297-3.5107422-5.8061523c-0.3427734-1.6230469-0.4375-3.2382812-0.2871094-4.8452148\n\t\t\tc0.1533203-1.605957,0.5664062-3.1083984,1.2421875-4.5073242c0.6748047-1.3999023,1.6152344-2.5893555,2.8193359-3.5693359\n\t\t\tc1.203125-0.9794922,2.6845703-1.6557617,4.4462891-2.0273438c2.5039062-0.5283203,4.6337891-0.2260742,6.3857422,0.90625\n\t\t\tc1.75,1.1323242,2.9160156,3.0698242,3.4941406,5.809082c0.3427734,1.6240234,0.4375,3.2387695,0.2871094,4.8447266\n\t\t\tc-0.1533203,1.605957-0.5664062,3.1083984-1.2421875,4.5087891c-0.6757812,1.3989258-1.6142578,2.5898438-2.8183594,3.5688477\n\t\t\tC228.8192444,279.8040466,227.3368225,280.4798279,225.5760803,280.8514099z M225.1805725,276.9485779\n\t\t\tc1.2519531-0.2641602,2.2509766-0.8881836,2.9921875-1.8730469c0.7441406-0.984375,1.2216797-2.184082,1.4335938-3.5981445\n\t\t\tc0.2128906-1.4140625,0.1601562-2.8745117-0.1582031-4.3823242c-0.3183594-1.5068359-0.9169922-2.621582-1.7949219-3.3457031\n\t\t\tc-0.8789062-0.7241211-1.9921875-0.9438477-3.3427734-0.6586914c-1.2529297,0.2641602-2.25,0.8876953-2.9921875,1.8725586\n\t\t\tc-0.7431641,0.984375-1.2226562,2.1791992-1.4365234,3.5844727c-0.2138672,1.4042969-0.1611328,2.8701172,0.1611328,4.3959961\n\t\t\tc0.3183594,1.5068359,0.9160156,2.6225586,1.7958984,3.3457031\n\t\t\tC222.7157288,277.0149841,223.8309631,277.2332458,225.1805725,276.9485779z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M240.6053772,277.250824l-0.2001953-14.4609375l-4.0800781,0.8608398l-0.0976562-3.6582031\n\t\t\tl2.4365234-0.5141602c0.6650391-0.1401367,1.125-0.3344727,1.3789062-0.5820312\n\t\t\tc0.2548828-0.2475586,0.4248047-0.6977539,0.5126953-1.3500977l0.1513672-1.1669922l3.6992188-0.7807617l0.3085938,20.7851562\n\t\t\tL240.6053772,277.250824z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M252.3465881,274.7727966l-0.2011719-14.4609375l-4.0800781,0.8613281l-0.0966797-3.6582031\n\t\t\tl2.4365234-0.5146484c0.6650391-0.1401367,1.125-0.3339844,1.3789062-0.5820312\n\t\t\tc0.2548828-0.2475586,0.4248047-0.6977539,0.5126953-1.3500977l0.1523438-1.1669922l3.6982422-0.7807617l0.3085938,20.7851562\n\t\t\tL252.3465881,274.7727966z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M263.4481506,278.5618591c-0.4296875,0.0908203-0.8515625,0.1538086-1.2617188,0.1894531\n\t\t\tc-0.4121094,0.0366211-0.7607422,0.0537109-1.0478516,0.0527344l-0.0283203-3.3354492l0.8203125-0.1733398\n\t\t\tc0.7050781-0.1484375,1.2421875-0.3139648,1.6132812-0.4941406c0.3710938-0.1811523,0.6660156-0.4521484,0.8857422-0.8154297\n\t\t\ts0.4296875-0.8935547,0.6308594-1.5893555l0.1591797-0.5546875l-0.9394531,0.1982422l-5.1621094-14.578125l4.3447266-0.9169922\n\t\t\tl2.8603516,10.0668945c0.0878906,0.328125,0.2128906,0.4755859,0.3691406,0.4423828\n\t\t\tc0.1367188-0.0288086,0.2480469-0.2255859,0.3349609-0.5913086l2.4521484-11.1879883l4.5800781-0.9663086l-5.0908203,18.3061523\n\t\t\tc-0.3476562,1.2573242-0.7480469,2.2885742-1.2021484,3.0888672c-0.4541016,0.8017578-1.0234375,1.421875-1.7060547,1.8632812\n\t\t\tC265.3749084,278.0066833,264.5057678,278.3392029,263.4481506,278.5618591z\"\n          />\n        </g>\n        <path\n          fill=\"#FFFFFF\"\n          d=\"M155.9682922,168.7668762c-6.6743317-4.4725189-14.9174652-5.7966614-24.4980011-3.9349976\n\t\tc-6.6910782,1.2985382-12.4385223,3.8109589-17.0833435,7.4663696c-4.6310272,3.6445618-8.3218765,8.1643524-10.9701538,13.4323578\n\t\tc-2.6310425,5.2305756-4.3046722,10.9425812-4.9736328,16.9784851c-0.666008,6.0053711-0.4036407,12.1446381,0.7797165,18.2465057\n\t\tc2.0280457,10.4483795,6.4602127,18.0121918,13.1739273,22.4788208c4.7506485,3.160202,10.2632904,4.7472076,16.4571991,4.7472076\n\t\tc2.5473633,0,5.2099152-0.2687683,7.9822388-0.8063049c6.6910706-1.2985382,12.4385071-3.8109436,17.0833282-7.4663544\n\t\tc4.6261139-3.6386719,8.3169556-8.1584625,10.9706421-13.4323578c2.631546-5.2355194,4.3046875-10.9475098,4.9731445-16.9784851\n\t\tc0.6665039-6.0053864,0.4046326-12.1436615-0.7792206-18.2455292\n\t\tC167.0565796,180.8052063,162.6436157,173.2394104,155.9682922,168.7668762z\"\n        />\n        <path\n          fill=\"#F99D1C\"\n          d=\"M175.2409973,185.0733337c-1.4769287,0-8.072876,1.6964111-8.9215088,1.9952393\n\t\tc0.2823486-1.5506592,0.4938965-3.0592041,0.6252441-4.5023193c1.1948242-13.1304932-7.4289551-21.2738037-7.4289551-21.2738037\n\t\ts4.1044922-1.9810791,2.7744141-5.8234863c-1.0744629-3.1037598-14.4443359-11.4599609-29.7888184,0.0828857\n\t\tc-6.6945877,5.0361328-10.2294998,10.9489746-12.0678787,16.2026367c-1.1491699,2.3345947-2.3098145,4.8626709-3.4667969,7.5244141\n\t\tc-3.0808105-1.5146484-16.5266113-4.9711914-19.1413574-3.4141846c-3.5302734,2.1022949-5.3587646,6.1466064-3.6567383,9.4085693\n\t\tc1.5985107,3.0638428,4.8703613,3.2241211,9.0065918,2.5458984c1.659668,2.5576172,4.2420654,4.9812012,7.2827148,7.7412109\n\t\tc-4.1992188,11.265625-7.8918457,22.5231934-10.1704102,29.8361816c1.8952637,6.6408691,4.9350586,11.8825684,9.078125,15.6561279\n\t\tc1.354248-0.9876709,2.6309814-2.0610352,3.694458-2.9971924c1.7489014-1.5397949,4.8201904-3.4902344,8.1300049-4.9259033\n\t\tc5.1750488-0.5292969,1.7415771,17.0531006,18.8403397,10.4342041c15.8342285-6.1293945,17.5422363,5.4348145,25.6580811,6.7875977\n\t\tc8.1158447,1.3525391,0.6824951-23.8896484,0.6824951-23.8896484l-3.2958984-23.4599609\n\t\tc2.9753418-1.0893555,6.246582-2.7944336,9.3728027-5.465332c0.8630371,0.5209961,1.8044434,0.861084,2.7930908,0.861084\n\t\tc4.1087646,0,7.4395752-2.982666,7.4395752-6.6621094C182.6805725,188.0561218,179.349762,185.0733337,175.2409973,185.0733337z\"\n        />\n        <path\n          fill=\"#363C44\"\n          d=\"M143.7261353,172.6383057c-0.1422577,1.3496399-5.9734039,3.4104156-8.461441,3.5505676\n\t\tc-3.6855621,0.2076263-3.2058105,0.2076263-2.0391846-4.8630676c0.9090881-3.9513855,3.5093994-6.7713318,6.2706146-6.4928284\n\t\tS144.1511841,168.6060486,143.7261353,172.6383057z\"\n        />\n        <path\n          fill=\"#363C44\"\n          d=\"M158.1520233,171.2974701c2.0688934,6.6545105-1.8656616,5.7335358-6.4378662,3.7437744\n\t\tc-2.5452881-1.1076813-4.0703278,0.1783142-4.0703278-3.8753204s2.7062531-7.2082062,5.4821167-7.2082062\n\t\tC155.9017944,163.9577179,156.9485321,167.4266052,158.1520233,171.2974701z\"\n        />\n\n        <ellipse\n          transform=\"matrix(0.3693524 -0.9292894 0.9292894 0.3693524 -82.7924576 250.9849243)\"\n          fill=\"#363C44\"\n          cx=\"143.5229187\"\n          cy=\"186.4917908\"\n          rx=\"6.7473221\"\n          ry=\"3.6142423\"\n        />\n      </g>\n    </svg>\n  );\n}\n\nexport default BooIcon;\n","import React from 'react';\n\nconst WIDTH = 30;\nconst HEIGHT = 40;\nfunction BotsIcon(props) {\n  return (\n    <svg\n      width={props.size * (2 / 3) || WIDTH}\n      height={props.size || HEIGHT}\n      viewBox=\"0 0 308.8658752 384.1937561\"\n    >\n      <g id=\"BOTS\">\n        <g id=\"Shield_17_\">\n          <linearGradient\n            id=\"SVGID_1_\"\n            gradientUnits=\"userSpaceOnUse\"\n            x1=\"44.59478\"\n            y1=\"289.3757935\"\n            x2=\"288.3210449\"\n            y2=\"38.7516212\"\n          >\n            <stop offset=\"0%\" style={{ stopColor: '#ED0080' }} />\n            <stop offset=\"6%\" style={{ stopColor: '#ED0D72' }} />\n            <stop offset=\"34%\" style={{ stopColor: '#EF4538' }} />\n            <stop offset=\"47%\" style={{ stopColor: '#F05A22' }} />\n            <stop offset=\"99%\" style={{ stopColor: '#F99D1C' }} />\n          </linearGradient>\n          <path\n            style={{ fill: 'url(#SVGID_1_)' }}\n            d=\"M154.1914215,384.1937561c-4.8541565,0-9.4589844-4.3339844-9.4589844-4.3339844\n\t\t\tc-8.5078125-7.7949219-27.5136719-14.9316406-44.2822266-21.2285156\n\t\t\tc-17.7988281-6.6835938-36.1948242-13.5908203-49.4165039-23.0527344\n\t\t\tc-20.1577168-13.296875-30.3793964-29.3115234-30.3793964-47.6005859V45.829483l14.6513691,0.6821289\n\t\t\tc34.1162109,1.590332,85.4516602-11.5727539,108.8535156-35.6113281l10.0307617-10.3027344l10.0317383,10.3017578\n\t\t\tc23.4042969,24.0351562,74.7324219,37.2021484,108.8554535,35.6123047l14.6503906-0.6821289v242.1484528\n\t\t\tc0,18.2734375-10.2207031,34.28125-30.3789062,47.5820312c-13.2031097,9.4550781-31.6113129,16.3740234-49.4160004,23.0664062\n\t\t\tc-16.7929688,6.3115234-35.8046875,13.4580078-44.2832031,21.2304688\n\t\t\tC163.6494293,379.856842,159.045578,384.1937561,154.1914215,384.1937561z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M154.1899567,375.6400452l-3.0405273-2.7851562\n\t\t\tc-9.8642578-9.0380859-28.9282227-16.1962891-47.3642578-23.1191406\n\t\t\tc-17.2866211-6.4912109-35.1611328-13.203125-47.3686523-21.9873047\n\t\t\tc-17.6713867-11.6123047-26.2622089-24.6220703-26.2622089-39.7705078V55.7821198l4.7094746,0.2192383\n\t\t\tc36.9790039,1.7226562,90.5209961-12.1962891,116.1025391-38.4746094l3.2241211-3.3115234l3.2246094,3.3115234\n\t\t\tc25.5839844,26.2739258,79.1054688,40.1953125,116.1035004,38.4746094l4.7089844-0.2192383v232.195816\n\t\t\tc0,15.1337891-8.5917969,28.1376953-26.2636566,39.7539062c-12.1914062,8.7783203-30.0810547,15.5019531-47.3818359,22.0048828\n\t\t\tc-18.4433594,6.9326172-37.515625,14.1005859-47.3520508,23.1171875L154.1899567,375.6400452z\"\n          />\n          <path\n            d=\"M154.1907806,20.6660767c25.5326233,26.2215652,78.8926392,41.7213516,119.5364838,39.8306122v227.4815216\n\t\t\tc0,13.5227966-7.9538269,25.3136902-24.3159332,36.0464172c-24.7911377,17.9065857-75.3698273,27.3158264-95.2217102,45.512207\n\t\t\tc-19.8999329-18.2325134-70.3897324-27.5717773-95.2212372-45.4962463\n\t\t\tc-16.3611565-10.730072-24.3142204-22.5266418-24.3142204-36.0623779V60.4966888\n\t\t\tC75.2896881,62.3900986,128.6676331,46.8842773,154.1907806,20.6660767\"\n          />\n        </g>\n        <g id=\"Banner_6_\">\n          <polygon\n            fill=\"#363C44\"\n            points=\"0.5164844,279.240387 309.2883911,217.1207275 309.2883911,116.8810043 0.5164844,179.0006409 \t\t\"\n          />\n        </g>\n        <g>\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M73.8512802,217.6542969c-1.5776367-1.7671509-3.4988708-3.0991669-5.7375946-3.982254\n\t\t\tc3.1208267-2.2997742,5.3433075-5.1035919,6.6260986-8.3661804c1.6253891-4.1387939,2.0403519-8.3445282,1.2340546-12.503006\n\t\t\tc-1.0627518-5.4727783-4.1151581-9.6696472-9.0725555-12.4724884c-4.8771515-2.7585297-11.4968529-3.3502045-19.6745033-1.7642059\n\t\t\tl-28.2375889,5.4786835l-0.0103359,80.4484406l32.5949326-6.3253174c6.888958-1.335968,12.5207253-3.5924072,16.7397499-6.7053528\n\t\t\tc4.2731705-3.1523438,7.264534-6.9485168,8.8894348-11.2802734c1.6199799-4.3179626,1.9832535-8.8653107,1.0804749-13.5170288\n\t\t\tC77.6194153,223.2432404,76.1284027,220.2119904,73.8512802,217.6542969z M37.4163513,244.3802032l-0.0669441-16.9765167\n\t\t\tl11.8448715-2.2987823c3.1301804-0.6074371,5.4929543-0.4459686,7.0169411,0.4794464\n\t\t\tc1.4983902,0.9126129,2.4115028,2.3066559,2.7910233,4.2618561c0.5355644,2.760498,0.1629333,5.2414093-1.1385574,7.5825195\n\t\t\tc-1.2355347,2.2190399-4.1013794,3.7794495-8.5173035,4.6369476L37.4163513,244.3802032z M55.1400948,195.1872864\n\t\t\tc1.320694,0.7944794,2.119606,1.9896545,2.4420242,3.6524506c0.4479446,2.3086243,0.0708847,4.4302063-1.1543121,6.4858093\n\t\t\tc-1.1725235,1.9689789-3.8335953,3.368927-7.9098701,4.1604462l-11.1616364,2.1658783l0.0300255-14.6413116l11.9605484-2.3204346\n\t\t\tC51.8361549,194.2047729,53.7844543,194.3740997,55.1400948,195.1872864z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M142.7462769,167.1490631c-6.6743469-4.4725342-14.9174652-5.7966766-24.4980164-3.9349976\n\t\t\tc-6.6910706,1.2985382-12.4385147,3.8109436-17.0833359,7.4663544c-4.6310272,3.644577-8.3218765,8.1643524-10.9701538,13.4323578\n\t\t\tc-2.6310425,5.2305908-4.3046722,10.9425812-4.9736328,16.9784851c-0.666008,6.0053864-0.4036407,12.1446533,0.7797165,18.2465057\n\t\t\tc2.0280457,10.4483795,6.4602127,18.012207,13.1739273,22.4788208c4.7506485,3.1602173,10.2632904,4.7472076,16.4571991,4.7472076\n\t\t\tc2.5473709,0,5.2099152-0.2687683,7.9822388-0.8062897c6.6910782-1.2985535,12.4385147-3.8109589,17.0833359-7.4663696\n\t\t\tc4.6260986-3.6386719,8.3169556-8.1584473,10.9706421-13.4323578c2.6315308-5.2355042,4.3046722-10.9475098,4.9731445-16.9784851\n\t\t\tc0.6664886-6.0053711,0.4046173-12.1436615-0.7792206-18.2455292\n\t\t\tC153.8345642,179.1873779,149.4216003,171.621582,142.7462769,167.1490631z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M216.3786163,186.051239c-4.026062-3.0154877-9.8852539-4.7865906-17.4116669-5.2630768l-6.4848175-0.4253082\n\t\t\tc-3.0199127-0.1772003-5.2935944-0.6566467-6.7609711-1.4275055c-1.2453766-0.6507416-1.9975281-1.724823-2.2992706-3.2822876\n\t\t\tc-0.4804382-2.4730225,0.1161652-4.5650635,1.8242493-6.3952332c1.8345947-1.9689789,4.2298584-3.2182922,7.3221283-3.8188324\n\t\t\tc2.8727417-0.5572205,5.3950043-0.2992706,7.7105255,0.7875977c2.1678314,1.0179596,3.5879669,3.0686493,4.3420868,6.2702026\n\t\t\tl0.3332367,1.4147186l18.2681732-3.5461273l-0.3047028-1.4954376c-1.6824951-8.260849-5.5662994-14.0713043-11.5441132-17.2708893\n\t\t\tc-5.8773956-3.144455-13.0331421-3.9251556-21.2693787-2.3292999c-5.4294434,1.0534058-10.3228455,3.024353-14.544342,5.8586884\n\t\t\tc-4.2707062,2.8727417-7.4978638,6.4730225-9.5923615,10.7004089c-2.1284637,4.2953186-2.6955261,9.1143951-1.6849518,14.3233185\n\t\t\tc1.1233063,5.7888031,3.8429565,10.1727295,8.0821686,13.0306854c4.1186066,2.781189,9.8222351,4.4311829,16.9592896,4.9037476\n\t\t\tl6.5640717,0.4036407c4.1712799,0.305191,6.095459,1.0986786,6.9746094,1.7100525\n\t\t\tc1.1877899,0.8259888,1.9325409,2.0910492,2.2766266,3.8670654c0.5207977,2.6797791-0.1777039,4.969696-2.1348572,7.0016785\n\t\t\tc-2.0698853,2.1501312-4.9253998,3.5904388-8.4862976,4.2815399c-3.2000732,0.6222076-6.1407471,0.3278351-8.7452087-0.8722534\n\t\t\tc-2.4882965-1.1449585-4.0979309-3.4309387-4.9199829-6.986908l-0.3288116-1.4216003l-18.2730865,3.5451355l0.3032227,1.4954376\n\t\t\tc1.7514038,8.6270752,5.8370209,14.6846313,12.1426697,18.0043335c4.1072845,2.1629181,8.7855835,3.247818,13.9762878,3.247818\n\t\t\tc2.6399078,0,5.413208-0.2805786,8.3095856-0.8427124c5.7927246-1.1242981,10.9676819-3.1867981,15.3831177-6.1304169\n\t\t\tc4.4676056-2.9800415,7.8581848-6.7023926,10.0772247-11.0636749c2.2569427-4.4341431,2.8742065-9.3999023,1.8345947-14.7584686\n\t\t\tC223.1322021,193.6662598,220.4745789,189.1179199,216.3786163,186.051239z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M291.3774414,186.5454407c-1.1454468-5.9020081-3.8035889-10.4493561-7.8990479-13.5150452\n\t\t\tc-4.026062-3.0154877-9.8852539-4.7865906-17.4116516-5.2630768l-6.4848328-0.4253082\n\t\t\tc-3.0194397-0.1772003-5.2931061-0.6566467-6.7604828-1.4275055c-1.2458801-0.6517334-1.9980164-1.724823-2.2997742-3.2822723\n\t\t\tc-0.4799347-2.4730377,0.1161804-4.5650787,1.8237762-6.396225c1.835083-1.9680023,4.2303467-3.2173157,7.3226318-3.8178558\n\t\t\tc2.8722229-0.558197,5.394989-0.3002625,7.710022,0.7866058c2.168335,1.0189514,3.5884399,3.0696411,4.3425598,6.2702179\n\t\t\tl0.333252,1.4147034l18.268158-3.5441589l-0.3046875-1.4964142c-1.6820068-8.2598572-5.5662842-14.0713043-11.5440979-17.2708893\n\t\t\tc-5.8778992-3.144455-13.0336609-3.9261322-21.2693787-2.3292999c-5.4289703,1.0534058-10.3218842,3.024353-14.5443573,5.8586884\n\t\t\tc-4.2707062,2.8727417-7.4978638,6.4720306-9.5923615,10.6994324c-2.1284637,4.2962952-2.6950378,9.1153717-1.6849518,14.3233185\n\t\t\tc1.1233063,5.7878113,3.8424683,10.1727142,8.0821533,13.031662c4.1186066,2.781189,9.8222504,4.4311829,16.9597931,4.9037476\n\t\t\tl6.5640564,0.4026489c4.1712952,0.3071594,6.095459,1.0996704,6.9736328,1.7100525\n\t\t\tc1.1882935,0.8269806,1.9330444,2.092041,2.2771301,3.8680573c0.5207825,2.6797791-0.1777039,4.969696-2.1348572,7.0016785\n\t\t\tc-2.0698853,2.1501312-4.925415,3.5904388-8.4862976,4.2815399c-3.2000732,0.6222076-6.1412354,0.3268585-8.7452087-0.8722534\n\t\t\tc-2.4882965-1.1449585-4.0979309-3.4309387-4.9199829-6.9878998l-0.3288269-1.4216003l-18.2730865,3.5461273l0.3032227,1.4954376\n\t\t\tc1.7514038,8.6270752,5.8370361,14.6846313,12.1426849,18.0033417c4.1067963,2.1639099,8.7860718,3.2488098,13.9772797,3.2488098\n\t\t\tc2.6399078,0,5.4122162-0.2805786,8.3085785-0.8427124c5.7902832-1.1242981,10.9657288-3.1867981,15.3831177-6.1304169\n\t\t\tc4.4676208-2.9800415,7.8581848-6.7023926,10.07724-11.0636749\n\t\t\tC291.7997742,196.8697815,292.4170532,191.9049988,291.3774414,186.5454407z\"\n          />\n        </g>\n        <g>\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M97.3587341,312.4327087c-2.2363281,0.4428711-4.0361328,0.1826172-5.4003906-0.7802734\n\t\t\tc-1.3632812-0.9633789-2.25-2.4853516-2.6621094-4.5649414c-0.2402344-1.2167969-0.2685547-2.4135742-0.0839844-3.5922852\n\t\t\tc0.1835938-1.1777344,0.5644531-2.2680664,1.1416016-3.2695312c0.5761719-1.0009766,1.3408203-1.8500977,2.2929688-2.5483398\n\t\t\tc0.9521484-0.6987305,2.0761719-1.1757812,3.3710938-1.4326172c2.2363281-0.4428711,4.0341797-0.1879883,5.3964844,0.7661133\n\t\t\tc1.3613281,0.9541016,2.25,2.4804688,2.6660156,4.5791016c0.2412109,1.2167969,0.2685547,2.4150391,0.0839844,3.5917969\n\t\t\tc-0.1845703,1.1787109-0.5644531,2.2685547-1.1416016,3.2695312s-1.3408203,1.8515625-2.2929688,2.5488281\n\t\t\tC99.7767029,311.698822,98.6526794,312.1758728,97.3587341,312.4327087z M96.9720154,308.7779236\n\t\t\tc0.8027344-0.1591797,1.4580078-0.5327148,1.9628906-1.1225586c0.5058594-0.5888672,0.8447266-1.3242188,1.015625-2.2041016\n\t\t\tc0.1728516-0.8803711,0.1582031-1.8305664-0.0439453-2.8505859c-0.2060547-1.0405273-0.6054688-1.796875-1.1982422-2.2705078\n\t\t\tc-0.59375-0.4736328-1.3613281-0.6171875-2.3027344-0.4306641c-0.8046875,0.1591797-1.4589844,0.5332031-1.9648438,1.1225586\n\t\t\tc-0.5058594,0.5888672-0.84375,1.3251953-1.015625,2.2041016c-0.171875,0.8803711-0.1572266,1.8310547,0.0449219,2.8505859\n\t\t\tc0.2021484,1.0209961,0.5996094,1.7724609,1.1962891,2.2553711\n\t\t\tC95.2610779,308.8160095,96.0296326,308.964447,96.9720154,308.7779236z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M108.1194763,315.8067322l-0.0673828-18.2451172l-2.3242188,0.4604492l-0.0283203-3.3891602\n\t\t\tl2.3535156-0.4663086l-0.0048828-0.487793c-0.0039062-2.1816406,0.4521484-3.7905273,1.3681641-4.8286133\n\t\t\tc0.9150391-1.0371094,2.2558594-1.730957,4.0224609-2.0805664c0.4501953-0.0888672,0.8964844-0.1518555,1.3378906-0.1884766\n\t\t\ts0.8242188-0.0566406,1.1503906-0.0595703l0.0185547,3.1767578l-1.1181641,0.2216797\n\t\t\tc-1.0214844,0.2021484-1.7148438,0.527832-2.0849609,0.9785156c-0.3701172,0.4501953-0.5576172,1.1757812-0.5634766,2.1762695\n\t\t\tl-0.0058594,0.2758789l3.2080078-0.6352539l0.0576172,3.3833008l-3.2373047,0.6411133l0.0380859,18.2504883\n\t\t\tL108.1194763,315.8067322z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M124.5296326,301.2398376l-0.0458984-6.8720703l-2.3535156,0.4663086l-0.0175781-3.3291016\n\t\t\tl1.5009766-0.2973633c0.3925781-0.0776367,0.6640625-0.1977539,0.8154297-0.3608398\n\t\t\tc0.1513672-0.1625977,0.2519531-0.4736328,0.3046875-0.9316406l0.4248047-3.7236328l3.4140625-0.6762695l0.0205078,4.5830078\n\t\t\tl3.1484375-0.6235352l0.0410156,3.4477539l-3.1787109,0.6293945l0.0458984,6.871582\n\t\t\tc0,0.3071289,0.0214844,0.5678711,0.0634766,0.7832031c0.0976562,0.4902344,0.3193359,0.8139648,0.6660156,0.9692383\n\t\t\tc0.3466797,0.15625,0.8632812,0.1655273,1.5498047,0.0292969l1.1777344-0.2329102l-0.0058594,3.3647461\n\t\t\tc-0.3222656,0.1259766-0.6708984,0.2446289-1.0458984,0.3603516c-0.3740234,0.1152344-0.7587891,0.2109375-1.1503906,0.2890625\n\t\t\tc-1.4326172,0.2836914-2.5908203,0.2226562-3.4765625-0.1826172c-0.8857422-0.4057617-1.4648438-1.2949219-1.7373047-2.668457\n\t\t\tc-0.0546875-0.2749023-0.0966797-0.5722656-0.1308594-0.8920898\n\t\t\tC124.528656,301.9239197,124.5179138,301.5899353,124.5296326,301.2398376z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M134.9964294,304.6724548l-0.078125-21.8515625l4.1201172-0.8164062l0.0224609,7.519043\n\t\t\tc0.3808594-0.6455078,0.8896484-1.1894531,1.5263672-1.6323242c0.6357422-0.4414062,1.3554688-0.7426758,2.1601562-0.9018555\n\t\t\tc1.3349609-0.2641602,2.4648438-0.0649414,3.3916016,0.5976562c0.9257812,0.6625977,1.5371094,1.7392578,1.8320312,3.2299805\n\t\t\tc0.109375,0.5498047,0.1689453,1.1591797,0.1787109,1.8300781l0.0302734,9.4140625l-4.1201172,0.815918l-0.0244141-9.0786133\n\t\t\tc0-0.4072266-0.0292969-0.7685547-0.0917969-1.0825195c-0.1279297-0.6479492-0.3964844-1.1196289-0.8007812-1.4165039\n\t\t\tc-0.4052734-0.2973633-0.9130859-0.3842773-1.5205078-0.2641602c-0.7851562,0.1552734-1.4042969,0.5527344-1.859375,1.1933594\n\t\t\tc-0.453125,0.640625-0.6787109,1.4296875-0.6777344,2.3671875l0.03125,9.2607422L134.9964294,304.6724548z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M165.3333435,293.861908c-0.0673828,0.890625-0.3378906,1.769043-0.8085938,2.637207\n\t\t\tc-0.4697266,0.8686523-1.1484375,1.6342773-2.0371094,2.2998047c-0.8867188,0.6645508-2.0078125,1.1313477-3.3613281,1.3994141\n\t\t\tc-2.2763672,0.4511719-4.0888672,0.1787109-5.4375-0.8188477c-1.3496094-0.996582-2.21875-2.4760742-2.6074219-4.4379883\n\t\t\tc-0.3535156-1.784668-0.3046875-3.4458008,0.1445312-4.9833984c0.4501953-1.5366211,1.2236328-2.8266602,2.3222656-3.8696289\n\t\t\ts2.4423828-1.722168,4.03125-2.0366211c2.0205078-0.4003906,3.7158203-0.1542969,5.0849609,0.7358398\n\t\t\tc1.3691406,0.890625,2.2402344,2.277832,2.6132812,4.1616211c0.1005859,0.5107422,0.1533203,1.0341797,0.1582031,1.5742188\n\t\t\tc0.0048828,0.5395508-0.03125,1.0209961-0.1113281,1.4433594l-10.1240234,2.0053711\n\t\t\tc0.2578125,1.1933594,0.6787109,2.0327148,1.2636719,2.5170898c0.5859375,0.4863281,1.2714844,0.6518555,2.0566406,0.4960938\n\t\t\tc0.7646484-0.1513672,1.3720703-0.4301758,1.8212891-0.8349609c0.4501953-0.4052734,0.75-0.8984375,0.8994141-1.4785156\n\t\t\tL165.3333435,293.861908z M158.0384216,287.1416931c-0.9414062,0.1865234-1.6582031,0.6337891-2.1503906,1.3427734\n\t\t\tc-0.4921875,0.7094727-0.7822266,1.5615234-0.8691406,2.5576172l5.2382812-1.0375977\n\t\t\tc0.3125-0.0620117,0.5273438-0.1704102,0.6396484-0.3251953c0.1113281-0.1547852,0.1328125-0.4086914,0.0634766-0.762207\n\t\t\tc-0.1367188-0.6855469-0.4716797-1.190918-1.0048828-1.5131836\n\t\t\tC159.4231873,287.0811462,158.7835388,286.9937439,158.0384216,287.1416931z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M173.8587341,290.4302673l4.1787109-0.8276367c0.2568359,1.0908203,0.7822266,1.8173828,1.5791016,2.1801758\n\t\t\tc0.7949219,0.3618164,1.6728516,0.4477539,2.6347656,0.2573242c1.0595703-0.2099609,1.9003906-0.6411133,2.5263672-1.2958984\n\t\t\tc0.6240234-0.652832,0.8515625-1.4121094,0.6806641-2.2753906c-0.1171875-0.5888672-0.3818359-1.0253906-0.7958984-1.3105469\n\t\t\tc-0.4121094-0.2841797-1.1152344-0.4619141-2.1064453-0.5302734l-1.7949219-0.1035156\n\t\t\tc-1.8789062-0.1171875-3.3525391-0.5336914-4.421875-1.2495117c-1.0703125-0.7163086-1.7509766-1.8100586-2.0419922-3.28125\n\t\t\tc-0.2646484-1.3334961-0.1269531-2.5483398,0.4111328-3.644043c0.5351562-1.0952148,1.3574219-2.0166016,2.4638672-2.765625\n\t\t\tc1.1044922-0.7490234,2.375-1.2661133,3.8066406-1.5498047c2.1572266-0.4272461,4-0.2363281,5.5263672,0.5717773\n\t\t\tc1.5253906,0.8100586,2.5107422,2.28125,2.9541016,4.4155273l-4.1787109,0.828125\n\t\t\tc-0.2373047-0.9921875-0.7099609-1.6538086-1.4169922-1.9829102c-0.7070312-0.3286133-1.4931641-0.4077148-2.3564453-0.2368164\n\t\t\tc-0.921875,0.1826172-1.6591797,0.5737305-2.2138672,1.1728516c-0.5546875,0.5986328-0.7519531,1.3012695-0.5927734,2.1049805\n\t\t\tc0.109375,0.5498047,0.390625,0.9428711,0.8457031,1.1787109c0.453125,0.2363281,1.1240234,0.378418,2.0107422,0.4267578\n\t\t\tl1.7646484,0.1088867c1.9804688,0.1181641,3.4902344,0.5634766,4.5302734,1.3359375s1.7109375,1.9145508,2.0097656,3.425293\n\t\t\tc0.2724609,1.3735352,0.1210938,2.6254883-0.4482422,3.7578125c-0.5703125,1.1337891-1.4365234,2.0898438-2.5976562,2.8701172\n\t\t\tc-1.1601562,0.7802734-2.5058594,1.3212891-4.0361328,1.6245117c-2.2558594,0.4467773-4.1914062,0.2490234-5.8046875-0.5932617\n\t\t\tC175.3587341,294.2002869,174.3206482,292.6631775,173.8587341,290.4302673z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M202.4964294,291.7305603c-2.4912109,0.4936523-4.6113281,0.1640625-6.3583984-0.9887695\n\t\t\tc-1.7470703-1.1518555-2.8925781-3.1010742-3.4365234-5.8486328c-0.3222656-1.6274414-0.3974609-3.2431641-0.2265625-4.8481445\n\t\t\tc0.1728516-1.6040039,0.6044922-3.1010742,1.2978516-4.4916992c0.6923828-1.3916016,1.6474609-2.5693359,2.8632812-3.5341797\n\t\t\tc1.2148438-0.9643555,2.7060547-1.6220703,4.4716797-1.9716797c2.5107422-0.4970703,4.6347656-0.168457,6.3720703,0.9858398\n\t\t\tc1.7382812,1.1542969,2.8789062,3.1049805,3.4228516,5.8515625c0.3222656,1.628418,0.3974609,3.2446289,0.2265625,4.8486328\n\t\t\tc-0.171875,1.6035156-0.6035156,3.1005859-1.2978516,4.4921875c-0.6923828,1.390625-1.6474609,2.5693359-2.8632812,3.5341797\n\t\t\tC205.7522888,290.7232361,204.2620544,291.3809509,202.4964294,291.7305603z M202.1507263,287.8228455\n\t\t\tc1.2548828-0.2485352,2.2617188-0.8598633,3.0146484-1.8354492c0.7558594-0.9750977,1.2480469-2.1689453,1.4794922-3.5800781\n\t\t\tc0.2294922-1.4111328,0.1953125-2.8720703-0.1044922-4.3837891c-0.2988281-1.5102539-0.8837891-2.6328125-1.7529297-3.3676758\n\t\t\ts-1.9804688-0.96875-3.3339844-0.7006836c-1.2558594,0.2490234-2.2617188,0.8598633-3.015625,1.8354492\n\t\t\tc-0.7558594,0.9750977-1.2490234,2.1640625-1.4814453,3.565918c-0.2314453,1.4018555-0.1962891,2.8681641,0.1074219,4.3979492\n\t\t\tc0.2988281,1.5107422,0.8828125,2.6333008,1.7519531,3.3681641\n\t\t\tC199.6858826,287.85849,200.7972107,288.0909119,202.1507263,287.8228455z\"\n          />\n          <path\n            fill=\"#FFFFFF\"\n            d=\"M227.2132263,278.9444275l4.3837891-0.8681641c-0.0322266,1.4750977-0.34375,2.8662109-0.9306641,4.1757812\n\t\t\tc-0.5869141,1.3085938-1.4560547,2.4296875-2.6064453,3.3603516c-1.1523438,0.9321289-2.5908203,1.5683594-4.3164062,1.9101562\n\t\t\tc-2.4326172,0.4814453-4.5087891,0.1435547-6.2255859-1.0151367c-1.71875-1.1577148-2.8583984-3.1586914-3.421875-6.0043945\n\t\t\tc-0.3339844-1.6865234-0.4101562-3.3330078-0.2294922-4.9399414c0.1816406-1.6049805,0.6191406-3.078125,1.3115234-4.4179688\n\t\t\tc0.6933594-1.3413086,1.6357422-2.4750977,2.828125-3.4042969s2.6210938-1.5595703,4.2890625-1.8901367\n\t\t\tc1.7070312-0.3378906,3.1933594-0.2958984,4.4599609,0.1259766c1.265625,0.4228516,2.3007812,1.1455078,3.1054688,2.1679688\n\t\t\tc0.8046875,1.0234375,1.3535156,2.28125,1.6494141,3.7719727l-4.3564453,0.862793\n\t\t\tc-0.3349609-1.1777344-0.8769531-2.0336914-1.6240234-2.5683594c-0.7490234-0.534668-1.6416016-0.6992188-2.6826172-0.4931641\n\t\t\tc-0.9414062,0.1865234-1.7441406,0.5888672-2.4052734,1.2099609c-0.6630859,0.6210938-1.1708984,1.3935547-1.5283203,2.3212891\n\t\t\ts-0.5693359,1.9375-0.6376953,3.0317383c-0.0693359,1.0952148,0.0087891,2.2099609,0.234375,3.3481445\n\t\t\tc0.2998047,1.5107422,0.8642578,2.6171875,1.6982422,3.3183594c0.8320312,0.7021484,1.8261719,0.9375,2.9833984,0.7080078\n\t\t\tc1.2363281-0.2451172,2.1904297-0.8095703,2.859375-1.6972656\n\t\t\tC226.7210388,281.0713806,227.1087341,280.0664978,227.2132263,278.9444275z\"\n          />\n        </g>\n        <path\n          id=\"Logo_18_\"\n          fill=\"#FFFFFF\"\n          d=\"M100.6281662,107.128952c0,0.9661255-0.2053757,1.8580017-0.6135559,2.6774368\n\t\tc-0.4089203,0.8199081-0.9794083,1.514389-1.7098618,2.0842056c-0.7304916,0.5707245-1.5991058,1.016983-2.6069107,1.3387833\n\t\tc-1.0080261,0.3213501-2.1111908,0.4810715-3.3089447,0.4810715c-1.4328156,0-2.7174454-0.1956863-3.8575058-0.5882187\n\t\tc-1.139122-0.3933029-2.2772903-1.0418625-3.4166489-1.9453354l1.8840179-3.0633621\n\t\tc0.9053345,0.7583771,1.7226257,1.313736,2.4533386,1.6641922c0.7292786,0.3511581,1.4751129,0.5248566,2.2356415,0.5248566\n\t\tc0.9344254,0,1.6859589-0.2394562,2.256012-0.7224197c0.5697632-0.4827194,0.8551483-1.1332016,0.8551483-1.9514694\n\t\tc0-0.3509064-0.0518036-0.6814728-0.1535873-0.987442c-0.1017609-0.3066711-0.2915192-0.6218567-0.5693207-0.943634\n\t\tc-0.2765961-0.3209152-0.655426-0.671814-1.1374588-1.0515976c-0.4817581-0.3799896-1.1017151-0.8487473-1.8596573-1.4034424\n\t\tc-0.583519-0.4095993-1.1523438-0.8333817-1.7065353-1.2716141c-0.5551224-0.4389114-1.0581741-0.9072418-1.5106201-1.4046021\n\t\tc-0.4519424-0.4969254-0.8165817-1.0515518-1.094635-1.665596c-0.2770691-0.6156998-0.4147873-1.3168335-0.4147873-2.1055374\n\t\tc0-0.9060287,0.1890488-1.7325821,0.5679016-2.4788818c0.3781281-0.745369,0.8951569-1.3806992,1.5520172-1.9067459\n\t\tc0.6554642-0.5267181,1.4412994-0.9358292,2.3600922-1.2278519c0.9179001-0.2931519,1.9157715-0.4396362,2.9933472-0.4396362\n\t\tc1.1381607,0,2.2391815,0.1526489,3.3066025,0.4574127c1.0650635,0.3052139,2.0513382,0.7472763,2.9573822,1.3276901\n\t\tl-1.7089462,2.7512817c-1.16819-0.8175888-2.3951416-1.2266998-3.6811905-1.2266998\n\t\tc-0.7874908,0-1.4386597,0.2053909-1.949295,0.6145325c-0.5113678,0.4095993-0.7664642,0.9204788-0.7664642,1.5356903\n\t\tc0,0.5851746,0.225296,1.1126175,0.6772385,1.5802002c0.4493408,0.4680481,1.2282944,1.1265793,2.3357239,1.9739227\n\t\tc1.1145096,0.8199081,2.0383224,1.5361633,2.7711563,2.1507111c0.7334976,0.6145325,1.3120728,1.1930542,1.7372665,1.7332535\n\t\tc0.4259262,0.5418854,0.7191162,1.091095,0.880249,1.6464615\n\t\tC100.5458374,105.8426514,100.6281662,106.4564743,100.6281662,107.128952 M126.1319504,101.7440643\n\t\tc0-1.6355591-0.2347031-3.1253815-0.7023087-4.4696579c-0.4687653-1.3449783-1.1352921-2.4982986-1.9973602-3.4639511\n\t\tc-0.8641663-0.9645081-1.8884888-1.7172089-3.0732574-2.2574005c-1.1855011-0.5402451-2.4938049-0.8109436-3.9284973-0.8109436\n\t\tc-1.5799179,0-2.9708557,0.2993469-4.1709824,0.8979797c-1.1994629,0.5994034-2.3111572,1.5418854-3.3362045,2.826973\n\t\tl-0.0305252-3.1986694h-5.6319504v32.865921h5.6319504v-13.8909073c0.5567703,0.6431656,1.091774,1.1852417,1.6047821,1.6241989\n\t\tc0.512764,0.4401245,1.0333786,0.7985992,1.5607758,1.0764313c0.5281754,0.2768631,1.084465,0.4744339,1.6710968,0.5924759\n\t\tc0.586319,0.1167068,1.217186,0.1739349,1.8915634,0.1739349c1.4950256,0,2.8878021-0.2993469,4.1773987-0.8968277\n\t\tc1.2910385-0.5993576,2.4039001-1.4393768,3.3428421-2.5214691c0.938446-1.0802002,1.6705399-2.3444901,2.1984787-3.7912064\n\t\tC125.8681183,105.054924,126.1319504,103.4687881,126.1319504,101.7440643 M120.0069046,101.9660187\n\t\tc0,0.8492203-0.0894547,1.7630615-0.265274,2.7431793c-0.1767349,0.9798813-0.4782104,1.8875656-0.9046173,2.7209473\n\t\tc-0.4268494,0.8331909-0.9855652,1.5203705-1.6767044,2.0617218c-0.6923676,0.5411682-1.5662613,0.8107147-2.6248932,0.8107147\n\t\tc-1.7654877,0-3.1556854-0.7004166-4.1707993-2.1062241c-1.014183-1.4034348-1.5217285-3.3340759-1.5217285-5.7914429\n\t\tc0-2.5145798,0.515152-4.5112686,1.5449448-5.9889908c1.0293045-1.4777222,2.4263458-2.2159882,4.1913452-2.2159882\n\t\tc1.6767502,0,3.0001755,0.6956711,3.9706116,2.0844116C119.5213242,97.6743088,120.0069046,99.5682602,120.0069046,101.9660187\n\t\t M128.6385498,81.0077896v32.161972h5.7799377v-32.161972H128.6385498L128.6385498,81.0077896z M153.3250732,113.1787796h5.7799377\n\t\tV91.2359772h-5.7799377v11.8085403c0,1.0539322-0.0431366,1.8653564-0.132309,2.4353561\n\t\tc-0.0881958,0.5712128-0.2350311,1.0906219-0.440506,1.5588913c-0.8209381,1.8147125-2.3183746,2.7212296-4.4913635,2.7212296\n\t\tc-1.7024384,0-2.8926392-0.6137924-3.567215-1.8447495c-0.2646027-0.4663925-0.4482574-0.9942856-0.5510101-1.5787735\n\t\tc-0.1027374-0.5858841-0.1540985-1.4332275-0.1540985-2.5470123V91.2359772h-5.7794647v12.466835\n\t\tc0,0.8492813,0.0072632,1.5667419,0.0222931,2.1514206c0.0145264,0.5851746,0.0513611,1.1045685,0.1095123,1.5586548\n\t\tc0.0586548,0.4543228,0.1245422,0.8561096,0.1982117,1.2070312c0.0726929,0.3511353,0.1822205,0.688324,0.3290405,1.0096817\n\t\tc0.5263062,1.3459549,1.3821259,2.3634338,2.5674744,3.0517807c1.1863251,0.6864548,2.6416168,1.029068,4.3677979,1.029068\n\t\tc1.551712,0,2.9125061-0.2694855,4.0833282-0.8108978c1.1708069-0.541893,2.3120728-1.4270782,3.4242401-2.6561432\n\t\tL153.3250732,113.1787796L153.3250732,113.1787796z M178.253891,113.1690369h5.7809143v-12.439888\n\t\tc0-0.8468552-0.008728-1.5693207-0.0232544-2.1684418c-0.0145416-0.5986328-0.0499115-1.1168747-0.1095276-1.5551224\n\t\tc-0.0586243-0.4377289-0.1308441-0.8236771-0.2195282-1.1601486c-0.0867462-0.3360214-0.1904449-0.6639557-0.3072357-0.9865189\n\t\tc-0.5267792-1.3137207-1.3830872-2.3274307-2.5679626-3.043251c-1.1863251-0.7155304-2.6420898-1.073555-4.3697205-1.073555\n\t\tc-1.5507507,0-2.9125061,0.2706985-4.08284,0.8128357c-1.1717834,0.5406799-2.3120728,1.4275665-3.4252167,2.6554184\n\t\tl-0.0106659-2.9346466h-5.8298645v21.8933182h5.8298645v-11.8210983c0-1.0213089,0.0363464-1.8168411,0.1090393-2.3861694\n\t\tc0.0736542-0.5688324,0.212738-1.1009903,0.4196777-1.5979004c0.3804169-0.8748093,0.9609833-1.5392685,1.7382812-1.9914474\n\t\tc0.7782898-0.452446,1.7111664-0.6786575,2.7976532-0.6786575c1.7029266,0,2.8921661,0.6133194,3.567215,1.8386154\n\t\tc0.2621765,0.4670715,0.4472961,0.993782,0.548584,1.5766373c0.103714,0.583252,0.1545868,1.4301224,0.1545868,2.5389557\n\t\tV113.1690369L178.253891,113.1690369z M202.5769653,113.6129913l5.3903198-1.8845062l-8.8092499-10.9536362l7.4499207-7.9745636\n\t\tl-4.3823395-1.8837662l-7.7542419,8.9816132h-0.6130371V81.0139389h-5.8293762v32.1612625h5.8293762v-11.6554718\n\t\tL202.5769653,113.6129913L202.5769653,113.6129913z M212.9708862,112.5758286l17.5269012-8.7090225v-3.5882111\n\t\tl-17.5269012-8.7956085v3.9381638l13.5826416,6.6082458l-13.5826416,6.6955795V112.5758286L212.9708862,112.5758286z\n\t\t M214.3001709,87.7026291v-0.7431946c0.0605621-0.0090103,0.1400299-0.01754,0.2539215-0.01754\n\t\tc0.3935089,0,0.5335541,0.1919022,0.5335541,0.3845291c0,0.2714005-0.2451935,0.3762054-0.5335541,0.3762054H214.3001709\n\t\tL214.3001709,87.7026291z M214.3001709,88.9181824v-0.9448471h0.2447052c0.2791595,0,0.419693,0.105545,0.4720306,0.3852539\n\t\tc0.0440826,0.2884598,0.0964355,0.489563,0.1487579,0.5595932h0.3668671\n\t\tc-0.0339203-0.0700302-0.0867615-0.2011185-0.1386108-0.542572c-0.0440826-0.3229904-0.175415-0.498085-0.3682861-0.533371\n\t\tv-0.0170059c0.236496-0.0700684,0.4288788-0.2451553,0.4288788-0.5333557c0-0.2103729-0.0702667-0.3585205-0.2011261-0.4548111\n\t\tc-0.1318054-0.0965271-0.3498688-0.1665649-0.682312-0.1665649c-0.2621918,0-0.4371338,0.0262604-0.6207886,0.0525284v2.1951523\n\t\tH214.3001709L214.3001709,88.9181824z M214.6670074,86.110878h0.0101929c0.873764,0,1.5725403,0.7432556,1.5725403,1.6703568\n\t\tc0,0.9266129-0.6987762,1.6703033-1.5725403,1.6613388c-0.8756866,0-1.584198-0.734726-1.584198-1.6698685\n\t\tC213.0930023,86.8541336,213.8015137,86.110878,214.6670074,86.110878L214.6670074,86.110878z M214.6772003,85.8049088h-0.0101929\n\t\tc-1.0753326,0-1.9490814,0.8748016-1.9490814,1.9677963c0,1.1102448,0.8737488,1.9757996,1.9490814,1.9757996\n\t\tc1.0850372,0,1.942337-0.8655548,1.942337-1.9757996C216.6093445,86.6797104,215.7520447,85.8049088,214.6772003,85.8049088\n\t\tL214.6772003,85.8049088z\"\n        />\n        <polygon\n          fill=\"#ED0080\"\n          points=\"150.9542542,191.598465 122.9864578,255.1326752 114.6809998,267.1361084 114.7703323,254.7952881 \n\t\t118.451683,221.1851959 92.0922318,225.9848633 107.5346985,171.443161 135.011322,167.3153992 127.6015472,195.6269836 \t\"\n        />\n      </g>\n    </svg>\n  );\n}\n\nexport default BotsIcon;\n","import React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport BooIcon from '../../icons/BooIcon';\nimport BotsIcon from '../../icons/BotsIcon';\n\nconst BOTS_TYPE = {\n  SOC: 'SOC',\n  NOC: 'NOC',\n};\n\nconst animBOTSLogo = keyframes`\n0% {\n  box-shadow: 0 0 red;\n}\n100% {\n  box-shadow: 0 0 100px 80px transparent;\n  border-width: 2px;\n}\n`;\n\nconst animBOOLogo = keyframes`\n0% {\n  box-shadow: 0 0 #e9a000;\n}\n100% {\n  box-shadow: 0 0 90px 90px transparent;\n  border-width: 2px;\n}\n`;\n\nconst IconFrameBOTS = styled.div`\n  border-radius: 30%;\n  width: ${(props) => (props.size ? `${props.size / 3}px` : '10px')};\n  height: ${(props) => (props.size ? `${props.size / 2}px` : '10px')};\n  position: absolute;\n  animation: ${animBOTSLogo} 1s ease infinite;\n  z-index: -1;\n`;\n\nconst IconFrameBOO = styled.div`\n  border-radius: 100%;\n  width: ${(props) => (props.size ? `${props.size / 2}px` : '10px')};\n  height: ${(props) => (props.size ? `${props.size / 2}px` : '10px')};\n  position: absolute;\n  animation: ${animBOOLogo} 1s ease infinite;\n  z-index: -1;\n`;\n\nfunction LoaderIcon({ size = 300, appType }) {\n  return (\n    <Flex alignItems=\"center\" justifyContent=\"center\" width={1} style={{ opacity: 0.4 }}>\n      {appType === BOTS_TYPE.SOC ? (\n        <>\n          <BotsIcon size={size} />\n          <IconFrameBOTS size={size} />\n        </>\n      ) : (\n        <>\n          <BooIcon size={size} />\n          <IconFrameBOO size={size} />\n        </>\n      )}\n    </Flex>\n  );\n}\n\nexport default LoaderIcon;\n","import React from 'react';\nimport { useMarked } from '../../hooks';\nimport RegularText  from '../RegularText';\n\nconst Markdown = ({ md = '', ...args }) => {\n  const eventRulesHtml = useMarked(md);\n  return (\n    <RegularText {...args}>\n      <div\n        // eslint-disable-next-line react/no-danger\n        dangerouslySetInnerHTML={{\n          __html: eventRulesHtml,\n        }}\n      />\n    </RegularText>\n  );\n};\n\nexport default Markdown;\n","import React from 'react';\n\nexport default function ExpandIcon(props) {\n  return (\n    <svg width={props.size || 12} height={props.size || 20} viewBox=\"0 0 12 20\">\n      <rect fill=\"none\" width=\"12\" height=\"20\" />\n      <path\n        fill={props.color || '#de935f'}\n        d=\"M10.666,11.636,15.333,16.3,14,17.636l-6-6,6-6,1.333,1.333Z\"\n        transform=\"translate(-5.636 21.333) rotate(-90)\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function CollapsableIcon(props) {\n  return (\n    <svg width={props.size || 12} height={props.size || 20} viewBox=\"0 0 12 20\">\n      <g transform=\"translate(0)\">\n        <rect fill=\"none\" width=\"12\" height=\"20\" />\n        <path\n          fill={props.color || '#de935f'}\n          d=\"M10.666,11.636,15.333,16.3,14,17.636l-6-6,6-6,1.333,1.333Z\"\n          transform=\"translate(17.636 -2) rotate(90)\"\n        />\n      </g>\n    </svg>\n  );\n}\n","import React, { useState } from 'react';\nimport styled, { css, useTheme } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { NavLink, useRouteMatch } from 'react-router-dom';\nimport ExpandIcon from '../../icons/ExpandIcon';\nimport CollapseIcon from '../../icons/CollapseIcon';\n\nconst Container = styled(Flex)`\n  background-color: ${(props) => props.theme.color.navigationMenu.background.inactive};\n  box-shadow: 0px 3px 6px #00000029;\n  flex-direction: column;\n  width: max-content;\n  min-width: 150px;\n  padding-bottom: ${(props) => props.theme.margin.xs};\n  padding-top: ${(props) => props.theme.margin.xs};\n  text-align: left;\n  border-top: 1px solid ${(props) => props.theme.color.navigationMenu.border.active};\n`;\nContainer.displayName = 'SubMenu-Container';\n\nconst Link = styled(NavLink)`\n  font-family: ${(props) => props.theme.font.family};\n  font-size: 14px;\n  position: relative;\n  background-color: ${(props) => props.theme.color.navigationMenu.background.inactive};\n  color: ${(props) => props.theme.color.navigationMenu.color.inactive};\n  text-decoration: none;\n  padding: ${(props) => props.theme.margin.s};\n\n  &.active {\n    color: ${(props) => props.theme.color.navigationMenu.color.active};\n  }\n\n  &:hover,\n  &:focus {\n    background-color: ${(props) => props.theme.color.navigationMenu.background.active};\n    color: ${(props) => props.theme.color.navigationMenu.color.active};\n  }\n`;\nLink.displayName = 'SubMenu-Link';\n\nconst Label = styled(Flex)`\n  align-items: center;\n  margin-right: 20px;\n  font-family: ${(props) => props.theme.font.family};\n  font-size: 14px;\n  position: relative;\n  background-color: ${(props) => props.theme.color.navigationMenu.background.inactive};\n  color: ${(props) => props.theme.color.navigationMenu.color.inactive};\n  text-decoration: none;\n  padding-bottom: 15px;\n  border-bottom: 1px solid transparent;\n\n  &:focus {\n    border-bottom: 1px solid;\n    border-bottom-color: ${(props) => props.theme.color.navigationMenu.border.active};\n    color: ${(props) => props.theme.color.navigationMenu.color.active};\n    cursor: pointer;\n  }\n\n  ${(props) =>\n    props.active &&\n    css`\n      border-bottom: 1px solid;\n      border-bottom-color: ${props.theme.color.navigationMenu.border.active};\n    `}\n\n  ${(props) =>\n    props.isHover &&\n    css`\n      border-bottom: 1px solid;\n      border-bottom-color: ${props.theme.color.navigationMenu.border.active};\n      color: ${props.theme.color.navigationMenu.color.active};\n      cursor: pointer;\n    `}\n`;\nLabel.displayName = 'SubMenu-Label';\n\nconst LabelIcon = ({ isOpen, isHover }) => {\n  const theme = useTheme();\n  const iconColor = isHover\n    ? theme.color.navigationMenu.color.active\n    : theme.color.navigationMenu.color.inactive;\n\n  return (\n    <Flex ml=\"4px\" alignItems=\"center\">\n      {isOpen ? <CollapseIcon color={iconColor} /> : <ExpandIcon color={iconColor} />}\n    </Flex>\n  );\n};\n\nexport default function SubMenu({ items = [], label, rootPath = '', id = '' }) {\n  const [optionsVisible, setOptionsVisible] = useState(false);\n  const [menuTop, setMenuTop] = useState('0px');\n  const [hover, setHover] = useState(false);\n  const matchRoute = useRouteMatch(rootPath);\n\n  const onContextClick = (e) => {\n    try {\n      const rect = e.currentTarget.getBoundingClientRect();\n      setMenuTop(`${rect.top + rect.height - 1}px`);\n    } catch (err) {\n      setMenuTop(e.pageY);\n    }\n    e.preventDefault();\n    setOptionsVisible(true);\n  };\n\n  const closeMenu = () => {\n    setOptionsVisible(false);\n    setHover(false);\n  };\n\n  return (\n    <Flex\n      style={{ position: 'relative' }}\n      onMouseLeave={closeMenu}\n      onMouseEnter={() => setHover(true)}\n      flexDirection=\"column\"\n    >\n      <Label onClick={onContextClick} isHover={hover} active={matchRoute} id={id}>\n        {label}\n        <LabelIcon isOpen={optionsVisible} isHover={hover} />\n      </Label>\n      <Flex\n        style={{\n          position: 'fixed',\n          top: menuTop,\n          zIndex: 15,\n        }}\n        onClick={closeMenu}\n        className={label}\n      >\n        {optionsVisible && (\n          <Container>\n            {items.map((sm) => (\n              <Link to={sm.path} exact={sm.exact} key={sm.path} id={sm.id}>\n                {sm.label}\n              </Link>\n            ))}\n          </Container>\n        )}\n      </Flex>\n    </Flex>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst DotsSVG = styled(svgBase)`\n  width: ${(props) => props.size || '34px'};\n  height: ${(props) => props.size || '22px'};\n  fill: #898989;\n  &:hover {\n    fill: #66bb6a;\n  }\n  ${(props) =>\n    props.disabled &&\n    css`\n      &:hover {\n        fill: #898989;\n      }\n      cursor: not-allowed;\n    `};\n`;\nDotsSVG.displayName = 'DotsSVG';\n\nexport const TreeDots = (props) => (\n  <DotsSVG viewBox=\"0 0 44 32\" {...props}>\n    <g transform=\"translate(10 4)\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path d=\"M4.5,10.5A1.5,1.5,0,1,0,6,12,1.5,1.5,0,0,0,4.5,10.5Zm15,0A1.5,1.5,0,1,0,21,12,1.5,1.5,0,0,0,19.5,10.5Zm-7.5,0A1.5,1.5,0,1,0,13.5,12,1.5,1.5,0,0,0,12,10.5Z\" />\n    </g>\n  </DotsSVG>\n);\n\nexport default TreeDots;\n","import React, { useState, useEffect } from 'react';\nimport styled, { css, keyframes, useTheme } from 'styled-components';\nimport { withRouter } from 'react-router-dom';\nimport { NavHashLink } from 'react-router-hash-link';\nimport { Flex } from 'reflexbox';\nimport Media from 'react-media';\nimport LinkedText from '../LinkedText';\nimport SubMenu from './SubMenu';\nimport ContextMenu from '../ContextMenu';\nimport ContextMenuItem from '../ContextMenuItem';\nimport TreeDotsIcon from '../../icons/TreeDotsIcon';\n\nconst DEFAULT_MENU_HEIGHT = 50;\nconst DEFAULT_SCROLL_OFFSET_LIMIT = 170;\nconst DEFAULT_MOBILE_MAX_WIDTH = '600px';\n\nconst fadeIn = keyframes`\n0% {\n  opacity: 0;\n}\n100% {\n  opacity: 0.5;\n}\n`;\n\nconst Link = styled(NavHashLink)`\n  align-items: center;\n  margin-right: 20px;\n  font-family: ${(props) => props.theme.font.family};\n  font-size: 14px;\n  position: relative;\n  background-color: ${(props) => props.theme.color.navigationMenu.background.inactive};\n  color: ${(props) => props.theme.color.navigationMenu.color.inactive};\n  text-decoration: none;\n  padding-bottom: 15px;\n\n  &.active {\n    border-bottom: 1px solid;\n    color: ${(props) => props.theme.color.navigationMenu.color.active};\n    border-bottom-color: ${(props) => props.theme.color.navigationMenu.border.active};\n  }\n\n  &:hover,\n  &:focus {\n    border-bottom: 1px solid;\n    color: ${(props) => props.theme.color.navigationMenu.color.active};\n    border-bottom-color: ${(props) => props.theme.color.navigationMenu.border.active};\n  }\n`;\nLink.displayName = 'Menu-Link';\n\nconst Container = styled(Flex)`\n  overflow: hidden;\n  ${(props) =>\n    props.scrolled &&\n    css`\n      position: fixed;\n      width: 100%;\n      width: -moz-available; /* WebKit-based browsers will ignore this. */\n      z-index: 1000;\n      top: 0;\n      animation: ${fadeIn} 0.5s ease;\n      -moz-animation: ${fadeIn} 0.5s ease;\n      -webkit-animation: ${fadeIn} 0.5s ease;\n    `}\n  height: ${(props) => props.menuHeight}px;\n  background-color: ${(props) => props.theme.color.navigationMenu.background.inactive};\n  box-shadow: 0px 3px 6px #00000029;\n`;\nContainer.displayName = 'Menu-Container';\n\nconst isLinkActive = (match = false, menuItem = {}, location = {}) => {\n  if (!match) {\n    return false;\n  }\n  // location hash is empty && menuItem hash is undefined\n  if (location.hash === '' && menuItem.path && !menuItem.path.hash) {\n    return true;\n  }\n  // location hash is different than menuItem hash\n  if (menuItem.path && location.hash !== menuItem.path.hash) {\n    return false;\n  }\n  return true;\n};\n\nfunction Menu({\n  menuItems = [],\n  auxiliaryItems = [],\n  menuHeight = DEFAULT_MENU_HEIGHT,\n  scrollLimit = DEFAULT_SCROLL_OFFSET_LIMIT,\n  mobileMaxWidth = DEFAULT_MOBILE_MAX_WIDTH,\n}) {\n  const theme = useTheme();\n  const [scrolled, setScrolled] = useState(false);\n\n  const handleScroll = () => {\n    const scrollOffset = scrolled ? window.scrollY + menuHeight : window.scrollY;\n    if (scrollOffset > scrollLimit) {\n      setScrolled(true);\n    } else {\n      setScrolled(false);\n    }\n  };\n\n  useEffect(() => {\n    window.addEventListener('scroll', handleScroll);\n    return () => window.removeEventListener('scroll', handleScroll);\n  });\n\n  return (\n    <Media\n      queries={{\n        s: `(max-width: ${mobileMaxWidth})`,\n      }}\n    >\n      {(screenSize) => (\n        <Container\n          alignItems=\"flex-end\"\n          justifyContent=\"space-between\"\n          menuHeight={menuHeight}\n          width={1}\n          px=\"20px\"\n          scrolled={scrolled}\n        >\n          <Flex>\n            {menuItems.map((i) =>\n              i.subMenu ? (\n                <SubMenu\n                  items={i.subMenu}\n                  label={i.label.toUpperCase()}\n                  rootPath={i.rootPath}\n                  key={`${i.label}${i.rootPath}`}\n                  id={i.id}\n                />\n              ) : (\n                <Link\n                  to={i.path}\n                  key={i.id}\n                  elementId={i.elementId}\n                  // custom implementation of scroll to take into account the header height\n                  scroll={(el) => {\n                    // dispatch a custom event in order to disable Home auto scroll\n                    window.dispatchEvent(new Event('menu-fired-scroll'));\n                    window.scroll({ top: el.offsetTop - 115 });\n                  }}\n                  exact={i.exact}\n                  isActive={(match, location) => isLinkActive(match, i, location)}\n                >\n                  {i.label.toUpperCase()}\n                </Link>\n              )\n            )}\n          </Flex>\n          {screenSize.s ? (\n            <Flex mr=\"-12px\">\n              {!!auxiliaryItems.length && (\n                <ContextMenu button={<TreeDotsIcon size=\"40px\" />}>\n                  {auxiliaryItems.map((auxItem) => (\n                    <ContextMenuItem key={auxItem.id}>\n                      <LinkedText\n                        font={theme.font.family}\n                        color={\n                          auxItem.dangerTheme\n                            ? theme.color.navigationMenu.color.inactive\n                            : theme.color.navigationMenu.color.active\n                        }\n                        hoverColor={\n                          auxItem.dangerTheme\n                            ? theme.color.navigationMenu.hover.danger\n                            : theme.color.navigationMenu.hover.inactive\n                        }\n                        fontSize=\"10px\"\n                        onClick={auxItem.onClick}\n                        id={auxItem.id}\n                      >\n                        {auxItem.label}\n                      </LinkedText>\n                    </ContextMenuItem>\n                  ))}\n                </ContextMenu>\n              )}\n            </Flex>\n          ) : (\n            <Flex>\n              {auxiliaryItems.map((auxItem) => (\n                <Flex key={auxItem.id} pb=\"15px\" ml=\"20px\" style={{ fontSize: '14px' }}>\n                  <LinkedText\n                    font={theme.font.family}\n                    color={\n                      auxItem.dangerTheme\n                        ? theme.color.navigationMenu.color.inactive\n                        : theme.color.navigationMenu.color.active\n                    }\n                    hoverColor={\n                      auxItem.dangerTheme\n                        ? theme.color.navigationMenu.hover.danger\n                        : theme.color.navigationMenu.hover.inactive\n                    }\n                    fontSize=\"14px\"\n                    onClick={auxItem.onClick}\n                    id={auxItem.id}\n                  >\n                    {auxItem.label}\n                  </LinkedText>\n                </Flex>\n              ))}\n            </Flex>\n          )}\n        </Container>\n      )}\n    </Media>\n  );\n}\n\nexport default withRouter(Menu);\n","import React, { useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '40px';\n\nconst ProfileSVG = styled(svgBase)`\n  fill: #d0d0d0;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n      fill: #66bb6a;\n    `};\n`;\n\nexport default function ProfileIcon(props) {\n  const [hover, setHover] = useState(false);\n  const { active } = props;\n  return (\n    <Flex onMouseLeave={() => setHover(false)} onMouseEnter={() => setHover(true)} {...props}>\n      <svg width={props.size || SIZE} height={props.size || SIZE} viewBox=\"0 0 40 40\">\n        <g>\n          <path fill=\"none\" d=\"M0,0H40V40H0Z\" />\n          <ProfileSVG viewBox=\"0 0 40 40\" hover={hover || active}>\n            <path\n              d=\"M16,2A14,14,0,1,1,2,16,14.005,14.005,0,0,1,16,2ZM7.632,20.782A10.469,10.469,0,0,0,16.224,25.8a10.463,10.463,0,0,0,8.59-5.018,12.6,12.6,0,0,0-17.182,0ZM16,14.6a4.2,4.2,0,1,0-4.2-4.2A4.2,4.2,0,0,0,16,14.6Z\"\n              transform=\"translate(4.333 4.333)\"\n            />\n          </ProfileSVG>\n        </g>\n      </svg>\n    </Flex>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '40px';\n\nconst Base = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #d0d0d0;\n  &:hover {\n    fill: #66bb6a;\n  }\n`;\n\nexport default function NotificationIcon({ showDot = false }) {\n  return (\n    <Base viewBox=\"0 0 40 40\">\n      <g transform=\"translate(8 8)\">\n        <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n        <path d=\"M22,20H2V18H3V11.031a9,9,0,1,1,18,0V18h1ZM9.5,21h5a2.5,2.5,0,1,1-5,0Z\" />\n        {showDot && <circle cx=\"28\" cy=\"5\" r=\"4\" fill=\"#66bb6a\" />}\n      </g>\n    </Base>\n  );\n}\n","import styled from 'styled-components';\n\nconst NavContainer = styled.div`\n  padding: 0 20px 0 20px;\n  height: 60px;\n  background-color: #1d1d1d;\n`;\n\nexport default NavContainer;\n","import styled, { css } from 'styled-components';\n\nconst NavGroup = styled.div`\n  display: flex;\n  float: left;\n  align-items: center;\n  height: 100%;\n  ${(props) =>\n    props.right &&\n    css`\n      float: right;\n    `};\n`;\n\nexport default NavGroup;\n","import styled from 'styled-components';\n\nconst NavTitle = styled.div`\n  cursor: default;\n  color: ${(props) => props.theme.color.navTitle.color};\n  font-size: 19px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: 60px;\n  position: absolute;\n  left: 50%;\n  transform: translateX(-50%);\n`;\n\nexport default NavTitle;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst DoorIcon = styled(Base)`\n  fill: #898989;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `};\n`;\n\nexport default function LogOutIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <DoorIcon {...props}>\n        <path d=\"M4,18H6v2H18V4H6V6H4V3A1,1,0,0,1,5,2H19a1,1,0,0,1,1,1V21a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1Zm2-7h7v2H6v3L1,12,6,8Z\" />\n      </DoorIcon>\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst AccountSVG = styled(svgBase)`\n  width: ${(props) => props.size || '24px'};\n  height: ${(props) => props.size || '24px'};\n  fill: #898989;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `};\n`;\n\nexport default function AccountSettingsIcon(props) {\n  return (\n    <AccountSVG viewBox=\"0 0 448 512\" {...props}>\n      <path d=\"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\" />\n    </AccountSVG>\n  );\n}\n","import styled, { css } from 'styled-components';\n\nconst StyledText = styled.div`\n  color: ${(props) =>\n    props.light\n      ? props.theme.color.text.light.color\n      : props.medium\n      ? props.theme.color.text.medium.color\n      : props.theme.color.text.default.color};\n\n  ${(props) =>\n    props.color &&\n    css`\n      color: ${props.color};\n    `};\n\n  ${(props) =>\n    props.size &&\n    css`\n      font-size: ${props.size};\n    `};\n`;\n\nexport default StyledText;\n","export function truncateString(str = '', num) {\n  if (str === null) {\n    return '';\n  }\n  if (str.length <= num) {\n    return str;\n  }\n  return `${str.slice(0, num)}...`;\n}\n\nexport default { truncateString };\n","import React from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport styled from 'styled-components';\nimport LogOutIcon from '../../icons/LogOutIcon';\nimport AccountSettingsIcon from '../../icons/AccountSettingsIcon';\nimport StyledText from '../StyledText';\nimport FormLabel from '../FormLabel';\nimport LinkedText from '../LinkedText';\nimport { truncateString } from '../../utils';\n\nconst Card = styled(Box)`\n  position: absolute;\n  padding: 40px;\n  width: 100%;\n  background-color: ${(props) => props.theme.color.profile.background};\n  border: solid 1px ${(props) => props.theme.color.profile.border};\n  text-align: left;\n  box-shadow: 0px 4px 10px #00000059;\n`;\n\nexport default function ProfileSection({\n  displayName = '',\n  email = '',\n  hideSettings = true,\n  onLogOut,\n  onAccountGo,\n}) {\n  const INSIDE_MARGIN = '16px';\n  return (\n    <Card justifyContent=\"left\">\n      <StyledText light size=\"28px\" textAlign=\"left\">\n        {truncateString(displayName, 19)}\n      </StyledText>\n      <Box mt={INSIDE_MARGIN}>\n        <FormLabel style={{ wordBreak: 'break-all' }}>{email}</FormLabel>\n      </Box>\n      {hideSettings ? null : (\n        <Flex\n          mt=\"46px\"\n          ml=\"10px\"\n          onClick={onAccountGo}\n          justifyContent=\"flex-start\"\n          alignItems=\"center\"\n          style={{ cursor: 'pointer' }}\n        >\n          <AccountSettingsIcon size=\"18px\" />\n          <LinkedText\n            font=\"Roboto Mono\"\n            color=\"#A0A0A0\"\n            style={{ marginLeft: '20px', fontSize: '14px' }}\n          >\n            Account Settings\n          </LinkedText>\n        </Flex>\n      )}\n      <Flex\n        mt=\"46px\"\n        ml=\"10px\"\n        onClick={onLogOut}\n        justifyContent=\"flex-start\"\n        alignItems=\"center\"\n        style={{ cursor: 'pointer' }}\n      >\n        <LogOutIcon size=\"20px\" />\n        <LinkedText\n          font=\"Roboto Mono\"\n          color=\"#A0A0A0\"\n          style={{ marginLeft: '20px', fontSize: '14px' }}\n        >\n          Sign Out\n        </LinkedText>\n      </Flex>\n    </Card>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nconst Button = styled.div`\n  background-color: transparent;\n  border: transparent;\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  white-space: nowrap;\n  padding: ${(props) => (props.noPadding ? 0 : '8px')};\n  color: ${(props) => props.theme.color.table.header.color};\n  cursor: pointer;\n\n  &:hover {\n    ${(props) =>\n      props.active\n        ? css`\n            background: ${props.theme.color.button.unregular.active.hover.background};\n            color: ${props.theme.color.button.unregular.active.hover.color};\n            border-color: ${props.theme.color.button.unregular.active.hover.border};\n          `\n        : css`\n            color: ${props.theme.color.button.unregular.inactive.hover.color};\n            border-color: ${props.theme.color.button.unregular.inactive.hover.border};\n          `}\n    ${(props) =>\n      props.disabled &&\n      css`\n        background: ${props.theme.color.button.regular.accept.disabled.background};\n        border-color: ${props.theme.color.button.regular.accept.disabled.border};\n        cursor: not-allowed;\n      `}\n  }\n`;\n\nconst Text = styled.span`\n  color: ${(props) =>\n    props.active\n      ? props.theme.color.button.unregular.active.default.color\n      : props.theme.color.button.unregular.inactive.default.color};\n  &:hover {\n    ${(props) =>\n      !props.disabled &&\n      css`\n        color: ${props.theme.color.button.unregular.active.hover.color};\n      `}\n  }\n`;\n\nfunction UnregularButton(props) {\n  const { children, onClick, ...rest } = props;\n  return (\n    <Button onClick={rest.disabled ? () => {} : onClick} {...rest}>\n      [<Text {...rest}>{props.children}</Text>]\n    </Button>\n  );\n}\n\nexport default UnregularButton;\n","import React from 'react';\n\nexport default function CrossIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"2 2 20 20\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path\n        fill={props.color ? props.color : '#898989'}\n        d=\"M12,10.586l4.95-4.95L18.364,7.05,13.414,12l4.95,4.95L16.95,18.364,12,13.414l-4.95,4.95L5.636,16.95,10.586,12,5.636,7.05,7.05,5.636Z\"\n      />\n    </svg>\n  );\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport get from 'lodash.get';\nimport CrossIcon from '../../icons/CrossIcon';\nimport StyledText from '../StyledText';\nimport RegularText from '../RegularText';\nimport LinkedText from '../LinkedText';\n\nconst Card = styled(Flex)`\n  width: 100%;\n  flex-direction: column;\n  padding: 20px 0 20px;\n  opacity: ${(props) => (props.saw ? 0.4 : 1)};\n  filter: ${(props) => (props.loading ? 'blur(1px)' : 'none')};\n`;\n\nfunction NotificationCard({\n  data = {},\n  onRemoveNotification = () => {},\n  lastItem = false,\n  navigateTo = () => {},\n}) {\n  const { notificationType, notification, read } = data;\n  const [isRemoving, setRemoving] = useState(false);\n\n  let notificationBody;\n  let title;\n  switch (notificationType) {\n    case 'TEAM_INVITE_RECEIVED':\n      notificationBody = (\n        <Flex style={{ whiteSpace: 'break-spaces' }} flexDirection=\"column\">\n          <RegularText style={{ whiteSpace: 'break-spaces' }}>\n            {get(notification, 'team.name', 'A team')} wants you in their lines 💪\n          </RegularText>\n          <Flex ml=\"auto\" mt=\"16px\">\n            <LinkedText onClick={() => navigateTo(`/event/${notification.eventId}/team/join`)}>\n              <RegularText mediumWeight>See invitation</RegularText>\n            </LinkedText>\n          </Flex>\n        </Flex>\n      );\n      title = 'You have been invited';\n      break;\n    case 'TEAM_INVITE_CANCELLED':\n      title = `${get(notification, 'updatedByUser.displayName', 'A user')} left the team`;\n      notificationBody = (\n        <Flex>\n          <RegularText style={{ whiteSpace: 'break-spaces' }}>Check your team </RegularText>\n          <Flex>\n            <LinkedText onClick={() => navigateTo(`/event/${notification.eventId}/team`)}>\n              <RegularText mediumWeight>crew</RegularText>\n            </LinkedText>\n          </Flex>\n        </Flex>\n      );\n      break;\n    case 'TEAM_INVITE_REMOVED':\n      title = 'You were removed from your team';\n      notificationBody = (\n        <Flex flexDirection=\"column\">\n          <RegularText>\n            You are not longer part of {get(notification, 'team.name', 'the team')}\n          </RegularText>\n          <Flex ml=\"auto\" mt=\"16px\">\n            <LinkedText onClick={() => navigateTo(`/event/${notification.eventId}/team/join`)}>\n              <RegularText mediumWeight>Join another team</RegularText>\n            </LinkedText>\n          </Flex>\n        </Flex>\n      );\n      break;\n    case 'TEAM_INVITE_ACCEPTED':\n      title = `${get(\n        notification,\n        'updatedByUser.displayName',\n        'A user'\n      )} accepted the team invitation`;\n      notificationBody = (\n        <Flex>\n          <RegularText style={{ whiteSpace: 'break-spaces' }}>Check your team </RegularText>\n          <Flex>\n            <LinkedText onClick={() => navigateTo(`/event/${notification.eventId}/team`)}>\n              <RegularText mediumWeight>crew</RegularText>\n            </LinkedText>\n          </Flex>\n        </Flex>\n      );\n      break;\n    case 'TEAM_INVITE_REJECTED':\n      title = 'Your team invite was rejected';\n      notificationBody = (\n        <Flex ml=\"auto\" mt=\"16px\">\n          <LinkedText onClick={() => navigateTo(`/event/${notification.eventId}/team/join`)}>\n            <RegularText mediumWeight>Join another team</RegularText>\n          </LinkedText>\n        </Flex>\n      );\n      break;\n    case 'TEAM_LEAVE':\n      title = `${get(notification, 'updatedByUser.displayName', 'A user')} left the team`;\n      notificationBody = (\n        <Flex>\n          <RegularText style={{ whiteSpace: 'break-spaces' }}>Check your team </RegularText>\n          <Flex>\n            <LinkedText onClick={() => navigateTo(`/event/${notification.eventId}/team`)}>\n              <RegularText mediumWeight>crew</RegularText>\n            </LinkedText>\n          </Flex>\n        </Flex>\n      );\n      break;\n    case 'TEAM_INVITE_DISBAND':\n      title = 'Your team was disbanded';\n      notificationBody = (\n        <Flex ml=\"auto\" mt=\"16px\">\n          <LinkedText onClick={() => navigateTo(`/event/${notification.eventId}/team/join`)}>\n            <RegularText mediumWeight>Join another team</RegularText>\n          </LinkedText>\n        </Flex>\n      );\n      break;\n    default:\n      title = 'Check this out';\n  }\n  return (\n    <>\n      <Card saw={read} loading={isRemoving ? 1 : 0}>\n        <Flex mb=\"8px\">\n          <StyledText size=\"20px\" light>\n            {title}\n          </StyledText>\n          <Flex\n            ml=\"auto\"\n            onClick={() => {\n              setRemoving(true);\n              onRemoveNotification();\n            }}\n            style={{ cursor: 'pointer' }}\n          >\n            <CrossIcon />\n          </Flex>\n        </Flex>\n        {notificationBody}\n      </Card>\n      {!lastItem && <Flex style={{ borderBottom: '1px solid #535353' }} />}\n    </>\n  );\n}\n\nexport default NotificationCard;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Box, Flex } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport StyledText from '../StyledText';\nimport UnregularButton from '../UnregularButton';\nimport Notification from './NotificationCard';\n\nconst Container = styled(Box)`\n  width: 100%;\n  max-width: 420px;\n  max-height: 700px;\n  overflow-y: auto;\n  padding: 40px 20px 40px 20px;\n  background-color: ${(props) => props.theme.color.notificationList.container.background};\n  border: solid 1px ${(props) => props.theme.color.notificationList.container.border};\n  text-align: left;\n  box-shadow: 0px 4px 10px ${(props) => props.theme.color.notificationList.container.boxShadow};\n  filter: ${(props) => (props.loading ? 'blur(1px)' : 'none')};\n`;\n\nexport default function NotificationsList({\n  onHideList = () => {},\n  notifications = [],\n  onRemoveNotification,\n  onRemoveAllNotifications,\n}) {\n  const history = useHistory();\n\n  const onNavigation = (path) => {\n    history.push(path);\n    onHideList();\n  };\n\n  if (notifications.length === 0) {\n    return (\n      <Container>\n        <StyledText size=\"20px\" light>\n          All clear here...\n        </StyledText>\n      </Container>\n    );\n  }\n  return (\n    <Container>\n      <Flex>\n        <Flex ml=\"auto\" mt=\"-30px\" mr=\"-20px\">\n          <UnregularButton onClick={onRemoveAllNotifications}>clear all</UnregularButton>\n        </Flex>\n      </Flex>\n      {notifications.map((n, idx) => (\n        <Notification\n          key={n.createdAt}\n          data={n}\n          onRemoveNotification={() => onRemoveNotification(n)}\n          lastItem={idx === notifications.length - 1}\n          navigateTo={onNavigation}\n        />\n      ))}\n    </Container>\n  );\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Flex } from 'reflexbox';\nimport Media from 'react-media';\nimport { useHistory } from 'react-router-dom';\nimport BotsIcon from '../../icons/BotsIcon';\nimport BooIcon from '../../icons/BooIcon';\nimport ProfileIcon from '../../icons/ProfileIcon';\nimport NotificationIcon from '../../icons/NotificationIcon';\nimport NavContainer from './NavContainer';\nimport NavGroup from './NavGroup';\nimport NavTitle from './NavTitle';\nimport ProfileSection from './ProfileSection';\nimport FloatingMenu from '../FloatingMenu';\nimport NotificationsList from './NotificationList';\nimport HovereableFlex from '../common/HovereableFlex';\nimport Breadcrumb from '../Breadcrumb';\n\nconst BOTS_TYPE = {\n  SOC: 'SOC',\n  NOC: 'NOC',\n};\nconst NAV_MOBILE_MAXWIDTH = '600px';\n\nconst HomeLink = ({ iconType, blockNavigation = false }) => {\n  const history = useHistory();\n  const homeNavigation = () => {\n    if (!blockNavigation) {\n      history.push('/');\n    }\n  };\n  return (\n    <Flex style={{ cursor: 'pointer' }} onClick={homeNavigation}>\n      {iconType === BOTS_TYPE.NOC ? <BooIcon size={40} /> : <BotsIcon size={40} />}\n    </Flex>\n  );\n};\n\nfunction Nav({\n  title = '',\n  breadcrumbs = [],\n  appType,\n  onLogOut = () => {},\n  userDisplayName = '',\n  userEmail = '',\n  loggedIn = false,\n  hideUserSettings = false,\n  hideUserNotifications = false,\n  userNotifications = [],\n  onOpenNotifications = () => {},\n  onCloseNotifications = () => {},\n  onRemoveNotification = () => {},\n  onRemoveAllNotifications = () => {},\n}) {\n  const [profileVisible, setProfileVisible] = useState(false);\n  const [notificationsVisible, setNotificationsVisible] = useState(false);\n  const [areNewNotifications, setNewNotificationsMark] = useState(false);\n  const history = useHistory();\n  const profileRef = useRef(null);\n  const notififcationRef = useRef(null);\n\n  useEffect(() => {\n    if (!notificationsVisible) {\n      setNewNotificationsMark(userNotifications.some((n) => n.read === null));\n    }\n  }, [userNotifications]);\n\n  const hideSections = () => {\n    setNotificationsVisible(false);\n    setProfileVisible(false);\n  };\n\n  useEffect(() => {\n    if (profileVisible || notificationsVisible) {\n      window.addEventListener('scroll', hideSections);\n    } else {\n      window.removeEventListener('scroll', hideSections);\n    }\n    return () => window.removeEventListener('scroll', hideSections);\n  }, [profileVisible, notificationsVisible]);\n\n  const onNotificationIconClick = () => {\n    setNewNotificationsMark(false);\n    setNotificationsVisible(true);\n    onOpenNotifications();\n  };\n\n  const onCloseNotificationsClick = () => {\n    setNotificationsVisible(false);\n    onCloseNotifications();\n  };\n\n  return (\n    <Media\n      queries={{\n        s: `(max-width: ${NAV_MOBILE_MAXWIDTH})`,\n        m: '(max-width: 900px)',\n      }}\n    >\n      {(screenSize) => (\n        <>\n          <NavContainer>\n            <NavGroup>\n              <HomeLink iconType={appType} />\n              {!screenSize.s && breadcrumbs.length > 0 && (\n                <Flex ml=\"20px\">\n                  <Breadcrumb crumbs={breadcrumbs} />\n                </Flex>\n              )}\n            </NavGroup>\n            {!screenSize.s && <NavTitle>{title}</NavTitle>}\n            <NavGroup right>\n              {loggedIn && (\n                <>\n                  <HovereableFlex\n                    mr=\"20px\"\n                    onClick={!hideUserNotifications && onNotificationIconClick}\n                    ref={notififcationRef}\n                    disable={hideUserNotifications}\n                  >\n                    <NotificationIcon showDot={areNewNotifications} />\n                  </HovereableFlex>\n                  <Flex onClick={() => setProfileVisible(true)} ref={profileRef}>\n                    <ProfileIcon active={profileVisible} />\n                  </Flex>\n                </>\n              )}\n            </NavGroup>\n          </NavContainer>\n          {screenSize.s && title && (\n            <Flex\n              style={{\n                color: '#898989',\n                fontSize: '16px',\n                width: '100%',\n                height: '30px',\n                flexDirection: 'row',\n                justifyContent: 'flex-start',\n                backgroundColor: '#1d1d1d',\n                paddingLeft: '20px',\n                paddingRight: '5px',\n                wordBreak: 'break-all',\n                textAlign: 'left',\n              }}\n            >\n              {title.substr(0, 70)}\n            </Flex>\n          )}\n          {profileVisible && (\n            <FloatingMenu\n              onBackgroundClick={() => setProfileVisible(false)}\n              mobile={screenSize.m}\n              parentRef={profileRef}\n            >\n              <ProfileSection\n                displayName={userDisplayName}\n                email={userEmail}\n                hideSettings={hideUserSettings}\n                onLogOut={() => {\n                  setProfileVisible(false);\n                  onLogOut();\n                }}\n                onAccountGo={() => {\n                  setProfileVisible(false);\n                  history.push('/account');\n                }}\n              />\n            </FloatingMenu>\n          )}\n          {notificationsVisible && (\n            <FloatingMenu\n              onBackgroundClick={onCloseNotificationsClick}\n              mobile={screenSize.m}\n              parentRef={notififcationRef}\n            >\n              <NotificationsList\n                onHideList={() => setNotificationsVisible(false)}\n                notifications={userNotifications}\n                onRemoveNotification={onRemoveNotification}\n                onRemoveAllNotifications={onRemoveAllNotifications}\n              />\n            </FloatingMenu>\n          )}\n        </>\n      )}\n    </Media>\n  );\n}\n\nexport default Nav;\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '24px';\n\nconst PrevSVG = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #898989;\n  &:hover {\n    fill: #66bb6a;\n  }\n`;\n\nexport default function PrevIcon() {\n  return (\n    <PrevSVG viewBox=\"0 0 24 24\">\n      <g>\n        <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n        <path d=\"M10.828,12l4.95,4.95-1.414,1.414L8,12l6.364-6.364L15.778,7.05Z\" />\n      </g>\n    </PrevSVG>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '24px';\n\nconst NextSVG = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #898989;\n  &:hover {\n    fill: #66bb6a;\n  }\n`;\n\nexport default function NextIcon() {\n  return (\n    <NextSVG viewBox=\"0 0 24 24\">\n      <g>\n        <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n        <path d=\"M13.172,12,8.222,7.05,9.636,5.636,16,12,9.636,18.364,8.222,16.95Z\" />\n      </g>\n    </NextSVG>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport PrevIcon from '../../icons/PrevIcon';\nimport NextIcon from '../../icons/NextIcon';\n\nconst Button = styled.button`\n  border: 1px solid ${(props) => props.theme.color.button.small.border};\n  box-shadow: 0px 3px 6px #00000029;\n  background: ${(props) => props.theme.color.button.small.background};\n  &:hover,\n  &:focus {\n    background: ${(props) => props.theme.color.button.regular.accept.hover.background};\n    box-shadow: 0px 4px 10px #00000040;\n  }\n  margin-left: 8px;\n  margin-right: 8px;\n  ${(props) =>\n    props.disabled &&\n    css`\n      background: ${props.theme.color.button.regular.accept.disabled.background};\n      border: 1px solid ${props.theme.color.button.regular.accept.disabled.border};\n      color: ${props.theme.color.button.regular.accept.disabled.color};\n      cursor: not-allowed;\n      opacity: 0.4;\n    `}\n`;\n\nexport default function Paginator({\n  onNext,\n  onPrev,\n  isNext = false,\n  isPrev = false,\n  paginating = false,\n  backgroundColor = '#1d1d1d',\n}) {\n  const goPrev = (e) => {\n    e.preventDefault();\n    if (isPrev && !paginating) {\n      onPrev();\n    }\n  };\n  const goNext = (e) => {\n    e.preventDefault();\n    if (isNext && !paginating) {\n      onNext();\n    }\n  };\n  return (\n    <Flex alignItems=\"center\" py=\"16px\" justifyContent=\"center\" backgroundColor={backgroundColor}>\n      <Button disabled={!isPrev || paginating} onClick={goPrev}>\n        <PrevIcon />\n      </Button>\n      <Button disabled={!isNext || paginating} onClick={goNext}>\n        <NextIcon />\n      </Button>\n    </Flex>\n  );\n}\n","import React from 'react';\n\nexport default function QuestionMark(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 26 26\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path\n        fill=\"#a0a0a0\"\n        d=\"M12.493,20.218h3.228v3.228H12.493Zm3.228-2.655V18.6H12.493V16.184a1.614,1.614,0,0,1,1.614-1.614,2.421,2.421,0,1,0-2.374-2.9L8.567,11.04a5.65,5.65,0,1,1,7.154,6.523Z\"\n        transform=\"translate(-2.128 -3.223)\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\nimport { useTheme } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport CheckMark from '../../icons/CheckMark';\nimport RegularText from '../RegularText';\nimport CrossIcon from '../../icons/CrossIcon';\nimport QuestionMark from '../../icons/QuestionIcon';\nimport { EVENT_QUESTION_STATUS } from '../../constants';\n\nfunction QuestionState({ status, iconSize = 24 }) {\n  const theme = useTheme();\n  switch (status) {\n    case EVENT_QUESTION_STATUS.CORRECT:\n      return (\n        <Flex alignItems=\"center\">\n          <CheckMark size={iconSize} />\n          <RegularText fontSize=\"14px\" color={theme.color.question_card.color.correct}>\n            Correct\n          </RegularText>\n        </Flex>\n      );\n    case EVENT_QUESTION_STATUS.INCORRECT:\n      return (\n        <Flex alignItems=\"center\">\n          <CrossIcon size={iconSize} color={theme.color.table.row.incorrect} />\n          <RegularText fontSize=\"14px\" color={theme.color.question_card.color.incorrect}>\n            Incorrect\n          </RegularText>\n        </Flex>\n      );\n    default:\n      return (\n        <Flex alignItems=\"center\">\n          <QuestionMark size={iconSize} />\n          <RegularText fontSize=\"14px\" color={theme.color.question_card.color.pending}>\n            Not Answered\n          </RegularText>\n        </Flex>\n      );\n  }\n}\n\nexport default QuestionState;\n","import React, { useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex, Box } from 'reflexbox';\nimport { truncateString } from '../../utils';\nimport QuestionState from './QuestionState';\nimport RegularText from '../RegularText';\nimport {\n  EVENT_QUESTION_STATUS,\n  DEFAULT_BONUS_MULTIPLIER,\n  QUESTION_CARD_DEFAULT_WIDTH,\n} from '../../constants';\nimport SpinnerIcon from '../../icons/SpinnerIcon';\nimport TrashCanIcon from '../../icons/TrashCanIcon';\n\nconst QUESTION_MAX_LENGHT = 520;\nconst QUESTION_TITLE_MAX_LENGHT = 33;\n\nconst Container = styled(Flex)`\n  width: ${QUESTION_CARD_DEFAULT_WIDTH};\n  height: 620px;\n  background-color: ${(props) => props.theme.color.question_card.background.inactive};\n  padding: ${(props) => props.theme.margin.s};\n  border: 2px solid;\n  margin-bottom: ${(props) => props.theme.margin.s};\n  border-color: ${(props) => props.theme.color.question_card.border.pending};\n  ${(props) =>\n    props.correct &&\n    css`\n      border-color: ${props.theme.color.question_card.border.correct};\n    `}\n  ${(props) =>\n    props.incorrect &&\n    css`\n      border-color: ${props.theme.color.question_card.border.incorrect};\n    `}\n  \n  &:hover {\n    background-color: ${(props) => props.theme.color.question_card.background.active};\n    cursor: pointer;\n  }\n  ${(props) =>\n    props.highLigted &&\n    css`\n      background-color: ${props.theme.color.question_card.background.active};\n      cursor: default;\n    `}\n`;\n\nContainer.displayName = 'QuestionCard-Container';\n\nexport default function QuestionCard({\n  question,\n  answer = {},\n  onSelectCard,\n  selectedCard,\n  points,\n  isEditionView = false,\n  removingQuestion = false,\n  onRemoveQuestion = () => {},\n  error = null,\n}) {\n  const [isCardHover, setIsCardHover] = useState(false);\n  const { base_point_value, question_id, background, title } = question;\n  const isCorrect = answer.state === EVENT_QUESTION_STATUS.CORRECT;\n  const isIncorrect = answer.state === EVENT_QUESTION_STATUS.INCORRECT || error !== null;\n\n  const onRemoveQuestionClick = (e) => {\n    e && e.stopPropagation();\n    if (!removingQuestion) {\n      onRemoveQuestion();\n    }\n  };\n\n  return (\n    <Flex justifyContent=\"center\" width=\"fit-content\">\n      <Container\n        highLigted={selectedCard}\n        correct={isCorrect}\n        incorrect={isIncorrect}\n        onMouseEnter={() => setIsCardHover(true)}\n        onMouseLeave={() => setIsCardHover(false)}\n      >\n        <Flex\n          onClick={onSelectCard}\n          flexDirection=\"column\"\n          width={1}\n          className=\"QuestionCard-clickeableContainer\"\n        >\n          <Flex alignItems=\"center\">\n            <RegularText fontSize=\"24px\" mediumWeight>\n              #{question_id}\n            </RegularText>\n            <Flex ml=\"auto\">\n              <QuestionState status={answer.state} iconSize={19} />\n            </Flex>\n          </Flex>\n          <Flex my=\"20px\">\n            <RegularText\n              fontSize=\"24px\"\n              mediumWeight\n              style={{\n                textOverflow: 'ellipsis',\n                textDecoration: isCardHover && 'underline solid 0.5px',\n              }}\n            >\n              {truncateString(title, QUESTION_TITLE_MAX_LENGHT)}\n            </RegularText>\n          </Flex>\n          <Box mt=\"20px\">\n            <RegularText style={{ overflowWrap: 'anywhere' }}>\n              {truncateString(background, QUESTION_MAX_LENGHT)}\n            </RegularText>\n          </Box>\n          <Flex mt=\"auto\" alignItems=\"center\">\n            {isCorrect ? (\n              <RegularText fontSize=\"20px\" mediumWeight style={{ whiteSpace: 'break-spaces' }}>\n                Points Earned:{' '}\n                <RegularText fontSize=\"20px\" mediumWeight color=\"#81C784\">\n                  {points.total}{' '}\n                </RegularText>\n                / {Math.round(base_point_value * DEFAULT_BONUS_MULTIPLIER)}\n              </RegularText>\n            ) : (\n              <RegularText fontSize=\"20px\" mediumWeight>\n                Base Points: {base_point_value}\n              </RegularText>\n            )}\n            {isEditionView && (\n              <Flex\n                className=\"QuestionCard-removeButton\"\n                ml=\"auto\"\n                height=\"30px\"\n                onClick={onRemoveQuestionClick}\n              >\n                {removingQuestion ? (\n                  <SpinnerIcon size=\"30px\" color=\"#ba0816\" />\n                ) : (\n                  isCardHover && <TrashCanIcon />\n                )}\n              </Flex>\n            )}\n          </Flex>\n        </Flex>\n      </Container>\n    </Flex>\n  );\n}\n","import React from 'react';\nimport styled, { css, useTheme } from 'styled-components';\nimport Media from 'react-media';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { Flex } from 'reflexbox';\nimport { QUESTION_CARD_DEFAULT_WIDTH } from '../../constants';\n\nconst Container = styled(Flex)`\n  width: ${QUESTION_CARD_DEFAULT_WIDTH};\n  height: 620px;\n  background-color: ${(props) => props.theme.color.question_card.background.inactive};\n  padding: ${(props) => props.theme.margin.s};\n  border: 2px solid;\n  margin: ${(props) => props.theme.margin.s} 0 ${(props) => props.theme.margin.s} 0;\n  border-color: ${(props) => props.theme.color.question_card.border.pending};\n  ${(props) =>\n    props.correct &&\n    css`\n      border-color: ${props.theme.color.question_card.border.correct};\n    `}\n  ${(props) =>\n    props.incorrect &&\n    css`\n      border-color: ${props.theme.color.question_card.border.incorrect};\n    `}\n  \n  &:hover {\n    background-color: ${(props) => props.theme.color.question_card.background.active};\n    cursor: pointer;\n  }\n  ${(props) =>\n    props.highLigted &&\n    css`\n      background-color: ${props.theme.color.question_card.background.active};\n      cursor: default;\n    `}\n`;\n\nconst getGridConfiguration = (matches) => {\n  if (matches.m) {\n    return '1fr 1fr 1fr';\n  }\n  if (matches.s) {\n    return '1fr 1fr';\n  }\n  return `${QUESTION_CARD_DEFAULT_WIDTH}`;\n};\n\nconst DESCRIPTION_SKELETON_LINES = 10;\nfunction QuestionCardBlock() {\n  const theme = useTheme();\n  return (\n    <Container>\n      <Flex flexDirection=\"column\">\n        <SkeletonTheme\n          color={theme.color.skeleton.color}\n          highlightColor={theme.color.skeleton.highlightColor}\n        >\n          <Skeleton height=\"30px\" width=\"330px\" />\n        </SkeletonTheme>\n        <Flex my=\"30px\" />\n        <SkeletonTheme\n          color={theme.color.skeleton.color}\n          highlightColor={theme.color.skeleton.highlightColor}\n        >\n          <Skeleton height=\"20px\" width=\"330px\" count={DESCRIPTION_SKELETON_LINES} />\n        </SkeletonTheme>\n        <Flex my=\"110px\" />\n        <SkeletonTheme\n          color={theme.color.skeleton.color}\n          highlightColor={theme.color.skeleton.highlightColor}\n        >\n          <Skeleton height=\"24px\" width=\"330px\" />\n        </SkeletonTheme>\n      </Flex>\n    </Container>\n  );\n}\n\nexport default function QuestionCardSkeleton() {\n  return (\n    <Media\n      queries={{\n        s: '(min-width: 1000px)',\n        m: '(min-width: 1880px)',\n      }}\n    >\n      {(matches) => (\n        <Flex\n          width={1}\n          style={{\n            display: 'grid',\n            gridTemplateColumns: getGridConfiguration(matches),\n            gridGap: '22px',\n            gridAutoFlow: 'dense',\n          }}\n        >\n          <QuestionCardBlock />\n          {matches.s && <QuestionCardBlock />}\n          {matches.m && <QuestionCardBlock />}\n        </Flex>\n      )}\n    </Media>\n  );\n}\n","export const EVENT_QUESTION_STATUS = {\n  CORRECT: 'CORRECT',\n  INCORRECT: 'INCORRECT',\n  PENDING: 'PENDING',\n};\nexport const DEFAULT_BONUS_MULTIPLIER = 2;\n","import React, { useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex, Box } from 'reflexbox';\nimport RegularText from '../RegularText';\nimport { EVENT_QUESTION_STATUS } from './constants';\nimport SpinnerIcon from '../../icons/SpinnerIcon';\nimport TrashCanIcon from '../../icons/TrashCanIcon';\n\nconst Container = styled(Flex)`\n  width: 100%;\n  height: 60px;\n  background-color: ${(props) => props.theme.color.question_card.background.inactive};\n  padding: ${(props) => props.theme.margin.s};\n  border: 2px solid;\n  margin-bottom: ${(props) => props.theme.margin.s};\n  border-color: ${(props) => props.theme.color.question_card.border.pending};\n  ${(props) =>\n    props.correct &&\n    css`\n      border-color: ${props.theme.color.question_card.border.correct};\n    `}\n  ${(props) =>\n    props.incorrect &&\n    css`\n      border-color: ${props.theme.color.question_card.border.incorrect};\n    `}\n  \n  &:hover {\n    background-color: ${(props) => props.theme.color.question_card.background.active};\n    cursor: pointer;\n  }\n  ${(props) =>\n    props.highLigted &&\n    css`\n      background-color: ${props.theme.color.question_card.background.active};\n      cursor: default;\n    `}\n`;\nContainer.displayName = 'QuestionInLine-Container';\n\nexport default function QuestionInLine({\n  question,\n  answer = {},\n  onSelectCard,\n  selectedCard,\n  points,\n  isEditionView = false,\n  removingQuestion = false,\n  onRemoveQuestion = () => {},\n  error = null,\n}) {\n  const [isCardHover, setIsCardHover] = useState(false);\n  const { base_point_value, question_id, title } = question;\n  const isCorrect = answer.state === EVENT_QUESTION_STATUS.CORRECT;\n\n  const onRemoveQuestionClick = (e) => {\n    e && e.stopPropagation();\n    if (!removingQuestion) {\n      onRemoveQuestion();\n    }\n  };\n\n  return (\n    <Container\n      highLigted={selectedCard}\n      correct={isCorrect}\n      incorrect={answer.state === EVENT_QUESTION_STATUS.INCORRECT || error}\n      onClick={onSelectCard}\n      onMouseEnter={() => setIsCardHover(true)}\n      onMouseLeave={() => setIsCardHover(false)}\n    >\n      <Flex alignItems=\"center\" width={1}>\n        <Box style={{ whiteSpace: 'nowrap' }}>\n          <RegularText fontSize=\"24px\" mediumWeight style={{ display: 'contents' }}>\n            # {question_id}\n          </RegularText>\n        </Box>\n        <Box\n          ml=\"30px\"\n          mr=\"12px\"\n          style={{ whiteSpace: 'nowrap', overflow: 'hidden' }}\n          width=\"-webkit-fill-available\"\n        >\n          <RegularText\n            fontSize=\"20px\"\n            style={{\n              textOverflow: 'ellipsis',\n              textDecoration: isCardHover && 'underline solid 0.5px',\n            }}\n          >\n            {title}\n          </RegularText>\n        </Box>\n        {isEditionView ? (\n          <Box ml=\"auto\" onClick={onRemoveQuestionClick} width=\"24px\">\n            {removingQuestion ? (\n              <SpinnerIcon size=\"30px\" color=\"#ba0816\" />\n            ) : (\n              isCardHover && <TrashCanIcon />\n            )}\n          </Box>\n        ) : (\n          <Box ml=\"auto\" justifyContent=\"flex-end\" width=\"70px\">\n            {isCorrect ? (\n              <RegularText fontSize=\"20px\" mediumWeight color=\"#81C784\">\n                {points.total}\n              </RegularText>\n            ) : (\n              <RegularText fontSize=\"20px\" mediumWeight>\n                {base_point_value}\n              </RegularText>\n            )}\n          </Box>\n        )}\n      </Flex>\n    </Container>\n  );\n}\n","import React, { useRef, useLayoutEffect, useState } from 'react';\nimport styled, { useTheme } from 'styled-components';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { Flex } from 'reflexbox';\n\nconst Container = styled(Flex)`\n  width: 100%;\n  height: 60px;\n  background-color: ${(props) => props.theme.color.question_card.background.inactive};\n  padding: ${(props) => props.theme.margin.s};\n  border: 2px solid;\n  margin-bottom: ${(props) => props.theme.margin.s};\n  border-color: ${(props) => props.theme.color.question_card.border.pending};\n`;\n\nconst DEFUALT_SKELETON_WIDTH = '300px';\nfunction QuestionInLineBlock() {\n  const containerRef = useRef(null);\n  const theme = useTheme();\n  const [skeletonWidth, setSkeletonWidth] = useState(DEFUALT_SKELETON_WIDTH);\n\n  useLayoutEffect(() => {\n    if (containerRef && containerRef.current) {\n      setSkeletonWidth(\n        containerRef.current.getBoundingClientRect().width - theme.margin.s.replace(/px/, '') * 2\n      );\n    }\n  }, [containerRef]);\n\n  return (\n    <Container ref={containerRef}>\n      <SkeletonTheme\n        color={theme.color.skeleton.color}\n        highlightColor={theme.color.skeleton.highlightColor}\n      >\n        <Skeleton height=\"20px\" width={skeletonWidth} />\n      </SkeletonTheme>\n    </Container>\n  );\n}\n\nexport default function QuestionInLineCardSkeleton() {\n  return (\n    <Flex flexDirection=\"column\" width={1}>\n      <QuestionInLineBlock />\n      <QuestionInLineBlock />\n      <QuestionInLineBlock />\n    </Flex>\n  );\n}\n","import React from 'react';\nimport styled, { css, useTheme } from 'styled-components';\nimport groupBy from 'lodash/groupBy';\nimport map from 'lodash.map';\nimport capitalize from 'lodash.capitalize';\nimport { Flex } from 'reflexbox';\nimport Media from 'react-media';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport { RegularText, LinkedText, CopyToClipboard } from '../../index';\nimport { RESOURCE_STATE, RESOURCE_TYPE, RESOURCES_COLORS } from '../../constants';\n\nconst UNASSIGNED_GROUP_KEY = 'undefined';\n\nconst Row = styled(Flex)`\n  font-size: 14px;\n  padding: 4px;\n  color: #d0d0d0;\n  word-break: break-all;\n  font-family: Roboto Mono;\n  ${(props) =>\n    props.border &&\n    css`\n      padding: 6px 4px 6px 4px;\n      border-top: 1px solid #2c2c2c;\n    `};\n`;\nRow.displayName = 'ResourcesList-Row';\n\nconst Table = styled(Flex)`\n  border: 1px solid #2c2c2c;\n  width: 100%;\n  flex-direction: column;\n  color: ${(props) => props.theme.color.text.light.color};\n`;\nTable.displayName = 'ResourcesList-Table';\n\nconst ResourcesGroup = ({\n  resources = [],\n  dependencyObj = {},\n  matches = {},\n  showFinishedLabel = false,\n}) => {\n  let colorIdx = 0;\n  let styleFlexDirection = {};\n\n  if (matches.extraSmall || matches.small) {\n    styleFlexDirection = { flexDirection: 'column', alignItems: 'flex-start' };\n  }\n\n  const stateMessage = showFinishedLabel ? 'Finished' : 'Pending assignment...';\n\n  const resourcesLines = resources.map((r) => {\n    colorIdx++;\n    return (\n      <Row style={{ styleFlexDirection }} key={r.resourceSpecSrn} className=\"ResourcesList-Row\">\n        <Flex ml=\"5px\" mr=\"10px\">\n          {capitalize(r.name)}:\n        </Flex>\n        <Flex className=\"ResourcesList-UriItem\" ml={(matches.extraSmall || matches.small) && '5px'}>\n          {r.url ? (\n            <LinkedText\n              onClick={() => window.open(r.url, '_blank')}\n              color={RESOURCES_COLORS[colorIdx]}\n            >\n              {r.url}\n            </LinkedText>\n          ) : (\n            <Flex className=\"ResourcesList-StateMessage\" color={RESOURCES_COLORS[colorIdx]}>\n              {stateMessage}\n            </Flex>\n          )}\n        </Flex>\n      </Row>\n    );\n  });\n  return (\n    <Flex width={1} mb=\"10px\">\n      <Table className=\"ResourcesList-Table\">\n        {resourcesLines}\n        {dependencyObj && dependencyObj.type && (\n          <Row border className=\"ResourcesList-Row\">\n            {dependencyObj.type === RESOURCE_TYPE.CREDENTIALS && (\n              <Flex\n                className=\"ResourcesList-DependencyCredentials\"\n                style={{ wordBreak: 'break-all', ...styleFlexDirection }}\n              >\n                <Flex ml=\"5px\" mr=\"10px\">\n                  Credentials:\n                </Flex>\n                {dependencyObj.state === RESOURCE_STATE.ASSIGNED ? (\n                  <>\n                    {matches.extraSmall ? (\n                      <Flex ml=\"5px\" style={{ flexDirection: 'column', alignItems: 'flex-start' }}>\n                        <Flex>\n                          <RegularText fontSize=\"14px\" color=\"#A5D6A7\" mediumWeight>\n                            {dependencyObj.user}\n                          </RegularText>\n                          <CopyToClipboard value={dependencyObj.user} />\n                        </Flex>\n                        <Flex>\n                          <RegularText fontSize=\"14px\" color=\"#A5D6A7\" mediumWeight>\n                            {dependencyObj.password}\n                          </RegularText>\n                          <CopyToClipboard value={dependencyObj.password} />\n                        </Flex>\n                      </Flex>\n                    ) : (\n                      <Flex ml={matches.small && '5px'}>\n                        <RegularText fontSize=\"14px\" color=\"#A5D6A7\" mediumWeight>\n                          {dependencyObj.user}\n                        </RegularText>\n                        <CopyToClipboard value={dependencyObj.user} />\n                        <Flex mr=\"10px\">/</Flex>\n                        <RegularText fontSize=\"14px\" color=\"#A5D6A7\" mediumWeight>\n                          {dependencyObj.password}\n                        </RegularText>\n                        <CopyToClipboard value={dependencyObj.password} />\n                      </Flex>\n                    )}\n                  </>\n                ) : (\n                  <Flex className=\"ResourcesList-StateMessage\" color=\"#A5D6A7\">\n                    {stateMessage}\n                  </Flex>\n                )}\n              </Flex>\n            )}\n            {(dependencyObj.type === RESOURCE_TYPE.SERVER ||\n              dependencyObj.type === RESOURCE_TYPE.URL) && (\n              <Flex\n                className=\"ResourcesList-DependencyServer\"\n                style={{ wordBreak: 'break-all', ...styleFlexDirection }}\n              >\n                <Flex ml=\"5px\" mr=\"10px\">\n                  Server:\n                </Flex>\n                <Flex\n                  className=\"ResourcesList-UriItem \"\n                  ml={(matches.extraSmall || matches.small) && '5px'}\n                >\n                  {dependencyObj.state === RESOURCE_STATE.ASSIGNED ? (\n                    <>\n                      <RegularText fontSize=\"14px\" color=\"#A5D6A7\" mediumWeight>\n                        {dependencyObj.url}\n                      </RegularText>\n                      <CopyToClipboard value={dependencyObj.url} />\n                    </>\n                  ) : (\n                    <Flex className=\"ResourcesList-StateMessage\" color=\"#A5D6A7\">\n                      {stateMessage}\n                    </Flex>\n                  )}\n                </Flex>\n              </Flex>\n            )}\n          </Row>\n        )}\n      </Table>\n    </Flex>\n  );\n};\n\nconst getGeneralItems = (generalResources = [], resourceCollection = {}) => {\n  const filteredGeneralItems = generalResources.filter(\n    (resource) => !(resource.resourceSpecSrn in resourceCollection)\n  );\n  return {\n    generalResources: filteredGeneralItems.filter(\n      (resource) =>\n        (resource.type === RESOURCE_TYPE.SERVER || resource.type === RESOURCE_TYPE.URL) &&\n        !resource.isDependency\n    ),\n    generalDependency: filteredGeneralItems.find(\n      (resource) => resource.type === RESOURCE_TYPE.CREDENTIALS && !resource.isDependency\n    ),\n  };\n};\n\nexport default function ResourcesList({\n  loading = false,\n  resources = [],\n  showFinishedLabel = false,\n}) {\n  const SKELETON_STYLE = {\n    COLOR: useTheme().color.skeleton.color,\n    EFFECT: useTheme().color.skeleton.highlightColor,\n  };\n  if (loading) {\n    return (\n      <SkeletonTheme color={SKELETON_STYLE.COLOR} highlightColor={SKELETON_STYLE.EFFECT}>\n        <Skeleton count={3} />\n      </SkeletonTheme>\n    );\n  }\n  const resourcesGroupedByDependency = groupBy(resources, 'resourceDependencyId');\n  // clean the unassigned resources index, check if there is only dependencyResources\n  if (\n    resourcesGroupedByDependency[UNASSIGNED_GROUP_KEY] &&\n    resourcesGroupedByDependency[UNASSIGNED_GROUP_KEY].length > 0\n  ) {\n    // only get the resources that has not resourceDependencyId\n    const unAssignedRes = resourcesGroupedByDependency[UNASSIGNED_GROUP_KEY].filter(\n      (r) => !r.isDependency\n    );\n    if (unAssignedRes.length === 0) {\n      delete resourcesGroupedByDependency[UNASSIGNED_GROUP_KEY];\n    }\n  }\n  return (\n    <Media\n      queries={{\n        extraSmall: '(max-width: 510px)',\n        small: '(min-width: 511px) and (max-width: 566px)',\n      }}\n    >\n      {(matches) => (\n        <>\n          {map(resourcesGroupedByDependency, (groupedResources, groupKey, resourceCollection) => {\n            if (groupKey === UNASSIGNED_GROUP_KEY) {\n              const { generalResources, generalDependency } = getGeneralItems(\n                groupedResources,\n                resourceCollection\n              );\n              return (\n                <ResourcesGroup\n                  key={groupKey}\n                  resources={generalResources}\n                  dependencyObj={generalDependency}\n                  matches={matches}\n                  showFinishedLabel={showFinishedLabel}\n                />\n              );\n            }\n            const resourceObj = resources.find((r) => r.resourceSpecSrn === groupKey);\n            return (\n              <ResourcesGroup\n                key={groupKey}\n                resources={groupedResources}\n                dependencyObj={resourceObj}\n                matches={matches}\n                showFinishedLabel={showFinishedLabel}\n              />\n            );\n          })}\n        </>\n      )}\n    </Media>\n  );\n}\n","import styled, { keyframes, css } from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst shaking = keyframes`\n  0% { transform: translate(1px, 1px) rotate(0deg); }\n  10% { transform: translate(-1px, -2px) rotate(-1deg); }\n  20% { transform: translate(-3px, 0px) rotate(1deg); }\n  30% { transform: translate(3px, 2px) rotate(0deg); }\n  40% { transform: translate(1px, -1px) rotate(1deg); }\n  50% { transform: translate(-1px, 2px) rotate(-1deg); }\n  60% { transform: translate(-3px, 1px) rotate(0deg); }\n  70% { transform: translate(3px, 1px) rotate(-1deg); }\n  80% { transform: translate(-1px, -1px) rotate(1deg); }\n  90% { transform: translate(1px, 2px) rotate(0deg); }\n  100% { transform: translate(1px, -2px) rotate(-1deg); }\n`;\n\nconst ShakeContent = styled(Flex)`\n  ${(props) =>\n    props.shake &&\n    css`\n      animation: ${shaking} 700ms ease;\n      transform: translate(0, 0);\n    `}\n`;\n\nexport default ShakeContent;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React from 'react';\nimport styled from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst SwitchBackgorund = styled(Flex)`\n  width: 150px;\n  cursor: pointer;\n  height: 28px;\n  background-color: ${(props) => (props.checked ? '#81C784' : '#FFCC66')};\n  font-family: Roboto Mono;\n  letter-spacing: 0px;\n  color: #1d1d1d;\n`;\nSwitchBackgorund.displayName = 'SwitchButton-SwitchBackgorund';\n\nconst SwitchIcon = styled.div`\n  width: 30px;\n  height: 30px;\n  top: -29px;\n  cursor: pointer;\n  left: ${(props) => (!props.checked ? '0px' : '120px')};\n  position: relative;\n  z-index: 1;\n  transition: all 300ms ease;\n`;\nSwitchIcon.displayName = 'SwitchButton-SwitchIcon';\n\nfunction SwitchButton(props) {\n  const { checked, handleToggle, id, onIcon, offIcon, onText, offText } = props;\n  const changeInput = () => {\n    handleToggle({\n      target: {\n        value: !checked,\n        id,\n      },\n    });\n  };\n  return (\n    <div onClick={changeInput} aria-hidden>\n      <SwitchBackgorund checked={checked} alignItems=\"center\" justifyContent=\"center\" mt=\"6px\">\n        {checked ? onText : offText}\n      </SwitchBackgorund>\n      <SwitchIcon checked={checked}>{checked ? onIcon : offIcon}</SwitchIcon>\n    </div>\n  );\n}\nexport default SwitchButton;\n","import styled from 'styled-components';\n\nconst TableHead = styled.thead`\n  height: ${(props) => props.height};\n  background-color: ${(props) => props.backgroundColor};\n`;\n\nexport default TableHead;\n","import styled from 'styled-components';\n\nconst TableBody = styled.tbody``;\n\nexport default TableBody;\n","import styled, { css } from 'styled-components';\nimport TableHead from '../TableHead';\nimport TableBody from '../TableBody';\nimport TableRow from '../TableRow';\nimport TableData from '../TableData';\n\nconst Table = styled.table`\n  width: 100%;\n  border-collapse: collapse;\n  background: ${(props) => props.theme.color.background};\n  text-align: left;\n  font-family: ${(props) => props.theme.font.family};\n  font-size: 14px;\n  border: 1px solid ${(props) => props.theme.color.table.border};\n  ${(props) =>\n    props.fixed &&\n    css`\n      table-layout: fixed;\n    `}\n\n  ${TableData} {\n    padding: ${(props) => !props.noDataPadding && '4px'};\n    ${(props) =>\n      props.dataPadding &&\n      css`\n        padding: ${props.dataPadding};\n      `}\n  }\n\n  ${TableHead} {\n    padding: 4px;\n    ${TableRow} {\n      background-color: ${(props) =>\n        props.backgroundColor\n          ? props.backgroundColor\n          : props.theme.color.table.header.background.inactive};\n      color: ${(props) => props.theme.color.table.header.color};\n    }\n  }\n  ${TableBody} {\n    ${TableRow}:nth-child(odd) {\n      background-color: ${(props) =>\n        props.backgroundColor ? props.backgroundColor : props.theme.color.table.row.oddBackground};\n    }\n\n    ${TableRow} {\n      ${(props) =>\n        props.backgroundColor &&\n        css`\n          background-color: ${props.backgroundColor};\n        `}\n    }\n  }\n`;\n\nexport default Table;\n","import React from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport TableData from '../TableData';\n\nfunction TableHeader({ children, onClick, noWrap, xpadding, ypadding, justify, ...rest }) {\n  return (\n    <TableData {...rest} onClick={onClick}>\n      <Flex alignItems=\"center\" justifyContent={justify} px={xpadding} py={ypadding}>\n        <Box css={noWrap ? { whiteSpace: 'nowrap' } : {}}>{children}</Box>\n      </Flex>\n    </TableData>\n  );\n}\n\nexport default TableHeader;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\n\nconst Tab = styled.div`\n  align-items: center;\n  margin-right: 20px;\n  font-family: Roboto Mono;\n  font-size: 14px;\n  position: relative;\n  background-color: #1d1d1d;\n  color: #898989;\n  text-decoration: none;\n  padding-bottom: 15px;\n\n  ${(props) =>\n    props.active &&\n    css`\n      border-bottom: 1px solid;\n      color: #66bb6a;\n      border-bottom-color: #66bb6a;\n    `}\n\n  &:hover,\n  &:focus {\n    border-bottom: 1px solid;\n    border-bottom-color: #66bb6a;\n    cursor: pointer;\n  }\n`;\n\nconst TabContainer = styled(Flex)`\n  height: 20px;\n  background-color: #1d1d1d;\n  overflow-x: auto;\n`;\n\nconst Tabs = ({ current, labels, onTabChange }) => {\n  return (\n    <TabContainer>\n      {labels.map((l, idx) => (\n        <Tab key={l} active={idx === current} onClick={() => onTabChange(idx)}>\n          {l.toUpperCase()}\n        </Tab>\n      ))}\n    </TabContainer>\n  );\n};\n\nexport default Tabs;\n","import React, { useState, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Flex } from 'reflexbox';\nimport { useLocation } from 'react-router-dom';\n\nconst TabButton = styled(Flex)`\n  align-items: center;\n  font-family: Roboto Mono;\n  font-size: 14px;\n  position: relative;\n  background-color: ${(props) => props.theme.color.navigationMenu.background.inactive};\n  color: ${(props) => props.theme.color.navigationMenu.color.inactive};\n  text-decoration: none;\n  padding: 15px;\n  border-bottom: 1px solid transparent;\n  box-shadow: inset 3px 2px 20px 1px #00000029;\n  opacity: 0.8;\n\n  ${(props) =>\n    props.active &&\n    css`\n      color: ${props.theme.color.navigationMenu.color.active};\n      border-bottom-color: ${props.theme.color.navigationMenu.border.active};\n      border-bottom: 1px solid;\n      box-shadow: -1px -6px 3px #00000029;\n      opacity: 1;\n    `}\n\n  &:hover,\n  &:focus {\n    border-bottom: 1px solid;\n    color: ${(props) => props.theme.color.navigationMenu.color.active};\n    border-bottom-color: ${(props) => props.theme.color.navigationMenu.border.active};\n    cursor: pointer;\n  }\n\n  ${(props) =>\n    props.fontColor &&\n    css`\n      color: ${props.fontColor};\n    `}\n`;\n\nconst NOT_FOUND_IDX = -1;\nexport default function TabScreen({ tabs = [], tabsContent = [] }) {\n  const [activeScreenIdx, setActiveScreen] = useState(0);\n  const location = useLocation();\n\n  useEffect(() => {\n    const hashMatchIdx = tabs.findIndex((t) => t.hash === location.hash);\n    if (hashMatchIdx !== NOT_FOUND_IDX) {\n      setActiveScreen(hashMatchIdx);\n    }\n  }, [location.hash]);\n\n  return (\n    <Flex flexDirection=\"column\">\n      <Flex>\n        {tabs.map((t, idx) => (\n          <TabButton\n            key={t.label}\n            active={idx === activeScreenIdx}\n            fontColor={t.fontColor}\n            onClick={() => setActiveScreen(idx)}\n          >\n            {t.label}\n          </TabButton>\n        ))}\n      </Flex>\n      {tabsContent[activeScreenIdx]}\n    </Flex>\n  );\n}\n","import styled, { css } from 'styled-components';\n\nconst Textarea = styled.textarea`\n  background: ${(props) => props.theme.color.input.default.background} 0% 0% no-repeat padding-box;\n  border: 1px solid ${(props) => props.theme.color.input.default.border};\n  opacity: 1;\n  resize: none;\n  overflow: hidden;\n  color: ${(props) => props.theme.color.input.default.color};\n  letter-spacing: 0px;\n  font-family: 'Roboto Mono';\n  font-size: 14px;\n  display: block;\n  width: -webkit-fill-available;\n  width: -moz-available;\n  height: ${(props) => (props.height ? props.height : '')};\n  ${(props) =>\n    props.search &&\n    css`\n      padding-left: 30px;\n      background-color: #373737;\n    `}\n  &::placeholder {\n    color: ${(props) => props.theme.color.input.default.placeholderColor};\n  }\n  &:hover {\n    background: ${(props) => props.theme.color.input.hover.background} 0% 0% no-repeat padding-box;\n    border: 1px solid ${(props) => props.theme.color.input.hover.border};\n    opacity: 1;\n  }\n  &:focus {\n    background: ${(props) => props.theme.color.input.focused.background} 0% 0% no-repeat padding-box;\n    ${(props) =>\n      props.search &&\n      css`\n        background-color: #454545;\n      `}\n    border: 1px solid ${(props) =>\n      props.dangerBorder\n        ? props.theme.color.input.error.border\n        : props.theme.color.input.focused.border};\n    opacity: 1;\n  }\n  ${(props) =>\n    props.validate &&\n    !props.validating &&\n    css`\n      box-shadow: none;\n      border: 1px solid\n        ${props.valid\n          ? props.theme.color.input.success.border\n          : props.theme.color.input.error.border};\n    `}\n  ${(props) =>\n    props.dangerBorder &&\n    css`\n      box-shadow: none;\n      border: 1px solid ${props.theme.color.input.error.border};\n    `}\n`;\nTextarea.displayName = 'Textarea';\n\nexport default Textarea;\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { useQuery } from '../../hooks';\n\nexport default function UnauthenticatedRoute({ children, validateSession = () => true, ...rest }) {\n  const query = useQuery();\n  const redirectRoute = query.get('redirect');\n\n  return (\n    <Route {...rest}>\n      {!validateSession() ? (\n        children\n      ) : (\n        <Redirect to={redirectRoute === '' || redirectRoute === null ? '/' : redirectRoute} />\n      )}\n    </Route>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '24px';\n\nconst AddSVG = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #373737;\n\n  &:hover {\n    fill: #66bb6a;\n  }\n\n  ${(props) =>\n    props.hover &&\n    css`\n      fill: #66bb6a;\n    `}\n`;\nAddSVG.displayName = 'AddIcon-AddSVG';\n\nexport default function AddIcon(props) {\n  return (\n    <AddSVG viewBox=\"0 0 512 512\" {...props}>\n      <g>\n        <g>\n          <path\n            d=\"M256,0C114.84,0,0,114.84,0,256s114.84,256,256,256s256-114.84,256-256S397.16,0,256,0z M256,475.429\n\t\t\tc-120.997,0-219.429-98.432-219.429-219.429S135.003,36.571,256,36.571S475.429,135.003,475.429,256S376.997,475.429,256,475.429z\n\t\t\t\"\n          />\n        </g>\n      </g>\n      <g>\n        <g>\n          <path\n            d=\"M256,134.095c-10.1,0-18.286,8.186-18.286,18.286v207.238c0,10.1,8.186,18.286,18.286,18.286\n\t\t\tc10.1,0,18.286-8.186,18.286-18.286V152.381C274.286,142.281,266.1,134.095,256,134.095z\"\n          />\n        </g>\n      </g>\n      <g>\n        <g>\n          <path\n            d=\"M359.619,237.714H152.381c-10.1,0-18.286,8.186-18.286,18.286c0,10.1,8.186,18.286,18.286,18.286h207.238\n\t\t\tc10.1,0,18.286-8.186,18.286-18.286C377.905,245.9,369.719,237.714,359.619,237.714z\"\n          />\n        </g>\n      </g>\n    </AddSVG>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst BlockSVG = styled(Base)`\n  fill: #898989;\n  pointer-events: all;\n  &:hover {\n    fill: #e06c75;\n  }\n`;\nBlockSVG.displayName = 'BlockIcon-BlockSVG';\n\nexport default function BlockIcon(props) {\n  return (\n    <BlockSVG width={props.size || 32} height={props.size || 32} viewBox=\"0 0 32 32\" {...props}>\n      <path style={{isolation: 'isolate'}} d=\"M242.983-62.55a10,10,0,0,0-10,10,10,10,0,0,0,10,10,10,10,0,0,0,10-10A10.011,10.011,0,0,0,242.983-62.55Zm-7.5,10a7.487,7.487,0,0,1,7.475-7.5,7.487,7.487,0,0,1,4.364,1.394L236.877-48.211A7.452,7.452,0,0,1,235.483-52.55Zm11.864,6.106a7.486,7.486,0,0,1-4.364,1.395,7.454,7.454,0,0,1-4.339-1.394l10.445-10.445A7.487,7.487,0,0,1,247.347-46.444Z\" transform=\"translate(-226.983 68.551)\"/>\n    </BlockSVG>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst CheckIcon = styled(Base)`\n  fill: #a0a0a0;\n  &:hover {\n    fill: #e06c75;\n    cursor: pointer;\n  }\n`;\nCheckIcon.displayName = 'ClearIcon-CheckIcon';\n\nexport default function CheckMark(props) {\n  return (\n    <CheckIcon {...props} width={props.size || 24} height={props.size || 24} viewBox=\"0 0 28 28\">\n      <rect fill=\"none\" width=\"24\" height=\"24\" />\n      <path\n        d=\"M6.535,3H21a1,1,0,0,1,1,1V20a1,1,0,0,1-1,1H6.535a1,1,0,0,1-.832-.445l-5.333-8a1,1,0,0,1,0-1.11l5.333-8A1,1,0,0,1,6.535,3ZM13,10.586,10.172,7.757,8.757,9.172,11.586,12,8.757,14.828l1.415,1.415L13,13.414l2.828,2.829,1.415-1.415L14.414,12l2.829-2.828L15.828,7.757Z\"\n        transform=\"translate(4 4)\"\n      />\n    </CheckIcon>\n  );\n}\n","import React from 'react';\n\nexport default function CloseIcon(props) {\n  return (\n    <svg width={props.size || 30} height={props.size || 30} viewBox=\"1 7 30 20\">\n      <rect fill={props.inverted ? 'none' : '#535353'} width=\"32\" height=\"32\" />\n      <g transform=\"translate(4 4)\">\n        <path fill={props.inverted ? 'none' : '#535353'} d=\"M0,0H24V24H0Z\" />\n        <path\n          fill={props.inverted ? '#535353' : '#1d1d1d'}\n          d=\"M19,10h1a1,1,0,0,1,1,1V21a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V11a1,1,0,0,1,1-1H5V9A7,7,0,1,1,19,9Zm-2,0V9A5,5,0,1,0,7,9v1Zm-6,4v4h2V14Z\"\n        />\n      </g>\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst EnrollSVG = styled(Base)`\n  width: ${(props) => props.size || '32px'};\n  height: ${(props) => props.size || '32px'};\n  cursor: ${(props) => props.cursor || 'pointer'};\n`;\nEnrollSVG.displayName = 'EnrollIcon-EnrollSVG';\n\nexport default function EnrollIcon(props) {\n  return (\n    <EnrollSVG fill={props.fill ? props.fill : '#898989'} height={props.size || 32} viewBox=\"0 0 512 512\" {...props}>\n      <path d=\"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"></path>\n    </EnrollSVG>\n  );\n}","import React from 'react';\nimport styled from 'styled-components';\n\nimport Base from '../StyledSVGBase';\n\nconst Export = styled(Base)`\n  fill: ${(props) => props.color || '#a0a0a0'};\n  &:hover {\n    fill: ${(props) => props.hoverColor || '#66bb6a'};\n    cursor: pointer;\n  }\n`;\nExport.displayName = 'ExportIcon-Export';\n\nexport default function ExportIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <Export {...props}>\n        <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n        <path d=\"M4,19H20V12h2v8a1,1,0,0,1-1,1H3a1,1,0,0,1-1-1V12H4ZM14,9v6H10V9H5l7-7,7,7Z\" />\n      </Export>\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function GameIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path\n        fill={props.fillColor || '#d0d0d0'}\n        d=\"M7.05,13.406l3.534,3.536L9.171,18.356l1.415,1.415L9.172,21.185,6.7,18.71,3.868,21.539,2.454,20.125,5.283,17.3,2.808,14.821l1.414-1.414L5.636,14.82l1.413-1.414ZM3,3,6.546,3,18.363,14.821l1.415-1.414,1.414,1.414L18.718,17.3l2.828,2.829-1.414,1.414L17.3,18.71l-2.475,2.475-1.414-1.414,1.414-1.415L3,6.531ZM17.457,3,21,3l0,3.523-4.053,4.052L13.413,7.043Z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst Grid = styled(Base)`\n  fill: #535353;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n      fill: #d0d0d0;\n    `};\n  ${(props) =>\n    props.selected &&\n    css`\n      fill: #d0d0d0;\n    `};\n`;\nGrid.displayName = 'GridIcon-Grid';\n\nexport default function GridIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <Grid {...props}>\n        <path d=\"M9.333,11h5.334V3H9.333Zm0,10h5.334V13H9.333ZM21,3H16.667v8H22V4A1,1,0,0,0,21,3ZM2,4v7H7.333V3H3A1,1,0,0,0,2,4ZM16.667,21H21a1,1,0,0,0,1-1V13H16.667ZM2,20a1,1,0,0,0,1,1H7.333V13H2Z\" />\n        <rect fill=\"none\" width=\"24\" height=\"24\" />\n      </Grid>\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Base from '../StyledSVGBase';\n\nconst Import = styled(Base)`\n  fill: ${(props) => props.color || '#a0a0a0'};\n  &:hover {\n    fill: ${(props) => props.hoverColor || '#66bb6a'};\n    cursor: pointer;\n  }\n`;\nImport.displayName = 'ImportIcon-Import';\n\nexport default function ImportIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <Import {...props}>\n        <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n        <path d=\"M4,19H20V12h2v8a1,1,0,0,1-1,1H3a1,1,0,0,1-1-1V12H4ZM14,9h5l-7,7L5,9h5V3h4Z\" />\n      </Import>\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '24px';\n\nconst Icon = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: ${(props) => props.color || '#989898'};\n  &:hover {\n    fill: #81c784;\n    cursor: pointer;\n  }\n`;\nIcon.displayName = 'LinkIcon-Icon';\n\nexport default function LinkIcon(props) {\n  return (\n    <Icon viewBox=\"0 0 482.8 482.8\" {...props}>\n      <g>\n        <path\n          d=\"M255.2,209.3c-5.3,5.3-5.3,13.8,0,19.1c21.9,21.9,21.9,57.5,0,79.4l-115,115c-21.9,21.9-57.5,21.9-79.4,0l-17.3-17.3\n\t\t\tc-21.9-21.9-21.9-57.5,0-79.4l115-115c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-115,115C8.7,322.7,0,343.6,0,365.8\n\t\t\tc0,22.2,8.6,43.1,24.4,58.8l17.3,17.3c16.2,16.2,37.5,24.3,58.8,24.3s42.6-8.1,58.8-24.3l115-115c32.4-32.4,32.4-85.2,0-117.6\n\t\t\tC269.1,204,260.5,204,255.2,209.3z\"\n        />\n        <path\n          d=\"M458.5,58.2l-17.3-17.3c-32.4-32.4-85.2-32.4-117.6,0l-115,115c-32.4,32.4-32.4,85.2,0,117.6c5.3,5.3,13.8,5.3,19.1,0\n\t\t\ts5.3-13.8,0-19.1c-21.9-21.9-21.9-57.5,0-79.4l115-115c21.9-21.9,57.5-21.9,79.4,0l17.3,17.3c21.9,21.9,21.9,57.5,0,79.4l-115,115\n\t\t\tc-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4l115-115c15.7-15.7,24.4-36.6,24.4-58.8\n\t\t\tC482.8,94.8,474.2,73.9,458.5,58.2z\"\n        />\n      </g>\n    </Icon>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst List = styled(Base)`\n  fill: #535353;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n      fill: #d0d0d0;\n    `};\n  ${(props) =>\n    props.selected &&\n    css`\n      fill: #d0d0d0;\n    `};\n`;\nList.displayName = 'ListIcon-List';\n\nexport default function ListIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <List {...props}>\n        <rect fill=\"none\" width=\"24\" height=\"24\" />\n        <path d=\"M2,14.134H22V9.865H2ZM21,3H3A1,1,0,0,0,2,4V7.468H22V4A1,1,0,0,0,21,3ZM2,20a1,1,0,0,0,1,1H21a1,1,0,0,0,1-1V16.533H2Z\" />\n      </List>\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '24px';\n\nconst MinusSVG = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #373737;\n\n  &:hover {\n    fill: #e06c75;\n  }\n\n  ${(props) =>\n    props.hover &&\n    css`\n      fill: #e06c75;\n    `}\n`;\nMinusSVG.displayName = 'MinusIcon-MinusSVG';\n\nexport default function MinusIcon(props) {\n  return (\n    <MinusSVG viewBox=\"0 0 512 512\" {...props}>\n      <path d=\"m256 512c-141.164062 0-256-114.835938-256-256s114.835938-256 256-256 256 114.835938 256 256-114.835938 256-256 256zm0-480c-123.519531 0-224 100.480469-224 224s100.480469 224 224 224 224-100.480469 224-224-100.480469-224-224-224zm0 0\" />\n      <path d=\"m368 272h-224c-8.832031 0-16-7.167969-16-16s7.167969-16 16-16h224c8.832031 0 16 7.167969 16 16s-7.167969 16-16 16zm0 0\" />\n    </MinusSVG>\n  );\n}\n","import React from 'react';\nimport { useTheme } from 'styled-components';\n\nexport default function OpenIcon(props) {\n  const highlightColor = useTheme().color.team.access.open;\n\n  return (\n    <svg width={props.size || 30} height={props.size || 30} viewBox=\"10 12 30 20\">\n      <g transform=\"translate(9 6)\">\n        <g transform=\"matrix(1, 0, 0, 1, -9, -6)\">\n          <rect\n            fill={props.inverted ? 'none' : '#535353'}\n            width=\"32\"\n            height=\"32\"\n            transform=\"translate(9 6)\"\n          />\n        </g>\n        <g transform=\"translate(4 4)\">\n          <path fill={props.inverted ? 'none' : '#535353'} d=\"M0,0H24V24H0Z\" />\n          <path\n            fill={props.highlight ? highlightColor : props.inverted ? '#535353' : '#1d1d1d'}\n            d=\"M7,10H20a1,1,0,0,1,1,1V21a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V11a1,1,0,0,1,1-1H5V9A7,7,0,0,1,18.262,5.869l-1.789.894A5,5,0,0,0,7,9Zm3,5v2h4V15Z\"\n          />\n        </g>\n      </g>\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function PrivateIcon(props) {\n  return (\n    <svg width={props.size || 30} height={props.size || 30} viewBox=\"10 12 30 20\">\n      <g transform=\"translate(9 6)\">\n        <g transform=\"matrix(1, 0, 0, 1, -9, -6)\">\n          <rect\n            fill={props.inverted ? 'none' : '#535353'}\n            width=\"32\"\n            height=\"32\"\n            transform=\"translate(9 6)\"\n          />\n        </g>\n        <g transform=\"translate(4 4)\">\n          <path\n            fill={props.inverted ? '#535353' : '#1d1d1d'}\n            d=\"M4.52,5.934,1.393,2.808,2.808,1.393l19.8,19.8-1.415,1.414-3.31-3.31A11,11,0,0,1,1.181,12a10.982,10.982,0,0,1,3.34-6.066ZM14.757,16.172l-1.464-1.464a3,3,0,0,1-4-4L7.828,9.243a5,5,0,0,0,6.929,6.929ZM7.974,3.76A11.01,11.01,0,0,1,22.819,12a10.947,10.947,0,0,1-2.012,4.592l-3.86-3.86a5,5,0,0,0-5.68-5.68L7.974,3.761Z\"\n          />\n        </g>\n      </g>\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '30px';\n\nconst EyeSVG = styled(svgBase)`\n  fill: ${(props) =>\n    props.inverted ? (props.invertedColor ? props.invertedColor : '#535353') : '#1d1d1d'};\n  ${(props) =>\n    props.inverted &&\n    props.hover &&\n    css`\n      fill: #81a2be;\n    `};\n`;\nEyeSVG.displayName = 'PublicIcon-EyeSVG';\n\nexport default function PublicIcon(props) {\n  return (\n    <svg width={props.size || SIZE} height={props.size || SIZE} viewBox=\"10 10 30 20\">\n      <g transform=\"translate(9 6)\">\n        <g transform=\"matrix(1, 0, 0, 1, -9, -6)\">\n          <rect\n            fill={props.inverted ? 'none' : '#535353'}\n            width=\"32\"\n            height=\"32\"\n            transform=\"translate(9 6)\"\n          />\n        </g>\n        <g transform=\"translate(4 4)\">\n          <EyeSVG viewBox=\"0 1 30 20\" {...props}>\n            <path d=\"M1.181,12a11,11,0,0,1,21.638,0A11,11,0,0,1,1.181,12ZM12,17a5,5,0,1,0-5-5A5,5,0,0,0,12,17Zm0-2a3,3,0,1,1,3-3A3,3,0,0,1,12,15Z\" />\n          </EyeSVG>\n        </g>\n      </g>\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '25px';\n\nconst QuestionMarkSVG = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: #535353;\n  &:hover {\n    fill: #81a2be;\n  }\n`;\nQuestionMarkSVG.displayName = 'QuestionCircleIcon-QuestionMarkSVG';\n\nexport const QuestionCircleIcon = (props) => (\n  <QuestionMarkSVG viewBox=\"0 0 20 20\" {...props}>\n    <path d=\"M11 3A8 8 0 0 0 3 11 8 8 0 0 0 11 19 8 8 0 0 0 19 11 8 8 0 0 0 11 3M10.994 6.5C11.758 6.5 12.379 6.719 12.857 7.158 13.336 7.589 13.576 8.142 13.576 8.816 13.576 9.109 13.495 9.406 13.336 9.707 13.176 10.01 13.03 10.223 12.908 10.354 12.791 10.475 12.623 10.635 12.404 10.83L12.342 10.891C11.83 11.338 11.572 11.785 11.572 12.232V12.719H10.389V12.146C10.389 11.781 10.469 11.467 10.629 11.207 10.788 10.939 11.07 10.625 11.473 10.268 11.699 10.06 11.859 9.914 11.951 9.816 12.05 9.711 12.148 9.569 12.24 9.391 12.341 9.204 12.393 9.01 12.393 8.816 12.393 8.442 12.266 8.142 12.01 7.914 11.77 7.686 11.431 7.572 10.994 7.572 10.272 7.572 9.776 7.964 9.508 8.744L8.424 8.305C8.6 7.841 8.904 7.426 9.332 7.06 9.769 6.687 10.322 6.5 10.994 6.5M10.98 13.842C11.224 13.842 11.426 13.923 11.586 14.09 11.754 14.249 11.838 14.442 11.838 14.67 11.838 14.898 11.754 15.09 11.586 15.256 11.426 15.418 11.224 15.5 10.98 15.5 10.737 15.5 10.531 15.418 10.363 15.256 10.204 15.09 10.125 14.898 10.125 14.67 10.125 14.442 10.204 14.249 10.363 14.09 10.531 13.923 10.737 13.842 10.98 13.842\" />\n  </QuestionMarkSVG>\n);\n\nexport default QuestionCircleIcon;","import React from 'react';\nimport styled, { css, keyframes } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SIZE = '20px';\n\nexport const rotate360 = keyframes`\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\n  5% {\n\t\ttransform: rotate(0deg);\n\t}\n\n  50% {\n\t\ttransform: rotate(180deg);\n\t}\n\n  55% {\n\t\ttransform: rotate(180deg);\n\t}\n\n\t100% {\n\t\ttransform: rotate(360deg);\n\t}\n`;\n\nconst SVG = styled(svgBase)`\n  width: ${(props) => props.size || SIZE};\n  height: ${(props) => props.size || SIZE};\n  fill: ${(props) => props.color || '#535353'};\n  &:hover {\n    fill:${(props) => props.hoverColor || '#66bb6a'};\n  }\n  ${(props) =>\n    props.$hover &&\n    css`\n      fill: #66bb6a;\n    `}\n  ${(props) =>\n    props.$rotate &&\n    css`\n      animation: ${rotate360} 1s ease infinite;\n    `}\n`;\n\nexport default function RefreshIcon({ rotate, hover, ...rest }) {\n  return (\n    <SVG viewBox=\"0 0 24 24\" $rotate={rotate} $hover={hover} {...rest}>\n      <rect width=\"24\" height=\"24\" opacity=\"0\" />\n      <path d=\"M20.3 13.43a1 1 0 0 0-1.25.65A7.14 7.14 0 0 1 12.18 19 7.1 7.1 0 0 1 5 12a7.1 7.1 0 0 1 7.18-7 7.26 7.26 0 0 1 4.65 1.67l-2.17-.36a1 1 0 0 0-1.15.83 1 1 0 0 0 .83 1.15l4.24.7h.17a1 1 0 0 0 .34-.06.33.33 0 0 0 .1-.06.78.78 0 0 0 .2-.11l.09-.11c0-.05.09-.09.13-.15s0-.1.05-.14a1.34 1.34 0 0 0 .07-.18l.75-4a1 1 0 0 0-2-.38l-.27 1.45A9.21 9.21 0 0 0 12.18 3 9.1 9.1 0 0 0 3 12a9.1 9.1 0 0 0 9.18 9A9.12 9.12 0 0 0 21 14.68a1 1 0 0 0-.7-1.25z\" />\n    </SVG>\n  );\n}\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport svgBase from '../StyledSVGBase';\n\nconst SandTimeSVG = styled(svgBase)`\n  width: ${(props) => props.size || '24px'};\n  height: ${(props) => props.size || '24px'};\n  fill: #898989;\n  ${(props) =>\n    props.hover &&\n    css`\n      cursor: pointer;\n    `};\n`;\nSandTimeSVG.displayName = 'SandTimeSVG';\n\nexport default function SandTimeIcon(props) {\n  return (\n    <SandTimeSVG viewBox=\"0 0 24 24\" {...props}>\n      <path\n        id=\"hourglass-half\"\n        d=\"M14.063,0H.938A.937.937,0,0,0,0,.938v.625A.937.937,0,0,0,.938,2.5c0,3.553,1.993,6.552,4.72,7.5-2.728.948-4.72,3.947-4.72,7.5A.937.937,0,0,0,0,18.438v.625A.937.937,0,0,0,.938,20H14.063A.937.937,0,0,0,15,19.063v-.625a.937.937,0,0,0-.937-.937c0-3.553-1.993-6.552-4.72-7.5,2.728-.948,4.72-3.947,4.72-7.5A.937.937,0,0,0,15,1.563V.938A.937.937,0,0,0,14.063,0ZM11.13,15H3.87c.666-1.828,2.035-3.125,3.63-3.125S10.463,13.172,11.13,15Zm0-10H3.87a7.329,7.329,0,0,1-.433-2.5h8.125A7.329,7.329,0,0,1,11.131,5Z\"\n        transform=\"translate(5 2)\"\n        fill={props.color ? props.color : '#898989'}\n      />\n      <rect id=\"Rectangle_2354\" data-name=\"Rectangle 2354\" width=\"24\" height=\"24\" fill=\"none\" />\n    </SandTimeSVG>\n  );\n}\n","import React from 'react';\n\nexport default function SearchIcon(props) {\n  return (\n    <svg width={props.size || 24} height={props.size || 24} viewBox=\"0 0 24 24\">\n      <path fill=\"none\" d=\"M0,0H24V24H0Z\" />\n      <path\n        fill=\"#6c6c6c\"\n        d=\"M18.031,16.617,22.314,20.9,20.9,22.314l-4.282-4.283a9,9,0,1,1,1.414-1.414Zm-2.006-.742a7,7,0,1,0-.15.15l.15-.15Z\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function SpyIcon(props) {\n  return (\n    <svg width={props.size || 50} height={props.size || 50} viewBox=\"-10 -10 50 50\">\n      <circle cx=\"15.5\" cy=\"15.5\" r=\"23\" fill=\"#2C2C2C\" />\n      <path\n        fill=\"#1d1d1d\"\n        d=\"M21.5,16a5.2,5.2,0,1,1,0,10.4,5.256,5.256,0,0,1-5.2-5.2H13.7a5.2,5.2,0,1,1-.7-2.6H17A5.2,5.2,0,0,1,21.5,16ZM2,14.7V12.1H4.6V8.2A5.2,5.2,0,0,1,9.8,3H20.2a5.2,5.2,0,0,1,5.2,5.2v3.9H28v2.6Z\"\n        transform=\"translate(0.6 0.9)\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function TeamIcon(props) {\n  return (\n    <svg width={props.size || 52} height={props.size || 52} viewBox=\"0 0 52 52\">\n      <rect fill=\"none\" width=\"52\" height=\"52\" transform=\"translate(0 0)\" />\n      <path\n        fill={props.color ? props.color : '#2c2c2c'}\n        d=\"M4.914,5.316,25,1,45.086,5.316A2.383,2.383,0,0,1,47,7.623V31.229a14.063,14.063,0,0,1-6.531,11.8L25,53,9.532,43.028A14.063,14.063,0,0,1,3,31.231V7.623A2.383,2.383,0,0,1,4.914,5.316Z\"\n        transform=\"translate(1 -1)\"\n      />\n      <path\n        fill={props.backgroundColor ? props.backgroundColor : '#1d1d1d'}\n        d=\"M14,12.8a6,6,0,0,1,6,6V26H8V18.8a6,6,0,0,1,6-6ZM5.946,16.407a8.38,8.38,0,0,0-.336,1.98L5.6,18.8V26H2V20.6a4.2,4.2,0,0,1,3.744-4.176l.2-.017Zm16.109,0A4.2,4.2,0,0,1,26,20.6V26H22.4V18.8A8.378,8.378,0,0,0,22.054,16.407ZM6.2,9.2a3,3,0,1,1-3,3,3,3,0,0,1,3-3Zm15.6,0a3,3,0,1,1-3,3,3,3,0,0,1,3-3ZM14,2A4.8,4.8,0,1,1,9.2,6.8,4.8,4.8,0,0,1,14,2Z\"\n        transform=\"translate(12 9)\"\n      />\n    </svg>\n  );\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport Base from '../StyledSVGBase';\n\nconst UnlockSVG = styled(Base)`\n  width: ${(props) => props.size || '32px'};\n  height: ${(props) => props.size || '32px'};\n  pointer-events: all;\n`;\nUnlockSVG.displayName = 'UnlockIcon-UnlockSVG';\n\nexport default function UnlockIcon(props) {\n  return (\n    <UnlockSVG fill={props.fill ? props.fill : '#66bb6a'} height={props.size || 32} viewBox=\"0 0 448 512\" {...props}>\n      <path d=\"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\" />\n    </UnlockSVG>\n  );\n}\n","import React from 'react';\n\nexport default function UserSlashIcon(props) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={props.size || 50}\n      height={props.size || 50}\n      viewBox=\"0 0 120 120\"\n    >\n      <g transform=\"translate(-150.515 145.018)\">\n        <circle\n          fill=\"#e06c75\"\n          opacity=\"0.25\"\n          cx=\"60\"\n          cy=\"60\"\n          r=\"60\"\n          transform=\"translate(150.515 -145.018)\"\n        />\n        <path fill=\"none\" d=\"M174.515-121.018h72v72h-72Z\" />\n        <path\n          fill=\"#1d1d1d\"\n          d=\"M225.515-82.018a12,12,0,0,1,12,12,12,12,0,0,1-12,12,12.13,12.13,0,0,1-12-12h-6A12,12,0,0,1,195.5-58.031a12,12,0,0,1-11.987-12.014,12,12,0,0,1,12.014-11.986,12,12,0,0,1,10.386,6.013h9.2A11.994,11.994,0,0,1,225.515-82.018Zm-45-3v-6h6v-9a12,12,0,0,1,12-12h24a12,12,0,0,1,12,12v9h6v6Z\"\n        />\n        <path\n          fill=\"#af585e\"\n          isolation=\"isolate\"\n          d=\"M251.749-62.55a18.766,18.766,0,0,0-18.766,18.766,18.766,18.766,0,0,0,18.766,18.766,18.766,18.766,0,0,0,18.766-18.766A18.787,18.787,0,0,0,251.749-62.55ZM237.675-43.784A14.05,14.05,0,0,1,251.7-57.859a14.051,14.051,0,0,1,8.189,2.616l-19.6,19.6A13.985,13.985,0,0,1,237.675-43.784Zm22.264,11.458a14.048,14.048,0,0,1-8.19,2.617,13.988,13.988,0,0,1-8.142-2.616l19.6-19.6A14.05,14.05,0,0,1,259.939-32.326Z\"\n        />\n      </g>\n    </svg>\n  );\n}\n","import { TEAM_MEMBER_ROLE } from './constants';\n\nexport const rules = {\n  player: {\n    dynamic: {\n      'team-page:edit': (participant) => participant.role === TEAM_MEMBER_ROLE.CAPTAIN,\n    },\n    static: ['team-page:create'],\n  },\n  admin: {\n    static: ['admin-page:visit', 'team-page:edit', 'team-page:create', 'team-page:navigate-user'],\n  },\n  superadmin: {\n    static: [],\n  },\n};\n\nexport const checkPermission = (rules, role = 'player', action, data) => {\n  const permissions = rules[role.toLowerCase()];\n  if (!permissions) {\n    // role is not present in the rules\n    return false;\n  }\n\n  const staticPermissions = permissions.static;\n\n  if (staticPermissions && staticPermissions.includes(action)) {\n    // static rule not provided for action\n    return true;\n  }\n\n  const dynamicPermissions = permissions.dynamic;\n\n  if (dynamicPermissions) {\n    const permissionCondition = dynamicPermissions[action];\n    if (!permissionCondition) {\n      // dynamic rule not provided for action\n      return false;\n    }\n\n    return permissionCondition(data);\n  }\n  return false;\n};\n","import { useState, useEffect, useCallback } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport marked from 'marked';\nimport sanitizeHTML from 'sanitize-html';\n\nconst MD_DEFAULT_OPTIONS = {\n  skipSanitize: false,\n  markedOptions: null,\n  sanitizeOptions: {\n    allowedTags: [\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'blockquote',\n      'p',\n      'a',\n      'ul',\n      'ol',\n      'nl',\n      'li',\n      'b',\n      'i',\n      'strong',\n      'em',\n      'strike',\n      'code',\n      'hr',\n      'br',\n      'div',\n      'table',\n      'thead',\n      'caption',\n      'tbody',\n      'tr',\n      'th',\n      'td',\n      'pre',\n      'iframe',\n    ],\n    disallowedTagsMode: 'discard',\n    allowedAttributes: {\n      a: ['href', 'name', 'target'],\n      img: ['src'],\n    },\n    selfClosing: ['img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta'],\n    allowedSchemes: ['http', 'https', 'ftp', 'mailto'],\n    allowedSchemesByTag: {},\n    allowedSchemesAppliedToAttributes: ['href', 'src', 'cite'],\n    allowProtocolRelative: true,\n  },\n};\n\nexport function useFormFields(initialState) {\n  const [fields, setValues] = useState(initialState);\n  return [\n    fields,\n    function (event) {\n      const value = event.target.value;\n      const id = event.target.id;\n      setValues((fields) => ({\n        ...fields,\n        [id]: value,\n      }));\n    },\n  ];\n}\n\nexport function useDynamoPaginator() {\n  const [pages, setPages] = useState([]);\n  const [currentPage, setCurrentPage] = useState(0);\n  return [\n    { pages, currentPage },\n    function (paginationResponse, targetPage) {\n      const newPage = {};\n      const pagesCopy = [...pages];\n      if (paginationResponse.more) {\n        newPage.nextPagePointer = paginationResponse.LastEvaluatedKey;\n        newPage.lastPagePointer = targetPage < 2 ? null : pages[targetPage - 2].nextPagePointer;\n        pagesCopy[targetPage] = newPage;\n        setPages(pagesCopy);\n      } else if (targetPage !== 0) {\n        newPage.lastPagePointer = targetPage < 2 ? null : pages[targetPage - 2].nextPagePointer;\n        pagesCopy[targetPage] = newPage;\n        setPages(pagesCopy);\n      } else {\n        setPages([]);\n      }\n      setCurrentPage(targetPage);\n    },\n    function (nextPage) {\n      if (nextPage > 0) {\n        if (nextPage === currentPage) {\n          return pages[currentPage - 1].nextPagePointer;\n        }\n        if (nextPage > currentPage) {\n          return pages[currentPage].nextPagePointer;\n        }\n        return pages[currentPage].lastPagePointer;\n      }\n      return null;\n    },\n  ];\n}\n\nexport function useBreadcrumb() {\n  const [breadcrumbs, setBc] = useState([]);\n  const history = useHistory();\n  const setBreadcrumbs = (routes, match) => {\n    const crumbs = routes\n      .filter(({ path, force }) => match.path.includes(path) || force)\n      .map(({ path, hash, ...rest }) => ({\n        path: Object.keys(match.params).length\n          ? Object.keys(match.params).reduce(\n              (path, param) => path.replace(`:${param}`, match.params[param]),\n              path\n            )\n          : path,\n        action: () => history.push(hash ? `${path}${hash}` : path),\n        ...rest,\n      }));\n    setBc(crumbs);\n  };\n\n  return [breadcrumbs, setBreadcrumbs];\n}\n\n// TODO: this one is duplicated in boss-ui consider using that one\nexport function useMarked(markdown, options = MD_DEFAULT_OPTIONS) {\n  const [html, setHtml] = useState(markdown);\n\n  useEffect(() => {\n    if (options.markedOptions) {\n      marked.setOptions(options.markedOptions);\n    }\n    const tokens = marked.lexer(markdown);\n    const html = marked.parser(tokens);\n    setHtml(options.skipSanitize ? html : sanitizeHTML(html, options.sanitizeOptions));\n  }, [markdown, options]);\n\n  return html;\n}\n\nexport function useRefreshScore(loading = false) {\n  const [refreshHover, setRefreshHover] = useState(false);\n  const [lastUpdate, setLastUpdate] = useState(0);\n  const resetLastUpdate = () => setLastUpdate(0);\n\n  const getLastUpdatedLabel = () => {\n    if (lastUpdate < 1) {\n      return 'seconds ago';\n    }\n    if (lastUpdate === 1) {\n      return 'a minute ago';\n    }\n    return `${lastUpdate} minutes ago`;\n  };\n\n  useEffect(() => {\n    setLastUpdate(0);\n    const update = setInterval(() => {\n      setLastUpdate((p) => p + 1);\n    }, 60000);\n    return () => clearInterval(update);\n  }, [loading]);\n\n  return [refreshHover, setRefreshHover, getLastUpdatedLabel, resetLastUpdate];\n}\n\nexport function useQuery() {\n  return new URLSearchParams(useLocation().search);\n}\n\nexport function useLocalStorage(key, initialValue) {\n  // State to store our value\n  // Pass initial state function to useState so logic is only executed once\n  const [storedValue, setStoredValue] = useState(() => {\n    try {\n      // Get from local storage by key\n      const item = window.localStorage.getItem(key);\n      // Parse stored json or if none return initialValue\n      return item ? JSON.parse(item) : initialValue;\n    } catch (error) {\n      // If error also return initialValue\n      console.log(error);\n      return initialValue;\n    }\n  });\n  // Return a wrapped version of useState's setter function that ...\n  // ... persists the new value to localStorage.\n  const setValue = (value) => {\n    try {\n      // Allow value to be a function so we have same API as useState\n      const valueToStore = value instanceof Function ? value(storedValue) : value;\n      // Save state\n      setStoredValue(valueToStore);\n      // Save to local storage\n      window.localStorage.setItem(key, JSON.stringify(valueToStore));\n    } catch (error) {\n      // A more advanced implementation would handle the error case\n      console.log(error);\n    }\n  };\n  return [storedValue, setValue];\n}\n","import React, { useState, useEffect, useMemo } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport styled from 'styled-components';\nimport Media from 'react-media';\nimport capitalize from 'lodash/capitalize';\nimport {\n  Tooltip,\n  RegularText,\n  StyledText,\n  InfoIcon,\n  QuestionCircleIcon,\n  ResourcesList,\n  Markdown\n} from 'boss-ui';\nimport { useAppContext, useScenarioContext } from '../../libs/context-lib';\nimport { removePlural } from '../../libs/utils-lib';\nimport { joinSpecsAndAllocationsData } from '../../libs/resource-lib';\nimport { getSrnGroupId } from '../../libs/event-lib';\nimport { getUserScenarioResources } from '../../libs/scenario-lib';\nimport { getAnswersStatus } from '../../libs/question-lib';\nimport CollapsableSection from '../CollapsableSection';\nimport ScenarioQuestions from '../questions/ScenarioQuestions';\nimport ScenarioStatusTable from './ScenarioStatusTable';\nimport MalloryMessage from '../MalloryMessage';\nimport Api from '../../api';\nimport { onError } from '../../libs/error-lib';\nimport ResourcesTable from '../ResourcesTable';\nimport config from '../../config';\n\nconst Container = styled(Box)`\n  background-color: ${(props) => props.theme.color.card.classic.background.inactive};\n  padding: ${(props) =>\n    props.mobile\n      ? props.theme.margin.xs\n      : `${props.theme.margin.m} ${props.theme.margin.l} ${props.theme.margin.m} ${props.theme.margin.l}`};\n  width: 100%;\n  border: 1px solid ${(props) => props.theme.color.form.border.main};\n  align-items: flex-start;\n  flex-direction: column;\n`;\nContainer.displayName = 'Scenario-Container';\n\nconst API = new Api();\n\nexport default function Scenario() {\n  const { user, event } = useAppContext();\n  const { currentScenario, scenarioResources, scenarioQuestions, loadingScenario } =\n    useScenarioContext();\n  const [answersStatus, setAnswersStatus] = useState();\n  const [userResources, setUserResources] = useState([]);\n  const [loadingResources, setLoadingResources] = useState(false);\n  const [showResources, setShowResources] = useState(false);\n\n  useEffect(() => setAnswersStatus(getAnswersStatus(scenarioQuestions)), [scenarioQuestions]);\n\n  useEffect(() => {\n    const getSpecs = async (eventId) => {\n      const groupId = getSrnGroupId(eventId);\n      setLoadingResources(true);\n      try {\n        const [specs, allocations] = await Promise.all([\n          API.get('events', `/groups/${groupId}/specs`),\n          API.get('events', `/consumer/groups/${groupId}/allocations`),\n        ]);\n        if (specs && allocations) {\n          setUserResources(joinSpecsAndAllocationsData(specs.specs, allocations.allocations));\n        }\n      } catch (e) {\n        onError(e);\n      } finally {\n        setLoadingResources(false);\n      }\n      return [];\n    };\n    if (event.eventId) {\n      getSpecs(event.eventId);\n    }\n    return () => API.abortCurrentRequest();\n  }, [event]);\n\n  const scenarioUserResources = useMemo(() => {\n    let filteredResources = [];\n    if (!scenarioResources || !scenarioResources.length) {\n      return [];\n    }\n    if (config.enableLegacyResources) {\n      if (user.userInTeam && !user.userInTeam.resources) {\n        return [];\n      }\n      scenarioResources.forEach((resource) => {\n        const userResource = user.userInTeam.resources.find((r) => r.name === resource.name);\n        if (userResource) {\n          filteredResources.push(userResource);\n        }\n      });\n    } else {\n      filteredResources = getUserScenarioResources(scenarioResources, userResources);\n    }\n    return filteredResources;\n  }, [user.userInTeam, scenarioResources, userResources, currentScenario.scenarioId]);\n\n  useEffect(() => {\n    if (event.isEventEnded) {\n      setShowResources(false);\n    } else {\n      setShowResources(true);\n    }\n  }, [event.isEventEnded]);\n\n  if (!currentScenario) {\n    return (\n      <MalloryMessage message=\"This episode is not longer active, go back and keep playing!\" />\n    );\n  }\n\n  return (\n    <Media query=\"(max-width: 1000px)\">\n      {(matches) => (\n        <Container>\n          <Box textAlign=\"left\">\n            <RegularText mediumWeight medium fontSize=\"14px\">\n              {capitalize(removePlural(currentScenario.scenarioLabel))} {currentScenario.idx}\n            </RegularText>\n            <Flex mb=\"20px\" mt=\"10px\">\n              <StyledText light size=\"28px\">\n                {capitalize(currentScenario.title)}\n              </StyledText>\n            </Flex>\n            <CollapsableSection>\n              <Markdown light md={currentScenario.description} />\n              <Flex flexDirection={matches ? 'column' : 'row'} my=\"20px\">\n                <Box width={matches ? 1 : 1 / 4}>\n                  <Flex mb=\"4px\">\n                    <RegularText fontSize=\"14px\" medium>\n                      Status\n                    </RegularText>\n                  </Flex>\n                  <ScenarioStatusTable loading={loadingScenario} score={answersStatus} />\n                </Box>\n                {showResources && (\n                  <Box\n                    width={matches ? 1 : 3 / 4}\n                    ml={matches ? 0 : '20px'}\n                    mt={matches ? '6px' : 0}\n                  >\n                    <Flex mb=\"10px\">\n                      <RegularText fontSize=\"14px\" mediumWeight>\n                        Resources\n                      </RegularText>\n                      <Flex ml=\"6px\" data-tip data-for=\"resources\">\n                        <QuestionCircleIcon size=\"20px\" />\n                      </Flex>\n                      <Tooltip id=\"resources\" place=\"right\">\n                        Use these resources to complete the scenario. In light green the\n                        username/password to login to the server.\n                      </Tooltip>\n                    </Flex>\n                    <Tooltip id=\"resources\" place=\"right\">\n                      Use these resources to complete the scenario. In light green the\n                      username/password to login to the server.\n                    </Tooltip>\n                    {config.enableLegacyResources ? (\n                      <ResourcesTable\n                        ignoreTooltip\n                        loading={loadingScenario}\n                        resources={scenarioUserResources}\n                        errorMsg={currentScenario.scenarioError}\n                      />\n                    ) : (\n                      <ResourcesList\n                        loading={loadingResources || loadingScenario}\n                        resources={scenarioUserResources}\n                      />\n                    )}\n                  </Box>\n                )}\n              </Flex>\n            </CollapsableSection>\n            <Flex mt=\"20px\">\n              <RegularText mediumWeight fontSize=\"24px\">\n                Questions\n              </RegularText>\n              <Flex ml=\"auto\" data-tip data-for=\"questions\">\n                <InfoIcon />\n                <Tooltip id=\"questions\" place=\"bottom\">\n                  <RegularText color=\"#81a2be\" mediumWeight fontSize=\"12px\">\n                    Tips and Tricks\n                  </RegularText>\n                  <li>\n                    Answers are case insensitive! e.g. &quot;Elite Hacker&quot; == &quot;eLite\n                    haCKer&quot;\n                  </li>\n                  <li>Leading and trailing whitespace in your answer is stripped away.</li>\n                  <li>\n                    We strive to make the answers be short, concise, and easy to enter. If you find\n                    youself entering very long answers with complex spacing and punctuation, you are\n                    probably not on the right track.\n                  </li>\n                  <li>\n                    Some questions contain free hints about the formatting of the answer. Use them!\n                  </li>\n                </Tooltip>\n              </Flex>\n            </Flex>\n            <ScenarioQuestions />\n          </Box>\n        </Container>\n      )}\n    </Media>\n  );\n}\n","import { API } from 'aws-amplify';\nimport { ERROR_NAMES } from './libs/error-lib';\nimport { sendWarning } from './libs/utils-lib';\n\nexport const BANNED_USER_CODE = 403;\nclass Api {\n  constructor() {\n    this.apiRequestPendingPromises = [];\n  }\n\n  async apiRequest(method, params) {\n    let response;\n    try {\n      const rq = API[method](...params);\n      const promiseIdx = this.apiRequestPendingPromises.push(rq);\n      response = await rq;\n      this.apiRequestPendingPromises.splice(promiseIdx, 1);\n    } catch (e) {\n      if (API.isCancel(e)) {\n        throw new Error(ERROR_NAMES.ABORTED_REQUEST);\n      }\n      if (\n        e.response &&\n        e.response.status === 403 &&\n        !(e.response.data && e.response.data.statusCode === BANNED_USER_CODE)\n      ) {\n        sendWarning('User session expired');\n        window.history.pushState(null, '/login');\n        throw new Error(ERROR_NAMES.SESSION_EXPIRED);\n      }\n      throw e;\n    }\n    return response;\n  }\n\n  get(...params) {\n    return this.apiRequest('get', params);\n  }\n\n  del(...params) {\n    return this.apiRequest('del', params);\n  }\n\n  put(...params) {\n    return this.apiRequest('put', params);\n  }\n\n  post(...params) {\n    return this.apiRequest('post', params);\n  }\n\n  patch(...params) {\n    return this.apiRequest('patch', params);\n  }\n\n  abortCurrentRequest() {\n    if (this.apiRequestPendingPromises.length) {\n      this.apiRequestPendingPromises.forEach((requestPromise) => API.cancel(requestPromise));\n      this.apiRequestPendingPromises = [];\n    }\n  }\n}\n\nexport default Api;\n","import compareAsc from 'date-fns/compareAsc';\nimport format from 'date-fns/format';\nimport { isDate } from 'lodash';\nimport differenceInMinutes from 'date-fns/differenceInMinutes';\nimport { getNewDate } from './utils-lib';\n\nconst MINUTES_IN_HOUR = 60;\nconst DAYS_IN_A_YEAR = 365;\nconst DAYS_IN_A_MONTH = 30;\nconst HOURS_IN_A_DAY = 24;\n\nexport const isTodayBetween = (start, end) => {\n  if (!start || !end) {\n    return false;\n  }\n  if (!isDate(start)) {\n    start = new Date(start);\n  }\n  if (!isDate(end)) {\n    end = new Date(end);\n  }\n  const today = getNewDate();\n  if (compareAsc(start, today) === 1) {\n    return false;\n  }\n  if (compareAsc(end, today) === -1) {\n    return false;\n  }\n  return true;\n};\n\nexport const isTodayAfterThan = (myDate) => {\n  const today = new Date();\n  if (!isDate(myDate)) {\n    myDate = new Date(myDate);\n  }\n  if (compareAsc(today, myDate) === -1) {\n    return false;\n  }\n  return true;\n};\n\nexport const getDateComponents = (date) => {\n  const d = new Date(date);\n  const stringMonth = format(d, 'MMM');\n  return {\n    day: d.getDate(),\n    month: d.getMonth() + 1,\n    year: d.getFullYear(),\n    stringMonth,\n  };\n};\n\nexport const formatMinutes = (minutesDiff) => {\n  return {\n    minutes: minutesDiff % MINUTES_IN_HOUR,\n    hour: Math.floor(minutesDiff / MINUTES_IN_HOUR),\n  };\n};\n\nexport const getHourMinuteDifference = (start, end) => {\n  if (!start || !end) {\n    return false;\n  }\n  if (!isDate(start)) {\n    start = new Date(start);\n  }\n  if (!isDate(end)) {\n    end = new Date(end);\n  }\n  return formatMinutes(differenceInMinutes(start, end));\n};\n\nexport const getIntervalInDays = ({ years = 0, months = 0, days = 0, hours = 0 }) => {\n  let accumulatedDays = days;\n  if (years > 0) {\n    accumulatedDays += DAYS_IN_A_YEAR * years;\n  }\n  if (months > 0) {\n    accumulatedDays += DAYS_IN_A_MONTH * months;\n  }\n  if (hours > HOURS_IN_A_DAY / 2) {\n    accumulatedDays += 1;\n  }\n  return accumulatedDays;\n};\n\nexport function getCurrentYear() {\n  return new Date().getFullYear();\n}","import { BOTS_TYPE, EVENT_REGISTRATION_STATUS } from './constants';\nimport { isTodayBetween } from './dates-lib';\n\nexport const getEventShortName = (type) => {\n  if (type === BOTS_TYPE.SOC) {\n    return 'BOTS';\n  }\n  return 'BOO';\n};\n\nexport const isOnDemandEventInsidePlayWindow = (joinDate, duration) => {\n  if (!joinDate || !duration) {\n    return false;\n  }\n  const inProgressStartDate = new Date(joinDate);\n  const inProgressEndDate = new Date(inProgressStartDate.getTime() + duration * 60000);\n  return isTodayBetween(inProgressStartDate, inProgressEndDate);\n};\n\nexport const isNormalEventInsideActiveWindow = (\n  activeStartDate,\n  activeEndDate,\n  registrationOpenDate,\n  registrationCloseDate,\n  registrationStatus\n) => {\n  if (registrationStatus === EVENT_REGISTRATION_STATUS.CLOSED) {\n    return false;\n  }\n  if (isTodayBetween(new Date(registrationOpenDate), new Date(registrationCloseDate))) {\n    return isTodayBetween(new Date(activeStartDate), new Date(activeEndDate));\n  }\n  return false;\n};\n\nexport const getNoImageUrl = (type, size) => {\n  if (type === BOTS_TYPE.SOC) {\n    switch (size) {\n      case 'large':\n        return `${process.env.PUBLIC_URL}/bots/android-chrome-766x432.png`;\n      case 'medium':\n        return `${process.env.PUBLIC_URL}/bots/android-chrome-550x310.png`;\n      default:\n        return `${process.env.PUBLIC_URL}/bots/android-chrome-330x186.png`;\n    }\n  } else {\n    switch (size) {\n      case 'large':\n        return `${process.env.PUBLIC_URL}/boo/android-chrome-766x432.png`;\n      case 'medium':\n        return `${process.env.PUBLIC_URL}/boo/android-chrome-550x310.png`;\n      default:\n        return `${process.env.PUBLIC_URL}/boo/android-chrome-330x186.png`;\n    }\n  }\n};\n\nexport const getSrnGroupId = (eventId) => {\n  return `srn:group::${eventId}`;\n}\nexport const getConsumerGroupSrn = (eventId, userId) => {\n  return `srn:group:${userId}:${eventId}`;\n}\nconst exportObj = { getEventShortName, getNoImageUrl, getSrnGroupId };\nexport default exportObj;\n","import { RESOURCE_TYPE } from './constants';\n\nexport const getResourceCreationBody = (form, resourceType) => {\n  if (resourceType === RESOURCE_TYPE.CREDENTIALS) {\n    return { username: form.username, password: form.password };\n  }\n  return { url: form.url };\n};\n\nexport const getResourceUpdateBody = (form, resourceType) => {\n  if (resourceType === RESOURCE_TYPE.CREDENTIALS) {\n    return { username: form.username, password: form.password };\n  }\n  return { url: form.url };\n};\n\nexport const joinSpecsAndAllocationsData = (specs = [], allocs = []) => {\n  const tmpArr = [];\n  const dependencyObj = {};\n  for (let s = 0; s < specs.length; s++) {\n    if (specs[s].requiredSpec && !dependencyObj[specs[s].requiredSpec.srn]) {\n      // is a dependency resource\n      dependencyObj[specs[s].requiredSpec.srn] = true;\n      tmpArr.push({\n        resourceSpecSrn: specs[s].requiredSpec.srn,\n        name: specs[s].requiredSpec.title,\n        type: specs[s].requiredSpec.type,\n        url: '',\n        user: '',\n        password: '',\n        isDependency: true,\n      });\n    }\n    // if the spec is not a dependency resource, then we push the object\n    if (!dependencyObj[specs[s].srn]) {\n      const tmpObj = {\n        resourceSpecSrn: specs[s].srn,\n        name: specs[s].title,\n        type: specs[s].type,\n      };\n      if (specs[s].requiredSpec) {\n        tmpObj.resourceDependencyId = specs[s].requiredSpec.srn;\n      }\n      tmpArr.push(tmpObj);\n    }\n  }\n  // check the allocations to assign the username, password or url field\n  for (let a = 0; a < allocs.length; a++) {\n    for (let i = 0; i < tmpArr.length; i++) {\n      if (\n        allocs[a].specSrn === tmpArr[i].resourceSpecSrn &&\n        allocs[a].slot &&\n        allocs[a].slot.resource\n      ) {\n        tmpArr[i].url = allocs[a].slot.resource.url;\n        tmpArr[i].user = allocs[a].slot.resource.username;\n        tmpArr[i].password = allocs[a].slot.resource.password;\n        tmpArr[i].state = allocs[a].state;\n        break;\n      } else if (allocs[a].specSrn === tmpArr[i].resourceSpecSrn && allocs[a].state) {\n        // we dont have the slot but only the state\n        tmpArr[i].state = allocs[a].state;\n      }\n    }\n  }\n  return tmpArr;\n};","import { get } from 'lodash';\n\nexport function getScenariosNavigation(scenarios = []) {\n  const pages = {};\n  if (scenarios === null) {\n    return pages;\n  }\n  scenarios.forEach((scenario, idx) => {\n    pages[scenario.scenarioId] = {\n      id: scenario.scenarioId,\n      nextScenarioId: get(scenarios, `${[idx + 1]}.scenarioId`, null),\n      prevScenarioId: get(scenarios, `${[idx - 1]}.scenarioId`, null),\n    };\n  });\n  return pages;\n}\n\nexport function isScenarioPartOfEvent(scenarioId, scenarios = []) {\n  if (!scenarioId || scenarioId === null || scenarios === null) {\n    return false;\n  }\n\n  return scenarios.findIndex((s) => s.scenarioId === scenarioId) >= 0;\n}\n\nfunction getResourceAndDependency(resources, resource = {}) {\n  let matchedResources = [];\n  const matchedResource = resources.find((r) => r.resourceSpecSrn === resource.srn);\n  if (matchedResource) {\n    matchedResources.push(matchedResource);\n    if (resource.requiredSpec) {\n      matchedResources = matchedResources.concat(\n        getResourceAndDependency(resources, resource.requiredSpec)\n      );\n    }\n  }\n  return matchedResources;\n}\n\nexport function getUserScenarioResources(scenarioResources, userResources = []) {\n  let filteredResources = [];\n  scenarioResources.forEach((resource) => {\n    filteredResources = filteredResources.concat(getResourceAndDependency(userResources, resource));\n  });\n  return filteredResources;\n}\n\nexport default { getScenariosNavigation, isScenarioPartOfEvent, getUserScenarioResources };\n","export const TEAM_MEMBER_ROLE = { CAPTAIN: 'CAPTAIN', REGULAR: 'MEMBER' };\nexport const TEAM_VISIBILITY = { PUBLIC: 'PUBLIC', PRIVATE: 'PRIVATE' };\nexport const TEAM_ACCESSIBILITY = { OPEN: 'OPEN', CLOSED: 'CLOSED' };\nexport const USER_TEAM_STATE = {\n  AVAILABLE: 'available',\n  INVITED: 'invited',\n};\nexport const USER_INVITE_STATE = {\n  PENDING: 'PENDING',\n  ACCEPTED: 'ACCEPTED',\n  CANCELLED: 'CANCELLED',\n  REJECTED: 'REJECTED',\n};\nexport const USER_ACKSTATEMENT = {\n  ACCEPTED: 'ACP',\n  REJECTED: 'REJ',\n};\nexport const RESOURCE_URL_REGEXP =\n  /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/g;\nexport const RESOURCE_CREDENTIALS_REGEXP =\n  /(user: )[a-zA-Z0-9-]{2,29}, (password: )[a-zA-Z0-9]{2,29}/;\nexport const RESOURCE_TEXT_REGEXP = /^(?! )[a-zA-Z0-9-]{2,29}[^\\W]$/;\nexport const EMAIL_REGEXP =\n  /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const EMAIL_MAX_IMPORT = 50;\nexport const RESOURCE_TYPE = {\n  SERVER: 'server',\n  URL: 'url',\n  CREDENTIALS: 'credentials',\n};\nexport const RESOURCE_STATE = {\n  ASSIGNED: 'ASSIGNED',\n  UNASSIGNED: 'UNASSIGNED',\n  PROVISIONING: 'PROVISIONING',\n};\n\nexport const TEAM_NAME_REGEXP = /^(?! )[a-zA-Z0-9 _]{2,29}[^\\W]$/;\nexport const CONFIRMATION_NUMBER_REGEXP = /^[0-9]{3,}$/;\nexport const DISPLAY_NAME_REGEXP = /^(?! )[a-zA-Z0-9 _]{2,29}[^\\W]$/;\nexport const EVENT_TYPE = {\n  GAME: 'GAME',\n  WORKSHOP: 'WORKSHOP',\n};\nexport const EVENT_DELIVERY = {\n  ON_DEMAND: 'ON_DEMAND',\n  NORMAL: 'NORMAL',\n};\nexport const EVENT_REGISTRATION_STATUS = {\n  OPEN: 'OPEN',\n  CLOSED: 'CLOSED',\n};\nexport const EVENT_ACCESS_TYPE = {\n  RESTRICTED: 'RESTRICTED',\n};\nexport const BOTS_TYPE = {\n  SOC: 'SOC',\n  NOC: 'NOC',\n};\nexport const DEFAULT_BOX_BORDER_STYLE = { border: '1px solid #2C2C2C' };\nexport const SKELTELON_STYLE = {\n  COLOR: '#202020',\n  EFFECT: '#444',\n};\nexport const DEFAULT_BONUS_MULTIPLIER = 2;\nexport const SCENARIO_HINTS_STRATEGIES = {\n  PURCHASE: 'PURCHASE',\n  TIME: 'TIME',\n  DEFAULT: 'TIME',\n};\nexport const EVENT_WORDING = {\n  SCENARIO: {\n    SOC: 'Scenarios',\n    NOC: 'Episodes',\n  },\n};\nexport const USER_ROLES = {\n  ADMIN: 'ADMIN',\n  SUPERADMIN: 'SUPERADMIN',\n  PLAYER: 'PLAYER',\n};\nexport const NUMBERS = {\n  ZERO: 0,\n  ONE: 1,\n};\nexport const NAV_MOBILE_MAXWIDTH = '600px';\nexport const RESOURCES_COLORS = ['#61ADA1', '#81A2BE', '#E5C07B', '#A088A4'];\nexport const REMOVE_QUESTION_CONFIRMATION_DIALOG = 'Are you sure on removing this question?';\nexport const MAXLEN_BIGCARD_TEXT_COLLAPSE = 109;\nexport const DEFAULT_ON_DEMAND_EVENT_DURATION = 120;\nexport const ONE_MINUTE_MS = 60000;\nexport const SURVEY_QUESTIONS_TYPE = {\n  JUST_OPTIONS: 'Just Options',\n  OPTIONS_AND_TEXT: 'Options and text',\n  NUMERIC_SCALE: 'Numeric scale [0-10]',\n  SMILE_SCALE: 'Smiles scale [Sadness...Total joy]',\n  JUST_TEXT: 'Just text',\n  STAR_SCALE: 'Stars scale [1...5]',\n};\nexport const SURVEY_QUESTION_OPTION_OTHER = '-1';\nexport const MAX_INT32 = 0x7fffffff;\nexport const WS_SCENARIO_MESSAGES_TYPES = {\n  ACTIVATE: 'SCENARIO_ACTIVATE_TASK',\n  DEACTIVATE: 'SCENARIO_DEACTIVATE_TASK',\n};\nexport const DISPLAY_QUESTIONS_MODE = { GRID: 'GRID', LIST: 'LIST' };\nexport const DEFAULT_FORM_INPUT_TYPE = 'input';\nexport const INPUT_FORM_TYPE_TEXTAREA = 'textarea';\nexport const MENU_BAR_HEIGHT = 50;","import { formDataBody, sendWarning, parseJwt } from './utils-lib';\nimport { getMessageError } from './error-lib';\nimport config from '../config';\n\nfunction formatLoggedInUser(cognitoUser) {\n  let user = {};\n  try {\n    // when app gets the authenticated user from local storage(refresh action), it gets the session in the token form\n    if (cognitoUser.token) {\n      const parsedToken = parseJwt(cognitoUser.token);\n      user = {\n        username: parsedToken['cognito:username'],\n        attributes: { email: parsedToken.email },\n      };\n    } else {\n      user = {\n        username: cognitoUser.signInUserSession.idToken.payload['cognito:username'],\n        attributes: { email: cognitoUser.signInUserSession.idToken.payload.email },\n      };\n    }\n  } catch (e) {\n    throw new Error('malformed cognito user');\n  }\n  return user;\n}\n\nasync function refreshSAMLTokens() {\n  // eslint-disable-next-line no-console\n  console.log('refreshing saml session');\n  const bodyObject = {\n    grant_type: 'refresh_token',\n    client_id: config.cognito.saml.APP_CLIENT_ID,\n    refresh_token: localStorage.getItem('rt'),\n  };\n  try {\n    const tokenRq = await fetch(`https://${config.cognito.saml.DOMAIN}/oauth2/token`, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',\n      },\n      body: formDataBody(bodyObject),\n    });\n    const tokens = await tokenRq.json();\n    const { id_token, expires_in } = tokens;\n    return {\n      token: id_token,\n      expires_at: expires_in * 1000 + new Date().getTime(), // the expiration timestamp\n    };\n  } catch (err) {\n    sendWarning(`Refresh token Error ${getMessageError(err)}`, true);\n    return null;\n  }\n}\n\nexport { formatLoggedInUser, refreshSAMLTokens };\n","/**\n * THEMING SCHEMA:\n * For the new items the object pattern is:\n * [Component Name]: {\n *    [css attribute / component sub part]: {\n *      [characteristic]: value\n *    }\n * }\n *\n * example 1:\n *  checkbox: {\n *   color: '#4caf50',\n *  border: '#4caf50',\n *  background: '#4caf50',\n * }\n *\n * example 2:\n *  table: {\n *  border: '#2C2C2C',\n *  header: {\n *    background: { inactive: '#2C2C2C', active: '#eeeeee' },\n *    color: '#898989',\n *    border: '#2C2C2C',\n *  },\n *  row: {\n *    background: { inactive: '#212121', active: '#eeeeee' },\n *    oddBackground: '#1D1D1D',\n *    color: '#D0D0D0',\n *    correct: '#81C784',\n *    incorrect: '#E06C75',\n *    captain: '#de935f',\n *  },\n *},\n */\nconst color = {\n  background: '#121212',\n  toastNotification: {\n    toast: {\n      background: '#373737',\n      boxShadow: '#00000040',\n    },\n    progressBar: {\n      background: '#121212',\n    },\n  },\n  nav: {\n    background: '#1D1D1D',\n  },\n  dragDrop: {\n    background: '#2C2C2C',\n    border: { draggedOff: '#535353', draggedOn: '#E06C75' },\n    color: '#A5D6A7'\n  },\n  skeleton: {\n    color: '#202020',\n    highlightColor: '#444',\n  },\n  notificationList: {\n    container: {\n      boxShadow: '#00000059',\n      background: '#2C2C2C',\n      border: '#81C784',\n    },\n  },\n  navTitle: {\n    color: '#d0d0d0',\n  },\n  navigationMenu: {\n    background: { inactive: '#1d1d1d', active: '#2c2c2c' },\n    color: {\n      inactive: '#898989',\n      active: '#66bb6a',\n      danger: '#E06C75',\n    },\n    border: {\n      inactive: '#898989',\n      active: '#66bb6a',\n    },\n    hover: {\n      inactive: '#9edba1',\n      danger: '#E06C75',\n    },\n  },\n  select: {\n    control: {\n      background: { inactive: '#2C2C2C', active: '#373737' },\n      border: '#535353',\n      color: '#A0A0A0',\n    },\n    option: {\n      background: {\n        inactive: '#2C2C2C',\n        active: '#373737',\n      },\n    },\n    menu: {\n      background: '#2C2C2C',\n      border: '#535353',\n      color: '#A0A0A0',\n    },\n    singleValue: {\n      color: '#A0A0A0',\n    },\n  },\n  profile: {\n    background: '#2C2C2C',\n    border: '#81C784',\n  },\n  form: {\n    background: '#1D1D1D',\n    header: '#2C2C2C',\n    border: {\n      main: '#898989',\n      modal: '#81C784',\n    },\n    legend: {\n      color: '#898989',\n    },\n  },\n  checkbox: {\n    color: '#4caf50',\n    border: '#4caf50',\n    background: '#4caf50',\n  },\n  button: {\n    regular: {\n      accept: {\n        disabled: {\n          background: '#1D1D1D',\n          color: '#535353',\n          border: '#2C2C2C',\n        },\n        default: {\n          border: '#66BB6A',\n          color: '#66BB6A',\n          background: '#2C2C2C',\n        },\n        hover: {\n          background: '#373737',\n          color: '#66BB6A',\n          border: '#66BB6A',\n        },\n      },\n      reject: {\n        default: {\n          border: '#A0A0A0',\n          color: '#A0A0A0',\n          background: '#2C2C2C',\n        },\n        hover: {\n          background: '#373737',\n          border: '#A0A0A0',\n          color: '#A0A0A0',\n        },\n      },\n      danger: {\n        default: {\n          border: '#E06C75',\n          color: '#E06C75',\n          background: '#2C2C2C',\n        },\n        hover: {\n          background: '#373737',\n          border: '#E06C75',\n          color: '#E06C75',\n        },\n      },\n    },\n    unregular: {\n      active: {\n        default: {\n          border: '#66BB6A',\n          color: '#66BB6A',\n          background: 'transparent',\n        },\n        hover: {\n          background: '#373737',\n          border: '#66BB6A',\n          color: '#66BB6A',\n        },\n      },\n      inactive: {\n        default: {\n          border: '#A0A0A0',\n          color: '#A0A0A0',\n          background: 'transparent',\n        },\n        hover: {\n          background: '#373737',\n          border: '#A0A0A0',\n          color: '#A0A0A0',\n        },\n      },\n    },\n    small: {\n      border: '#373737',\n      background: 'transparent',\n    },\n  },\n  input: {\n    default: {\n      border: '#535353',\n      color: '#d0d0d0',\n      background: '#2C2C2C',\n      placeholderColor: '#898989',\n    },\n    focused: {\n      border: '#81C784',\n      background: '#2C2C2C',\n    },\n    hover: {\n      border: '#535353',\n      background: '#373737',\n    },\n    error: {\n      border: '#E06C75',\n      background: '#2C2C2C',\n    },\n    success: {\n      border: '#66BB6A',\n      background: '#2C2C2C',\n    },\n  },\n  table: {\n    border: '#2C2C2C',\n    header: {\n      background: { inactive: '#2C2C2C', active: '#eeeeee' },\n      color: '#898989',\n      border: '#2C2C2C',\n    },\n    row: {\n      background: { inactive: '#212121', active: '#eeeeee' },\n      oddBackground: '#1D1D1D',\n      color: '#D0D0D0',\n      correct: '#81C784',\n      incorrect: '#E06C75',\n      captain: '#de935f',\n    },\n  },\n  text: {\n    light: {\n      color: '#D0D0D0',\n    },\n    regular: {\n      color: '#A0A0A0',\n    },\n    medium: {\n      color: '#898989',\n    },\n    dark: {\n      color: '#535353',\n    },\n    active: {\n      color: '#81C784',\n    },\n    floatingMessage: {\n      active: '#A5D6A7',\n      inactive: '#535353',\n    },\n    captain: { color: '#de935f' },\n    default: { color: '#6C6C6C' },\n  },\n  tooltip: {\n    textColor: '#d0d0d0',\n    backgroundColor: '#2c2c2c',\n    borderColor: '#81a2be',\n    arrowColor: '#2c2c2c',\n  },\n  breadcrumb: {\n    active: '#81c784',\n    inactive: '#898989',\n  },\n  messageCard: { border: '#2C2C2C' },\n  card: {\n    classic: {\n      border: {\n        active: '#81C784',\n        inactive: '#E5C07B',\n        progress: '#45a647',\n        inprogress: '#4CAF50',\n        completed: '#a088a4',\n        history: '#a088a4',\n      },\n      title: {\n        active: '#81C784',\n        inprogress: '#4CAF50',\n        inactive: '#E5C07B',\n        completed: '#a088a4',\n        history: '#a088a4',\n      },\n      background: {\n        inactive: '#1D1D1D',\n        hover: '#2C2C2C',\n      },\n      description: '#D0D0D0',\n    },\n    restricted: {\n      border: '#FFFFFF',\n      title: '#FFFFFF',\n      background: { inactive: '#1D1D1D', hover: '#2C2C2C' },\n      description: '#898989',\n      active: '#81C784',\n      inactive: '#E5C07B',\n    },\n  },\n  workshopAdditionalInfo: {\n    server: '#61ADA1',\n    credentials: '#A088A4',\n    links: '#81A2BE',\n    warning: '#E06C75',\n    regular: '#A0A0A0',\n  },\n  question_card: {\n    background: {\n      inactive: '#1D1D1D',\n      active: '#2C2C2C',\n    },\n    border: {\n      pending: '#A0A0A0',\n      correct: '#81C784',\n      incorrect: '#E06C75',\n    },\n    color: {\n      pending: '#A0A0A0',\n      correct: '#81C784',\n      incorrect: '#E06C75',\n      guidance: '#81A2BE',\n      hint: '#A088A4',\n    },\n  },\n  boards: {\n    top: {\n      activeLight: '#A5D6A7',\n      progressBar: '#81c784',\n    },\n  },\n  team: {\n    visibility: {\n      public: '#A5D6A7'\n    },\n    access: {\n      open: '#A5D6A7'\n    }    \n  },\n};\n\nconst margin = {\n  xs: '6px',\n  s: '20px',\n  m: '40px',\n  l: '60px',\n};\n\nconst font = {\n  family: 'Roboto Mono',\n};\n\nconst Theme = { color, font, margin };\nexport default Theme;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport Media from 'react-media';\nimport debounce from 'lodash/debounce';\nimport {\n  Button,\n  Checkbox,\n  Form,\n  FormLabel,\n  FormLeyend,\n  LinkedText,\n  Modal,\n  QuestionCircleIcon,\n  StyledText,\n  Tooltip,\n} from 'boss-ui';\nimport Api from '../../api';\nimport { FormInput, ScrolleableContainer, TermsConditions } from '../../components';\nimport { useFormFields } from '../../libs/hooks-lib';\nimport { useAppContext } from '../../libs/context-lib';\nimport { onError } from '../../libs/error-lib';\nimport { USER_ACKSTATEMENT, DISPLAY_NAME_REGEXP } from '../../libs/constants';\nimport { setUserHeaders } from '../../libs/utils-lib';\n\nconst API = new Api();\n\nexport default function FirstSignIn() {\n  const [fields, handleFieldChange] = useFormFields({\n    displayName: '',\n    ack: false,\n  });\n  const [isLoading, setIsLoading] = useState(false);\n  const [ackVisible, setAckVisible] = useState(false);\n  const [ackScrolled, setAckScrolled] = useState(false);\n  const [availableName, setNameAvailable] = useState(true);\n  const [searchLoading, setSearchLoading] = useState(true);\n  const { user, userSession } = useAppContext();\n  const history = useHistory();\n  const onCheckBoxChange = (e) => {\n    handleFieldChange({\n      target: {\n        value: e.target.checked,\n        id: e.target.id,\n      },\n    });\n  };\n\n  const validateForm = () =>\n    availableName && fields.displayName.match(DISPLAY_NAME_REGEXP) && fields.ack;\n\n  const checkDisplayName = async (name) => {\n    try {\n      const data = await API.get('users', '/users/check-displayname', {\n        queryStringParameters: {\n          q: name,\n        },\n      });\n      setNameAvailable(data.user.available);\n    } catch (e) {\n      onError(e);\n      setNameAvailable(false);\n    } finally {\n      setSearchLoading(false);\n    }\n  };\n\n  const delayedSearch = useCallback(\n    debounce((q) => checkDisplayName(q), 300),\n    []\n  );\n\n  const onNameChange = (e) => {\n    handleFieldChange(e);\n    if (e.target.value.length > 2) {\n      setSearchLoading(true);\n      delayedSearch(e.target.value);\n    }\n  };\n\n  const handleUserAttributesSubmit = async (event) => {\n    event.preventDefault();\n    setIsLoading(true);\n    try {\n      const dynamoUser = await API.post('users', '/users', {\n        body: {\n          userName: user.username,\n          displayName: fields.displayName,\n          email: user.attributes.email,\n          ackStatement: fields.ack ? USER_ACKSTATEMENT.ACCEPTED : USER_ACKSTATEMENT.REJECTED,\n        },\n      });\n      userSession((u) => ({ ...u, dynamoUser: dynamoUser.user }));\n      setUserHeaders({ dynamoUser: dynamoUser.user, ...user });\n      history.push('/');\n    } catch (err) {\n      onError(err);\n      setIsLoading(false);\n    }\n  };\n\n  const handleAcceptACK = () => {\n    setAckVisible(false);\n    handleFieldChange({\n      target: {\n        value: true,\n        id: 'ack',\n      },\n    });\n  };\n\n  useEffect(() => {\n    setUserHeaders(user);\n    if (user.dynamoUser) {\n      history.push('/');\n    }\n  }, []);\n\n  return (\n    <>\n      <Flex justifyContent=\"center\">\n        <Box>\n          <Flex justifyContent=\"center\" mt=\"100px\" mb=\"16px\">\n            <StyledText size=\"24px\" medium>\n              How do you want to be known?\n            </StyledText>\n          </Flex>\n          <Form>\n            <Flex>\n              <Box py=\"40px\" px=\"60px\" width=\"412px\">\n                {/* Box with relative position to get question mark stuck to the input */}\n                <Box mb=\"20px\" style={{ position: 'relative' }}>\n                  <FormLabel>Display Name</FormLabel>\n                  <FormInput\n                    autoFocus\n                    placeholder=\"Enter your nickname\"\n                    value={fields.displayName}\n                    onChange={onNameChange}\n                    id=\"displayName\"\n                    validate={fields.displayName}\n                    validating={searchLoading}\n                    available={availableName}\n                    pattern={DISPLAY_NAME_REGEXP}\n                    unavailableMessage=\"This name was already taken!\"\n                    invalidPatternMessage=\"From 3 to 30 length, spaces, a-z, 0-9 and _ allowed\"\n                    validMessage=\"Name is available\"\n                  />\n                  <Flex\n                    data-tip\n                    data-for=\"displayName\"\n                    style={{\n                      position: 'absolute',\n                      right: '-30px',\n                      top: '28px',\n                    }}\n                  >\n                    <QuestionCircleIcon />\n                  </Flex>\n                  <Tooltip id=\"displayName\">\n                    You must choose a display name to continue. Note that your display name may be\n                    visible to other participants so choose a name that protects your identity if\n                    remaining anonymous is important to you. (3 characters at least, alphanumerics,\n                    spaces and underscores allowed)\n                  </Tooltip>\n                </Box>\n                <Flex>\n                  <label>\n                    <Checkbox checked={fields.ack} onChange={onCheckBoxChange} id=\"ack\" />\n                  </label>\n                  <Box mb=\"20px\" ml=\"5px\">\n                    <FormLeyend size=\"12px\">\n                      I acknowledge the{' '}\n                      <LinkedText onClick={() => setAckVisible(true)}>\n                        Terms and Conditions\n                      </LinkedText>\n                    </FormLeyend>\n                  </Box>\n                </Flex>\n                <Button\n                  isLoading={isLoading || searchLoading}\n                  disabled={!validateForm()}\n                  onClick={handleUserAttributesSubmit}\n                >\n                  OK\n                </Button>\n              </Box>\n            </Flex>\n          </Form>\n        </Box>\n      </Flex>\n      {ackVisible && (\n        <Flex>\n          <Modal onBackgroundClick={() => setAckVisible(false)} margin=\"5% auto\">\n            <Form>\n              <Box maxWidth=\"600px\">\n                <Flex justifyContent=\"center\" width=\"600px\" py=\"15px\" backgroundColor=\"#2C2C2C\">\n                  <FormLeyend size=\"20px\">Splunk Terms and Conditions</FormLeyend>\n                </Flex>\n                <ScrolleableContainer setScrolled={setAckScrolled}>\n                  <Flex py=\"12px\" px=\"8px\" width={1}>\n                    <TermsConditions />\n                  </Flex>\n                </ScrolleableContainer>\n                <Flex px=\"38px\" py=\"24px\" backgroundColor=\"#2C2C2C\">\n                  <Media query=\"(max-width: 40em)\">\n                    {(matches) => (\n                      <Flex ml=\"auto\" width={matches ? 1 : 1 / 2}>\n                        <Box ml=\"auto\" width={1 / 2}>\n                          <Button onClick={() => setAckVisible(false)} secondary>\n                            DECLINE\n                          </Button>\n                        </Box>\n                        <Box ml=\"20px\" width={1 / 2}>\n                          <Button onClick={handleAcceptACK} disabled={!ackScrolled}>\n                            ACKNOWLEDGE\n                          </Button>\n                        </Box>\n                      </Flex>\n                    )}\n                  </Media>\n                </Flex>\n              </Box>\n            </Form>\n          </Modal>\n        </Flex>\n      )}\n    </>\n  );\n}\n","import React, { useState } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { Auth } from 'aws-amplify';\nimport { useHistory } from 'react-router-dom';\nimport { Button, Form, FormLabel } from 'boss-ui';\nimport { FormInput } from './index';\nimport { useAppContext } from '../libs/context-lib';\nimport { useFormFields } from '../libs/hooks-lib';\nimport { onError } from '../libs/error-lib';\n\nexport default function VerifyEmailForm(props) {\n  const [fields, handleFieldChange] = useFormFields({\n    confirmationCode: '',\n  });\n  const [loading, setLoading] = useState(false);\n  const { userSession } = useAppContext();\n  const history = useHistory();\n  async function handleSubmit(event) {\n    event.preventDefault();\n    try {\n      setLoading(true);\n      await Auth.confirmSignUp(props.email.toLowerCase(), fields.confirmationCode);\n      const user = await Auth.signIn(props.email.toLowerCase(), props.password);\n      userSession(user);\n      history.push('/firstLogin');\n    } catch (e) {\n      if (e.code === 'UserNotConfirmedException') {\n        setLoading(false);\n      } else {\n        onError(e);\n        setLoading(false);\n      }\n    }\n  }\n\n  async function resendVerifyCode(event) {\n    event.preventDefault();\n    // resend the verification code\n    try {\n      setLoading(true);\n      await Auth.resendSignUp(props.email);\n      setLoading(false);\n    } catch (e) {\n      onError(e);\n      setLoading(false);\n    }\n  }\n\n  function validate() {\n    return fields.confirmationCode.length > 0;\n  }\n\n  return (\n    <Flex justifyContent=\"center\" align=\"center\" mt=\"100px\" mb=\"16px\">\n      <Form onSubmit={handleSubmit}>\n        <Box px=\"60px\" py=\"40px\">\n          <Box mb=\"20px\">\n            <FormLabel>Verification code</FormLabel>\n            <FormInput\n              autoFocus\n              placeholder=\"Enter the code\"\n              value={fields.confirmationCode}\n              id=\"confirmationCode\"\n              onChange={handleFieldChange}\n            />\n          </Box>\n          <Box mb=\"20px\">\n            <Button isLoading={loading} onClick={resendVerifyCode} style={{ border: 0 }}>\n              resend\n            </Button>\n          </Box>\n          <Button type=\"submit\" isLoading={loading} disabled={!validate()}>\n            Verify\n          </Button>\n        </Box>\n      </Form>\n    </Flex>\n  );\n}\n","import React, { useState } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport { API, Auth } from 'aws-amplify';\nimport Media from 'react-media';\nimport {\n  Button,\n  Form,\n  FormLabel,\n  FormLeyend,\n  LinkedText,\n  StyledText,\n  RegularText,\n  BooIcon,\n  BotsIcon,\n} from 'boss-ui';\nimport SplunkRum from '@splunk/otel-web';\nimport config from '../../config';\nimport { useAppContext } from '../../libs/context-lib';\nimport { onError } from '../../libs/error-lib';\nimport { useFormFields, useQuery } from '../../libs/hooks-lib';\nimport { FormInput } from '../../components';\nimport VerifyEmailForm from '../../components/VerifyEmailForm';\nimport { setUserHeaders } from '../../libs/utils-lib';\nimport { BOTS_TYPE } from '../../libs/constants';\nimport { getEventShortName } from '../../libs/event-lib';\n\nconst iconSize = 145;\n\nexport default function Login() {\n  const [fields, handleFieldChange] = useFormFields({\n    email: '',\n    password: '',\n  });\n  const [loading, setLoading] = useState(false);\n  const [showVerifyEmail, setShowVerifyEmail] = useState(false);\n  const { userSession, appType } = useAppContext();\n  const history = useHistory();\n  const labelName = getEventShortName(appType);\n\n  function validateForm() {\n    return fields.email.length > 0 && fields.password.length > 0;\n  }\n\n  const setDynamoUser = async (cognitoUser) => {\n    const registeredUser = await API.get('users', '/user');\n    if (!registeredUser.user) {\n      userSession(cognitoUser);\n      throw new Error('UserNotFoundInDynamo');\n    }\n    userSession({ ...cognitoUser, dynamoUser: registeredUser.user });\n    setUserHeaders({ ...cognitoUser, dynamoUser: registeredUser.user });\n    SplunkRum?.setGlobalAttributes({\n      'user.id': registeredUser.user.userId,\n      'user.email': registeredUser.user.email,\n      'user.username': registeredUser.user.displayName,\n    });\n  };\n\n  async function handleSubmit(event) {\n    event.preventDefault();\n    try {\n      setLoading(true);\n      const cognitoUser = await Auth.signIn(fields.email.toLowerCase(), fields.password);\n      await setDynamoUser(cognitoUser);\n    } catch (e) {\n      if (e.code === 'UserNotConfirmedException') {\n        setShowVerifyEmail(true);\n      } else if (e.message === 'UserNotFoundInDynamo') {\n        history.push('/firstLogin');\n      } else {\n        setLoading(false);\n        onError(e);\n      }\n    }\n  }\n\n  function renderConfirmationForm() {\n    return <VerifyEmailForm email={fields.email} password={fields.password} />;\n  }\n\n  function FederatedLogin() {\n    const query = useQuery();\n    const internalRedirect = query.get('redirect');\n    return (\n      <Media\n        queries={{\n          s: '(max-width: 615px)',\n        }}\n      >\n        {(screenSize) => (\n          <Flex justifyContent=\"center\">\n            <Flex width=\"100%\" flexDirection=\"column\" alignItems=\"center\">\n              <Flex justifyContent=\"center\" mt=\"100px\" mb=\"20px\">\n                <StyledText size=\"40px\" light>\n                  Welcome to {labelName}\n                </StyledText>\n              </Flex>\n              <Flex\n                flexDirection=\"column\"\n                alignItems=\"center\"\n                width={screenSize.s ? '90%' : '608px'}\n                height={!screenSize.s && '225px'}\n                style={{ border: '1px solid #373737' }}\n                px={screenSize.s ? '10px' : '80px'}\n                py=\"40px\"\n              >\n                <Flex pb=\"40px\">\n                  <RegularText style={{ color: '#d0d0d0', letterSpacing: '0px' }}>\n                    You’ll be redirected to Splunk’s general login page. Use your Splunk Username\n                    and Password to access {labelName}.\n                  </RegularText>\n                </Flex>\n                {!screenSize.s && (\n                  <Flex pb=\"40px\" style={{ position: 'absolute', transform: 'translateX(-303px)' }}>\n                    {appType === BOTS_TYPE.SOC ? (\n                      <BotsIcon size={iconSize} />\n                    ) : (\n                      <BooIcon size={iconSize} />\n                    )}\n                  </Flex>\n                )}\n                <Flex width={screenSize.s ? '80%' : '292px'}>\n                  <Button\n                    onClick={() =>\n                      window.location.assign(\n                        `${config.cognito.saml.IDP_LOGIN_URL}?identity_provider=${\n                          config.cognito.saml.IDP_NAME\n                        }&response_type=${config.cognito.saml.IDP_RESPONSE_TYPE}&client_id=${\n                          config.cognito.saml.APP_CLIENT_ID\n                        }&redirect_uri=${config.cognito.saml.REDIRECT_SIGN_IN}&scope=${\n                          config.cognito.saml.IDP_SCOPE\n                        }&state=${internalRedirect || '/'}`\n                      )\n                    }\n                  >\n                    GO TO SIGN IN\n                  </Button>\n                </Flex>\n              </Flex>\n            </Flex>\n          </Flex>\n        )}\n      </Media>\n    );\n  }\n\n  function renderForm() {\n    return (\n      <Flex justifyContent=\"center\">\n        <Box>\n          <Flex justifyContent=\"center\" mt=\"100px\" mb=\"16px\">\n            <StyledText size=\"40px\" light>\n              Sign In\n            </StyledText>\n          </Flex>\n          <Form>\n            <Flex>\n              <Box py=\"40px\" px=\"60px\" width=\"412px\">\n                <Box mb=\"20px\">\n                  <FormLabel>Email</FormLabel>\n                  <FormInput\n                    autoFocus\n                    placeholder=\"Enter your email\"\n                    type=\"email\"\n                    value={fields.email}\n                    onChange={handleFieldChange}\n                    id=\"email\"\n                  />\n                </Box>\n                <Box mb=\"20px\">\n                  <FormLabel>Password</FormLabel>\n                  <FormInput\n                    placeholder=\"Enter your password\"\n                    id=\"password\"\n                    value={fields.password}\n                    onChange={handleFieldChange}\n                    type=\"password\"\n                  />\n                </Box>\n                <Box mb=\"20px\">\n                  <Button\n                    id=\"login-button\"\n                    isLoading={loading}\n                    disabled={!validateForm()}\n                    type=\"submit\"\n                    onClick={handleSubmit}\n                  >\n                    Login\n                  </Button>\n                </Box>\n                <Flex justifyContent=\"center\">\n                  <FormLeyend>\n                    <LinkedText onClick={() => history.push('/recovery')}>\n                      Forgot your password?\n                    </LinkedText>\n                  </FormLeyend>\n                </Flex>\n              </Box>\n            </Flex>\n          </Form>\n          <Flex mt=\"20px\" justifyContent=\"center\">\n            <FormLeyend size=\"14px\">\n              Don’t have an account?{' '}\n              <LinkedText onClick={() => history.push('/signup')}>SIGN UP</LinkedText>\n            </FormLeyend>\n          </Flex>\n        </Box>\n      </Flex>\n    );\n  }\n\n  return config.cognito.SAML_LOGIN\n    ? FederatedLogin()\n    : showVerifyEmail\n    ? renderConfirmationForm()\n    : renderForm();\n}\n","import React, { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport { Flex, Box } from 'reflexbox';\nimport { Button, StyledText, FormLabel, FormLeyend, Form, LinkedText } from 'boss-ui';\nimport { FormInput } from '../../components';\nimport { useFormFields } from '../../libs/hooks-lib';\nimport { onError } from '../../libs/error-lib';\nimport VerifyEmailForm from '../../components/VerifyEmailForm';\n\nexport default function Signup() {\n  const [fields, handleFieldChange] = useFormFields({\n    email: '',\n    password: '',\n    confirmPassword: '',\n  });\n  const history = useHistory();\n  const [newUser, setNewUser] = useState(null);\n  const [isLoading, setIsLoading] = useState(false);\n\n  function validateForm() {\n    return (\n      fields.email.length > 0 &&\n      fields.password.length > 7 &&\n      fields.password === fields.confirmPassword\n    );\n  }\n\n  async function handleSubmit(event) {\n    event.preventDefault();\n    setIsLoading(true);\n    try {\n      const newUser = await Auth.signUp({\n        username: fields.email.toLowerCase(),\n        password: fields.password,\n      });\n      setIsLoading(false);\n      setNewUser(newUser);\n    } catch (e) {\n      onError(e);\n      setIsLoading(false);\n    }\n  }\n\n  function renderConfirmationForm() {\n    return <VerifyEmailForm email={fields.email} password={fields.password} />;\n  }\n\n  function renderForm() {\n    return (\n      <Flex justifyContent=\"center\">\n        <Box>\n          <Flex justifyContent=\"center\" mt=\"100px\" mb=\"16px\">\n            <StyledText size=\"40px\" light>\n              Sign Up\n            </StyledText>\n          </Flex>\n          <Form onSubmit={handleSubmit}>\n            <Flex>\n              <Box py=\"40px\" px=\"60px\" width=\"412px\">\n                <Box mb=\"20px\">\n                  <FormLabel>Email</FormLabel>\n                  <FormInput\n                    autoFocus\n                    placeholder=\"Enter your email\"\n                    type=\"email\"\n                    value={fields.email}\n                    onChange={handleFieldChange}\n                    id=\"email\"\n                  />\n                </Box>\n                <Box mb=\"20px\">\n                  <FormLabel>Password</FormLabel>\n                  <FormInput\n                    id=\"password\"\n                    placeholder=\"Enter a password\"\n                    type=\"password\"\n                    value={fields.password}\n                    onChange={handleFieldChange}\n                  />\n                  <FormLeyend>\n                    *At least 8 characters length 1 symbol, 1 number, 1 uppercase, 1 lowercase\n                  </FormLeyend>\n                </Box>\n                <Box mb=\"20px\">\n                  <FormLabel>Confirm Password</FormLabel>\n                  <FormInput\n                    id=\"confirmPassword\"\n                    placeholder=\"Re enter your password\"\n                    type=\"password\"\n                    value={fields.confirmPassword}\n                    onChange={handleFieldChange}\n                  />\n                </Box>\n                <Button isLoading={isLoading} disabled={!validateForm()} type=\"submit\">\n                  SIGN UP\n                </Button>\n              </Box>\n            </Flex>\n          </Form>\n          <Flex justifyContent=\"center\" mt=\"20px\">\n            <FormLeyend size=\"14px\">\n              Already have an account?{' '}\n              <LinkedText onClick={() => history.push('/login')}>SIGN IN</LinkedText>\n            </FormLeyend>\n          </Flex>\n        </Box>\n      </Flex>\n    );\n  }\n\n  return <>{newUser === null ? renderForm() : renderConfirmationForm()}</>;\n}\n","import React, { useEffect } from 'react';\nimport { Auth, API } from 'aws-amplify';\nimport { useHistory } from 'react-router-dom';\nimport { Flex } from 'reflexbox';\nimport { LoaderIcon } from 'boss-ui';\nimport SplunkRum from '@splunk/otel-web';\nimport config from '../../config';\nimport { onError } from '../../libs/error-lib';\nimport { useQuery } from '../../libs/hooks-lib';\nimport { setUserHeaders, formDataBody } from '../../libs/utils-lib';\nimport { useAppContext } from '../../libs/context-lib';\nimport { formatLoggedInUser } from '../../libs/cognito-lib';\n\nconst bodyObject = {\n  grant_type: 'authorization_code',\n  code: null,\n  client_id: config.cognito.saml.APP_CLIENT_ID,\n  redirect_uri: config.cognito.saml.REDIRECT_SIGN_IN,\n};\n\nfunction LoginSuccess() {\n  const { userSession, appType } = useAppContext();\n  const history = useHistory();\n  const query = useQuery();\n\n  const setDynamoUser = async (cognitoUser) => {\n    const registeredUser = await API.get('users', '/user');\n    if (!registeredUser.user) {\n      userSession(cognitoUser);\n      throw new Error('UserNotFoundInDynamo');\n    }\n    userSession({ ...cognitoUser, dynamoUser: registeredUser.user });\n    setUserHeaders({ ...cognitoUser, dynamoUser: registeredUser.user });\n    SplunkRum?.setGlobalAttributes({\n      'user.id': registeredUser.user.userId,\n      'user.email': registeredUser.user.email,\n      'user.username': registeredUser.user.displayName,\n    });\n  };\n\n  useEffect(() => {\n    const validateUserSession = async () => {\n      try {\n        const authCode = query.get('code');\n        const internalRedirect = query.get('state');\n        if (!authCode) {\n          throw new Error('Missing login session code');\n        }\n        bodyObject.code = authCode;\n        const tokensRq = await fetch(`https://${config.cognito.saml.DOMAIN}/oauth2/token`, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',\n          },\n          body: formDataBody(bodyObject),\n        });\n        const tokens = await tokensRq.json();\n        const { id_token, refresh_token } = tokens;\n        if (!id_token || !refresh_token) {\n          throw new Error('Invalid Id or refresh token');\n        }\n        await Auth.federatedSignIn(\n          `cognito-idp.${config.cognito.REGION}.amazonaws.com/${config.cognito.saml.USER_POOL_ID}`,\n          {\n            token: id_token,\n            expires_at: 120 * 1000 + new Date().getTime(), // the expiration timestamp\n          }\n        );\n        // this token will be used for refresh proccess\n        localStorage.setItem('rt', refresh_token);\n        // set user in the app state\n        const loggedUser = formatLoggedInUser(await Auth.currentAuthenticatedUser());\n        await setDynamoUser(loggedUser);\n        history.push(internalRedirect);\n      } catch (e) {\n        if (e.message === 'UserNotFoundInDynamo') {\n          history.push('/firstLogin');\n        } else {\n          onError(e);\n          history.push('/login');\n        }\n      }\n    };\n\n    const setUserSession = async () => {\n      try {\n        // Check for user session before validating session by auth code\n        const loggedUser = formatLoggedInUser(await Auth.currentAuthenticatedUser());\n        await setDynamoUser(loggedUser);\n        history.push('/');\n      } catch (e) {\n        if (e.message === 'UserNotFoundInDynamo') {\n          history.push('/firstLogin');\n          return;\n        }\n        validateUserSession();\n      }\n    };\n\n    setUserSession();\n  }, []);\n\n  return (\n    <Flex mt=\"15%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n      <LoaderIcon appType={appType} />\n    </Flex>\n  );\n}\nexport default LoginSuccess;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport debounce from 'lodash/debounce';\nimport get from 'lodash/get';\nimport { Button, Form, FormLabel, StyledText, Tooltip, QuestionCircleIcon, RegularText, ConfirmationModal } from 'boss-ui';\nimport Api from '../../api';\nimport { FormInput } from '../../components';\nimport { useFormFields } from '../../libs/hooks-lib';\nimport { useAppContext } from '../../libs/context-lib';\nimport { onError } from '../../libs/error-lib';\nimport { DISPLAY_NAME_REGEXP } from '../../libs/constants';\nimport { setUserHeaders } from '../../libs/utils-lib';\n\nconst API = new Api();\n\nexport default function Account() {\n  const [fields, handleFieldChange] = useFormFields({\n    displayName: '',\n  });\n  const [isLoading, setIsLoading] = useState(false);\n  const [availableName, setNameAvailable] = useState(true);\n  const { user, userSession } = useAppContext();\n  const currentName = get(user, 'dynamoUser.displayName', '');\n  const [searchLoading, setSearchLoading] = useState(true);\n  const [confirmationModalVisible, setConfirmationModalVisible] = useState(false);\n\n  const history = useHistory();\n  const validateForm = () =>\n    availableName &&\n    fields.displayName.match(DISPLAY_NAME_REGEXP) &&\n    currentName !== fields.displayName;\n\n  const checkDisplayName = async (name) => {\n    try {\n      const data = await API.get('users', '/users/check-displayname', {\n        queryStringParameters: {\n          q: name,\n        },\n      });\n      setNameAvailable(data.user.available);\n    } catch (e) {\n      onError(e);\n      setNameAvailable(false);\n    } finally {\n      setSearchLoading(false);\n    }\n  };\n\n  const delayedSearch = useCallback(\n    debounce((q) => checkDisplayName(q), 300),\n    []\n  );\n\n  const onNameChange = (e) => {\n    handleFieldChange(e);\n    if (e.target.value === currentName) {\n      setSearchLoading(true);\n      return;\n    }\n    if (e.target.value.length > 2) {\n      setSearchLoading(true);\n      delayedSearch(e.target.value);\n    }\n  };\n\n  const handleUserAttributesSubmit = async (event) => {\n    event.preventDefault();\n    setIsLoading(true);\n    try {\n      const editedUser = await API.patch('users', '/user', {\n        body: {\n          displayName: fields.displayName,\n        },\n      });\n      userSession((u) => ({\n        ...u,\n        dynamoUser: {\n          ...u.dynamoUser,\n          displayName: editedUser.user.displayName,\n          slug: editedUser.user.slug,\n        },\n      }));\n      setUserHeaders({ dynamoUser: editedUser.user, ...user });\n      history.push('/');\n    } catch (err) {\n      onError(err);\n      setIsLoading(false);\n    }\n  };\n\n  const deleteAccount = async () => {\n    setConfirmationModalVisible(false);\n    try {\n      await API.del('users', `/user`);\n      history.push('/logout');\n    } catch (e) {\n      onError(e);\n    }\n  };\n\n  useEffect(() => {\n    if (!user.dynamoUser) {\n      history.push('/');\n    }\n    handleFieldChange({\n      target: {\n        value: currentName,\n        id: 'displayName',\n      },\n    });\n  }, []);\n\n  return (\n    <>\n      <Flex justifyContent=\"center\">\n        <Box>\n          <Flex justifyContent=\"center\" mt=\"100px\" mb=\"16px\">\n            <StyledText size=\"24px\" medium>\n              Account Settings\n            </StyledText>\n          </Flex>\n          <Form>\n            <Flex>\n              <Box py=\"40px\" px=\"60px\" width=\"412px\">\n                {/* Box with relative position to get question mark stuck to the input */}\n                <Box mb=\"20px\" style={{ position: 'relative' }}>\n                  <FormLabel>Display Name</FormLabel>\n                  <FormInput\n                    autoFocus\n                    placeholder=\"User display name\"\n                    value={fields.displayName}\n                    onChange={onNameChange}\n                    id=\"displayName\"\n                    validate={fields.displayName}\n                    validating={searchLoading}\n                    available={availableName}\n                    pattern={DISPLAY_NAME_REGEXP}\n                    unavailableMessage=\"This name was already taken!\"\n                    invalidPatternMessage=\"From 3 to 30 length, spaces, a-z, 0-9 and _ allowed\"\n                    validMessage=\"Name is available\"\n                  />\n                  <Flex\n                    data-tip\n                    data-for=\"displayName\"\n                    style={{\n                      position: 'absolute',\n                      right: '-30px',\n                      top: '28px',\n                    }}\n                  >\n                    <QuestionCircleIcon />\n                  </Flex>\n                  <Tooltip id=\"displayName\">\n                    You must choose a display name to continue. Note that your display name may be\n                    visible to other participants so choose a name that protects your identity if\n                    remaining anonymous is important to you. (3 characters at least, alphanumerics,\n                    spaces and underscores allowed)\n                  </Tooltip>\n                </Box>\n                <Flex ml=\"auto\" width={1}>\n                  <Box width={1}>\n                    <Button\n                      onClick={handleUserAttributesSubmit}\n                      isLoading={isLoading || searchLoading}\n                      disabled={!validateForm()}\n                    >\n                      SAVE\n                    </Button>\n                  </Box>\n                </Flex>\n                <Flex ml=\"auto\" mt=\"10px\" width={1}>\n                  <Box width={1}>\n                    <Button onClick={() => setConfirmationModalVisible(true)} danger>\n                      DELETE ACCOUNT\n                    </Button>\n                  </Box>\n                </Flex>\n              </Box>\n            </Flex>\n          </Form>\n        </Box>\n      </Flex>\n      {confirmationModalVisible && (\n        <ConfirmationModal\n          dangerDialog\n          onCancel={() => setConfirmationModalVisible(false)}\n          onAccept={deleteAccount}\n          acceptLabel=\"DELETE\"\n        >\n          <RegularText>\n            Are you sure you want to delete your account?\n            <br />\n            All your data will be deleted!.\n          </RegularText>\n        </ConfirmationModal>\n      )}\n    </>\n  );\n}\n","import React from 'react';\nimport './NotFound.css';\n\nexport default function NotFound() {\n  return (\n    <div className=\"NotFound\">\n      <h3>Sorry, page not found!</h3>\n    </div>\n  );\n}\n","import React, { useState } from 'react';\nimport { Flex, Box } from 'reflexbox';\nimport { Auth } from 'aws-amplify';\nimport { useHistory } from 'react-router-dom';\nimport { Button, Form, FormLabel, FormLeyend, LinkedText } from 'boss-ui';\nimport { FormInput } from '../../components';\nimport { useFormFields } from '../../libs/hooks-lib';\nimport { onError } from '../../libs/error-lib';\n\nexport default function PasswordRecovery() {\n  const [fields, setFields] = useFormFields({\n    email: '',\n    verificationCode: '',\n    newPassword: '',\n    newPasswordConfirmation: '',\n  });\n  const [isLoading, setLoading] = useState(false);\n  const [codeSent, setCodeSent] = useState(false);\n  const history = useHistory();\n\n  async function handleSendRecoveryCode(e) {\n    e.preventDefault();\n    setLoading(true);\n    try {\n      await Auth.forgotPassword(fields.email);\n      setCodeSent(true);\n    } catch (e) {\n      onError(e);\n    } finally {\n      setLoading(false);\n    }\n  }\n\n  async function handleResetPassword(e) {\n    e.preventDefault();\n    setLoading(true);\n    try {\n      await Auth.forgotPasswordSubmit(fields.email, fields.verificationCode, fields.newPassword);\n      history.push('/');\n    } catch (e) {\n      onError(e);\n      setLoading(false);\n    }\n  }\n\n  const validateNewPassword = () =>\n    fields.verificationCode &&\n    fields.newPassword.length > 7 &&\n    fields.newPassword === fields.newPasswordConfirmation;\n\n  function MailForm() {\n    return (\n      <Flex justifyContent=\"center\" align=\"center\" mt=\"100px\" mb=\"16px\">\n        <Box>\n          <Form onSubmit={handleSendRecoveryCode}>\n            <Flex>\n              <Box px=\"60px\" py=\"40px\" width=\"412px\">\n                <Box mb=\"20px\">\n                  <FormLabel>Email</FormLabel>\n                  <FormInput\n                    autoFocus\n                    placeholder=\"Enter user email\"\n                    value={fields.email}\n                    id=\"email\"\n                    onChange={setFields}\n                    type=\"email\"\n                  />\n                </Box>\n                <Button type=\"submit\" isLoading={isLoading} disabled={fields.email.length < 5}>\n                  SEND RECOVERY CODE\n                </Button>\n              </Box>\n            </Flex>\n          </Form>\n          <Flex justifyContent=\"center\" mt=\"20px\">\n            <FormLeyend size=\"14px\">\n              Go back to <LinkedText onClick={() => history.push('/login')}>SIGN IN</LinkedText>\n            </FormLeyend>\n          </Flex>\n        </Box>\n      </Flex>\n    );\n  }\n\n  function NewPasswordForm() {\n    return (\n      <Flex justifyContent=\"center\" align=\"center\" mt=\"100px\" mb=\"16px\">\n        <Box>\n          <Form onSubmit={handleResetPassword}>\n            <Flex>\n              <Box px=\"60px\" py=\"40px\" width=\"412px\">\n                <Box mb=\"20px\">\n                  <FormLabel>Code</FormLabel>\n                  <FormInput\n                    autoFocus\n                    id=\"verificationCode\"\n                    placeholder=\"Enter verification code\"\n                    value={fields.verificationCode}\n                    onChange={setFields}\n                  />\n                </Box>\n                <Box mb=\"20px\">\n                  <FormLabel>New Password</FormLabel>\n                  <FormInput\n                    id=\"newPassword\"\n                    placeholder=\"Enter new password\"\n                    value={fields.newPassword}\n                    onChange={setFields}\n                    type=\"password\"\n                  />\n                  <FormLeyend>\n                    *At least 8 characters length 1 symbol, 1 number, 1 uppercase, 1 lowercase\n                  </FormLeyend>\n                </Box>\n                <Box mb=\"20px\">\n                  <FormLabel>Confirm Password</FormLabel>\n                  <FormInput\n                    id=\"newPasswordConfirmation\"\n                    placeholder=\"Confirm password\"\n                    value={fields.newPasswordConfirmation}\n                    onChange={setFields}\n                    type=\"password\"\n                  />\n                </Box>\n                <Button type=\"submit\" isLoading={isLoading} disabled={!validateNewPassword()}>\n                  RESET PASSWORD\n                </Button>\n              </Box>\n            </Flex>\n          </Form>\n        </Box>\n      </Flex>\n    );\n  }\n\n  return <>{codeSent ? NewPasswordForm() : MailForm()}</>;\n}\n","import React, { useEffect, useState } from 'react';\nimport { Box, Flex } from 'reflexbox';\nimport Media from 'react-media';\nimport get from 'lodash/get';\nimport { useHistory } from 'react-router-dom';\nimport Api from '../../api';\nimport { StyledText, Paginator } from 'boss-ui';\nimport { Card, CardSkeleton, ErrorBoundary, MalloryMessage } from '../../components';\nimport { useAppContext } from '../../libs/context-lib';\nimport { onError } from '../../libs/error-lib';\nimport { EVENT_TYPE, EVENT_ACCESS_TYPE } from '../../libs/constants';\nimport { useDynamoPaginator } from '../../libs/hooks-lib';\n\nconst EMPTY_LIST_MESSAGE = `Looks like you haven't completed any event or workshop.`;\n\nconst DEFAULT_PAGE_SIZE = 10;\nconst ZERO = 0;\nconst PAGE_STEP = 1;\n\nconst API = new Api();\n\nexport default function History() {\n  const [loading, setLoadingHistory] = useState(true);\n  const [historyEvents, setHistoryEvents] = useState([]);\n  const { setEvent } = useAppContext();\n  const [{ pages, currentPage }, paginate] = useDynamoPaginator();\n  const history = useHistory();\n\n  const getUserEvents = async (page = ZERO) => {\n    setLoadingHistory(true);\n    let lastEvaluatedKey;\n    if (page > ZERO) {\n      lastEvaluatedKey =\n        page > currentPage\n          ? pages[currentPage].nextPagePointer\n          : pages[currentPage].lastPagePointer;\n    }\n    try {\n      const rq = await API.get('users', '/user/events', {\n        queryStringParameters: {\n          pageSize: DEFAULT_PAGE_SIZE,\n          ...(lastEvaluatedKey && {\n            ...lastEvaluatedKey,\n          }),\n        },\n      });\n      setHistoryEvents(\n        rq.events.map((w) => ({\n          ...w,\n          eventType: w.model === EVENT_TYPE.WORKSHOP ? EVENT_TYPE.WORKSHOP : EVENT_TYPE.GAME,\n        }))\n      );\n      paginate(rq.pagination, page);\n      setLoadingHistory(false);\n    } catch (e) {\n      onError(e);\n    }\n  };\n\n  useEffect(() => {\n    getUserEvents();\n    return () => API.abortCurrentRequest();\n  }, []);\n\n  const onCardClicked = (event) => {\n    setEvent(event);\n    history.push(\n      `/history/${\n        event.eventType === EVENT_TYPE.WORKSHOP\n          ? `${event.workshopId}/workshop`\n          : `${event.eventId}/event`\n      }`\n    );\n  };\n\n  return (\n    <Media\n      queries={{\n        s: '(max-width: 759px)',\n        m: '(max-width: 900px)',\n      }}\n    >\n      {(matches) => (\n        <Box mx={matches.m ? '20px' : '10%'} mt=\"60px\" mb=\"5%\" textAlign=\"left\">\n          <Flex\n            mb=\"30px\"\n            alignItems=\"center\"\n            mx=\"15px\"\n            flexDirection={matches.s ? 'column-reverse' : 'row'}\n          >\n            <Flex alignSelf=\"start\">\n              <StyledText light size=\"28px\">\n                History\n              </StyledText>\n            </Flex>\n          </Flex>\n          <ErrorBoundary>\n            {loading ? (\n              <CardSkeleton style={{ marginLeft: '15px' }} />\n            ) : (\n              <Flex\n                flexDirection=\"row\"\n                justifyContent={matches.s ? 'center' : 'flex-start'}\n                alignItems=\"flex-start\"\n                flexWrap=\"wrap\"\n              >\n                {historyEvents.length === 0 ? (\n                  <Flex mx=\"15px\" width={1}>\n                    <MalloryMessage message={EMPTY_LIST_MESSAGE} />\n                  </Flex>\n                ) : (\n                  <>\n                    {historyEvents.map((e, idx) => {\n                      const key = get(e, 'id', idx);\n                      const title = get(e, 'name');\n                      return (\n                        <Flex\n                          key={key}\n                          index={idx}\n                          style={{\n                            minWidth: '330px',\n                            padding: '15px',\n                          }}\n                        >\n                          <Card\n                            {...e}\n                            stats={e.participant && e.participant.stats ? e.participant.stats : {}}\n                            history\n                            showDate\n                            restricted={\n                              e.accessType && e.accessType === EVENT_ACCESS_TYPE.RESTRICTED\n                            }\n                            title={title}\n                            onCardClick={() => onCardClicked(e)}\n                          />\n                        </Flex>\n                      );\n                    })}\n                    <Flex width={1} pr=\"20px\" justifyContent=\"center\" mt=\"20px\">\n                      <Paginator\n                        isNext={pages[currentPage] && pages[currentPage].nextPagePointer}\n                        onNext={() => getUserEvents(currentPage + PAGE_STEP)}\n                        isPrev={currentPage > 0}\n                        onPrev={() => getUserEvents(currentPage - PAGE_STEP)}\n                        paginating={loading}\n                        backgroundColor=\"transparent\"\n                      />\n                    </Flex>\n                  </>\n                )}\n              </Flex>\n            )}\n          </ErrorBoundary>\n        </Box>\n      )}\n    </Media>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport Media from 'react-media';\nimport { Flex, Box } from 'reflexbox';\nimport { Switch, useHistory } from 'react-router-dom';\nimport get from 'lodash/get';\nimport Api from '../../api';\nimport { onError } from '../../libs/error-lib';\nimport {\n  AuthenticatedRoute,\n  ConfirmationModal,\n  Menu,\n  Input,\n  RegularText,\n  StyledText,\n  UnregularButton,\n} from 'boss-ui';\nimport {\n  Card,\n  CardSkeleton,\n  ErrorBoundary,\n  RestrictedEvents,\n  ToggleButton,\n} from '../../components';\nimport { EVENT_TYPE, EVENT_DELIVERY } from '../../libs/constants';\nimport { useAppContext } from '../../libs/context-lib';\nimport { isOnDemandEventInsidePlayWindow } from '../../libs/event-lib';\nimport { scrollToHash } from '../../libs/utils-lib';\nimport History from '../History';\n\nconst EMPTY_LIST_MESSAGE = 'Coming soon...';\nconst MENU_ITEMS = [\n  { path: '/', elementId: '#top', label: 'HOME', exact: true, id: 'menuLinkHome' },\n  {\n    path: { pathname: '/', hash: '#play-now' },\n    label: 'PLAY NOW',\n    exact: true,\n    id: 'menuLinkHomePlayNow',\n  },\n  { path: { pathname: '/', hash: '#learn' }, label: 'LEARN', id: 'menuLinkLearn', exact: true },\n  {\n    path: { pathname: '/', hash: '#boss-events' },\n    label: 'BOSS EVENTS',\n    id: 'menuLinkEvents',\n    exact: true,\n  },\n  {\n    path: `/history`,\n    label: 'HISTORY',\n    id: 'menuLinkHistory',\n    exact: true,\n  },\n];\n\nconst API = new Api();\n\nexport default function Home() {\n  const [loadingEvents, setLoadingEvents] = useState(true);\n  const [loadingRestrictedEvents, setLoadingRestrictedEvents] = useState(true);\n  const [loadingOnDemandEvents, setLoadingOnDemandEvents] = useState(true);\n  const [onDemandEvents, setOnDemandEvents] = useState([]);\n  const [loadingWorkshops, setLoadingWorkshops] = useState(true);\n  const [filteredWorkshops, setFilteredWorkshops] = useState([]);\n  const [filteredEvents, setFilteredEvents] = useState([]);\n  const [filteredRestrictedEvents, setFilteredRestrictedEvents] = useState([]);\n  const [ignoreType, setIgnoreType] = useState(false);\n  const [hasUserScrolled, setHasUserScrolled] = useState(false);\n  const [inviteCodeModalVisible, setInviteCodeModalVisible] = useState(false);\n  const [inviteCodeValue, setInviteCodeValue] = useState('');\n  const [loadingInviteCodeEvent, setLoadingInviteCodeEvent] = useState(false);\n  const { appType, setEvent } = useAppContext();\n  const history = useHistory();\n\n  useEffect(() => {\n    const getOnDemandEvents = async () => {\n      setLoadingOnDemandEvents(true);\n      try {\n        const rq = await API.get('events', '/events', {\n          queryStringParameters: { accessType: EVENT_DELIVERY.ON_DEMAND },\n        });\n        const eventsWithType = rq.events.map((e) => ({ ...e, eventType: EVENT_TYPE.GAME }));\n        setOnDemandEvents(\n          ignoreType ? eventsWithType : eventsWithType.filter((e) => e.type === appType)\n        );\n      } catch (e) {\n        onError(e);\n      } finally {\n        setLoadingOnDemandEvents(false);\n      }\n    };\n    getOnDemandEvents();\n  }, [ignoreType]);\n\n  useEffect(() => {\n    const getRestrictedEvents = async () => {\n      setLoadingRestrictedEvents(true);\n      try {\n        const rq = await API.get('events', '/events', {\n          queryStringParameters: { accessType: 'RESTRICTED' },\n        });\n        const eventsWithType = rq.events.map((e) => ({ ...e, eventType: EVENT_TYPE.GAME }));\n        setFilteredRestrictedEvents(\n          ignoreType ? eventsWithType : eventsWithType.filter((e) => e.type === appType)\n        );\n      } catch (e) {\n        onError(e);\n      } finally {\n        setLoadingRestrictedEvents(false);\n      }\n    };\n    getRestrictedEvents();\n  }, [ignoreType]);\n\n  useEffect(() => {\n    const getEvents = async () => {\n      setLoadingEvents(true);\n      try {\n        const rq = await API.get('events', '/events');\n        const eventsWithType = rq.events.map((e) => ({ ...e, eventType: EVENT_TYPE.GAME }));\n        setFilteredEvents(\n          ignoreType ? eventsWithType : eventsWithType.filter((e) => e.type === appType)\n        );\n      } catch (e) {\n        onError(e);\n      } finally {\n        setLoadingEvents(false);\n      }\n    };\n    getEvents();\n  }, [ignoreType]);\n\n  useEffect(() => {\n    const getWorkshops = async () => {\n      setLoadingWorkshops(true);\n      try {\n        const rq = await API.get('workshops', '/workshops');\n        const workshopsWithType = rq.workshops.map((w) => ({\n          ...w,\n          eventType: EVENT_TYPE.WORKSHOP,\n        }));\n        setFilteredWorkshops(\n          ignoreType ? workshopsWithType : workshopsWithType.filter((w) => w.type === appType)\n        );\n      } catch (e) {\n        onError(e);\n      } finally {\n        setLoadingWorkshops(false);\n      }\n    };\n    getWorkshops();\n  }, [ignoreType]);\n\n  const onCardClicked = (event) => {\n    const enrolled = get(event, 'participant.enrolled', false);\n    if (event.eventType === EVENT_TYPE.WORKSHOP) {\n      setEvent({ ...event, eventId: event.workshopId });\n      history.push(\n        enrolled ? `/workshop/${event.workshopId}` : `/workshops/${event.workshopId}/detail`\n      );\n      return;\n    }\n    setEvent(event);\n    if (event.delivery === EVENT_DELIVERY.ON_DEMAND) {\n      // if event is still playable\n      if (\n        enrolled &&\n        isOnDemandEventInsidePlayWindow(get(event, 'participant.joinDate'), event.duration)\n      ) {\n        history.push(`/event/${event.eventId}`);\n        return;\n      }\n      // play again event\n      history.push(`/event/${event.eventId}/detail`);\n      return;\n    }\n    history.push(enrolled ? `/event/${event.eventId}` : `/event/${event.eventId}/detail`);\n  };\n\n  const onInviteCodeSubmit = async () => {\n    try {\n      setLoadingInviteCodeEvent(true);\n      const { inviteCode } = await API.get('events', `/invite-codes/${inviteCodeValue}`);\n      setLoadingInviteCodeEvent(false);\n      history.push(`/event/${inviteCode.eventId}/detail?invite_code=${inviteCodeValue}`);\n    } catch (e) {\n      setLoadingInviteCodeEvent(false);\n      onError(e);\n    }\n  };\n\n  // hash auto scroll\n  useEffect(() => {\n    if (!(loadingRestrictedEvents || loadingEvents || loadingWorkshops || loadingOnDemandEvents)) {\n      if (!hasUserScrolled) {\n        scrollToHash(window.location);\n      }\n    }\n  }, [\n    loadingEvents,\n    loadingOnDemandEvents,\n    loadingWorkshops,\n    loadingRestrictedEvents,\n    hasUserScrolled,\n  ]);\n\n  // user scroll event listener control\n  useEffect(() => {\n    const onUserScrolled = () => setHasUserScrolled(true);\n    window.addEventListener('scroll', onUserScrolled);\n    window.addEventListener('menu-fired-scroll', onUserScrolled);\n    return () => {\n      window.removeEventListener('scroll', onUserScrolled);\n      window.removeEventListener('menu-fired-scroll', onUserScrolled);\n    };\n  }, []);\n\n  return (\n    <>\n      <div id=\"#top\" style={{ position: 'absolute', top: 0 }} />\n      <Menu menuItems={MENU_ITEMS} />\n      <Media\n        queries={{\n          xs: '(max-width: 500px)',\n          s: '(max-width: 759px)',\n          m: '(max-width: 900px)',\n          l: '(max-width: 1171px)',\n        }}\n      >\n        {(matches) => (\n          <>\n            <Switch>\n              <AuthenticatedRoute path=\"/\" exact>\n                <>\n                  <Box mx=\"12%\" mt={matches.m ? '30px' : '60px'} mb=\"5%\" textAlign=\"left\">\n                    {/* display prop fixes margin issue with absolute elements in IOS */}\n                    <Flex alignItems=\"center\" style={{ display: 'inline-block' }}>\n                      <Flex\n                        justifyContent=\"center\"\n                        style={{\n                          position: 'absolute',\n                          top: matches.m ? '115px' : '145px',\n                          left: matches.m ? '12%' : '44%',\n                        }}\n                      >\n                        <UnregularButton onClick={() => setInviteCodeModalVisible(true)}>\n                          I have a code\n                        </UnregularButton>\n                      </Flex>\n                      <Flex\n                        style={{\n                          position: 'absolute',\n                          top: matches.m ? '120px' : '150px',\n                          right: matches.m ? '20px' : '12%',\n                        }}\n                      >\n                        <RegularText alignItems=\"flex-end\">\n                          Show All Events\n                          <ToggleButton\n                            isOn={ignoreType}\n                            onToggle={() => setIgnoreType((prev) => !prev)}\n                          />\n                        </RegularText>\n                      </Flex>\n                    </Flex>\n\n                    {/* vertical space for smaller screens padding */}\n                    <Flex mt={matches.m ? '10px' : '0px'} />\n\n                    {(filteredRestrictedEvents.length > 0 || loadingRestrictedEvents) && (\n                      <Flex\n                        className=\"Home-ContainerSpecialEvents\"\n                        flexDirection=\"column\"\n                        mb=\"50px\"\n                      >\n                        <Flex alignSelf=\"start\" mb=\"30px\" id=\"#private\">\n                          <StyledText light size=\"28px\">\n                            Private Events\n                          </StyledText>\n                        </Flex>\n                        <ErrorBoundary>\n                          <RestrictedEvents\n                            restrictedEvents={filteredRestrictedEvents}\n                            loadingRestrictedEvents={loadingRestrictedEvents}\n                            onCardClick={onCardClicked}\n                          />\n                        </ErrorBoundary>\n                      </Flex>\n                    )}\n\n                    <Flex mb=\"60px\" id=\"play-now\" flexDirection=\"column\">\n                      <Flex\n                        mb=\"30px\"\n                        alignItems=\"center\"\n                        flexDirection={matches.s ? 'column-reverse' : 'row'}\n                      >\n                        <Flex alignSelf=\"start\">\n                          <StyledText light size=\"28px\">\n                            Play Now\n                          </StyledText>\n                        </Flex>\n                      </Flex>\n                      <ErrorBoundary>\n                        {loadingOnDemandEvents ? (\n                          <CardSkeleton />\n                        ) : (\n                          <Flex\n                            flexDirection=\"row\"\n                            justifyContent={matches.s ? 'center' : 'flex-start'}\n                            alignItems=\"flex-start\"\n                            flexWrap=\"wrap\"\n                            className=\"Home-ContainerPlayNowEvents\"\n                          >\n                            {onDemandEvents.length === 0 ? (\n                              <Flex mx=\"15px\">\n                                <RegularText alignItems=\"center\" width=\"max-content\">\n                                  {EMPTY_LIST_MESSAGE}\n                                </RegularText>\n                              </Flex>\n                            ) : (\n                              <>\n                                {onDemandEvents.map((e, idx) => {\n                                  const key = get(e, 'scenarioId', idx);\n                                  const title = get(e, 'name');\n                                  const showDate = e && e.delivery === EVENT_DELIVERY.NORMAL;\n                                  return (\n                                    <Flex\n                                      key={key}\n                                      style={{\n                                        minWidth: '330px',\n                                        padding: '15px 30px 15px 0',\n                                      }}\n                                      className={`Home-CardFlex-${e.scenarioId}`}\n                                    >\n                                      <Card\n                                        {...e}\n                                        title={title}\n                                        onCardClick={() => onCardClicked(e)}\n                                        showDate={showDate}\n                                        joinDate={get(e, 'participant.joinDate')}\n                                        enrolled={get(e, 'participant.enrolled')}\n                                      />\n                                    </Flex>\n                                  );\n                                })}\n                              </>\n                            )}\n                          </Flex>\n                        )}\n                      </ErrorBoundary>\n                    </Flex>\n\n                    <Flex mb=\"60px\" id=\"learn\" flexDirection=\"column\">\n                      <Flex\n                        mb=\"30px\"\n                        alignItems=\"center\"\n                        flexDirection={matches.s ? 'column-reverse' : 'row'}\n                      >\n                        <Flex alignSelf=\"start\">\n                          <StyledText light size=\"28px\">\n                            Learn\n                          </StyledText>\n                        </Flex>\n                      </Flex>\n                      <ErrorBoundary>\n                        {loadingWorkshops ? (\n                          <CardSkeleton />\n                        ) : (\n                          <Flex\n                            flexDirection=\"row\"\n                            justifyContent={matches.s ? 'center' : 'flex-start'}\n                            alignItems=\"flex-start\"\n                            flexWrap=\"wrap\"\n                            className=\"Home-ContainerLearnEvents\"\n                          >\n                            {filteredWorkshops.length === 0 ? (\n                              <Flex mx=\"15px\">\n                                <RegularText alignItems=\"center\" width=\"max-content\">\n                                  {EMPTY_LIST_MESSAGE}\n                                </RegularText>\n                              </Flex>\n                            ) : (\n                              <>\n                                {filteredWorkshops.map((e, idx) => {\n                                  const key = get(e, 'id', idx);\n                                  const title = get(e, 'name');\n                                  return (\n                                    <Flex\n                                      key={key}\n                                      index={idx}\n                                      style={{\n                                        minWidth: '330px',\n                                        padding: '15px 30px 15px 0',\n                                      }}\n                                      className={`Home-CardFlex-${e.id}`}\n                                    >\n                                      <Card\n                                        {...e}\n                                        stats={get(e, 'participant.stats')}\n                                        title={title}\n                                        onCardClick={() => onCardClicked(e)}\n                                        enrolled={get(e, 'participant.enrolled')}\n                                      />\n                                    </Flex>\n                                  );\n                                })}\n                              </>\n                            )}\n                          </Flex>\n                        )}\n                      </ErrorBoundary>\n                    </Flex>\n\n                    <Flex mb=\"60px\" id=\"boss-events\" flexDirection=\"column\">\n                      <Flex\n                        mb=\"30px\"\n                        alignItems=\"center\"\n                        flexDirection={matches.s ? 'column-reverse' : 'row'}\n                      >\n                        <Flex alignSelf=\"start\">\n                          <StyledText light size=\"28px\">\n                            Boss Events\n                          </StyledText>\n                        </Flex>\n                      </Flex>\n                      <ErrorBoundary>\n                        {loadingEvents ? (\n                          <CardSkeleton />\n                        ) : (\n                          <Flex\n                            flexDirection=\"row\"\n                            justifyContent={matches.s ? 'center' : 'flex-start'}\n                            alignItems=\"flex-start\"\n                            flexWrap=\"wrap\"\n                            className=\"Home-ContainerBossEvents\"\n                          >\n                            {filteredEvents.length === 0 ? (\n                              <Flex mx=\"15px\">\n                                <RegularText alignItems=\"center\" width=\"max-content\">\n                                  {EMPTY_LIST_MESSAGE}\n                                </RegularText>\n                              </Flex>\n                            ) : (\n                              <>\n                                {filteredEvents.map((e, idx) => {\n                                  const key = get(e, 'scenarioId', idx);\n                                  const title = get(e, 'name');\n                                  const showDate = e && e.delivery === EVENT_DELIVERY.NORMAL;\n                                  return (\n                                    <Flex\n                                      key={key}\n                                      style={{\n                                        minWidth: '330px',\n                                        padding: '15px 30px 15px 0',\n                                      }}\n                                      className={`Home-CardFlex-${e.scenarioId}`}\n                                    >\n                                      <Card\n                                        {...e}\n                                        title={title}\n                                        onCardClick={() => onCardClicked(e)}\n                                        showDate={showDate}\n                                        enrolled={get(e, 'participant.enrolled')}\n                                      />\n                                    </Flex>\n                                  );\n                                })}\n                              </>\n                            )}\n                          </Flex>\n                        )}\n                      </ErrorBoundary>\n                    </Flex>\n                  </Box>\n                  {inviteCodeModalVisible && (\n                    <ConfirmationModal\n                      acceptLabel=\"SUBMIT\"\n                      onCancel={() => setInviteCodeModalVisible(false)}\n                      onAccept={onInviteCodeSubmit}\n                      loading={loadingInviteCodeEvent}\n                    >\n                      <Box width=\"300px\">\n                        <RegularText light mediumWeight>\n                          Enter your code below to access the private event you were invited to.\n                        </RegularText>\n                        <Flex width={1} mt=\"16px\" mx=\"16px\">\n                          <Input\n                            height=\"25px\"\n                            style={{ width: '265px' }}\n                            placeholder=\"Enter Code\"\n                            value={inviteCodeValue}\n                            onChange={(e) => setInviteCodeValue(e.target.value)}\n                          />\n                        </Flex>\n                      </Box>\n                    </ConfirmationModal>\n                  )}\n                </>\n              </AuthenticatedRoute>\n              <AuthenticatedRoute path=\"/history\">\n                <History />\n              </AuthenticatedRoute>\n            </Switch>\n          </>\n        )}\n      </Media>\n    </>\n  );\n}\n","import { useEffect, useState } from 'react';\n\nexport const FEATURE_FLAG_ID_RESOURCE_ALLOCATION_V2 = 'RESOURCE_ALLOCATION_V2_FLAG';\nexport const FEATURE_FLAG_ID_HIDE_USER_SCORING = 'HIDE_USER_SCORING';\n\n\nexport const useGetFeatureFlag = (api, { featureFlagId }) => {\n  const [loading, setLoading] = useState(true);\n  const [flagConfig, setFlagConfig] = useState(null);\n  useEffect(() => {\n    async function fetchData() {\n      const result = await getFeatureFlag(api, featureFlagId);\n      console.log(result);\n      setFlagConfig(result);\n      setLoading(false);\n    }\n\n    fetchData().then();\n  }, [api, featureFlagId]);\n  return { loading, flagConfig };\n};\n\nconst assertFeatureFlagIdIsNotEmpty = (featureFlagId) => {\n  if (!featureFlagId) {\n    throw new Error('featureFlagId is required');\n  }\n};\n\nexport const getFeatureFlag = async (api, featureFlagId) => {\n  assertFeatureFlagIdIsNotEmpty(featureFlagId);\n  return await api.get('events', `/admin/feature-flags/${featureFlagId}`);\n};\n\nexport const postFeatureFlag = async (api, { featureFlagId, configPayload }) => {\n  assertFeatureFlagIdIsNotEmpty(featureFlagId);\n  if (!configPayload || typeof configPayload !== 'object') {\n    throw new Error('configPayload is required and must be an object');\n  }\n  return await api.post('events', `/admin/feature-flags/${featureFlagId}`, {\n    body: configPayload\n  });\n};\n\nexport const getResourceAllocationV2Flag = (api) => {\n  return getFeatureFlag(api, FEATURE_FLAG_ID_RESOURCE_ALLOCATION_V2);\n};\n\nexport const useGetResourceAllocationV2Flag = (api) => {\n  return useGetFeatureFlag(api, { featureFlagId: FEATURE_FLAG_ID_RESOURCE_ALLOCATION_V2 });\n};\n\nexport const shouldHideScoringForEventId = async (api, eventId) => {\n  try {\n    const resp = await getFeatureFlag(api, FEATURE_FLAG_ID_HIDE_USER_SCORING);\n    const eventIdsToHide = resp?.hiddenForEventIds ?? [];\n    return eventIdsToHide.includes(eventId);\n  } catch (error) {\n    console.error(error);\n    return false;\n  }\n}\n\nexport const useListAllEvents = (api, { pageSize = 200 } = {}) => {\n  const [loading, setLoading] = useState(true);\n  const [events, setEvents] = useState([]);\n  useEffect(() => {\n    async function fetchAllEvents() {\n      let lastEvaluatedKey = {};\n      const retrievedEvents = [];\n      let paginationHasMore = true;\n      while (paginationHasMore) {\n        const result = await api.get('events', `/admin/events`, {\n          queryStringParameters: {\n            pageSize,\n            ...lastEvaluatedKey\n          }\n        });\n        retrievedEvents.push(...result.events);\n        paginationHasMore = result?.pagination?.more || false;\n        lastEvaluatedKey = result.pagination.LastEvaluatedKey;\n      }\n      return retrievedEvents;\n    }\n\n    fetchAllEvents().then(eventsFromApi => {\n      setEvents(eventsFromApi);\n      setLoading(false);\n    });\n  }, [api, pageSize]);\n  return { loading, events };\n};","import React, { useEffect, useState, Suspense } from 'react';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport { Flex } from 'reflexbox';\nimport { isEmpty } from 'lodash';\nimport Api from '../../api';\nimport { onError } from '../../libs/error-lib';\nimport { useAppContext } from '../../libs/context-lib';\nimport {\n  LoaderIcon,\n  Modal,\n  CrossIcon,\n  EventCredits,\n} from 'boss-ui';\nimport { EventMenu } from '../../components';\nimport { sendWarning } from '../../libs/utils-lib';\nimport { EVENT_DELIVERY, USER_ROLES } from '../../libs/constants';\nimport EventFloatingBox from '../../components/event/EventFloatingBox';\nimport { getEventShortName } from '../../libs/event-lib';\nimport { shouldHideScoringForEventId } from 'boss-ui/src/FeatureFlagApiClient';\n\nconst EventPlayer = React.lazy(() =>\n  import('../EventPlayer').catch(() => {\n    sendWarning('force reload by chunk error on EventPlayer', true);\n  })\n);\n\nconst API = new Api();\n\nexport default function Event() {\n  const { user, userSession, event, setNavTitle, setEvent, appType } = useAppContext();\n  const [creditsModalVisible, setCreditsModalVisible] = useState(false);\n  const [loadingUserInEvent, setLoadingUser] = useState(true);\n  const [loadingEvent, setLoadingEvent] = useState(false);\n  const history = useHistory();\n  const routeMatch = useRouteMatch('/event/:eventId');\n  const isAdmin = user.role === USER_ROLES.ADMIN;\n\n  const eventId = routeMatch?.params?.eventId;\n  const [hideScoring, setHideScoring] = useState(false);\n\n  useEffect(() => {\n    if(eventId){\n      console.log(`Route event id: ${eventId}`);\n      shouldHideScoringForEventId(API, eventId).then((resp) => {\n        console.log(`Should hide scoring for event ${eventId}: ${resp}`);\n        setHideScoring(resp);\n      });\n    }\n  }, [eventId]);\n\n  useEffect(() => {\n    const getUserInEvent = async (eventId) => {\n      setLoadingUser(true);\n      try {\n        const rq = await API.get('users', `/user/events/${eventId}`);\n        userSession((userInSession) => ({\n          ...userInSession,\n          userInTeam: rq.team,\n          role: rq.participant.role,\n        }));\n        // if user does not have a team in a normal event redirect to join team page\n        if (rq.event && rq.event.delivery === EVENT_DELIVERY.NORMAL && isEmpty(rq.team)) {\n          history.push(`/event/${eventId}/team/join`);\n        }\n      } catch (e) {\n        onError(e);\n        history.push('/');\n      } finally {\n        setLoadingUser(false);\n      }\n    };\n    const getEventByPathId = async () => {\n      setLoadingEvent(true);\n      try {\n        const { event, participant } = await API.get(\n          'events',\n          `/events/${routeMatch.params.eventId}`\n        );\n        setEvent({ ...event, participant });\n        setNavTitle(event.name);\n        getUserInEvent(event.eventId);\n      } catch (e) {\n        onError(e);\n        history.push('/');\n      } finally {\n        setLoadingEvent(false);\n      }\n    };\n\n    if (event && event.scenarios) {\n      getUserInEvent(event.eventId);\n      setNavTitle(event.name);\n    } else {\n      getEventByPathId();\n    }\n\n    return () => {\n      setNavTitle(null);\n      userSession((u) => ({ ...u, userInTeam: undefined }));\n      API.abortCurrentRequest();\n    };\n  }, []);\n\n  if (loadingUserInEvent || loadingEvent) {\n    return (\n      <Flex mt=\"10%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n        <LoaderIcon appType={appType} />\n      </Flex>\n    );\n  }\n\n  const leaveEvent = async () => {\n    history.push('/');\n  };\n\n  return (\n    <Suspense\n      fallback={\n        <Flex mt=\"10%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n          <LoaderIcon appType={appType} />\n        </Flex>\n      }\n    >\n      <EventMenu\n        onLeaveEvent={leaveEvent}\n        onShowCredits={() => setCreditsModalVisible(true)}\n        hideScoring={hideScoring}\n      />\n      {creditsModalVisible && (\n        <Modal\n          onBackgroundClick={() => setCreditsModalVisible(false)}\n          margin=\"5% auto 5% auto\"\n          hideScroll\n        >\n          <Flex width={1} style={{ background: 'black' }}>\n            <Flex\n              p=\"4px\"\n              ml=\"auto\"\n              onClick={() => setCreditsModalVisible(false)}\n              style={{ cursor: 'pointer' }}\n            >\n              <CrossIcon />\n            </Flex>\n          </Flex>\n          <EventCredits contentUrl={event.eventCreditsMd} title={getEventShortName(event.type)} />\n        </Modal>\n      )}\n      <EventFloatingBox isAdmin={isAdmin} hideScoring={hideScoring} />\n      <EventPlayer hideScoring={hideScoring}/>\n    </Suspense>\n  );\n}\n","import React, { useEffect } from 'react';\nimport { Auth } from 'aws-amplify';\nimport { Flex } from 'reflexbox';\nimport { useHistory } from 'react-router-dom';\nimport { LoaderIcon } from 'boss-ui';\nimport { useAppContext } from '../../libs/context-lib';\nimport { deleteUserHeaders, sendWarning } from '../../libs/utils-lib';\nimport WebSocketClient from '../../components/websocket';\nimport { onError, getMessageError } from '../../libs/error-lib';\n\nexport default function Logout() {\n  const { userSession, appType } = useAppContext();\n  const history = useHistory();\n  const wsClient = new WebSocketClient();\n\n  useEffect(() => {\n    const handleLogout = async () => {\n      try {\n        await Auth.signOut();\n        userSession(null);\n        deleteUserHeaders();\n        wsClient.close();\n      } catch (err) {\n        onError(err);\n        sendWarning(`logout Error ${getMessageError(err)}`);\n      } finally {\n        history.push('/login');\n      }\n    };\n    handleLogout();\n  }, []);\n\n  return (\n    <Flex mt=\"15%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n      <LoaderIcon appType={appType} />\n    </Flex>\n  );\n}\n","import React, { useEffect, useState, useMemo } from 'react';\nimport Media from 'react-media';\nimport { Flex, Box } from 'reflexbox';\nimport get from 'lodash/get';\nimport { useRouteMatch, useHistory, useLocation } from 'react-router-dom';\nimport Api from '../../api';\nimport { LoaderIcon, Menu, Breadcrumb } from 'boss-ui';\nimport { EventDetails } from '../../components';\nimport { useAppContext } from '../../libs/context-lib';\nimport { useQuery, useBreadcrumb } from '../../libs/hooks-lib';\nimport { onError } from '../../libs/error-lib';\nimport { EVENT_ACCESS_TYPE, EVENT_DELIVERY, EVENT_TYPE } from '../../libs/constants';\n\nconst API = new Api();\n\nexport default function Details() {\n  const [loadingEvent, setLoadingEvent] = useState(true);\n  const { setEvent, event, appType } = useAppContext();\n  const eventRouteMatch = useRouteMatch('/event/:eventId/detail');\n  const history = useHistory();\n  const query = useQuery();\n  const inviteCodeFromQuery = query.get('invite_code');\n  const isOnDemand = event && event.delivery === EVENT_DELIVERY.ON_DEMAND;\n  const isRestricted = event && event.accessType === EVENT_ACCESS_TYPE.RESTRICTED;\n  const [breadcrumbs, setBreadcrumbs] = useBreadcrumb();\n  const location = useLocation();\n\n  const MENU_ITEMS = [\n    ...(isRestricted\n      ? [\n          {\n            path: `/event/${eventRouteMatch.params.eventId}/detail`,\n            label: 'HOME',\n            exact: true,\n            id: 'menuLinkHome',\n          },\n          {\n            path: { pathname: '/', hash: '#play-now' },\n            label: 'PLAY NOW',\n            id: 'menuLinkHomePlayNow',\n          },\n          { path: { pathname: '/', hash: '#learn' }, label: 'LEARN', id: 'menuLinkLearn' },\n          {\n            path: { pathname: '/', hash: '#boss-events' },\n            label: 'BOSS EVENTS',\n            id: 'menuLinkEvents',\n          },\n        ]\n      : [\n          {\n            path: '/',\n            label: 'HOME',\n            exact: true,\n            id: 'menuLinkHome',\n          },\n          {\n            path: isOnDemand\n              ? `/event/${eventRouteMatch.params.eventId}/detail`\n              : { pathname: '/', hash: '#play-now' },\n            label: 'PLAY NOW',\n            id: 'menuLinkHomePlayNow',\n          },\n          { path: { pathname: '/', hash: '#learn' }, label: 'LEARN', id: 'menuLinkLearn' },\n          {\n            path: isOnDemand\n              ? { pathname: '/', hash: '#boss-events' }\n              : `/event/${eventRouteMatch.params.eventId}/detail`,\n            label: 'BOSS EVENTS',\n            id: 'menuLinkEvents',\n          },\n        ]),\n    {\n      path: `/history`,\n      label: 'HISTORY',\n      id: 'menuLinkHistory',\n    },\n  ];\n\n  const routes = [\n    {\n      path: `/event/:eventId/detail`,\n      name: get(event, 'name', 'Current event'),\n      staticFather: isRestricted\n        ? {\n            name: 'Home',\n            action: () => history.push('/'),\n          }\n        : isOnDemand\n        ? {\n            name: 'Play Now',\n            action: () => history.push({ pathname: '/', hash: '#play-now' }),\n          }\n        : {\n            name: 'BOSS Events',\n            action: () => history.push({ pathname: '/', hash: '#boss-events' }),\n          },\n    },\n  ];\n\n  useEffect(() => {\n    const getEvent = async (id) => {\n      setLoadingEvent(true);\n      try {\n        const { event, participant } = await API.get('events', `/events/${id}`);\n        setEvent({ ...event, participant });\n      } catch (e) {\n        onError(e);\n        history.push('/');\n      } finally {\n        setLoadingEvent(false);\n      }\n    };\n\n    if (event && event.eventId === eventRouteMatch.params.eventId) {\n      setLoadingEvent(false);\n    } else {\n      getEvent(eventRouteMatch.params.eventId);\n    }\n  }, [eventRouteMatch.params.eventId]);\n\n  useMemo(() => {\n    setBreadcrumbs(routes, eventRouteMatch);\n  }, [location, event]);\n\n  if (loadingEvent) {\n    return (\n      <Flex mt=\"10%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n        <LoaderIcon appType={appType} />\n      </Flex>\n    );\n  }\n\n  return (\n    <>\n      <Menu menuItems={MENU_ITEMS} />\n      <Media\n        queries={{\n          s: '(max-width: 759px)',\n          m: '(max-width: 900px)',\n        }}\n      >\n        {(matches) => (\n          <Flex justifyContent=\"center\" width={1}>\n            <Box mx={matches.m ? '20px' : '10%'} mb=\"5%\" mt=\"30px\">\n              <Flex my=\"30px\">\n                <Breadcrumb crumbs={breadcrumbs} />\n              </Flex>\n              <EventDetails\n                id={event.eventId}\n                imageURL={event.imageURL}\n                type={event.type}\n                eventType={EVENT_TYPE.GAME}\n                name={event.name}\n                description={event.description}\n                confirmationNumberRequired={event.confirmationNumberRequired}\n                startDate={event.startDate}\n                endDate={event.endDate}\n                delivery={event.delivery}\n                activeStartDate={event.activeStartDate}\n                activeEndDate={event.activeEndDate}\n                registrationStatus={event.registrationStatus}\n                registrationOpenDate={event.registrationOpenDate}\n                registrationClosedDate={event.registrationClosedDate}\n                inviteCode={inviteCodeFromQuery}\n              />\n            </Box>\n          </Flex>\n        )}\n      </Media>\n    </>\n  );\n}\n","import React, { useEffect, useState, useMemo } from 'react';\nimport Media from 'react-media';\nimport { Flex } from 'reflexbox';\nimport get from 'lodash/get';\nimport { useRouteMatch, useHistory, useLocation } from 'react-router-dom';\nimport Api from '../../api';\nimport { LoaderIcon, Menu, Breadcrumb } from 'boss-ui';\nimport { HistoryDetails } from '../../components';\nimport { useAppContext } from '../../libs/context-lib';\nimport { useBreadcrumb } from '../../libs/hooks-lib';\nimport { onError } from '../../libs/error-lib';\nimport { EVENT_TYPE, EVENT_ACCESS_TYPE } from '../../libs/constants';\n\nconst API = new Api();\n\nexport default function Details() {\n  const location = useLocation();\n  const [loadingEvent, setLoadingEvent] = useState(true);\n  const { setEvent, event, appType } = useAppContext();\n  const eventRouteMatch = useRouteMatch('/history/:itemId/event');\n  const workshopRouteMatch = useRouteMatch('/history/:itemId/workshop');\n  let historyRouteMatch = eventRouteMatch;\n  let eventType = EVENT_TYPE.GAME;\n  let linkType = 'event';\n\n  if (!historyRouteMatch) {\n    eventType = EVENT_TYPE.WORKSHOP;\n    linkType = 'workshop';\n    historyRouteMatch = workshopRouteMatch;\n  }\n  const history = useHistory();\n  const [breadcrumbs, setBreadcrumbs] = useBreadcrumb();\n  const match = useRouteMatch(location.pathname);\n\n  const routes = [\n    {\n      path: `/history`,\n      name: 'HISTORY',\n    },\n    {\n      path: `/history/${historyRouteMatch.params.itemId}/${linkType}`,\n      name: get(event, 'name', ''),\n    },\n  ];\n\n  const MENU_ITEMS = [\n    { path: '/', label: 'HOME', exact: true, id: 'menuLinkHome' },\n    {\n      path: { pathname: '/', hash: '#play-now' },\n      label: 'PLAY NOW',\n      id: 'menuLinkHomePlayNow',\n    },\n    { path: { pathname: '/', hash: '#learn' }, label: 'LEARN', id: 'menuLinkLearn' },\n    {\n      path: { pathname: '/', hash: '#boss-events' },\n      label: 'BOSS EVENTS',\n      id: 'menuLinkEvents',\n    },\n    {\n      path: `/history/${historyRouteMatch.params.itemId}/${linkType}`,\n      label: 'HISTORY',\n      id: 'menuLinkHistory',\n    },\n  ];\n\n  useMemo(() => {\n    setBreadcrumbs(routes, match);\n  }, [location, event]);\n\n  useEffect(() => {\n    const getEvent = async (id) => {\n      setLoadingEvent(true);\n      try {\n        if (eventType === EVENT_TYPE.GAME) {\n          const rq = await API.get('events', `/events/${id}`);\n          setEvent(rq.event);\n        } else {\n          const rq = await API.get('workshops', `/workshops/${id}`);\n          setEvent(rq.workshop);\n        }\n      } catch (e) {\n        onError(e);\n        history.push('/history');\n      } finally {\n        setLoadingEvent(false);\n      }\n    };\n\n    if (event) {\n      setLoadingEvent(false);\n    } else {\n      getEvent(historyRouteMatch.params.itemId);\n    }\n  }, [historyRouteMatch]);\n\n  if (loadingEvent) {\n    return (\n      <Flex mt=\"10%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n        <LoaderIcon appType={appType}/>\n      </Flex>\n    );\n  }\n\n  return (\n    <>\n      <Menu menuItems={MENU_ITEMS} />\n      <Media\n        queries={{\n          s: '(max-width: 759px)',\n          m: '(max-width: 900px)',\n        }}\n      >\n        {(matches) => (\n          <Flex width={1} justifyContent=\"center\">\n            <Flex\n              mx={matches.m ? '20px' : '10%'}\n              mb=\"5%\"\n              mt=\"30px\"\n              justifyContent=\"center\"\n              width=\"924px\"\n              flexDirection=\"column\"\n            >\n              <Flex my=\"30px\" width={1 / 2}>\n                <Breadcrumb crumbs={breadcrumbs} />\n              </Flex>\n              <HistoryDetails\n                id={event.model === EVENT_TYPE.WORKSHOP ? event.workshopId : event.eventId}\n                type={event.type}\n                eventType={\n                  event.model === EVENT_TYPE.WORKSHOP ? EVENT_TYPE.WORKSHOP : EVENT_TYPE.GAME\n                }\n                name={event.name}\n                description={event.description}\n                startDate={event.startDate}\n                delivery={event.delivery}\n                isRestrictedEvent={event.accessType === EVENT_ACCESS_TYPE.RESTRICTED}\n                duration={event.duration}\n                scenarios={event.scenarios}\n                scenariosScores={event.scenariosScores}\n                globalTeamsCount={event.globalTeamsCount}\n              />\n            </Flex>\n          </Flex>\n        )}\n      </Media>\n    </>\n  );\n}\n","import React, { useEffect, useState, useMemo } from 'react';\nimport Media from 'react-media';\nimport { Flex, Box } from 'reflexbox';\nimport get from 'lodash/get';\nimport { useRouteMatch, useHistory, useLocation } from 'react-router-dom';\nimport Api from '../../api';\nimport { LoaderIcon, Menu, Breadcrumb } from 'boss-ui';\nimport { EventDetails } from '../../components';\nimport { useAppContext } from '../../libs/context-lib';\nimport { useQuery, useBreadcrumb } from '../../libs/hooks-lib';\nimport { onError } from '../../libs/error-lib';\nimport { EVENT_TYPE } from '../../libs/constants';\n\nconst API = new Api();\n\nexport default function Details() {\n  const [loadingEvent, setLoadingEvent] = useState(true);\n  const { setEvent, event, appType } = useAppContext();\n  const workshopRouteMatch = useRouteMatch('/workshops/:eventId/detail');\n  const history = useHistory();\n  const query = useQuery();\n  const inviteCodeFromQuery = query.get('invite_code');\n  const [breadcrumbs, setBreadcrumbs] = useBreadcrumb();\n  const location = useLocation();\n\n  const MENU_ITEMS = [\n    { path: '/', label: 'HOME', exact: true, id: 'menuLinkHome' },\n    {\n      path: { pathname: '/', hash: '#play-now' },\n      label: 'PLAY NOW',\n      id: 'menuLinkHomePlayNow',\n    },\n    {\n      path: `/workshops/${workshopRouteMatch.params.eventId}/detail`,\n      label: 'LEARN',\n      id: 'menuLinkLearn',\n    },\n    {\n      path: { pathname: '/', hash: '#boss-events' },\n      label: 'BOSS EVENTS',\n      id: 'menuLinkEvents',\n    },\n    {\n      path: `/history`,\n      label: 'HISTORY',\n      id: 'menuLinkHistory',\n    },\n  ];\n\n  const routes = [\n    {\n      path: `/workshops/:eventId/detail`,\n      name: get(event, 'name', 'Current workshop'),\n      staticFather: {\n        name: 'Learn',\n        action: () => history.push({ pathname: '/', hash: '#learn' }),\n      },\n    },\n  ];\n\n  useEffect(() => {\n    const getEvent = async (id) => {\n      setLoadingEvent(true);\n      try {\n        const rq = await API.get('workshops', `/workshops/${id}`);\n        setEvent(rq.workshop);\n      } catch (e) {\n        onError(e);\n        history.push('/');\n      } finally {\n        setLoadingEvent(false);\n      }\n    };\n\n    if (event) {\n      setLoadingEvent(false);\n    } else {\n      getEvent(workshopRouteMatch.params.eventId);\n    }\n  }, [workshopRouteMatch]);\n\n  useMemo(() => {\n    setBreadcrumbs(routes, workshopRouteMatch);\n  }, [location, event]);\n\n  if (loadingEvent) {\n    return (\n      <Flex mt=\"10%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n        <LoaderIcon appType={appType} />\n      </Flex>\n    );\n  }\n\n  return (\n    <>\n      <Menu menuItems={MENU_ITEMS} />\n      <Media\n        queries={{\n          s: '(max-width: 759px)',\n          m: '(max-width: 900px)',\n        }}\n      >\n        {(matches) => (\n          <Flex justifyContent=\"center\" width={1}>\n            <Box mx={matches.m ? '20px' : '10%'} mb=\"5%\" mt=\"30px\">\n              <Flex my=\"30px\">\n                <Breadcrumb crumbs={breadcrumbs} />\n              </Flex>\n              <EventDetails\n                id={event.workshopId}\n                imageURL={event.imageURL}\n                type={event.type}\n                eventType={EVENT_TYPE.WORKSHOP}\n                name={event.name}\n                description={event.description}\n                confirmationNumberRequired={event.confirmationNumberRequired}\n                activeStartDate={event.activeStartDate}\n                activeEndDate={event.activeEndDate}\n                startDate={event.startDate}\n                delivery={event.delivery}\n                registrationStatus={event.registrationStatus}\n                registrationOpenDate={event.registrationOpenDate}\n                registrationClosedDate={event.registrationClosedDate}\n                inviteCode={inviteCodeFromQuery}\n              />\n            </Box>\n          </Flex>\n        )}\n      </Media>\n    </>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport Media from 'react-media';\nimport { Flex, Box } from 'reflexbox';\nimport { useRouteMatch, useHistory } from 'react-router-dom';\nimport Api from '../../api';\nimport { LoaderIcon } from 'boss-ui';\nimport { Survey } from '../../components';\nimport { onError } from '../../libs/error-lib';\nimport { useQuery } from '../../libs/hooks-lib';\nimport { useAppContext } from '../../libs/context-lib';\n\nconst API = new Api();\n\nexport default function SurveyContainer() {\n  const { appType } = useAppContext();\n  const [loadingSurvey, setLoadingSurvey] = useState(true);\n  const [showSurvey, setShowSurvey] = useState(false);\n  const [survey, setSurvey] = useState(null);\n  const surveyRouteMatch = useRouteMatch('/survey/:surveyId');\n  const query = useQuery();\n  const campaignId = query.get('cid');\n  const viewMode = query.get('view');\n  const history = useHistory();\n\n  useEffect(() => {\n    const getSurvey = async (id) => {\n      setLoadingSurvey(true);\n      try {\n        const rq = await API.get('events', `/surveys/${id}`);\n        setSurvey(rq.survey);\n        setShowSurvey(true);\n      } catch (e) {\n        onError(e);\n        history.push('/');\n      } finally {\n        setLoadingSurvey(false);\n      }\n    };\n\n    getSurvey(surveyRouteMatch.params.surveyId);\n  }, [surveyRouteMatch.params.surveyId]);\n\n  if (loadingSurvey) {\n    return (\n      <Flex mt=\"10%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n        <LoaderIcon appType={appType} />\n      </Flex>\n    );\n  }\n\n  return (\n    <>\n      <Media\n        queries={{\n          s: '(max-width: 759px)',\n          m: '(max-width: 900px)',\n        }}\n      >\n        {(matches) => (\n          <Flex justifyContent=\"center\" width={1}>\n            <Box mx={matches.m ? '20px' : '10%'} mb=\"5%\" mt=\"30px\">\n              {showSurvey && (\n                <Flex mt=\"30px\">\n                  <Survey\n                    id={survey.surveyId}\n                    campaignId={campaignId}\n                    name={survey.name}\n                    description={survey.description}\n                    questions={survey.questions}\n                    onDismiss={() => setShowSurvey(false)}\n                    showOnDismiss={false}\n                    showTextIntro\n                    scrolled={viewMode === 'scroll'}\n                  />\n                </Flex>\n              )}\n            </Box>\n          </Flex>\n        )}\n      </Media>\n    </>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport isUndefined from 'lodash/isUndefined';\nimport isNull from 'lodash/isNull';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { Flex } from 'reflexbox';\nimport Api from '../../api';\nimport { LoaderIcon, RegularText } from 'boss-ui';\nimport { onError } from '../../libs/error-lib';\nimport { getHashObjectInURL } from '../../libs/utils-lib';\nimport config from '../../config';\n\nconst API = new Api();\n\nexport default function DiscordJoinRedirection() {\n  const [interval, setCallInterval] = useState(null);\n  const [loadingText, setLoadingText] = useState('Getting discord user');\n  const history = useHistory();\n  const location = useLocation();\n\n  useEffect(() => {\n    const getDiscordUser = async () => {\n      try {\n        const { access_token, state } = getHashObjectInURL(location);\n        const rq = await fetch(\n          `${config.discord.DISCORD_API_URL}/${config.discord.GET_DISCORD_USER_PATH}`,\n          {\n            method: 'GET',\n            withCredentials: true,\n            credentials: 'include',\n            headers: {\n              Authorization: `Bearer ${access_token}`,\n              'Content-Type': 'application/json',\n            },\n          }\n        );\n        const discordUser = await rq.json();\n        setLoadingText('Setting channel permissions');\n        const { redirectPath, teamId, inviteUrl } = JSON.parse(decodeURIComponent(state));\n        await API.post('teams', `/teams/${teamId}/join-discord`, {\n          body: { discordUserId: discordUser.id, discordAccessToken: access_token },\n        });\n        window.open(inviteUrl, '_blank');\n        history.push(`${redirectPath}`);\n      } catch (e) {\n        onError('Something went wrong');\n        history.push('/');\n      }\n    };\n\n    setCallInterval(\n      setTimeout(() => {\n        clearInterval(interval);\n        getDiscordUser();\n      }, 2000)\n    );\n\n    return () => {\n      if (!isUndefined(interval) && !isNull(interval)) {\n        clearInterval(interval);\n      }\n    };\n  }, []);\n\n  return (\n    <Flex mt=\"15%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n      <LoaderIcon />\n      <Flex mt=\"20px\" alignItems=\"center\" justifyContent=\"center\">\n        <RegularText>{loadingText}</RegularText>\n      </Flex>\n    </Flex>\n  );\n}\n","import { USER_ROLES } from './constants';\n\nexport function getUserChanges(baseUser, newUser) {\n  const changes = {};\n  if (newUser.name !== baseUser.name) {\n    changes.displayName = newUser.name;\n  }\n  if (newUser.isAdmin !== baseUser.isAdmin) {\n    changes.role = newUser.isAdmin ? USER_ROLES.ADMIN : USER_ROLES.PLAYER;\n  }\n  return changes;\n}\n\nexport function getUserRoleInEvent(dynamoUser = {}, eventRole) {\n  if (dynamoUser.role === USER_ROLES.SUPERADMIN) {\n    return USER_ROLES.SUPERADMIN;\n  }\n  return eventRole;\n}\n\nexport function validateCognitoUserExists(user) {\n  if (!user) {\n    return false;\n  }\n  return true;\n}\n\nexport function validateDynamoUserExists(user) {\n  if (!user || !user.dynamoUser) {\n    return false;\n  }\n  return true;\n}\n\nexport function validateUserSession(user) {\n  return validateCognitoUserExists(user) && validateDynamoUserExists(user);\n}\n","import React, { Suspense } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { Flex } from 'reflexbox';\nimport { UnauthenticatedRoute, AuthenticatedRoute, LoaderIcon } from 'boss-ui';\nimport FirstLogin from './containers/FirstSignIn';\nimport Login from './containers/Login';\nimport Signup from './containers/Signup';\nimport LoginSuccess from './containers/LoginSuccess';\nimport Account from './containers/Account';\nimport NotFound from './containers/NotFound';\nimport PasswordRecovery from './containers/PasswordRecovery';\nimport Home from './containers/Home';\nimport Event from './containers/Event';\nimport Logout from './containers/Logout';\nimport EventDetails from './containers/EventDetails';\nimport HistoryDetails from './containers/HistoryDetails';\nimport WorkshopDetails from './containers/WorkshopDetails';\nimport Survey from './containers/Survey';\nimport DiscordJoinRedirection from './containers/DiscordJoinRedirection';\nimport { sendWarning } from './libs/utils-lib';\nimport { useAppContext } from './libs/context-lib';\nimport {\n  validateCognitoUserExists,\n  validateUserSession,\n  validateDynamoUserExists,\n} from './libs/user-lib';\nimport config from './config';\n\nconst Workshop = React.lazy(() =>\n  import('./containers/Workshop').catch(() => {\n    sendWarning('force reload by chunk error on Workshop', true);\n  })\n);\n\nexport default function Routes() {\n  const { user, appType } = useAppContext();\n  const isUserSessionValid = () => validateUserSession(user);\n  const isCognitoUserValid = () => validateCognitoUserExists(user);\n  const isBossUserValid = () => validateDynamoUserExists(user);\n\n  return (\n    <Switch>\n      <AuthenticatedRoute path=\"/event/:eventId?/detail\" exact validateSession={isUserSessionValid}>\n        <EventDetails />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute path=\"/event/:eventId?\" validateSession={isUserSessionValid}>\n        <Event />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute\n        path=\"/workshops/:eventId?/detail\"\n        validateSession={isUserSessionValid}\n        exact\n      >\n        <WorkshopDetails />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute\n        path=\"/history/:eventId?/workshop\"\n        validateSession={isUserSessionValid}\n        exact\n      >\n        <HistoryDetails />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute\n        path=\"/history/:eventId?/event\"\n        validateSession={isUserSessionValid}\n        exact\n      >\n        <HistoryDetails />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute path=\"/survey/:surveyId?\" exact>\n        <Survey />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute path=\"/workshop/:workshopId?\" validateSession={isUserSessionValid}>\n        <Suspense\n          fallback={\n            <Flex mt=\"10%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n              <LoaderIcon appType={appType} />\n            </Flex>\n          }\n        >\n          <Workshop />\n        </Suspense>\n      </AuthenticatedRoute>\n      <AuthenticatedRoute validateSession={isCognitoUserValid} path=\"/firstLogin\">\n        <FirstLogin />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute path=\"/discordJoin\" validateSession={isUserSessionValid}>\n        <DiscordJoinRedirection />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute path=\"/account\" validateSession={isUserSessionValid}>\n        <Account />\n      </AuthenticatedRoute>\n      <Route path=\"/successLogin\">\n        <LoginSuccess />\n      </Route>\n      <UnauthenticatedRoute path=\"/login\" exact validateSession={isCognitoUserValid}>\n        <Login />\n      </UnauthenticatedRoute>\n      {!config.cognito.SAML_LOGIN && (\n        <UnauthenticatedRoute path=\"/signup\" exact validateSession={isCognitoUserValid}>\n          <Signup />\n        </UnauthenticatedRoute>\n      )}\n      <UnauthenticatedRoute path=\"/recovery\" exact validateSession={isCognitoUserValid}>\n        <PasswordRecovery />\n      </UnauthenticatedRoute>\n      <AuthenticatedRoute path=\"/logout\" exact validateSession={isCognitoUserValid}>\n        <Logout />\n      </AuthenticatedRoute>\n      <AuthenticatedRoute path=\"/\" validateSession={isCognitoUserValid}>\n        <AuthenticatedRoute path=\"/\" validateSession={isBossUserValid} fallbackRoute=\"/firstLogin\">\n          <Home />\n        </AuthenticatedRoute>\n      </AuthenticatedRoute>\n      {/* Finally, catch all unmatched routes */}\n      <Route>\n        <NotFound />\n      </Route>\n    </Switch>\n  );\n}\n","import React, { useState, useEffect, useMemo } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { ThemeProvider } from 'styled-components';\nimport { Auth, API } from 'aws-amplify';\nimport { Flex } from 'reflexbox';\nimport { LoaderIcon, Nav } from 'boss-ui';\nimport SplunkRum from '@splunk/otel-web';\nimport get from 'lodash/get';\nimport { ToastContainerNotification, NotificationsHandler, Footer } from './components';\nimport { AppContext } from './libs/context-lib';\nimport { formatLoggedInUser } from './libs/cognito-lib';\nimport Theme from './theme';\nimport Routes from './Routes';\nimport './index.css';\nimport 'react-toastify/dist/ReactToastify.css';\nimport { setUserHeaders, getAppType } from './libs/utils-lib';\nimport { onError } from './libs/error-lib';\nimport { useQuery } from './libs/hooks-lib';\nimport { ALERTABLE_NOTIFICATIONS } from './libs/notifications-lib';\n\nfunction App() {\n  const [user, userSession] = useState(null);\n  const [event, setEvent] = useState(null);\n  const [notifications, setNotifications] = useState([]);\n  const [navTitle, setNavTitle] = useState(null);\n  const [isAuthenticating, setIsAuthenticating] = useState(true);\n  const history = useHistory();\n  const { pathname, search } = useLocation();\n  const appType = useMemo(() => getAppType(), []);\n  const query = useQuery();\n  const internalRedirect = query.get('redirect');\n\n  const setDynamoUser = async (cognitoUser) => {\n    try {\n      const registeredUser = await API.get('users', '/user');\n      if (!registeredUser.user) {\n        userSession(cognitoUser);\n        history.push('/firstLogin');\n        return;\n      }\n      userSession({ ...cognitoUser, dynamoUser: registeredUser.user });\n      setUserHeaders({ ...cognitoUser, dynamoUser: registeredUser.user });\n      SplunkRum?.setGlobalAttributes({\n        'user.id': registeredUser.user.userId,\n        'user.email': registeredUser.user.email,\n        'user.username': registeredUser.user.displayName,\n      });\n    } catch (e) {\n      onError(e);\n    }\n  };\n\n  useEffect(() => {\n    async function setLoggedInUser() {\n      try {\n        const loggedUser = formatLoggedInUser(await Auth.currentAuthenticatedUser());\n        await setDynamoUser(loggedUser);\n      } catch (e) {\n        history.push(\n          internalRedirect\n            ? `/login?redirect=${internalRedirect}`\n            : `/login?redirect=${pathname}${search}`\n        );\n      } finally {\n        setIsAuthenticating(false);\n      }\n    }\n\n    // avoid setting the user in app state if path is the saml idp redirection\n    if (pathname !== '/successLogin') {\n      setLoggedInUser();\n    } else {\n      setIsAuthenticating(false);\n    }\n  }, []);\n\n  function handleLogout() {\n    history.push('/logout');\n  }\n\n  if (isAuthenticating) {\n    return (\n      <Flex mt=\"15%\" alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\">\n        <LoaderIcon appType={appType} />\n      </Flex>\n    );\n  }\n\n  const userDisplayName = get(user, 'dynamoUser.displayName');\n  const userEmail = get(user, 'dynamoUser.email');\n  const hideUserProfileActions = !user || !user.dynamoUser;\n\n  // display list and remove new mark\n  const onOpenNotifications = async () => {\n    try {\n      const notificationsRq = await API.get('users', '/user/notifications');\n      const alertableNotifications = [];\n      notificationsRq.notifications.forEach((n) => {\n        if (ALERTABLE_NOTIFICATIONS.includes(n.notificationType)) {\n          alertableNotifications.push(n);\n        }\n      });\n      setNotifications(alertableNotifications);\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(e);\n    }\n  };\n\n  // hide list and mark all unread notifications to read\n  const onCloseNotifications = async () => {\n    const notificationsPromises = notifications.map(async (n) => {\n      if (n.read) {\n        return n;\n      }\n      try {\n        await API.patch('users', `/user/notifications/${n.createdAt}`, {\n          body: { read: +new Date() },\n        });\n        return { ...n, read: true };\n      } catch (e) {\n        return n;\n      }\n    });\n    const readedNotifications = await Promise.all(notificationsPromises);\n    setNotifications(readedNotifications);\n  };\n\n  const onRemoveNotification = async (notification) => {\n    try {\n      const { createdAt } = notification;\n      await API.del('users', `/user/notifications/${createdAt}`);\n      setNotifications((notificationsBase) =>\n        notificationsBase.filter((n) => n.createdAt !== createdAt)\n      );\n    } catch (e) {\n      onError('Failed to remove notification');\n    }\n  };\n\n  const onRemoveAllNotifications = async () => {\n    const removeNotificationsPromises = [];\n    notifications.forEach((n) => {\n      try {\n        removeNotificationsPromises.push(API.del('users', `/user/notifications/${n.createdAt}`));\n      } catch (e) {\n        onError('Failed to remove notification');\n      }\n    });\n    await Promise.all(removeNotificationsPromises);\n    setNotifications([]);\n  };\n\n  return (\n    <div className=\"app-container\">\n      <ThemeProvider theme={Theme}>\n        <ToastContainerNotification\n          position=\"top-right\"\n          autoClose={5000}\n          hideProgressBar={false}\n          newestOnTop={false}\n          closeOnClick\n          pauseOnFocusLoss\n          draggable\n          pauseOnHover\n        />\n        <AppContext.Provider\n          value={{\n            user,\n            userSession,\n            event,\n            setEvent,\n            setNavTitle,\n            appType,\n            notifications,\n            setNotifications,\n          }}\n        >\n          <div className=\"app-header\">\n            <Nav\n              title={navTitle}\n              appType={appType}\n              onLogOut={handleLogout}\n              userDisplayName={userDisplayName}\n              userEmail={userEmail}\n              userNotifications={notifications}\n              onOpenNotifications={onOpenNotifications}\n              onCloseNotifications={onCloseNotifications}\n              loggedIn={user}\n              hideUserSettings={hideUserProfileActions}\n              hideUserNotifications={hideUserProfileActions}\n              onRemoveNotification={onRemoveNotification}\n              onRemoveAllNotifications={onRemoveAllNotifications}\n            />\n          </div>\n          <NotificationsHandler />\n          <Routes />\n          <Footer/>\n        </AppContext.Provider>\n      </ThemeProvider>\n    </div>\n  );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Amplify from 'aws-amplify';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport config from './config';\nimport './index.css';\nimport App from './App';\nimport { refreshSAMLTokens } from './libs/cognito-lib';\nimport setupRum from './rum';\n\nconst version = require('../package.json').version;\n\nconst NO_HEADER_VALUE = 'not-set';\nsetupRum(config.rum);\n\nconst customHeaders = () => {\n  const user = window.user || {\n    email: NO_HEADER_VALUE,\n    displayName: NO_HEADER_VALUE,\n    userName: NO_HEADER_VALUE,\n  };\n\n  return {\n    'client-version': version,\n    'client-metadata': encodeURIComponent(\n      JSON.stringify({\n        email: user.email,\n        displayName: user.displayName,\n        userName: user.userName,\n      })\n    ),\n  };\n};\n\nAmplify.configure({\n  Auth: {\n    mandatorySignIn: config.cognito.MANDATORY_SIGN_IN,\n    region: config.cognito.REGION,\n    ...(config.cognito.SAML_LOGIN\n      ? {\n          oauth: {\n            domain: config.cognito.saml.DOMAIN,\n            scope: config.cognito.saml.SCOPE,\n            redirectSignIn: config.cognito.saml.REDIRECT_SIGN_IN,\n            redirectSignOut: config.cognito.saml.REDIRECT_SIGN_OUT,\n            responseType: config.cognito.saml.RESPONSE_TYPE,\n          },\n          userPoolId: config.cognito.saml.USER_POOL_ID,\n          identityPoolId: config.cognito.saml.IDENTITY_POOL_ID,\n          userPoolWebClientId: config.cognito.saml.APP_CLIENT_ID,\n          refreshHandlers: {\n            [`cognito-idp.${config.cognito.REGION}.amazonaws.com/${config.cognito.saml.USER_POOL_ID}`]:\n              refreshSAMLTokens,\n          },\n        }\n      : {\n          userPoolId: config.cognito.USER_POOL_ID,\n          identityPoolId: config.cognito.IDENTITY_POOL_ID,\n          userPoolWebClientId: config.cognito.APP_CLIENT_ID,\n        }),\n  },\n  API: {\n    endpoints: [\n      {\n        name: 'events',\n        endpoint: config.apiGateway.URL,\n        region: config.apiGateway.REGION,\n        custom_header: customHeaders,\n      },\n      {\n        name: 'teams',\n        endpoint: config.apiGateway.URL,\n        region: config.apiGateway.REGION,\n        custom_header: customHeaders,\n      },\n      {\n        name: 'users',\n        endpoint: config.apiGateway.URL,\n        region: config.apiGateway.REGION,\n        custom_header: customHeaders,\n      },\n      {\n        name: 'resources',\n        endpoint: config.apiGateway.URL,\n        region: config.apiGateway.REGION,\n        custom_header: customHeaders,\n      },\n      {\n        name: 'workshops',\n        endpoint: config.apiGateway.URL,\n        region: config.apiGateway.REGION,\n        custom_header: customHeaders,\n      },\n    ],\n  },\n});\n\nReactDOM.render(\n  <Router>\n    <App />\n  </Router>,\n  document.getElementById('root')\n);\n","import SplunkRum from '@splunk/otel-web';\n\nexport default function rumConfig(config) {\n  SplunkRum.init({\n    applicationName: config.applicationName,\n    beaconUrl: config.beaconUrl,\n    rumAccessToken: config.rumAccessToken,\n    version: config.version,\n    deploymentEnvironment: config.deploymentEnvironment,\n  });\n}\n","import EventEmitter from 'events';\nimport forEach from 'lodash/forEach';\nimport { signRequest } from '../../libs/utils-lib';\n\nexport const WEB_SOCKET_STATUS = {\n  OPEN: 'OPEN', // connection is open\n  CLOSED: 'CLOSED', // connection was closed by client or server\n  PENDING: 'PENDING', // connection is not open but the instance is ready\n  RECONNECTING: 'RECONNECTING', // connection is about to be open\n};\nconst API_GATEWAY_SIGNATURE_ACTION = 'execute-api';\nconst NORMAL_WEB_SOCKET_CLOSE_CODE = 1000;\nconst ABNORMAL_WEB_SOCKET_CLOSE_CODE = 1006;\nconst DEFAULT_RECONNECTION_TIME = 10000;\nconst SEND_REINTENT_MAX_ATTEMPTS = 10;\nconst SEND_REINTENT_INTERVAL_TIME = 500;\nclass WebSocketClient extends EventEmitter {\n  constructor(props = {}) {\n    const { customMessageEvents = [], autoReconnectInterval = DEFAULT_RECONNECTION_TIME } = props;\n    if (!WebSocketClient.instance) {\n      super();\n      this.retryCount = 1;\n      this.autoReconnectIntervalBase = autoReconnectInterval; // ms\n      this.state = WEB_SOCKET_STATUS.PENDING;\n      this.customMessageEvents = customMessageEvents;\n      this.channelsSubscriptions = {};\n      WebSocketClient.instance = this;\n    } else {\n      WebSocketClient.instance.customMessageEvents =\n        WebSocketClient.instance.customMessageEvents.concat(customMessageEvents);\n      WebSocketClient.instance.autoReconnectIntervalBase = autoReconnectInterval;\n      WebSocketClient.instance.retryCount = 1;\n    }\n    return WebSocketClient.instance;\n  }\n\n  async open({ url, method = 'GET', channels = {}, authenticateRq = false }) {\n    if (this.state === WEB_SOCKET_STATUS.OPEN || this.state === WEB_SOCKET_STATUS.RECONNECTING) {\n      // eslint-disable-next-line no-console\n      console.log('ws already open');\n      throw new Error('ws already open');\n    }\n    this.url = url;\n\n    let connectionRequest;\n    if (authenticateRq) {\n      connectionRequest = await signRequest({ url, method }, API_GATEWAY_SIGNATURE_ACTION);\n    } else {\n      connectionRequest = url;\n    }\n    this.instance = new WebSocket(connectionRequest);\n\n    this.instance.onopen = () => {\n      // eslint-disable-next-line no-console\n      console.log('WS opened');\n      this.state = WEB_SOCKET_STATUS.OPEN;\n      this.retryCount = 1;\n      forEach(channels, (subscriptionMessage, channelKey) => {\n        this.subscribe({ channelKey, subscriptionMessage });\n      });\n    };\n\n    this.instance.onmessage = (e, flags) => {\n      if (typeof e.data === 'string') {\n        const data = JSON.parse(e.data);\n        if (data.notificationType && this.customMessageEvents.includes(data.notificationType)) {\n          this.emit(data.notificationType, data);\n        } else {\n          this.emit('message', { data });\n        }\n      }\n    };\n\n    this.instance.onclose = (e) => {\n      this.state = WEB_SOCKET_STATUS.CLOSED;\n      // eslint-disable-next-line no-console\n      console.log('WS closed', e);\n      switch (e.code) {\n        case NORMAL_WEB_SOCKET_CLOSE_CODE:\n          break;\n        case ABNORMAL_WEB_SOCKET_CLOSE_CODE:\n          // Abnormal closure\n          this.retryCount++;\n          this.reconnect(e);\n          break;\n        default:\n          this.reconnect(e);\n          break;\n      }\n    };\n\n    this.instance.onerror = (e) => {\n      // eslint-disable-next-line no-console\n      console.error('WS error', e);\n    };\n  }\n\n  /**\n   * Use this just for cases when the listener and the customMessageEvent has to be cleaned.\n   * If you use for clean up you need to use addListener for add the listener and the customMessageEvent.\n   * Do not use the constructor customMessageEvents param in this case\n   * @param {*} event: notificationType string\n   * @param {*} listener: event handler function\n   */\n  clearListener(event, listener) {\n    this.removeListener(event, listener);\n    this.customMessageEvents = this.customMessageEvents.filter(\n      (messageEvent) => messageEvent !== event\n    );\n  }\n\n  /**\n   * Use this just for cases when the listener and the customMessageEvent has to be added.\n   * If you use for adding on useEffect you need to use clearListener for removing the listener and the customMessageEvent.\n   * Do not use the constructor customMessageEvents param in this case\n   * @param {*} event: notificationType string\n   * @param {*} listener: event handler function\n   */\n  addListener(event, listener) {\n    this.on(event, listener);\n    this.customMessageEvents = this.customMessageEvents.concat([event]);\n  }\n\n  waitForOpenConnection() {\n    return new Promise((resolve, reject) => {\n      let currentAttempt = 0;\n      const interval = setInterval(() => {\n        if (currentAttempt > SEND_REINTENT_MAX_ATTEMPTS - 1) {\n          clearInterval(interval);\n          reject(new Error('Maximum number of attempts exceeded'));\n        } else if (this.state === WEB_SOCKET_STATUS.OPEN) {\n          clearInterval(interval);\n          resolve();\n        }\n        currentAttempt++;\n      }, SEND_REINTENT_INTERVAL_TIME);\n    });\n  }\n\n  async send(data, option) {\n    if (this.state !== WEB_SOCKET_STATUS.OPEN) {\n      try {\n        await this.waitForOpenConnection();\n      } catch (e) {\n        throw new Error('Web socket is not opened, notifications can not be send');\n      }\n    }\n    this.instance.send(JSON.stringify(data), option);\n  }\n\n  close() {\n    if (this.state === WEB_SOCKET_STATUS.OPEN) {\n      this.instance.close(NORMAL_WEB_SOCKET_CLOSE_CODE);\n      this.state = WEB_SOCKET_STATUS.CLOSED;\n    }\n  }\n\n  async subscribe({ channelKey, subscriptionMessage }) {\n    if (!channelKey) {\n      throw new Error('channelKey is mandatory');\n    }\n    if (this.channelsSubscriptions[channelKey]) {\n      console.log(`Already subscribed to ${channelKey}`);\n      return;\n    }\n    try {\n      await this.send({ action: 'subscribeChannel', channel: channelKey, ...subscriptionMessage });\n      this.channelsSubscriptions[channelKey] = subscriptionMessage;\n    } catch (e) {\n      console.error(\n        `Error on channel subscription, channelKey: ${channelKey} subscriptionMessage: ${subscriptionMessage} error: ${JSON.stringify(\n          e\n        )}`\n      );\n    }\n  }\n\n  async unsubscribe({ channelKey, unsubscriptionMessage }) {\n    if (!channelKey) {\n      throw new Error('channelKey is mandatory');\n    }\n    if (!this.channelsSubscriptions[channelKey]) {\n      console.log(`Not subscribed to ${channelKey}`);\n      return;\n    }\n    try {\n      await this.send({\n        action: 'unsubscribeChannel',\n        channel: channelKey,\n        ...unsubscriptionMessage,\n      });\n      delete this.channelsSubscriptions[channelKey];\n    } catch (e) {\n      console.error(\n        `Error on channel unsubscription, channelKey: ${channelKey} unsubscriptionMessage: ${unsubscriptionMessage} error: ${JSON.stringify(\n          e\n        )}`\n      );\n    }\n  }\n\n  reconnect(e) {\n    this.state = WEB_SOCKET_STATUS.RECONNECTING;\n    // eslint-disable-next-line no-console\n    console.log(\n      `WS retry in ${this.autoReconnectIntervalBase * this.retryCount}ms`,\n      JSON.stringify(e)\n    );\n    const that = this;\n    const channelsSubscriptions = that.channelsSubscriptions;\n    that.channelsSubscriptions = {};\n    setTimeout(function () {\n      // eslint-disable-next-line no-console\n      console.log('WS reconnecting...', channelsSubscriptions);\n      that.state = WEB_SOCKET_STATUS.PENDING;\n      that.open({\n        url: that.url,\n        channels: channelsSubscriptions,\n        authenticateRq: process.env.REACT_APP_STAGE !== 'test',\n      });\n    }, this.autoReconnectIntervalBase * this.retryCount);\n  }\n}\n\nexport default WebSocketClient;\n","import isEmpty from 'lodash/isEmpty';\nimport get from 'lodash/get';\nimport { EVENT_QUESTION_STATUS } from 'boss-ui';\n\nexport function updateQuestionsWithAnswer(question, answerResponse) {\n  return {\n    question: question.question,\n    answer: answerResponse.answer,\n    total: answerResponse.total,\n  };\n}\n/**\n * @param {Array} questions: array of questions\n * @param {object} updatedQuestion: updated question\n * @param {String} id: question id of the question to update\n * @param {Function} helper: function that takes the question from the first param and the updated from the second as parameters and creates a new object\n */\nexport function updateQuestionBy(questions, updatedQuestion, id, helper = () => updatedQuestion) {\n  const newQuestionArray = [];\n  questions.forEach((question) => {\n    if (question.question.question_id !== id) {\n      newQuestionArray.push(question);\n      return;\n    }\n    const updated = helper(question, updatedQuestion);\n    if (updated) {\n      newQuestionArray.push(updated);\n    }\n  });\n  return newQuestionArray;\n}\n\nexport function updateQuestionByWS(previousQuestion, updatedQuestion) {\n  const answer = get(updatedQuestion, 'answer', {});\n  if (isEmpty(answer)) {\n    return updatedQuestion;\n  }\n  return {\n    ...updatedQuestion,\n    answer: { ...answer, isWebSocketAnswer: true },\n  };\n}\n\nexport function getAnswersStatus(questions) {\n  return questions.reduce(\n    (score, question) => {\n      if (isEmpty(question.answer)) {\n        return {\n          ...score,\n          unanswered: score.unanswered + 1,\n          total: score.total + 1,\n        };\n      }\n      if (question.answer.state === EVENT_QUESTION_STATUS.INCORRECT) {\n        return {\n          ...score,\n          incorrect: score.incorrect + 1,\n          total: score.total + 1,\n        };\n      }\n      return {\n        ...score,\n        correct: score.correct + 1,\n        total: score.total + 1,\n      };\n    },\n    {\n      unanswered: 0,\n      incorrect: 0,\n      correct: 0,\n      total: 0,\n    }\n  );\n}\n"],"sourceRoot":""}